@provoly/hypervisor 0.0.29 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public-api.mjs +3 -1
- package/esm2022/src/lib/event/detail/event-detail.component.mjs +1 -1
- package/esm2022/src/lib/event/list/event-column-order.component.mjs +23 -0
- package/esm2022/src/lib/event/list/event-list.component.mjs +19 -24
- package/esm2022/src/lib/event/procedure-association-modal/procedure-association-modal.component.mjs +60 -0
- package/esm2022/src/lib/event/public-api.mjs +3 -1
- package/esm2022/src/lib/general/column-order/column-order.component.mjs +4 -9
- package/esm2022/src/lib/general/i18n/en.translations.mjs +21 -3
- package/esm2022/src/lib/general/i18n/fr.translations.mjs +21 -3
- package/esm2022/src/lib/general/infiniteScroll.service.mjs +26 -0
- package/esm2022/src/lib/hypervisor.module.mjs +28 -30
- package/esm2022/src/lib/model/procedure/hyp-action.interface.mjs +2 -0
- package/esm2022/src/lib/model/procedure/hyp-procedure-model.interface.mjs +2 -0
- package/esm2022/src/lib/model/procedure/hyp-procedure.interface.mjs +6 -0
- package/esm2022/src/lib/model/public-api.mjs +4 -2
- package/esm2022/src/lib/procedure/list/procedure-column-order.component.mjs +24 -0
- package/esm2022/src/lib/procedure/list/procedure-list.component.mjs +57 -0
- package/esm2022/src/lib/procedure/public-api.mjs +3 -0
- package/esm2022/src/lib/store/event/event.actions.mjs +4 -2
- package/esm2022/src/lib/store/event/event.effects.mjs +5 -2
- package/esm2022/src/lib/store/event/event.reducer.mjs +1 -1
- package/esm2022/src/lib/store/event/event.selectors.mjs +3 -1
- package/esm2022/src/lib/store/event/event.service.mjs +7 -2
- package/esm2022/src/lib/store/procedure/procedure.actions.mjs +10 -0
- package/esm2022/src/lib/store/procedure/procedure.effects.mjs +25 -0
- package/esm2022/src/lib/store/procedure/procedure.reducer.mjs +37 -0
- package/esm2022/src/lib/store/procedure/procedure.selectors.mjs +17 -0
- package/esm2022/src/lib/store/procedure/procedure.service.mjs +49 -0
- package/esm2022/src/lib/store/procedure/public-api.mjs +6 -0
- package/fesm2022/provoly-hypervisor.mjs +376 -88
- package/fesm2022/provoly-hypervisor.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/lib/event/detail/event-detail.component.d.ts +2 -2
- package/src/lib/event/list/event-column-order.component.d.ts +9 -0
- package/src/lib/event/list/event-list.component.d.ts +4 -5
- package/src/lib/event/procedure-association-modal/procedure-association-modal.component.d.ts +27 -0
- package/src/lib/event/public-api.d.ts +2 -0
- package/src/lib/general/column-order/column-order.component.d.ts +1 -1
- package/src/lib/general/i18n/en.translations.d.ts +18 -0
- package/src/lib/general/i18n/fr.translations.d.ts +18 -0
- package/src/lib/general/infiniteScroll.service.d.ts +13 -0
- package/src/lib/hypervisor.module.d.ts +25 -21
- package/src/lib/model/procedure/hyp-procedure-model.interface.d.ts +11 -0
- package/src/lib/model/{hyp-procedure.interface.d.ts → procedure/hyp-procedure.interface.d.ts} +1 -1
- package/src/lib/model/public-api.d.ts +3 -1
- package/src/lib/procedure/list/procedure-column-order.component.d.ts +9 -0
- package/src/lib/procedure/list/procedure-list.component.d.ts +30 -0
- package/src/lib/procedure/public-api.d.ts +2 -0
- package/src/lib/store/event/event.actions.d.ts +11 -1
- package/src/lib/store/event/event.effects.d.ts +8 -0
- package/src/lib/store/event/event.reducer.d.ts +1 -1
- package/src/lib/store/event/event.selectors.d.ts +1 -0
- package/src/lib/store/event/event.service.d.ts +2 -1
- package/src/lib/store/procedure/procedure.actions.d.ts +37 -0
- package/src/lib/store/procedure/procedure.effects.d.ts +21 -0
- package/src/lib/store/procedure/procedure.reducer.d.ts +15 -0
- package/src/lib/store/procedure/procedure.selectors.d.ts +15 -0
- package/src/lib/store/procedure/procedure.service.d.ts +17 -0
- package/src/lib/store/procedure/public-api.d.ts +5 -0
- package/styles/components/_index.scss +2 -0
- package/styles/components/_m-hvy-procedure-association-modal.scss +34 -0
- package/styles/components/_o-hvy-column-order.scss +1 -0
- package/styles/components/_o-hvy-events-table.scss +1 -4
- package/styles/components/_o-hvy-procedure-list.scss +15 -0
- package/esm2022/src/lib/model/hyp-action.interface.mjs +0 -2
- package/esm2022/src/lib/model/hyp-procedure.interface.mjs +0 -6
- /package/src/lib/model/{hyp-action.interface.d.ts → procedure/hyp-action.interface.d.ts} +0 -0
|
@@ -7,7 +7,7 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
|
|
|
7
7
|
import * as i3$1 from '@angular/cdk/overlay';
|
|
8
8
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
9
9
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
10
|
-
import { mergeMap, of, fromEvent, combineLatest, map,
|
|
10
|
+
import { mergeMap, of, fromEvent, withLatestFrom, filter, auditTime, combineLatest, map as map$1, BehaviorSubject, Subject, debounceTime, switchMap, distinctUntilChanged } from 'rxjs';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpParams } from '@angular/common/http';
|
|
13
13
|
import * as i4 from '@provoly/dashboard/components/checkbox';
|
|
@@ -18,9 +18,9 @@ import * as i1$2 from '@angular/common';
|
|
|
18
18
|
import { NgForOf, AsyncPipe, NgStyle, DatePipe, KeyValuePipe, JsonPipe } from '@angular/common';
|
|
19
19
|
import * as i2 from '@angular/router';
|
|
20
20
|
import { RouterLink } from '@angular/router';
|
|
21
|
-
import
|
|
21
|
+
import { map, startWith, catchError, debounceTime as debounceTime$1, mergeMap as mergeMap$1 } from 'rxjs/operators';
|
|
22
|
+
import * as i11 from '@provoly/dashboard/components/sinceDate';
|
|
22
23
|
import { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';
|
|
23
|
-
import { map as map$1, debounceTime, mergeMap as mergeMap$1, catchError } from 'rxjs/operators';
|
|
24
24
|
import * as i1$3 from '@ngrx/effects';
|
|
25
25
|
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
26
26
|
|
|
@@ -60,7 +60,9 @@ const EventActions = {
|
|
|
60
60
|
status: createAction('[Event] Close Event or Procedure', props()),
|
|
61
61
|
statusSuccess: createAction('[Event] Close success'),
|
|
62
62
|
statusFailure: createAction('[Event] Close failure', props()),
|
|
63
|
-
sort: createAction('[Event] set log event sorting', props())
|
|
63
|
+
sort: createAction('[Event] set log event sorting', props()),
|
|
64
|
+
associateProcedure: createAction('[Event] Associate Procedure to Event', props()),
|
|
65
|
+
associateProcedureFailure: createAction('[Event] Associate Procedure to Event Failure', props())
|
|
64
66
|
};
|
|
65
67
|
|
|
66
68
|
const HypervisorActions = {
|
|
@@ -71,18 +73,18 @@ const hypFeatureKey = '@hvy/general';
|
|
|
71
73
|
const hypInitialState = {
|
|
72
74
|
url: '/api/hypervisor',
|
|
73
75
|
};
|
|
74
|
-
const internalReducer$
|
|
76
|
+
const internalReducer$3 = createReducer(hypInitialState, on(HypervisorActions.setUrl, (state, action) => ({
|
|
75
77
|
...state,
|
|
76
78
|
url: action.url ?? state.url,
|
|
77
79
|
})));
|
|
78
80
|
function hypervisorReducer(state, action) {
|
|
79
|
-
return internalReducer$
|
|
81
|
+
return internalReducer$3(state, action);
|
|
80
82
|
}
|
|
81
83
|
|
|
82
|
-
const feature$
|
|
83
|
-
const url = createSelector(feature$
|
|
84
|
+
const feature$3 = createFeatureSelector(hypFeatureKey);
|
|
85
|
+
const url = createSelector(feature$3, (state) => state.url);
|
|
84
86
|
const HypSelectors = {
|
|
85
|
-
feature: feature$
|
|
87
|
+
feature: feature$3,
|
|
86
88
|
url
|
|
87
89
|
};
|
|
88
90
|
|
|
@@ -542,7 +544,7 @@ const eventInitialState = {
|
|
|
542
544
|
selectedIds: [],
|
|
543
545
|
details: {}
|
|
544
546
|
};
|
|
545
|
-
const internalReducer$
|
|
547
|
+
const internalReducer$2 = createReducer(eventInitialState, on(EventActions.load, (state, action) => ({
|
|
546
548
|
...state,
|
|
547
549
|
loading: true
|
|
548
550
|
})), on(EventActions.loadSuccess, (state, { events, startingFrom }) => {
|
|
@@ -579,77 +581,107 @@ const internalReducer$1 = createReducer(eventInitialState, on(EventActions.load,
|
|
|
579
581
|
filters: { ...state.filters, [filterSet]: filters }
|
|
580
582
|
})));
|
|
581
583
|
function eventReducer(state, action) {
|
|
582
|
-
return internalReducer$
|
|
584
|
+
return internalReducer$2(state, action);
|
|
583
585
|
}
|
|
584
586
|
|
|
585
|
-
const feature$
|
|
586
|
-
const events = createSelector(feature$
|
|
587
|
-
const noMoreEvents = createSelector(feature$
|
|
588
|
-
const selectedIds = createSelector(feature$
|
|
589
|
-
const
|
|
590
|
-
const
|
|
591
|
-
const
|
|
592
|
-
const
|
|
587
|
+
const feature$2 = createFeatureSelector(eventFeatureKey);
|
|
588
|
+
const events = createSelector(feature$2, (state) => state.events);
|
|
589
|
+
const noMoreEvents = createSelector(feature$2, (state) => state.noMoreEvents);
|
|
590
|
+
const selectedIds = createSelector(feature$2, (state) => state.selectedIds);
|
|
591
|
+
const selectedEvents = createSelector(feature$2, (state) => state.events.filter((event) => state.selectedIds.includes(event.id)));
|
|
592
|
+
const loading$2 = createSelector(feature$2, (state) => state.loading);
|
|
593
|
+
const filters = createSelector(feature$2, (state) => state.filters);
|
|
594
|
+
const details = createSelector(feature$2, (state) => state.details);
|
|
595
|
+
const sort$1 = createSelector(feature$2, (state) => state.sort);
|
|
593
596
|
const EventSelectors = {
|
|
594
|
-
feature: feature$
|
|
597
|
+
feature: feature$2,
|
|
595
598
|
events,
|
|
596
599
|
selectedIds,
|
|
597
|
-
|
|
600
|
+
selectedEvents,
|
|
601
|
+
loading: loading$2,
|
|
598
602
|
filters,
|
|
599
603
|
details,
|
|
600
604
|
noMoreEvents,
|
|
601
|
-
sort
|
|
605
|
+
sort: sort$1
|
|
602
606
|
};
|
|
603
607
|
|
|
608
|
+
const SCROLL_PX_TO_TRIGGER_FETCH_PAGE = { value: 200 };
|
|
609
|
+
class InfiniteScrollService {
|
|
610
|
+
constructor(store) {
|
|
611
|
+
this.store = store;
|
|
612
|
+
this.isEndOfPage = (scrollContainer, noMoreSelector) => {
|
|
613
|
+
return fromEvent((scrollContainer), 'scroll').pipe(map((e) => {
|
|
614
|
+
const target = e.currentTarget;
|
|
615
|
+
return target.scrollHeight - target.offsetHeight - target.scrollTop;
|
|
616
|
+
}), withLatestFrom(this.store.select(noMoreSelector)), filter(([remaningScroll, noMore]) => !noMore && remaningScroll < SCROLL_PX_TO_TRIGGER_FETCH_PAGE.value), auditTime(200));
|
|
617
|
+
};
|
|
618
|
+
}
|
|
619
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: InfiniteScrollService, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
620
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: InfiniteScrollService, providedIn: 'root' }); }
|
|
621
|
+
}
|
|
622
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: InfiniteScrollService, decorators: [{
|
|
623
|
+
type: Injectable,
|
|
624
|
+
args: [{
|
|
625
|
+
providedIn: 'root'
|
|
626
|
+
}]
|
|
627
|
+
}], ctorParameters: () => [{ type: i1$1.Store }] });
|
|
628
|
+
|
|
604
629
|
class ColumnOrderComponent extends SubscriptionnerDirective {
|
|
605
630
|
constructor(store) {
|
|
606
631
|
super();
|
|
607
632
|
this.store = store;
|
|
608
633
|
this.field = 'no-field-defined';
|
|
609
|
-
this.subscriptions.add(this.store.select(EventSelectors.sort).subscribe(sort => this.sortValue = sort));
|
|
610
|
-
}
|
|
611
|
-
sort(order) {
|
|
612
|
-
this.store.dispatch(EventActions.sort({ field: this.field, order }));
|
|
613
634
|
}
|
|
635
|
+
sort(order) { }
|
|
614
636
|
isActive(order) {
|
|
615
637
|
return this.field === this.sortValue?.field && order === this.sortValue.order;
|
|
616
638
|
}
|
|
617
639
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ColumnOrderComponent, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
618
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: ColumnOrderComponent, selector: "hvy-column-order", inputs: { field: "field" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-column-order\">\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }] }); }
|
|
640
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: ColumnOrderComponent, selector: "hvy-column-order", inputs: { field: "field" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-column-order\">\n <div class=\"o-hvy-column-order__content\">\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }] }); }
|
|
619
641
|
}
|
|
620
642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ColumnOrderComponent, decorators: [{
|
|
621
643
|
type: Component,
|
|
622
|
-
args: [{ selector: 'hvy-column-order', template: "<div class=\"o-hvy-column-order\">\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n" }]
|
|
644
|
+
args: [{ selector: 'hvy-column-order', template: "<div class=\"o-hvy-column-order\">\n <div class=\"o-hvy-column-order__content\">\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n" }]
|
|
623
645
|
}], ctorParameters: () => [{ type: i1$1.Store }], propDecorators: { field: [{
|
|
624
646
|
type: Input
|
|
625
647
|
}] } });
|
|
626
648
|
|
|
649
|
+
class EventColumnOrderComponent extends ColumnOrderComponent {
|
|
650
|
+
constructor(store) {
|
|
651
|
+
super(store);
|
|
652
|
+
this.subscriptions.add(this.store.select(EventSelectors.sort).subscribe(sort => this.sortValue = sort));
|
|
653
|
+
}
|
|
654
|
+
sort(order) {
|
|
655
|
+
this.store.dispatch(EventActions.sort({ field: this.field, order }));
|
|
656
|
+
}
|
|
657
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventColumnOrderComponent, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
658
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: EventColumnOrderComponent, selector: "hvy-event-column-order", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-column-order\">\n <div class=\"o-hvy-column-order__content\">\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }] }); }
|
|
659
|
+
}
|
|
660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventColumnOrderComponent, decorators: [{
|
|
661
|
+
type: Component,
|
|
662
|
+
args: [{ selector: 'hvy-event-column-order', template: "<div class=\"o-hvy-column-order\">\n <div class=\"o-hvy-column-order__content\">\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n" }]
|
|
663
|
+
}], ctorParameters: () => [{ type: i1$1.Store }] });
|
|
664
|
+
|
|
627
665
|
const EVENT_LINK = {
|
|
628
666
|
fn: (event, store) => ['./', event.id]
|
|
629
667
|
};
|
|
630
|
-
const SCROLL_PX_TO_TRIGGER_FETCH_PAGE = { value: 200 };
|
|
631
668
|
class EventListComponent extends SubscriptionnerDirective {
|
|
632
|
-
constructor(store, el, router) {
|
|
669
|
+
constructor(store, el, router, scroll) {
|
|
633
670
|
super();
|
|
634
671
|
this.store = store;
|
|
635
672
|
this.el = el;
|
|
636
673
|
this.router = router;
|
|
674
|
+
this.scroll = scroll;
|
|
637
675
|
this.EVENT_LINK = EVENT_LINK;
|
|
638
676
|
this._store = this.store;
|
|
639
677
|
this._inhibate = true;
|
|
640
678
|
this.store.dispatch(EventActions.load({}));
|
|
641
679
|
this.events$ = this.store.select(EventSelectors.events);
|
|
642
680
|
this.selectedIds$ = this.store.select(EventSelectors.selectedIds);
|
|
643
|
-
this.allSelected$ = combineLatest([this.events$, this.selectedIds$]).pipe(map(([events, selectedIds]) => events.filter((ev) => !selectedIds.includes(ev.id)).length === 0));
|
|
681
|
+
this.allSelected$ = combineLatest([this.events$, this.selectedIds$]).pipe(map$1(([events, selectedIds]) => events.filter((ev) => !selectedIds.includes(ev.id)).length === 0));
|
|
644
682
|
}
|
|
645
683
|
ngAfterViewInit() {
|
|
646
|
-
this.subscriptions.add(
|
|
647
|
-
.pipe(
|
|
648
|
-
// Are we close to end
|
|
649
|
-
map((e) => {
|
|
650
|
-
const target = e.currentTarget;
|
|
651
|
-
return target.scrollHeight - target.offsetHeight - target.scrollTop;
|
|
652
|
-
}), withLatestFrom(this.store.select(EventSelectors.noMoreEvents)), filter(([remaningScroll, noMore]) => !noMore && remaningScroll < SCROLL_PX_TO_TRIGGER_FETCH_PAGE.value), auditTime(200))
|
|
684
|
+
this.subscriptions.add(this.scroll.isEndOfPage(this.el.nativeElement, EventSelectors.noMoreEvents)
|
|
653
685
|
.subscribe(() => {
|
|
654
686
|
this.store.dispatch(EventActions.load({ next: true }));
|
|
655
687
|
}));
|
|
@@ -673,16 +705,16 @@ class EventListComponent extends SubscriptionnerDirective {
|
|
|
673
705
|
this._inhibate = true;
|
|
674
706
|
setTimeout(() => (this._inhibate = false), 100);
|
|
675
707
|
}
|
|
676
|
-
|
|
708
|
+
goTo(event) {
|
|
677
709
|
return this.router.navigate(this.EVENT_LINK.fn(event, this.store));
|
|
678
710
|
}
|
|
679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventListComponent, deps: [{ token: i1$1.Store }, { token: i0.ElementRef }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
680
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventListComponent, selector: "hvy-event-list", usesInheritance: true, ngImport: i0, template: "<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th>\n <pry-checkbox [ngModel]=\"allSelected$|async\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>\n <hvy-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"lastModificationDate\">{{ '@hvy.event.lastModificationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"status\">{{ '@hvy.event.status.name' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"procedureProgress\">{{ '@hvy.procedure.progress' | i18n }}</hvy-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (event of events$|async; track event.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"
|
|
711
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventListComponent, deps: [{ token: i1$1.Store }, { token: i0.ElementRef }, { token: i2.Router }, { token: InfiniteScrollService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
712
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventListComponent, selector: "hvy-event-list", usesInheritance: true, ngImport: i0, template: "<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th class=\"-checkbox\">\n <pry-checkbox [ngModel]=\"allSelected$|async\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>\n <hvy-event-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"lastModificationDate\">{{ '@hvy.event.lastModificationDate' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"status\">{{ '@hvy.event.status.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"procedureProgress\">{{ '@hvy.procedure.progress' | i18n }}</hvy-event-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (event of events$|async; track event.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"goTo(event)\">\n <td class=\"o-hvy-events-table__line__cell\">\n <pry-checkbox [ngModel]=\"(selectedIds$|async)!.includes(event.id)\"\n (click)=\"select(event, $event)\"></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div\n class=\"o-hvy-events-table__line__cell__name__sub\">{{ event.equipment?.name ? event.equipment?.name : '' }}\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ '@hvy.event.category.' + event.category | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.address }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.creationDate| sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.lastModificationDate | sinceDate: { onlyLocale: true } }}\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-status-display [event]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n {{ event.procedureProgress }} %\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"EVENT_LINK.fn(event, _store)\">\n > {{ '@hvy.action.consult' | i18n }} @if (event.linkedEvents > 1) {\n ({{ event.linkedEvents }})\n }\n </a>\n </td>\n </tr>\n } @empty {\n <tr>\n <td class=\"o-hvy-events-table__empty\" colspan=\"50\">\n <div>{{ '@hvy.event.log.empty' | i18n }}.</div>\n <div>\n <ng-content></ng-content>\n </div>\n </td>\n </tr>\n }\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: i4.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EventColumnOrderComponent, selector: "hvy-event-column-order" }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: StatusDisplayComponent, selector: "hvy-status-display", inputs: ["event", "modifiable"], outputs: ["modified"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i11.PrySinceDatePipe, name: "sinceDate" }] }); }
|
|
681
713
|
}
|
|
682
714
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventListComponent, decorators: [{
|
|
683
715
|
type: Component,
|
|
684
|
-
args: [{ selector: 'hvy-event-list', template: "<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th>\n <pry-checkbox [ngModel]=\"allSelected$|async\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>\n <hvy-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"lastModificationDate\">{{ '@hvy.event.lastModificationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"status\">{{ '@hvy.event.status.name' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"procedureProgress\">{{ '@hvy.procedure.progress' | i18n }}</hvy-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (event of events$|async; track event.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"
|
|
685
|
-
}], ctorParameters: () => [{ type: i1$1.Store }, { type: i0.ElementRef }, { type: i2.Router }] });
|
|
716
|
+
args: [{ selector: 'hvy-event-list', template: "<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th class=\"-checkbox\">\n <pry-checkbox [ngModel]=\"allSelected$|async\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>\n <hvy-event-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"lastModificationDate\">{{ '@hvy.event.lastModificationDate' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"status\">{{ '@hvy.event.status.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"procedureProgress\">{{ '@hvy.procedure.progress' | i18n }}</hvy-event-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (event of events$|async; track event.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"goTo(event)\">\n <td class=\"o-hvy-events-table__line__cell\">\n <pry-checkbox [ngModel]=\"(selectedIds$|async)!.includes(event.id)\"\n (click)=\"select(event, $event)\"></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div\n class=\"o-hvy-events-table__line__cell__name__sub\">{{ event.equipment?.name ? event.equipment?.name : '' }}\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ '@hvy.event.category.' + event.category | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.address }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.creationDate| sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.lastModificationDate | sinceDate: { onlyLocale: true } }}\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-status-display [event]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n {{ event.procedureProgress }} %\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"EVENT_LINK.fn(event, _store)\">\n > {{ '@hvy.action.consult' | i18n }} @if (event.linkedEvents > 1) {\n ({{ event.linkedEvents }})\n }\n </a>\n </td>\n </tr>\n } @empty {\n <tr>\n <td class=\"o-hvy-events-table__empty\" colspan=\"50\">\n <div>{{ '@hvy.event.log.empty' | i18n }}.</div>\n <div>\n <ng-content></ng-content>\n </div>\n </td>\n </tr>\n }\n </tbody>\n</table>\n" }]
|
|
717
|
+
}], ctorParameters: () => [{ type: i1$1.Store }, { type: i0.ElementRef }, { type: i2.Router }, { type: InfiniteScrollService }] });
|
|
686
718
|
|
|
687
719
|
class EventFiltersComponent extends SubscriptionnerDirective {
|
|
688
720
|
constructor(store) {
|
|
@@ -902,6 +934,152 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
902
934
|
args: ['template', { read: TemplateRef }]
|
|
903
935
|
}] } });
|
|
904
936
|
|
|
937
|
+
const ProcedureActions = {
|
|
938
|
+
load: createAction('[Procedure] Load Procedures', props()),
|
|
939
|
+
loadSuccess: createAction('[Procedure] (bus) Load Procedure Success', props()),
|
|
940
|
+
loadFailure: createAction('[Procedure] Load Procedures Failure', props()),
|
|
941
|
+
sort: createAction('[Procedure] Set Procedure List Sorting', props()),
|
|
942
|
+
search: createAction('[Procedure] Set Search Query Value', props()),
|
|
943
|
+
setCategory: createAction('[Procedure] Set Category Value', props())
|
|
944
|
+
};
|
|
945
|
+
|
|
946
|
+
const procedureFeatureKey = '@hvy/procedure';
|
|
947
|
+
const procedureInitialState = {
|
|
948
|
+
procedures: [],
|
|
949
|
+
noMoreProcedures: false,
|
|
950
|
+
loading: false,
|
|
951
|
+
};
|
|
952
|
+
const internalReducer$1 = createReducer(procedureInitialState, on(ProcedureActions.load, (state) => ({
|
|
953
|
+
...state,
|
|
954
|
+
loading: true
|
|
955
|
+
})), on(ProcedureActions.loadSuccess, (state, { procedures, startingFrom }) => {
|
|
956
|
+
return {
|
|
957
|
+
...state,
|
|
958
|
+
loading: false,
|
|
959
|
+
noMoreProcedures: procedures.length < 20,
|
|
960
|
+
procedures: [...state.procedures.slice(0, startingFrom), ...procedures]
|
|
961
|
+
};
|
|
962
|
+
}), on(ProcedureActions.loadFailure, (state) => ({
|
|
963
|
+
...state,
|
|
964
|
+
loading: false,
|
|
965
|
+
procedures: []
|
|
966
|
+
})), on(ProcedureActions.search, (state, { search }) => ({
|
|
967
|
+
...state,
|
|
968
|
+
events: [],
|
|
969
|
+
noMoreProcedures: false,
|
|
970
|
+
search
|
|
971
|
+
})), on(ProcedureActions.sort, (state, { field, order }) => ({
|
|
972
|
+
...state,
|
|
973
|
+
events: [],
|
|
974
|
+
noMoreProcedures: false,
|
|
975
|
+
sort: { field, order }
|
|
976
|
+
})));
|
|
977
|
+
function procedureReducer(state, action) {
|
|
978
|
+
return internalReducer$1(state, action);
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
const feature$1 = createFeatureSelector(procedureFeatureKey);
|
|
982
|
+
const procedures = createSelector(feature$1, (state) => state.procedures);
|
|
983
|
+
const noMoreProcedures = createSelector(feature$1, (state) => state.noMoreProcedures);
|
|
984
|
+
const loading$1 = createSelector(feature$1, (state) => state.loading);
|
|
985
|
+
const search = createSelector(feature$1, (state) => state.search);
|
|
986
|
+
const sort = createSelector(feature$1, (state) => state.sort);
|
|
987
|
+
const ProcedureSelectors = {
|
|
988
|
+
feature: feature$1,
|
|
989
|
+
procedures,
|
|
990
|
+
loading: loading$1,
|
|
991
|
+
noMoreProcedures,
|
|
992
|
+
search,
|
|
993
|
+
sort
|
|
994
|
+
};
|
|
995
|
+
|
|
996
|
+
const PROCEDURE_PAGE_SIZE_FETCH = { value: 20 };
|
|
997
|
+
class ProcedureService {
|
|
998
|
+
constructor(httpClient, store) {
|
|
999
|
+
this.httpClient = httpClient;
|
|
1000
|
+
this.store = store;
|
|
1001
|
+
}
|
|
1002
|
+
list(startWith = 0, pageSize = PROCEDURE_PAGE_SIZE_FETCH.value) {
|
|
1003
|
+
return this.store.select(HypSelectors.url).pipe(withLatestFrom(this.store.select(ProcedureSelectors.sort), this.store.select(ProcedureSelectors.search)), mergeMap(([url, sort, search]) => {
|
|
1004
|
+
let params = new HttpParams();
|
|
1005
|
+
params = params.set('page', startWith / pageSize + 1);
|
|
1006
|
+
if (search)
|
|
1007
|
+
params = params.set('search', search);
|
|
1008
|
+
if (sort)
|
|
1009
|
+
params = params.set('sort', sort.field).set('order', sort.order);
|
|
1010
|
+
return this.httpClient.get(encodeURI(`${url}/procedures/catalog`), { params });
|
|
1011
|
+
}));
|
|
1012
|
+
}
|
|
1013
|
+
getTop10ByUsage(domain, nameSearch) {
|
|
1014
|
+
return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
|
|
1015
|
+
let params = new HttpParams();
|
|
1016
|
+
params = params
|
|
1017
|
+
.set('sort', 'useCount')
|
|
1018
|
+
.set('order', 'desc')
|
|
1019
|
+
.set('pageSize', '10');
|
|
1020
|
+
if (nameSearch)
|
|
1021
|
+
params = params.set('name', nameSearch);
|
|
1022
|
+
if (domain)
|
|
1023
|
+
params = params.set('domain', domain);
|
|
1024
|
+
return this.httpClient.get(encodeURI(`${url}/procedures/catalog`), { params });
|
|
1025
|
+
}));
|
|
1026
|
+
}
|
|
1027
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureService, deps: [{ token: i1.HttpClient }, { token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1028
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureService, providedIn: 'root' }); }
|
|
1029
|
+
}
|
|
1030
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureService, decorators: [{
|
|
1031
|
+
type: Injectable,
|
|
1032
|
+
args: [{
|
|
1033
|
+
providedIn: 'root'
|
|
1034
|
+
}]
|
|
1035
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.Store }] });
|
|
1036
|
+
|
|
1037
|
+
class ProcedureAssociationModalComponent extends SubscriptionnerDirective {
|
|
1038
|
+
constructor(store, procedureService, dialog) {
|
|
1039
|
+
super();
|
|
1040
|
+
this.store = store;
|
|
1041
|
+
this.procedureService = procedureService;
|
|
1042
|
+
this.dialog = dialog;
|
|
1043
|
+
this.onDomainSelect$ = new Subject;
|
|
1044
|
+
this.onProcedureSearch$ = new Subject;
|
|
1045
|
+
this.DOMAINS = DOMAINS.values;
|
|
1046
|
+
this.selectedEvents$ = this.store.select(EventSelectors.selectedEvents);
|
|
1047
|
+
this.procedures$ = combineLatest([
|
|
1048
|
+
this.onDomainSelect$.pipe(startWith()),
|
|
1049
|
+
this.onProcedureSearch$.pipe(startWith(), debounceTime(500)),
|
|
1050
|
+
]).pipe(switchMap(([_, __]) => {
|
|
1051
|
+
const search = typeof this.procedureSelectValue === 'string' && this.procedureSelectValue.length > 2 ? this.procedureSelectValue : undefined;
|
|
1052
|
+
return this.procedureService.getTop10ByUsage(this.selectedDomain, search);
|
|
1053
|
+
}), catchError(() => {
|
|
1054
|
+
throw new Error('Procedure catalog not implemented yet');
|
|
1055
|
+
}));
|
|
1056
|
+
}
|
|
1057
|
+
onDomainChange() {
|
|
1058
|
+
this.onDomainSelect$.next();
|
|
1059
|
+
this.procedureSelectValue = undefined;
|
|
1060
|
+
}
|
|
1061
|
+
selectedProcedureChange($event) {
|
|
1062
|
+
this.procedureSelectValue = $event;
|
|
1063
|
+
this.onProcedureSearch$.next();
|
|
1064
|
+
}
|
|
1065
|
+
associateProcedure() {
|
|
1066
|
+
this.store.dispatch(EventActions.associateProcedure({ procedureId: this.procedureSelectValue.id }));
|
|
1067
|
+
this.closeModal();
|
|
1068
|
+
}
|
|
1069
|
+
isProcedureSelected() {
|
|
1070
|
+
return typeof this.procedureSelectValue === 'object';
|
|
1071
|
+
}
|
|
1072
|
+
closeModal() {
|
|
1073
|
+
this.dialog.close();
|
|
1074
|
+
}
|
|
1075
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureAssociationModalComponent, deps: [{ token: i1$1.Store }, { token: ProcedureService }, { token: i3.PryDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1076
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: ProcedureAssociationModalComponent, selector: "hvy-procedure-association-modal", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-association-modal u-display-flex -column -align-center\">\n <h3>{{ '@hvy.associationModal.title' | i18n }}</h3>\n <span class=\"o-hvy-association-modal__description\">{{ '@hvy.associationModal.description' | i18n }}</span>\n <div class=\"o-hvy-association-modal__content u-display-flex -justify-space-between\">\n @if (selectedEvents$ | async; as selectedEvents) {\n <div>\n <label>\u00C9v\u00E9nements li\u00E9s ({{ selectedEvents.length }}) :</label>\n <ul class=\"o-hvy-association-modal__events\">\n @for (event of selectedEvents; track event.id) {\n <li class=\"o-hvy-association-modal__event u-display-flex -align-center\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <div class=\"o-hvy-association-modal__event-detail u-display-flex -column\">\n <span class=\"o-hvy-association-modal__event-name\">{{ event.name }}</span>\n @if (event.equipment) {\n <span class=\"o-hvy-association-modal__equipment-name\">{{ event.equipment.name }}</span>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n }\n <div class=\"o-hvy-association-modal__form\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.associationModal.categoryFilter' | i18n }}</label>\n <pry-select\n [items]=\"DOMAINS\"\n [(ngModel)]=\"selectedDomain\"\n (ngModelChange)=\"onDomainChange()\"\n [placeholder]=\"'@hvy.associationModal.domainPlaceholder' | i18n\"\n i18nPrefix=\"@hvy.event.domain.\"\n id=\"category-filter\"></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"procedure-filter\">{{ '@hvy.associationModal.searchProcedure' | i18n }}<span class=\"text-error\">*</span> : </label>\n <pry-select\n [items]=\"procedures$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"procedureSelectValue\"\n (ngModelChange)=\"selectedProcedureChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.associationModal.procedurePlaceholder' | i18n\"\n id=\"procedure-filter\"></pry-select>\n </div>\n </div>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!isProcedureSelected()\" (click)=\"associateProcedure()\">{{ '@hvy.action.validate' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
1077
|
+
}
|
|
1078
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureAssociationModalComponent, decorators: [{
|
|
1079
|
+
type: Component,
|
|
1080
|
+
args: [{ selector: 'hvy-procedure-association-modal', template: "<div class=\"o-hvy-association-modal u-display-flex -column -align-center\">\n <h3>{{ '@hvy.associationModal.title' | i18n }}</h3>\n <span class=\"o-hvy-association-modal__description\">{{ '@hvy.associationModal.description' | i18n }}</span>\n <div class=\"o-hvy-association-modal__content u-display-flex -justify-space-between\">\n @if (selectedEvents$ | async; as selectedEvents) {\n <div>\n <label>\u00C9v\u00E9nements li\u00E9s ({{ selectedEvents.length }}) :</label>\n <ul class=\"o-hvy-association-modal__events\">\n @for (event of selectedEvents; track event.id) {\n <li class=\"o-hvy-association-modal__event u-display-flex -align-center\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <div class=\"o-hvy-association-modal__event-detail u-display-flex -column\">\n <span class=\"o-hvy-association-modal__event-name\">{{ event.name }}</span>\n @if (event.equipment) {\n <span class=\"o-hvy-association-modal__equipment-name\">{{ event.equipment.name }}</span>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n }\n <div class=\"o-hvy-association-modal__form\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.associationModal.categoryFilter' | i18n }}</label>\n <pry-select\n [items]=\"DOMAINS\"\n [(ngModel)]=\"selectedDomain\"\n (ngModelChange)=\"onDomainChange()\"\n [placeholder]=\"'@hvy.associationModal.domainPlaceholder' | i18n\"\n i18nPrefix=\"@hvy.event.domain.\"\n id=\"category-filter\"></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"procedure-filter\">{{ '@hvy.associationModal.searchProcedure' | i18n }}<span class=\"text-error\">*</span> : </label>\n <pry-select\n [items]=\"procedures$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"procedureSelectValue\"\n (ngModelChange)=\"selectedProcedureChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.associationModal.procedurePlaceholder' | i18n\"\n id=\"procedure-filter\"></pry-select>\n </div>\n </div>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!isProcedureSelected()\" (click)=\"associateProcedure()\">{{ '@hvy.action.validate' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
|
|
1081
|
+
}], ctorParameters: () => [{ type: i1$1.Store }, { type: ProcedureService }, { type: i3.PryDialogRef }] });
|
|
1082
|
+
|
|
905
1083
|
const EventSummaryActions = {
|
|
906
1084
|
load: createAction('[Event] Load Summaries'),
|
|
907
1085
|
loadSuccess: createAction('[Event Api] Load Summaries Success', props()),
|
|
@@ -1009,6 +1187,11 @@ class EventService {
|
|
|
1009
1187
|
return this.httpClient.put(encodeURI(`${url}/procedures/id/${procedure.id}/close`), { status, comment });
|
|
1010
1188
|
}));
|
|
1011
1189
|
}
|
|
1190
|
+
associateProcedure(procedureId) {
|
|
1191
|
+
return this.store.select(HypSelectors.url).pipe(withLatestFrom(this.store.select(EventSelectors.selectedIds)), mergeMap(([url, selectedIds]) => {
|
|
1192
|
+
return this.httpClient.put(encodeURI(`${url}/procedures/catalog/id/${procedureId}`), { id: procedureId, events: selectedIds });
|
|
1193
|
+
}));
|
|
1194
|
+
}
|
|
1012
1195
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventService, deps: [{ token: i1.HttpClient }, { token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1013
1196
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventService, providedIn: 'root' }); }
|
|
1014
1197
|
}
|
|
@@ -1094,7 +1277,7 @@ class EventSummaryPageComponent extends SubscriptionnerDirective {
|
|
|
1094
1277
|
this.store.dispatch(EventSummaryActions.load());
|
|
1095
1278
|
this.selectedCriticality$ = this.store
|
|
1096
1279
|
.select(EventSelectors.filters)
|
|
1097
|
-
.pipe(map
|
|
1280
|
+
.pipe(map((filters) => (filters[KNOWN_FILTER_SETS.EVENTS] ?? {})['criticality']?.[0] ?? 'ALL'));
|
|
1098
1281
|
this.subscriptions.add(this.store.select(EventSummarySelectors.summaries).subscribe((summaries) => {
|
|
1099
1282
|
this.summaries = summaries;
|
|
1100
1283
|
}));
|
|
@@ -1120,6 +1303,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
1120
1303
|
type: Input
|
|
1121
1304
|
}] } });
|
|
1122
1305
|
|
|
1306
|
+
class ProcedureColumnOrderComponent extends ColumnOrderComponent {
|
|
1307
|
+
constructor(store) {
|
|
1308
|
+
super(store);
|
|
1309
|
+
this.subscriptions.add(this.store.select(ProcedureSelectors.sort).subscribe(sort => this.sortValue = sort));
|
|
1310
|
+
}
|
|
1311
|
+
sort(order) {
|
|
1312
|
+
throw Error('Sort not implemented.');
|
|
1313
|
+
this.store.dispatch(ProcedureActions.sort({ field: this.field, order }));
|
|
1314
|
+
}
|
|
1315
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureColumnOrderComponent, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1316
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: ProcedureColumnOrderComponent, selector: "hvy-procedure-column-order", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-column-order\">\n <div class=\"o-hvy-column-order__content\">\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }] }); }
|
|
1317
|
+
}
|
|
1318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureColumnOrderComponent, decorators: [{
|
|
1319
|
+
type: Component,
|
|
1320
|
+
args: [{ selector: 'hvy-procedure-column-order', template: "<div class=\"o-hvy-column-order\">\n <div class=\"o-hvy-column-order__content\">\n <ng-content></ng-content>\n </div>\n <div class=\"o-hvy-column-order__chevrons\">\n <pry-icon iconSvg=\"caret_top\" (click)=\"sort('ASC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('ASC')\"></pry-icon>\n <pry-icon iconSvg=\"caret_bottom\" (click)=\"sort('DESC')\" [height]=\"10\" [width]=\"10\" [class.-active]=\"isActive('DESC')\"></pry-icon>\n </div>\n</div>\n" }]
|
|
1321
|
+
}], ctorParameters: () => [{ type: i1$1.Store }] });
|
|
1322
|
+
|
|
1323
|
+
const PROCEDURE_LINK = {
|
|
1324
|
+
fn: (procedure, store) => ['./', procedure.id]
|
|
1325
|
+
};
|
|
1326
|
+
class ProcedureListComponent extends SubscriptionnerDirective {
|
|
1327
|
+
constructor(store, el, router, scroll) {
|
|
1328
|
+
super();
|
|
1329
|
+
this.store = store;
|
|
1330
|
+
this.el = el;
|
|
1331
|
+
this.router = router;
|
|
1332
|
+
this.scroll = scroll;
|
|
1333
|
+
this.PROCEDURE_LINK = PROCEDURE_LINK;
|
|
1334
|
+
this.search = '';
|
|
1335
|
+
this.search$ = new Subject;
|
|
1336
|
+
this.store.dispatch(ProcedureActions.load({}));
|
|
1337
|
+
this.procedures$ = this.store.select(ProcedureSelectors.procedures);
|
|
1338
|
+
this.subscriptions.add(this.search$.pipe(debounceTime$1(300), distinctUntilChanged()).subscribe((search) => {
|
|
1339
|
+
throw Error('Search not implemented.');
|
|
1340
|
+
this.store.dispatch(ProcedureActions.search({ search }));
|
|
1341
|
+
}));
|
|
1342
|
+
}
|
|
1343
|
+
ngAfterViewInit() {
|
|
1344
|
+
this.subscriptions.add(this.scroll.isEndOfPage(this.el.nativeElement, ProcedureSelectors.noMoreProcedures)
|
|
1345
|
+
.subscribe(() => {
|
|
1346
|
+
this.store.dispatch(ProcedureActions.load({ next: true }));
|
|
1347
|
+
}));
|
|
1348
|
+
}
|
|
1349
|
+
emitSearch() {
|
|
1350
|
+
this.search$.next(this.search);
|
|
1351
|
+
}
|
|
1352
|
+
goTo(procedure) {
|
|
1353
|
+
return this.router.navigate(this.PROCEDURE_LINK.fn(procedure, this.store));
|
|
1354
|
+
}
|
|
1355
|
+
ngOnDestroy() {
|
|
1356
|
+
this.store.dispatch(ProcedureActions.search({ search: undefined }));
|
|
1357
|
+
}
|
|
1358
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureListComponent, deps: [{ token: i1$1.Store }, { token: i0.ElementRef }, { token: i2.Router }, { token: InfiniteScrollService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1359
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: ProcedureListComponent, selector: "hvy-procedure-list", usesInheritance: true, ngImport: i0, template: "<div class=\"o-procedure-list\">\n <div class=\"m-form-label-field o-procedure-list__search\">\n <input class=\"a-form-field o-procedure-list__search-input\" type=\"text\" [(ngModel)]=\"search\" (ngModelChange)=\"emitSearch()\" placeholder=\"{{ '@hvy.action.search' | i18n }}...\">\n <pry-icon iconSvg=\"search\" class=\"o-procedure-list__search-icon\"></pry-icon>\n </div>\n <table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th>\n <hvy-procedure-column-order field=\"useCount\">{{ '@hvy.procedure.useCount' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"title\">{{ '@hvy.procedure.title' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"domain\">{{ '@hvy.procedure.domain' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creator\">{{ '@hvy.procedure.author' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"id\">{{ '@hvy.procedure.id' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"lastModificationDate\"><span>{{ '@hvy.event.lastModificationDate' | i18n }}</span></hvy-procedure-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (procedure of procedures$ | async; track procedure.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"goTo(procedure)\">\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.useCount }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.name }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.domain }}</td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ procedure.creator }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.id }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.creationDate| date : 'dd/mm/YYYY HH:MM' }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.lastModificationDate | date : 'dd/mm/YYYY HH:MM' }}\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"PROCEDURE_LINK.fn(procedure, store)\">> {{ '@hvy.action.consult' | i18n }}</a>\n </td>\n </tr>\n } @empty {\n <tr>\n <td class=\"o-hvy-events-table__empty\" colspan=\"50\">\n <div>{{ '@hvy.procedure.noContent' | i18n }}</div>\n <div>\n <ng-content></ng-content>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: ProcedureColumnOrderComponent, selector: "hvy-procedure-column-order" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i1$2.DatePipe, name: "date" }] }); }
|
|
1360
|
+
}
|
|
1361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureListComponent, decorators: [{
|
|
1362
|
+
type: Component,
|
|
1363
|
+
args: [{ selector: 'hvy-procedure-list', template: "<div class=\"o-procedure-list\">\n <div class=\"m-form-label-field o-procedure-list__search\">\n <input class=\"a-form-field o-procedure-list__search-input\" type=\"text\" [(ngModel)]=\"search\" (ngModelChange)=\"emitSearch()\" placeholder=\"{{ '@hvy.action.search' | i18n }}...\">\n <pry-icon iconSvg=\"search\" class=\"o-procedure-list__search-icon\"></pry-icon>\n </div>\n <table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th>\n <hvy-procedure-column-order field=\"useCount\">{{ '@hvy.procedure.useCount' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"title\">{{ '@hvy.procedure.title' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"domain\">{{ '@hvy.procedure.domain' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creator\">{{ '@hvy.procedure.author' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"id\">{{ '@hvy.procedure.id' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"lastModificationDate\"><span>{{ '@hvy.event.lastModificationDate' | i18n }}</span></hvy-procedure-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (procedure of procedures$ | async; track procedure.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"goTo(procedure)\">\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.useCount }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.name }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.domain }}</td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ procedure.creator }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.id }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.creationDate| date : 'dd/mm/YYYY HH:MM' }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.lastModificationDate | date : 'dd/mm/YYYY HH:MM' }}\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"PROCEDURE_LINK.fn(procedure, store)\">> {{ '@hvy.action.consult' | i18n }}</a>\n </td>\n </tr>\n } @empty {\n <tr>\n <td class=\"o-hvy-events-table__empty\" colspan=\"50\">\n <div>{{ '@hvy.procedure.noContent' | i18n }}</div>\n <div>\n <ng-content></ng-content>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n" }]
|
|
1364
|
+
}], ctorParameters: () => [{ type: i1$1.Store }, { type: i0.ElementRef }, { type: i2.Router }, { type: InfiniteScrollService }] });
|
|
1365
|
+
|
|
1123
1366
|
const HYP_BASE_CONFIG = new InjectionToken('base config');
|
|
1124
1367
|
|
|
1125
1368
|
const enTranslations = {
|
|
@@ -1228,7 +1471,24 @@ const enTranslations = {
|
|
|
1228
1471
|
},
|
|
1229
1472
|
procedure: {
|
|
1230
1473
|
name: 'Procedure',
|
|
1231
|
-
progress: 'Procedure progress %'
|
|
1474
|
+
progress: 'Procedure progress %',
|
|
1475
|
+
useCount: 'Usage',
|
|
1476
|
+
title: 'Title',
|
|
1477
|
+
category: 'Category',
|
|
1478
|
+
author: 'Author',
|
|
1479
|
+
id: 'Id',
|
|
1480
|
+
missingProperty: 'Missing property',
|
|
1481
|
+
noContent: 'No existing procedures found',
|
|
1482
|
+
domain: "Domain"
|
|
1483
|
+
},
|
|
1484
|
+
"associationModal": {
|
|
1485
|
+
"title": "Link a procedure",
|
|
1486
|
+
"description": "Adding a procedure to selected events allows for selecting a list of actions to be performed to treat the events.",
|
|
1487
|
+
"linkedEvents": "Linked events",
|
|
1488
|
+
"categoryFilter": "Filter by category",
|
|
1489
|
+
"searchProcedure": "Search procedures",
|
|
1490
|
+
"domainPlaceholder": "Select a domain",
|
|
1491
|
+
"procedurePlaceholder": "Input procedure title"
|
|
1232
1492
|
},
|
|
1233
1493
|
action: {
|
|
1234
1494
|
consult: 'Consult',
|
|
@@ -1237,7 +1497,8 @@ const enTranslations = {
|
|
|
1237
1497
|
comment: 'Comment',
|
|
1238
1498
|
associate: 'Link to procedure',
|
|
1239
1499
|
validate: 'Validate',
|
|
1240
|
-
cancel: 'Cancel'
|
|
1500
|
+
cancel: 'Cancel',
|
|
1501
|
+
search: 'Search'
|
|
1241
1502
|
}
|
|
1242
1503
|
}
|
|
1243
1504
|
};
|
|
@@ -1348,7 +1609,24 @@ const frTranslations = {
|
|
|
1348
1609
|
},
|
|
1349
1610
|
procedure: {
|
|
1350
1611
|
name: 'Procédure',
|
|
1351
|
-
progress: '% avancement procédure'
|
|
1612
|
+
progress: '% avancement procédure',
|
|
1613
|
+
useCount: 'Usage',
|
|
1614
|
+
title: 'Titre',
|
|
1615
|
+
category: 'Métier',
|
|
1616
|
+
author: 'Créateur',
|
|
1617
|
+
id: 'Identifiant',
|
|
1618
|
+
missingProperty: 'Propriété manquante',
|
|
1619
|
+
noContent: 'Aucune procédure n\'a été créée.',
|
|
1620
|
+
domain: "Métier",
|
|
1621
|
+
},
|
|
1622
|
+
associationModal: {
|
|
1623
|
+
title: "Associer à une procédure",
|
|
1624
|
+
description: "Ajouter une procédure à des événements permet de sélectionner la liste d'actions à exécuter pour traiter ces événement",
|
|
1625
|
+
linkedEvents: "Événements liés",
|
|
1626
|
+
categoryFilter: "Filtrer par métier",
|
|
1627
|
+
searchProcedure: "Rechercher une procédure",
|
|
1628
|
+
domainPlaceholder: "Sélectionner un métier",
|
|
1629
|
+
procedurePlaceholder: "Saisissez le titre de la procédure"
|
|
1352
1630
|
},
|
|
1353
1631
|
action: {
|
|
1354
1632
|
consult: 'Consulter',
|
|
@@ -1357,7 +1635,8 @@ const frTranslations = {
|
|
|
1357
1635
|
comment: 'Commenter',
|
|
1358
1636
|
associate: 'Associer à une procédure',
|
|
1359
1637
|
validate: 'Valider',
|
|
1360
|
-
cancel: 'Annuler'
|
|
1638
|
+
cancel: 'Annuler',
|
|
1639
|
+
search: 'Rechercher'
|
|
1361
1640
|
}
|
|
1362
1641
|
}
|
|
1363
1642
|
};
|
|
@@ -1373,20 +1652,22 @@ class EventEffects {
|
|
|
1373
1652
|
this.actions$ = actions$;
|
|
1374
1653
|
this.eventService = eventService;
|
|
1375
1654
|
this.store = store;
|
|
1376
|
-
this.loadEvents$ = createEffect(() => this.actions$.pipe(ofType(EventActions.load), debounceTime(200), withLatestFrom(this.store.select(EventSelectors.events), this.store.select(EventSelectors.noMoreEvents)), filter(([action, events, noMore]) => !noMore), mergeMap$1(([action, stateEvents]) => this.eventService.list(action.next ? stateEvents.length : 0).pipe(map
|
|
1377
|
-
this.getEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.get), debounceTime(200), mergeMap$1((action) => this.eventService.get(action.id).pipe(map
|
|
1378
|
-
this.getForProcedureEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.getForProcedure), debounceTime(200), mergeMap$1((action) => this.eventService.getProcedure(action.id).pipe(map
|
|
1379
|
-
this.saveEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.save), debounceTime(200), mergeMap$1((action) => this.eventService.save(action.event).pipe(map
|
|
1380
|
-
this.saveProcedure$ = createEffect(() => this.actions$.pipe(ofType(EventActions.saveProcedure), debounceTime(200), mergeMap$1((action) => this.eventService.saveProcedure(action.procedure).pipe(map
|
|
1381
|
-
this.close$ = createEffect(() => this.actions$.pipe(ofType(EventActions.status), debounceTime(200), mergeMap$1((action) => {
|
|
1655
|
+
this.loadEvents$ = createEffect(() => this.actions$.pipe(ofType(EventActions.load), debounceTime$1(200), withLatestFrom(this.store.select(EventSelectors.events), this.store.select(EventSelectors.noMoreEvents)), filter(([action, events, noMore]) => !noMore), mergeMap$1(([action, stateEvents]) => this.eventService.list(action.next ? stateEvents.length : 0).pipe(map((events) => EventActions.loadSuccess({ events, startingFrom: action.next ? stateEvents.length : 0 })), catchError((error) => [EventActions.loadFailure({ error: error })])))));
|
|
1656
|
+
this.getEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.get), debounceTime$1(200), mergeMap$1((action) => this.eventService.get(action.id).pipe(map((event) => EventActions.getSuccess({ event })), catchError((error) => [EventActions.getFailure({ error: error })])))));
|
|
1657
|
+
this.getForProcedureEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.getForProcedure), debounceTime$1(200), mergeMap$1((action) => this.eventService.getProcedure(action.id).pipe(map((procedure) => EventActions.getSuccess({ procedure })), catchError((error) => [EventActions.getFailure({ error: error })])))));
|
|
1658
|
+
this.saveEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.save), debounceTime$1(200), mergeMap$1((action) => this.eventService.save(action.event).pipe(map((event) => EventActions.saveSuccess({ event: action.event })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
|
|
1659
|
+
this.saveProcedure$ = createEffect(() => this.actions$.pipe(ofType(EventActions.saveProcedure), debounceTime$1(200), mergeMap$1((action) => this.eventService.saveProcedure(action.procedure).pipe(map((procedure) => EventActions.saveSuccess({ procedure: action.procedure })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
|
|
1660
|
+
this.close$ = createEffect(() => this.actions$.pipe(ofType(EventActions.status), debounceTime$1(200), mergeMap$1((action) => {
|
|
1382
1661
|
if (!!action.event) {
|
|
1383
|
-
return this.eventService.status(action.event, action.targetStatus, action.comment).pipe(map
|
|
1662
|
+
return this.eventService.status(action.event, action.targetStatus, action.comment).pipe(map((event) => EventActions.statusSuccess()), catchError((error) => [EventActions.statusFailure({ error: error })]));
|
|
1384
1663
|
}
|
|
1385
1664
|
else {
|
|
1386
|
-
return this.eventService.statusProcedure(action.procedure, action.targetStatus, action.comment).pipe(map
|
|
1665
|
+
return this.eventService.statusProcedure(action.procedure, action.targetStatus, action.comment).pipe(map((event) => EventActions.statusSuccess()), catchError((error) => [EventActions.statusFailure({ error: error })]));
|
|
1387
1666
|
}
|
|
1388
1667
|
})));
|
|
1389
|
-
this.sort$ = createEffect(() => this.actions$.pipe(ofType(EventActions.sort
|
|
1668
|
+
this.sort$ = createEffect(() => this.actions$.pipe(ofType(EventActions.sort), debounceTime$1(200), map(() => EventActions.load({}))));
|
|
1669
|
+
this.filter$ = createEffect(() => this.actions$.pipe(ofType(EventActions.filter), filter((action) => action.filterSet === KNOWN_FILTER_SETS.EVENTS), debounceTime$1(200), map(() => EventActions.load({}))));
|
|
1670
|
+
this.associateProcedure$ = createEffect(() => this.actions$.pipe(ofType(EventActions.associateProcedure), mergeMap$1((action) => this.eventService.associateProcedure(action.procedureId).pipe(map(() => EventActions.load({})), catchError((error) => [EventActions.associateProcedureFailure({ error: error })])))));
|
|
1390
1671
|
}
|
|
1391
1672
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventEffects, deps: [{ token: i1$3.Actions }, { token: EventService }, { token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1392
1673
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventEffects }); }
|
|
@@ -1453,7 +1734,7 @@ class EventSummaryEffects {
|
|
|
1453
1734
|
constructor(actions$, eventSummaryService) {
|
|
1454
1735
|
this.actions$ = actions$;
|
|
1455
1736
|
this.eventSummaryService = eventSummaryService;
|
|
1456
|
-
this.loadSummaries$ = createEffect(() => this.actions$.pipe(ofType(EventSummaryActions.load), debounceTime(200), mergeMap$1((action) => this.eventSummaryService.list().pipe(map
|
|
1737
|
+
this.loadSummaries$ = createEffect(() => this.actions$.pipe(ofType(EventSummaryActions.load), debounceTime$1(200), mergeMap$1((action) => this.eventSummaryService.list().pipe(map((summaries) => EventSummaryActions.loadSuccess({ summaries })), catchError((error) => [EventSummaryActions.loadFailure({ error: error })])))));
|
|
1457
1738
|
}
|
|
1458
1739
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventSummaryEffects, deps: [{ token: i1$3.Actions }, { token: EventSummaryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1459
1740
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventSummaryEffects }); }
|
|
@@ -1462,9 +1743,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
1462
1743
|
type: Injectable
|
|
1463
1744
|
}], ctorParameters: () => [{ type: i1$3.Actions }, { type: EventSummaryService }] });
|
|
1464
1745
|
|
|
1746
|
+
class ProcedureEffects {
|
|
1747
|
+
constructor(actions$, procedureService, store) {
|
|
1748
|
+
this.actions$ = actions$;
|
|
1749
|
+
this.procedureService = procedureService;
|
|
1750
|
+
this.store = store;
|
|
1751
|
+
this.loadProcedures$ = createEffect(() => this.actions$.pipe(ofType(ProcedureActions.load), debounceTime$1(200), withLatestFrom(this.store.select(ProcedureSelectors.procedures), this.store.select(ProcedureSelectors.noMoreProcedures)), filter(([action, stateProcedures, noMore]) => !noMore), mergeMap$1(([action, stateProcedures]) => this.procedureService.list(action.next ? stateProcedures.length : 0).pipe(map((procedures) => ProcedureActions.loadSuccess({ procedures, startingFrom: action.next ? stateProcedures.length : 0 })), catchError((error) => [ProcedureActions.loadFailure({ error: error })])))));
|
|
1752
|
+
this.sort$ = createEffect(() => this.actions$.pipe(ofType(ProcedureActions.sort), debounceTime$1(200), map(() => ProcedureActions.load({}))));
|
|
1753
|
+
}
|
|
1754
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureEffects, deps: [{ token: i1$3.Actions }, { token: ProcedureService }, { token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1755
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureEffects }); }
|
|
1756
|
+
}
|
|
1757
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureEffects, decorators: [{
|
|
1758
|
+
type: Injectable
|
|
1759
|
+
}], ctorParameters: () => [{ type: i1$3.Actions }, { type: ProcedureService }, { type: i1$1.Store }] });
|
|
1760
|
+
|
|
1465
1761
|
const components = [
|
|
1466
1762
|
EventDetailComponent,
|
|
1467
1763
|
EventListComponent,
|
|
1764
|
+
EventColumnOrderComponent,
|
|
1468
1765
|
IconDisplayComponent,
|
|
1469
1766
|
EventSummaryItemComponent,
|
|
1470
1767
|
EventSummaryListComponent,
|
|
@@ -1476,7 +1773,10 @@ const components = [
|
|
|
1476
1773
|
ColumnOrderComponent,
|
|
1477
1774
|
EventFiltersComponent,
|
|
1478
1775
|
DateFilterComponent,
|
|
1479
|
-
ChoiceFilterComponent
|
|
1776
|
+
ChoiceFilterComponent,
|
|
1777
|
+
ProcedureListComponent,
|
|
1778
|
+
ProcedureColumnOrderComponent,
|
|
1779
|
+
ProcedureAssociationModalComponent
|
|
1480
1780
|
];
|
|
1481
1781
|
class PvyHypervisorModule {
|
|
1482
1782
|
static forRoot(options) {
|
|
@@ -1498,6 +1798,7 @@ class PvyHypervisorModule {
|
|
|
1498
1798
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: PvyHypervisorModule, deps: [{ token: HYP_BASE_CONFIG }, { token: i1$1.Store }, { token: i3.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1499
1799
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: PvyHypervisorModule, declarations: [EventDetailComponent,
|
|
1500
1800
|
EventListComponent,
|
|
1801
|
+
EventColumnOrderComponent,
|
|
1501
1802
|
IconDisplayComponent,
|
|
1502
1803
|
EventSummaryItemComponent,
|
|
1503
1804
|
EventSummaryListComponent,
|
|
@@ -1509,12 +1810,13 @@ class PvyHypervisorModule {
|
|
|
1509
1810
|
ColumnOrderComponent,
|
|
1510
1811
|
EventFiltersComponent,
|
|
1511
1812
|
DateFilterComponent,
|
|
1512
|
-
ChoiceFilterComponent
|
|
1813
|
+
ChoiceFilterComponent,
|
|
1814
|
+
ProcedureListComponent,
|
|
1815
|
+
ProcedureColumnOrderComponent,
|
|
1816
|
+
ProcedureAssociationModalComponent], imports: [i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$3.EffectsFeatureModule, NgForOf,
|
|
1513
1817
|
AsyncPipe,
|
|
1514
1818
|
PryI18nModule,
|
|
1515
1819
|
PryCoreModule,
|
|
1516
|
-
AsyncPipe,
|
|
1517
|
-
PryCoreModule,
|
|
1518
1820
|
NgStyle,
|
|
1519
1821
|
PryCheckboxModule,
|
|
1520
1822
|
FormsModule,
|
|
@@ -1524,15 +1826,10 @@ class PvyHypervisorModule {
|
|
|
1524
1826
|
PryIconModule,
|
|
1525
1827
|
KeyValuePipe,
|
|
1526
1828
|
PrySelectModule,
|
|
1527
|
-
FormsModule,
|
|
1528
1829
|
JsonPipe,
|
|
1529
|
-
PryDatePickerModule,
|
|
1530
|
-
PryI18nModule,
|
|
1531
|
-
PryIconModule,
|
|
1532
|
-
PryI18nModule,
|
|
1533
|
-
AsyncPipe,
|
|
1534
|
-
PryI18nModule], exports: [EventDetailComponent,
|
|
1830
|
+
PryDatePickerModule], exports: [EventDetailComponent,
|
|
1535
1831
|
EventListComponent,
|
|
1832
|
+
EventColumnOrderComponent,
|
|
1536
1833
|
IconDisplayComponent,
|
|
1537
1834
|
EventSummaryItemComponent,
|
|
1538
1835
|
EventSummaryListComponent,
|
|
@@ -1544,25 +1841,23 @@ class PvyHypervisorModule {
|
|
|
1544
1841
|
ColumnOrderComponent,
|
|
1545
1842
|
EventFiltersComponent,
|
|
1546
1843
|
DateFilterComponent,
|
|
1547
|
-
ChoiceFilterComponent
|
|
1844
|
+
ChoiceFilterComponent,
|
|
1845
|
+
ProcedureListComponent,
|
|
1846
|
+
ProcedureColumnOrderComponent,
|
|
1847
|
+
ProcedureAssociationModalComponent] }); }
|
|
1548
1848
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: PvyHypervisorModule, imports: [StoreModule.forFeature(hypFeatureKey, hypervisorReducer),
|
|
1549
1849
|
StoreModule.forFeature(eventFeatureKey, eventReducer),
|
|
1550
1850
|
StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),
|
|
1551
|
-
|
|
1851
|
+
StoreModule.forFeature(procedureFeatureKey, procedureReducer),
|
|
1852
|
+
EffectsModule.forFeature([EventEffects, EventSummaryEffects, ProcedureEffects, HypervisorEffects]),
|
|
1552
1853
|
PryI18nModule,
|
|
1553
1854
|
PryCoreModule,
|
|
1554
|
-
PryCoreModule,
|
|
1555
1855
|
PryCheckboxModule,
|
|
1556
1856
|
FormsModule,
|
|
1557
1857
|
PrySinceDateModule,
|
|
1558
1858
|
PryIconModule,
|
|
1559
1859
|
PrySelectModule,
|
|
1560
|
-
|
|
1561
|
-
PryDatePickerModule,
|
|
1562
|
-
PryI18nModule,
|
|
1563
|
-
PryIconModule,
|
|
1564
|
-
PryI18nModule,
|
|
1565
|
-
PryI18nModule] }); }
|
|
1860
|
+
PryDatePickerModule] }); }
|
|
1566
1861
|
}
|
|
1567
1862
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: PvyHypervisorModule, decorators: [{
|
|
1568
1863
|
type: NgModule,
|
|
@@ -1574,13 +1869,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
1574
1869
|
StoreModule.forFeature(hypFeatureKey, hypervisorReducer),
|
|
1575
1870
|
StoreModule.forFeature(eventFeatureKey, eventReducer),
|
|
1576
1871
|
StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),
|
|
1577
|
-
|
|
1872
|
+
StoreModule.forFeature(procedureFeatureKey, procedureReducer),
|
|
1873
|
+
EffectsModule.forFeature([EventEffects, EventSummaryEffects, ProcedureEffects, HypervisorEffects]),
|
|
1578
1874
|
NgForOf,
|
|
1579
1875
|
AsyncPipe,
|
|
1580
1876
|
PryI18nModule,
|
|
1581
1877
|
PryCoreModule,
|
|
1582
|
-
AsyncPipe,
|
|
1583
|
-
PryCoreModule,
|
|
1584
1878
|
NgStyle,
|
|
1585
1879
|
PryCheckboxModule,
|
|
1586
1880
|
FormsModule,
|
|
@@ -1590,14 +1884,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
1590
1884
|
PryIconModule,
|
|
1591
1885
|
KeyValuePipe,
|
|
1592
1886
|
PrySelectModule,
|
|
1593
|
-
FormsModule,
|
|
1594
1887
|
JsonPipe,
|
|
1595
1888
|
PryDatePickerModule,
|
|
1596
|
-
PryI18nModule,
|
|
1597
|
-
PryIconModule,
|
|
1598
|
-
PryI18nModule,
|
|
1599
|
-
AsyncPipe,
|
|
1600
|
-
PryI18nModule,
|
|
1601
1889
|
],
|
|
1602
1890
|
exports: [
|
|
1603
1891
|
...components,
|
|
@@ -1616,5 +1904,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
1616
1904
|
* Generated bundle index. Do not edit.
|
|
1617
1905
|
*/
|
|
1618
1906
|
|
|
1619
|
-
export { CATEGORIES_BY_TYPE, ChoiceFilterComponent, ColumnOrderComponent, DOMAINS, DateFilterComponent, EVENT_LINK, EVENT_TO_ICON, EquipmentService, EventActions, EventDetailComponent, EventEffects, EventFiltersComponent, EventIconPipe, EventListComponent, EventSelectors, EventService, EventSummaryActions, EventSummaryEffects, EventSummaryItemComponent, EventSummaryListComponent, EventSummaryPageComponent, EventSummarySelectors, ForDatetimeLocalPipe, HYP_BASE_CONFIG, HypEventCategory, HypEventCriticality, HypEventStatus, HypEventType, HypSelectors, HypervisorActions, HypervisorEffects, HypervisorService, IconDisplayComponent, KNOWN_FILTER_SETS, PAGE_SIZE_FETCH, ProgressDisplayComponent, PvyHypervisorModule,
|
|
1907
|
+
export { CATEGORIES_BY_TYPE, ChoiceFilterComponent, ColumnOrderComponent, DOMAINS, DateFilterComponent, EVENT_LINK, EVENT_TO_ICON, EquipmentService, EventActions, EventColumnOrderComponent, EventDetailComponent, EventEffects, EventFiltersComponent, EventIconPipe, EventListComponent, EventSelectors, EventService, EventSummaryActions, EventSummaryEffects, EventSummaryItemComponent, EventSummaryListComponent, EventSummaryPageComponent, EventSummarySelectors, ForDatetimeLocalPipe, HYP_BASE_CONFIG, HypEventCategory, HypEventCriticality, HypEventStatus, HypEventType, HypSelectors, HypervisorActions, HypervisorEffects, HypervisorService, IconDisplayComponent, KNOWN_FILTER_SETS, PAGE_SIZE_FETCH, PROCEDURE_LINK, PROCEDURE_PAGE_SIZE_FETCH, ProcedureActions, ProcedureAssociationModalComponent, ProcedureColumnOrderComponent, ProcedureEffects, ProcedureListComponent, ProcedureSelectors, ProcedureService, ProgressDisplayComponent, PvyHypervisorModule, StatusDisplayComponent, enTranslations, eventFeatureKey, eventForWriteAPI, eventInitialState, eventReducer, eventSummaryFeatureKey, eventSummaryInitialState, eventSummaryReducer, frTranslations, hypFeatureKey, hypInitialState, hypervisorReducer, procedureFeatureKey, procedureForWriteAPI, procedureInitialState, procedureReducer };
|
|
1620
1908
|
//# sourceMappingURL=provoly-hypervisor.mjs.map
|