@provoly/hypervisor 0.0.30 → 0.0.32

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.
Files changed (42) hide show
  1. package/esm2022/public-api.mjs +2 -1
  2. package/esm2022/src/lib/event/procedure-association-modal/procedure-association-modal.component.mjs +60 -0
  3. package/esm2022/src/lib/event/public-api.mjs +2 -1
  4. package/esm2022/src/lib/event-summary/page/event-summary-page.component.mjs +3 -3
  5. package/esm2022/src/lib/general/i18n/en.translations.mjs +10 -1
  6. package/esm2022/src/lib/general/i18n/fr.translations.mjs +10 -1
  7. package/esm2022/src/lib/hypervisor.module.mjs +9 -5
  8. package/esm2022/src/lib/model/public-api.mjs +2 -1
  9. package/esm2022/src/lib/procedure/list/procedure-list.component.mjs +1 -1
  10. package/esm2022/src/lib/store/event/event.actions.mjs +4 -2
  11. package/esm2022/src/lib/store/event/event.effects.mjs +2 -1
  12. package/esm2022/src/lib/store/event/event.selectors.mjs +3 -1
  13. package/esm2022/src/lib/store/event/event.service.mjs +6 -1
  14. package/esm2022/src/lib/store/procedure/procedure.actions.mjs +3 -2
  15. package/esm2022/src/lib/store/procedure/procedure.effects.mjs +25 -0
  16. package/esm2022/src/lib/store/procedure/procedure.reducer.mjs +1 -1
  17. package/esm2022/src/lib/store/procedure/procedure.service.mjs +17 -3
  18. package/esm2022/src/lib/store/procedure/public-api.mjs +6 -0
  19. package/fesm2022/provoly-hypervisor.mjs +207 -116
  20. package/fesm2022/provoly-hypervisor.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/public-api.d.ts +1 -0
  23. package/src/lib/event/procedure-association-modal/procedure-association-modal.component.d.ts +27 -0
  24. package/src/lib/event/public-api.d.ts +1 -0
  25. package/src/lib/general/i18n/en.translations.d.ts +9 -0
  26. package/src/lib/general/i18n/fr.translations.d.ts +9 -0
  27. package/src/lib/hypervisor.module.d.ts +10 -9
  28. package/src/lib/model/public-api.d.ts +1 -0
  29. package/src/lib/store/event/event.actions.d.ts +10 -0
  30. package/src/lib/store/event/event.effects.d.ts +5 -0
  31. package/src/lib/store/event/event.selectors.d.ts +1 -0
  32. package/src/lib/store/event/event.service.d.ts +1 -0
  33. package/src/lib/store/procedure/procedure.actions.d.ts +5 -0
  34. package/src/lib/store/procedure/{procedure.effect.d.ts → procedure.effects.d.ts} +1 -4
  35. package/src/lib/store/procedure/procedure.selectors.d.ts +1 -1
  36. package/src/lib/store/procedure/procedure.service.d.ts +2 -1
  37. package/src/lib/store/procedure/public-api.d.ts +5 -0
  38. package/styles/components/_index.scss +1 -0
  39. package/styles/components/_m-hvy-procedure-association-modal.scss +34 -0
  40. package/styles/components/_o-hvy-event-filters.scss +5 -4
  41. package/styles/components/_o-hvy-event-summary-page.scss +1 -8
  42. package/esm2022/src/lib/store/procedure/procedure.effect.mjs +0 -26
@@ -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, withLatestFrom, filter, auditTime, combineLatest, map as map$1, BehaviorSubject, Subject, distinctUntilChanged } from 'rxjs';
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,7 +18,7 @@ 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 { map, debounceTime, mergeMap as mergeMap$1, catchError } from 'rxjs/operators';
21
+ import { map, startWith, catchError, debounceTime as debounceTime$1, mergeMap as mergeMap$1 } from 'rxjs/operators';
22
22
  import * as i11 from '@provoly/dashboard/components/sinceDate';
23
23
  import { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';
24
24
  import * as i1$3 from '@ngrx/effects';
@@ -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 = {
@@ -586,6 +588,7 @@ const feature$2 = createFeatureSelector(eventFeatureKey);
586
588
  const events = createSelector(feature$2, (state) => state.events);
587
589
  const noMoreEvents = createSelector(feature$2, (state) => state.noMoreEvents);
588
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)));
589
592
  const loading$2 = createSelector(feature$2, (state) => state.loading);
590
593
  const filters = createSelector(feature$2, (state) => state.filters);
591
594
  const details = createSelector(feature$2, (state) => state.details);
@@ -594,6 +597,7 @@ const EventSelectors = {
594
597
  feature: feature$2,
595
598
  events,
596
599
  selectedIds,
600
+ selectedEvents,
597
601
  loading: loading$2,
598
602
  filters,
599
603
  details,
@@ -930,6 +934,152 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
930
934
  args: ['template', { read: TemplateRef }]
931
935
  }] } });
932
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
+
933
1083
  const EventSummaryActions = {
934
1084
  load: createAction('[Event] Load Summaries'),
935
1085
  loadSuccess: createAction('[Event Api] Load Summaries Success', props()),
@@ -947,7 +1097,7 @@ const eventSummaryInitialState = {
947
1097
  summaries: { ...emptySummaries },
948
1098
  loading: false,
949
1099
  };
950
- const internalReducer$1 = createReducer(eventSummaryInitialState, on(EventSummaryActions.load, (state, action) => ({
1100
+ const internalReducer = createReducer(eventSummaryInitialState, on(EventSummaryActions.load, (state, action) => ({
951
1101
  ...state,
952
1102
  loading: true
953
1103
  })), on(EventSummaryActions.loadSuccess, (state, { summaries }) => ({
@@ -959,16 +1109,16 @@ const internalReducer$1 = createReducer(eventSummaryInitialState, on(EventSummar
959
1109
  loading: false
960
1110
  })));
961
1111
  function eventSummaryReducer(state, action) {
962
- return internalReducer$1(state, action);
1112
+ return internalReducer(state, action);
963
1113
  }
964
1114
 
965
- const feature$1 = createFeatureSelector(eventSummaryFeatureKey);
966
- const summaries = createSelector(feature$1, (state) => state.summaries);
967
- const loading$1 = createSelector(feature$1, (state) => state.loading);
1115
+ const feature = createFeatureSelector(eventSummaryFeatureKey);
1116
+ const summaries = createSelector(feature, (state) => state.summaries);
1117
+ const loading = createSelector(feature, (state) => state.loading);
968
1118
  const EventSummarySelectors = {
969
- feature: feature$1,
1119
+ feature,
970
1120
  summaries,
971
- loading: loading$1
1121
+ loading
972
1122
  };
973
1123
 
974
1124
  const eventForWriteAPI = (event) => ({
@@ -981,7 +1131,7 @@ const procedureForWriteAPI = (procedure) => ({
981
1131
  events: procedure.events.map(eventForWriteAPI)
982
1132
  });
983
1133
 
984
- const PAGE_SIZE_FETCH$1 = { value: 20 };
1134
+ const PAGE_SIZE_FETCH = { value: 20 };
985
1135
  const KNOWN_FILTER_SETS = {
986
1136
  EVENTS: 'events',
987
1137
  SUMMARY: 'summary'
@@ -991,7 +1141,7 @@ class EventService {
991
1141
  this.httpClient = httpClient;
992
1142
  this.store = store;
993
1143
  }
994
- list(startWith = 0, pageSize = PAGE_SIZE_FETCH$1.value) {
1144
+ list(startWith = 0, pageSize = PAGE_SIZE_FETCH.value) {
995
1145
  return this.store.select(HypSelectors.url).pipe(withLatestFrom(this.store.select(EventSelectors.filters), this.store.select(EventSelectors.sort)), mergeMap(([url, filterSets, sort]) => {
996
1146
  const filters = filterSets[KNOWN_FILTER_SETS.EVENTS] ?? {};
997
1147
  let params = new HttpParams();
@@ -1037,6 +1187,11 @@ class EventService {
1037
1187
  return this.httpClient.put(encodeURI(`${url}/procedures/id/${procedure.id}/close`), { status, comment });
1038
1188
  }));
1039
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
+ }
1040
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 }); }
1041
1196
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventService, providedIn: 'root' }); }
1042
1197
  }
@@ -1137,75 +1292,17 @@ class EventSummaryPageComponent extends SubscriptionnerDirective {
1137
1292
  this.store.dispatch(EventSummaryActions.load());
1138
1293
  }
1139
1294
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventSummaryPageComponent, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
1140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventSummaryPageComponent, selector: "hvy-event-summary-page", inputs: { pageTitle: "pageTitle", consultLink: "consultLink" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }}\n :&nbsp;</label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n <div class=\"o-hvy-event-summary-page__content__sub\">\n @for (summaryKey of statusList; track summaryKey) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryKey\"\n [totalEventCount]=\"summaries[summaryKey].count\"\n [events]=\"summaries[summaryKey].events\"\n [consultLink]=\"consultLink\">\n </hvy-event-summary-list>\n }\n </div>\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: EventSummaryListComponent, selector: "hvy-event-summary-list", inputs: ["events", "totalEventCount", "status", "consultLink", "itemLinkBase"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1295
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventSummaryPageComponent, selector: "hvy-event-summary-page", inputs: { pageTitle: "pageTitle", consultLink: "consultLink" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header u-display-flex -justify-space-between\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }}\n :&nbsp;</label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n <div class=\"o-hvy-event-summary-page__content__sub\">\n @for (summaryKey of statusList; track summaryKey) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryKey\"\n [totalEventCount]=\"summaries[summaryKey].count\"\n [events]=\"summaries[summaryKey].events\"\n [consultLink]=\"consultLink\">\n </hvy-event-summary-list>\n }\n </div>\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: EventSummaryListComponent, selector: "hvy-event-summary-list", inputs: ["events", "totalEventCount", "status", "consultLink", "itemLinkBase"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1141
1296
  }
1142
1297
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventSummaryPageComponent, decorators: [{
1143
1298
  type: Component,
1144
- args: [{ selector: 'hvy-event-summary-page', template: "<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }}\n :&nbsp;</label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n <div class=\"o-hvy-event-summary-page__content__sub\">\n @for (summaryKey of statusList; track summaryKey) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryKey\"\n [totalEventCount]=\"summaries[summaryKey].count\"\n [events]=\"summaries[summaryKey].events\"\n [consultLink]=\"consultLink\">\n </hvy-event-summary-list>\n }\n </div>\n </div>\n</div>\n" }]
1299
+ args: [{ selector: 'hvy-event-summary-page', template: "<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header u-display-flex -justify-space-between\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }}\n :&nbsp;</label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n <div class=\"o-hvy-event-summary-page__content__sub\">\n @for (summaryKey of statusList; track summaryKey) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryKey\"\n [totalEventCount]=\"summaries[summaryKey].count\"\n [events]=\"summaries[summaryKey].events\"\n [consultLink]=\"consultLink\">\n </hvy-event-summary-list>\n }\n </div>\n </div>\n</div>\n" }]
1145
1300
  }], ctorParameters: () => [{ type: i1$1.Store }], propDecorators: { pageTitle: [{
1146
1301
  type: Input
1147
1302
  }], consultLink: [{
1148
1303
  type: Input
1149
1304
  }] } });
1150
1305
 
1151
- const ProcedureActions = {
1152
- load: createAction('[Procedure] Load Procedures', props()),
1153
- loadSuccess: createAction('[Procedure] (bus) Load Procedure Success', props()),
1154
- loadFailure: createAction('[Procedure] Load Procedures Failure', props()),
1155
- sort: createAction('[Procedure] Set Procedure List Sorting', props()),
1156
- search: createAction('[Procedure] Set Search Query Value', props())
1157
- };
1158
-
1159
- const procedureFeatureKey = '@hvy/procedure';
1160
- const procedureInitialState = {
1161
- procedures: [],
1162
- noMoreProcedures: false,
1163
- loading: false,
1164
- };
1165
- const internalReducer = createReducer(procedureInitialState, on(ProcedureActions.load, (state) => ({
1166
- ...state,
1167
- loading: true
1168
- })), on(ProcedureActions.loadSuccess, (state, { procedures, startingFrom }) => {
1169
- return {
1170
- ...state,
1171
- loading: false,
1172
- noMoreProcedures: procedures.length < 20,
1173
- procedures: [...state.procedures.slice(0, startingFrom), ...procedures]
1174
- };
1175
- }), on(ProcedureActions.loadFailure, (state) => ({
1176
- ...state,
1177
- loading: false,
1178
- procedures: []
1179
- })), on(ProcedureActions.search, (state, { search }) => ({
1180
- ...state,
1181
- events: [],
1182
- noMoreProcedures: false,
1183
- search
1184
- })), on(ProcedureActions.sort, (state, { field, order }) => ({
1185
- ...state,
1186
- events: [],
1187
- noMoreProcedures: false,
1188
- sort: { field, order }
1189
- })));
1190
- function procedureReducer(state, action) {
1191
- return internalReducer(state, action);
1192
- }
1193
-
1194
- const feature = createFeatureSelector(procedureFeatureKey);
1195
- const procedures = createSelector(feature, (state) => state.procedures);
1196
- const noMoreProcedures = createSelector(feature, (state) => state.noMoreProcedures);
1197
- const loading = createSelector(feature, (state) => state.loading);
1198
- const search = createSelector(feature, (state) => state.search);
1199
- const sort = createSelector(feature, (state) => state.sort);
1200
- const ProcedureSelectors = {
1201
- feature,
1202
- procedures,
1203
- loading,
1204
- noMoreProcedures,
1205
- search,
1206
- sort
1207
- };
1208
-
1209
1306
  class ProcedureColumnOrderComponent extends ColumnOrderComponent {
1210
1307
  constructor(store) {
1211
1308
  super(store);
@@ -1238,7 +1335,7 @@ class ProcedureListComponent extends SubscriptionnerDirective {
1238
1335
  this.search$ = new Subject;
1239
1336
  this.store.dispatch(ProcedureActions.load({}));
1240
1337
  this.procedures$ = this.store.select(ProcedureSelectors.procedures);
1241
- this.subscriptions.add(this.search$.pipe(debounceTime(300), distinctUntilChanged()).subscribe((search) => {
1338
+ this.subscriptions.add(this.search$.pipe(debounceTime$1(300), distinctUntilChanged()).subscribe((search) => {
1242
1339
  throw Error('Search not implemented.');
1243
1340
  this.store.dispatch(ProcedureActions.search({ search }));
1244
1341
  }));
@@ -1384,6 +1481,15 @@ const enTranslations = {
1384
1481
  noContent: 'No existing procedures found',
1385
1482
  domain: "Domain"
1386
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"
1492
+ },
1387
1493
  action: {
1388
1494
  consult: 'Consult',
1389
1495
  close: 'Close',
@@ -1513,6 +1619,15 @@ const frTranslations = {
1513
1619
  noContent: 'Aucune procédure n\'a été créée.',
1514
1620
  domain: "Métier",
1515
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"
1630
+ },
1516
1631
  action: {
1517
1632
  consult: 'Consulter',
1518
1633
  close: 'Clotûrer',
@@ -1537,12 +1652,12 @@ class EventEffects {
1537
1652
  this.actions$ = actions$;
1538
1653
  this.eventService = eventService;
1539
1654
  this.store = store;
1540
- 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((events) => EventActions.loadSuccess({ events, startingFrom: action.next ? stateEvents.length : 0 })), catchError((error) => [EventActions.loadFailure({ error: error })])))));
1541
- this.getEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.get), debounceTime(200), mergeMap$1((action) => this.eventService.get(action.id).pipe(map((event) => EventActions.getSuccess({ event })), catchError((error) => [EventActions.getFailure({ error: error })])))));
1542
- this.getForProcedureEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.getForProcedure), debounceTime(200), mergeMap$1((action) => this.eventService.getProcedure(action.id).pipe(map((procedure) => EventActions.getSuccess({ procedure })), catchError((error) => [EventActions.getFailure({ error: error })])))));
1543
- this.saveEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.save), debounceTime(200), mergeMap$1((action) => this.eventService.save(action.event).pipe(map((event) => EventActions.saveSuccess({ event: action.event })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
1544
- this.saveProcedure$ = createEffect(() => this.actions$.pipe(ofType(EventActions.saveProcedure), debounceTime(200), mergeMap$1((action) => this.eventService.saveProcedure(action.procedure).pipe(map((procedure) => EventActions.saveSuccess({ procedure: action.procedure })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
1545
- 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) => {
1546
1661
  if (!!action.event) {
1547
1662
  return this.eventService.status(action.event, action.targetStatus, action.comment).pipe(map((event) => EventActions.statusSuccess()), catchError((error) => [EventActions.statusFailure({ error: error })]));
1548
1663
  }
@@ -1550,8 +1665,9 @@ class EventEffects {
1550
1665
  return this.eventService.statusProcedure(action.procedure, action.targetStatus, action.comment).pipe(map((event) => EventActions.statusSuccess()), catchError((error) => [EventActions.statusFailure({ error: error })]));
1551
1666
  }
1552
1667
  })));
1553
- this.sort$ = createEffect(() => this.actions$.pipe(ofType(EventActions.sort), debounceTime(200), map(() => EventActions.load({}))));
1554
- this.filter$ = createEffect(() => this.actions$.pipe(ofType(EventActions.filter), filter((action) => action.filterSet === KNOWN_FILTER_SETS.EVENTS), debounceTime(200), map(() => EventActions.load({}))));
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 })])))));
1555
1671
  }
1556
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 }); }
1557
1673
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventEffects }); }
@@ -1618,7 +1734,7 @@ class EventSummaryEffects {
1618
1734
  constructor(actions$, eventSummaryService) {
1619
1735
  this.actions$ = actions$;
1620
1736
  this.eventSummaryService = eventSummaryService;
1621
- this.loadSummaries$ = createEffect(() => this.actions$.pipe(ofType(EventSummaryActions.load), debounceTime(200), mergeMap$1((action) => this.eventSummaryService.list().pipe(map((summaries) => EventSummaryActions.loadSuccess({ summaries })), catchError((error) => [EventSummaryActions.loadFailure({ error: error })])))));
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 })])))));
1622
1738
  }
1623
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 }); }
1624
1740
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventSummaryEffects }); }
@@ -1627,41 +1743,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
1627
1743
  type: Injectable
1628
1744
  }], ctorParameters: () => [{ type: i1$3.Actions }, { type: EventSummaryService }] });
1629
1745
 
1630
- const PAGE_SIZE_FETCH = { value: 20 };
1631
- class ProcedureService {
1632
- constructor(httpClient, store) {
1633
- this.httpClient = httpClient;
1634
- this.store = store;
1635
- }
1636
- list(startWith = 0, pageSize = PAGE_SIZE_FETCH.value) {
1637
- return this.store.select(HypSelectors.url).pipe(withLatestFrom(this.store.select(ProcedureSelectors.sort), this.store.select(ProcedureSelectors.search)), mergeMap(([url, sort, search]) => {
1638
- let params = new HttpParams();
1639
- params = params.set('page', startWith / pageSize + 1);
1640
- if (search)
1641
- params = params.set('search', search);
1642
- if (sort)
1643
- params = params.set('sort', sort.field).set('order', sort.order);
1644
- return this.httpClient.get(encodeURI(`${url}/procedures/catalog`), { params });
1645
- }));
1646
- }
1647
- 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 }); }
1648
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureService, providedIn: 'root' }); }
1649
- }
1650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureService, decorators: [{
1651
- type: Injectable,
1652
- args: [{
1653
- providedIn: 'root'
1654
- }]
1655
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.Store }] });
1656
-
1657
1746
  class ProcedureEffects {
1658
1747
  constructor(actions$, procedureService, store) {
1659
1748
  this.actions$ = actions$;
1660
1749
  this.procedureService = procedureService;
1661
1750
  this.store = store;
1662
- this.loadProcedures$ = createEffect(() => this.actions$.pipe(ofType(ProcedureActions.load), debounceTime(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 })])))));
1663
- this.search$ = createEffect(() => this.actions$.pipe(ofType(ProcedureActions.search), debounceTime(200), map(() => ProcedureActions.load({}))));
1664
- this.sort$ = createEffect(() => this.actions$.pipe(ofType(ProcedureActions.sort), debounceTime(200), map(() => ProcedureActions.load({}))));
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({}))));
1665
1753
  }
1666
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 }); }
1667
1755
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureEffects }); }
@@ -1687,7 +1775,8 @@ const components = [
1687
1775
  DateFilterComponent,
1688
1776
  ChoiceFilterComponent,
1689
1777
  ProcedureListComponent,
1690
- ProcedureColumnOrderComponent
1778
+ ProcedureColumnOrderComponent,
1779
+ ProcedureAssociationModalComponent
1691
1780
  ];
1692
1781
  class PvyHypervisorModule {
1693
1782
  static forRoot(options) {
@@ -1723,7 +1812,8 @@ class PvyHypervisorModule {
1723
1812
  DateFilterComponent,
1724
1813
  ChoiceFilterComponent,
1725
1814
  ProcedureListComponent,
1726
- ProcedureColumnOrderComponent], imports: [i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$3.EffectsFeatureModule, NgForOf,
1815
+ ProcedureColumnOrderComponent,
1816
+ ProcedureAssociationModalComponent], imports: [i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$1.StoreFeatureModule, i1$3.EffectsFeatureModule, NgForOf,
1727
1817
  AsyncPipe,
1728
1818
  PryI18nModule,
1729
1819
  PryCoreModule,
@@ -1753,7 +1843,8 @@ class PvyHypervisorModule {
1753
1843
  DateFilterComponent,
1754
1844
  ChoiceFilterComponent,
1755
1845
  ProcedureListComponent,
1756
- ProcedureColumnOrderComponent] }); }
1846
+ ProcedureColumnOrderComponent,
1847
+ ProcedureAssociationModalComponent] }); }
1757
1848
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: PvyHypervisorModule, imports: [StoreModule.forFeature(hypFeatureKey, hypervisorReducer),
1758
1849
  StoreModule.forFeature(eventFeatureKey, eventReducer),
1759
1850
  StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),
@@ -1813,5 +1904,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
1813
1904
  * Generated bundle index. Do not edit.
1814
1905
  */
1815
1906
 
1816
- 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$1 as PAGE_SIZE_FETCH, PROCEDURE_LINK, ProcedureColumnOrderComponent, ProcedureListComponent, ProgressDisplayComponent, PvyHypervisorModule, StatusDisplayComponent, enTranslations, eventFeatureKey, eventForWriteAPI, eventInitialState, eventReducer, eventSummaryFeatureKey, eventSummaryInitialState, eventSummaryReducer, frTranslations, hypFeatureKey, hypInitialState, hypervisorReducer, procedureForWriteAPI };
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 };
1817
1908
  //# sourceMappingURL=provoly-hypervisor.mjs.map