@provoly/hypervisor 1.8.0 → 1.8.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-hypervisor.mjs","sources":["../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-criticality.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/domains.constant.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.actions.ts","../../../../projects/provoly/hypervisor/src/lib/general/pad-id.function.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.service.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-category.type.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-pipe/event-icon.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.html","../../../../projects/provoly/hypervisor/src/lib/event/procedure-association-modal/procedure-association-modal.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/procedure-association-modal/procedure-association-modal.component.html","../../../../projects/provoly/hypervisor/src/lib/general/display-date.function.ts","../../../../projects/provoly/hypervisor/src/lib/general/infiniteScroll.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/column-order/column-order.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/column-order/column-order.component.html","../../../../projects/provoly/hypervisor/src/lib/event/list/event-column-order.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/display-locale-datetime/display-locale-datetime.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.html","../../../../projects/provoly/hypervisor/src/lib/general/truncate-pipe/truncate.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/general/last-events/last-events.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/last-events/last-events.component.html","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-details-tooltip.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-details-tooltip.component.html","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-detail.interface.ts","../../../../projects/provoly/hypervisor/src/lib/model/procedure/hyp-procedure.interface.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.service.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/add-event/add-event.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/add-event/add-event.component.html","../../../../projects/provoly/hypervisor/src/lib/store/equipment/equipment.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/comments/comments.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/comments/comments.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/comments/comments.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-menu.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-menu.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/base-parameter-action.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/store/service/service.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/create-service.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/create-service.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/actions-types.constant.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/procedure-actions.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/procedure-actions.component.html","../../../../projects/provoly/hypervisor/src/lib/general/for-datetime-local-pipe/for-datetime-local.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/click/event-filters.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/click/event-filters.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/immediate/immediate-filters.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/immediate/immediate-filters.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/hvy-unit-filter.class.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/date/date-filter.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/date/date-filter.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/choice/choice-filter.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/choice/choice-filter.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/text/text-filter.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/text/text-filter.component.html","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.const.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-status.type.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.html","../../../../projects/provoly/hypervisor/src/lib/procedure/model-list/procedure-column-order.component.ts","../../../../projects/provoly/hypervisor/src/lib/procedure/model-list/procedure-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/procedure/model-list/procedure-list.component.html","../../../../projects/provoly/hypervisor/src/lib/procedure/model-detail/procedure-model-detail.component.ts","../../../../projects/provoly/hypervisor/src/lib/procedure/model-detail/procedure-model-detail.component.html","../../../../projects/provoly/hypervisor/src/lib/general/base.token.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/en.translations.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/fr.translations.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/no-param/no-params-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/no-param/no-params-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-type.ts","../../../../projects/provoly/hypervisor/src/lib/model/hyp-service-status.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/entites.constant.ts","../../../../projects/provoly/hypervisor/src/lib/model/public-api.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.effects.ts","../../../../projects/provoly/hypervisor/src/lib/hypervisor.module.ts","../../../../projects/provoly/hypervisor/public-api.ts","../../../../projects/provoly/hypervisor/provoly-hypervisor.ts"],"sourcesContent":["export const HypEventCriticality = {\n values: ['HIGH', 'MEDIUM', 'LOW']\n};\n","export const DOMAINS: { values: string[] } = {\n values: ['DOMAIN1', 'DOMAIN2'],\n};\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventTooltip } from '../../model/event/hyp-event-tooltip.interface';\n\nexport const EventActions = {\n load: createAction('[Event] Load Events', props<{ next?: boolean }>()),\n loadSuccess: createAction(\n '[Event Api] Load Events Success',\n props<{\n events: HypEventDetails[];\n startingFrom?: number;\n }>()\n ),\n loadFailure: createAction('[Event Api] Load Events Failure', props<{ error: string }>()),\n filter: createAction('[Event Api] Set filters', props<{ filters: { [key: string]: string[] }; filterSet: string }>()),\n select: createAction('[Event Api] Select', props<{ cumulative: boolean; ids: number[] }>()),\n get: createAction('[Event] Load specific Event', props<{ id: number }>()),\n getForProcedure: createAction('[Event] Load specific Event for procedure', props<{ id: number }>()),\n getSuccess: createAction(\n '[Event Api] Get Events/Procedure Success',\n props<{\n event?: HypEventDetails;\n procedure?: HypProcedure;\n }>()\n ),\n getFailure: createAction('[Event Api] Get Events/Procedure Failure', props<{ error: string }>()),\n getTooltipInfo: createAction('[Event] Load tooltip info', props<{ name: string }>()),\n getTooltipInfoSuccess: createAction(\n '[Event Api] Load tooltip info Success',\n props<{\n event: HypEventTooltip;\n }>()\n ),\n getTooltipInfoFailure: createAction('[Event Api] Load tooltip info Failure', props<{ error: string }>()),\n save: createAction('[Event] Save Event', props<{ event: HypEventDetails }>()),\n saveProcedure: createAction('[Event] Save Procedure and linked Events', props<{ procedure: HypProcedure }>()),\n addEventToProcedure: createAction(\n '[Event] Add event to procedure',\n props<{ eventId: number; procedure: HypProcedure }>()\n ),\n saveSuccess: createAction(\n '[Event] Save success',\n props<{ event?: HypEventDetails; procedure?: HypProcedure; creation: boolean }>()\n ),\n saveFailure: createAction('[Event] Save failure', props<{ error: any }>()),\n status: createAction(\n '[Event] Close Event or Procedure',\n props<{\n targetStatus: string;\n event?: HypEventDetails;\n procedure?: HypProcedure;\n comment: string;\n }>()\n ),\n statusSuccess: createAction('[Event] Close success', props<{ event?: HypEventDetails; procedure?: HypProcedure }>()),\n statusFailure: createAction('[Event] Close failure', props<{ error: any }>()),\n sort: createAction('[Event] set log event sorting', props<{ field: string; order: string }>()),\n associateProcedure: createAction(\n '[Event] Associate Procedure to Event',\n props<{ procedureId: number; eventIds: number[] }>()\n ),\n associateProcedureSuccess: createAction(\n '[Event] Associate Procedure to Event Success',\n props<{ procedure: HypProcedure }>()\n ),\n associateProcedureFailure: createAction('[Event] Associate Procedure to Event Failure', props<{ error: string }>()),\n export: createAction('[Event] Export events', props<{ archived: boolean }>())\n};\n","export const padId = {\n fn: (id: number | string) => {\n return `${id}`.padStart(6, '0');\n }\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventActions } from './event.actions';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HvyFilterParams } from '../../event/filters/hvy-unit-filter.class';\nimport { HypProcedure } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventTooltip } from '../../model/event/hyp-event-tooltip.interface';\n\nexport const eventFeatureKey = '@hvy/event';\n\nexport interface EventState {\n events: HypEventDetails[];\n noMoreEvents: boolean;\n loading: boolean;\n filters: HvyFilterParams;\n selectedIds: number[];\n details: {\n event?: HypEventDetails;\n procedure?: HypProcedure;\n };\n sort?: {\n field: string;\n order: string;\n };\n tooltip?: HypEventTooltip;\n}\n\nexport const eventInitialState: EventState = {\n events: [],\n noMoreEvents: false,\n loading: false,\n filters: {},\n selectedIds: [],\n details: {}\n};\n\nconst internalReducer = createReducer<EventState>(\n eventInitialState,\n on(EventActions.load, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EventActions.loadSuccess, (state, { events, startingFrom }) => {\n return {\n ...state,\n loading: false,\n noMoreEvents: events.length < 20,\n events: [...state.events.slice(0, startingFrom), ...events]\n };\n }),\n on(EventActions.loadFailure, (state, action) => ({\n ...state,\n loading: false,\n events: []\n })),\n on(EventActions.select, (state, { ids, cumulative }) => ({\n ...state,\n selectedIds: !cumulative\n ? ids\n : [...state.selectedIds, ...ids].reduce(\n (p, c) => (p.indexOf(c) === -1 ? [...p, c] : p.filter((p1) => p1 !== c)),\n [] as number[]\n )\n })),\n on(EventActions.get, EventActions.getForProcedure, (state, _) => ({\n ...state,\n details: {}\n })),\n on(EventActions.getSuccess, (state, { event, procedure }) => ({\n ...state,\n details: { event, procedure }\n })),\n on(EventActions.sort, (state, { field, order }) => ({\n ...state,\n events: [],\n noMoreEvents: false,\n sort: { field, order }\n })),\n on(EventActions.filter, (state, { filters, filterSet }) => ({\n ...state,\n events: [],\n noMoreEvents: false,\n filters: { ...state.filters, [filterSet]: filters }\n })),\n on(EventActions.getTooltipInfo, (state, _) => ({\n ...state,\n tooltip: undefined\n })),\n on(EventActions.getTooltipInfoSuccess, (state, { event }) => ({\n ...state,\n tooltip: event\n }))\n);\n\nexport function eventReducer(state: EventState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventFeatureKey, EventState } from './event.reducer';\n\nconst feature = createFeatureSelector<EventState>(eventFeatureKey);\nconst events = createSelector(feature, (state) => state.events);\nconst noMoreEvents = createSelector(feature, (state) => state.noMoreEvents);\nconst selectedIds = createSelector(feature, (state) => state.selectedIds);\nconst selectedEvents = createSelector(feature, (state) =>\n state.events.filter((event) => state.selectedIds.includes(event.id))\n);\nconst loading = createSelector(feature, (state) => state.loading);\nconst filters = createSelector(feature, (state) => state.filters);\nconst details = createSelector(feature, (state) => state.details);\nconst sort = createSelector(feature, (state) => state.sort);\nconst tooltipInfo = createSelector(feature, (state) => state.tooltip);\n\nexport const EventSelectors = {\n feature,\n events,\n selectedIds,\n selectedEvents,\n loading,\n filters,\n details,\n noMoreEvents,\n sort,\n tooltipInfo\n};\n","import { createAction, props } from '@ngrx/store';\n\nexport const HypervisorActions = {\n setUrl: createAction('[Event] Set Backend Url', props<{ url?: string }>())\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { HypervisorActions } from './hypervisor.actions';\n\nexport const hypFeatureKey = '@hvy/general';\n\nexport interface HypState {\n url: string;\n}\n\nexport const hypInitialState: HypState = {\n url: '/api/hypervisor',\n};\n\nconst internalReducer = createReducer<HypState>(\n hypInitialState,\n on(HypervisorActions.setUrl, (state, action) => ({\n ...state,\n url: action.url ?? state.url,\n })),\n);\n\nexport function hypervisorReducer(state: HypState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { hypFeatureKey, HypState } from './hypervisor.reducer';\n\n\nconst feature = createFeatureSelector<HypState>(hypFeatureKey);\nconst url = createSelector(feature, (state) => state.url);\n\nexport const HypSelectors = {\n feature,\n url\n};\n","import { createAction, props } from '@ngrx/store';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\n\nexport const ProcedureActions = {\n load: createAction('[Procedure] Load Procedures', props<{ next?: boolean }>()),\n loadSuccess: createAction(\n '[Procedure] (bus) Load Procedure Success',\n props<{\n procedures: HypProcedureModel[];\n startingFrom?: number;\n }>()\n ),\n loadFailure: createAction('[Procedure] Load Procedures Failure', props<{ error: string }>()),\n sort: createAction('[Procedure] Set Procedure List Sorting', props<{ field: string; order: string }>()),\n setCategory: createAction('[Procedure] Set Category Value', props<{ category?: string }>()),\n model: createAction('[Procedure] Get Procedure Model', props<{ id: number }>()),\n modelSuccess: createAction('[Procedure] Get Procedure Model Success', props<{ model: HypProcedureModel }>()),\n modelFailure: createAction('[Procedure] Get Procedure Model Failure', props<{ error?: any }>()),\n save: createAction('[Procedure] Save Procedure Model', props<{ model: HypProcedureModel }>()),\n saveSuccess: createAction(\n '[Procedure] Save Procedure Model Success',\n props<{ model: HypProcedureModel; wasCreation: boolean }>()\n ),\n saveFailure: createAction('[Procedure] Save Procedure Model Failure', props<{ error?: any }>()),\n deleteInstance: createAction(\n '[Procedure] Delete Procedure instance',\n props<{ id: number; returnToEvent?: number }>()\n ),\n deleteInstanceSuccess: createAction(\n '[Procedure] Delete Procedure instance Success',\n props<{ returnToEvent?: number }>()\n ),\n deleteInstanceFailure: createAction('[Procedure] Delete Procedure instance Failure', props<{ error?: any }>())\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { ProcedureActions } from './procedure.actions';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\n\nexport const procedureFeatureKey = '@hvy/procedure';\n\nexport interface ProcedureState {\n procedures: HypProcedureModel[];\n noMoreProcedures: boolean;\n loading: boolean;\n sort?: {\n field: string;\n order: string;\n };\n model?: HypProcedureModel;\n}\n\nexport const procedureInitialState: ProcedureState = {\n procedures: [],\n noMoreProcedures: false,\n loading: false\n};\n\nconst internalReducer = createReducer<ProcedureState>(\n procedureInitialState,\n on(ProcedureActions.load, (state) => ({\n ...state,\n loading: true\n })),\n on(ProcedureActions.loadSuccess, (state, { procedures, startingFrom }) => {\n return {\n ...state,\n loading: false,\n noMoreProcedures: procedures.length < 20,\n procedures: [...state.procedures.slice(0, startingFrom), ...procedures]\n };\n }),\n on(ProcedureActions.loadFailure, (state) => ({\n ...state,\n loading: false,\n procedures: [],\n noMoreProcedures: false\n })),\n on(ProcedureActions.sort, (state, { field, order }) => ({\n ...state,\n procedures: [],\n noMoreProcedures: false,\n sort: { field, order }\n })),\n on(ProcedureActions.model, (state) => ({\n ...state,\n model: undefined,\n loading: true\n })),\n on(ProcedureActions.modelSuccess, (state, action) => ({\n ...state,\n model: action.model,\n loading: false\n })),\n on(ProcedureActions.modelFailure, (state, action) => ({\n ...state,\n model: undefined,\n loading: false,\n error: action.error\n })),\n on(ProcedureActions.save, (state) => ({\n ...state,\n loading: true\n })),\n on(ProcedureActions.saveSuccess, (state, action) => ({\n ...state,\n model: action.model,\n loading: false\n })),\n on(ProcedureActions.saveFailure, (state, action) => ({\n ...state,\n loading: false,\n error: action.error\n }))\n);\n\nexport function procedureReducer(state: ProcedureState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { procedureFeatureKey, ProcedureState } from './procedure.reducer';\n\nconst feature = createFeatureSelector<ProcedureState>(procedureFeatureKey);\nconst procedures = createSelector(feature, (state) => state.procedures);\nconst noMoreProcedures = createSelector(feature, (state) => state.noMoreProcedures);\nconst loading = createSelector(feature, (state) => state.loading);\nconst sort = createSelector(feature, (state) => state.sort);\nconst model = createSelector(feature, (state) => state.model);\n\nexport const ProcedureSelectors = {\n feature,\n procedures,\n loading,\n noMoreProcedures,\n sort,\n model\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { combineLatest, map, mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { ProcedureSelectors } from './procedure.selectors';\nimport { EventSelectors } from '../event/event.selectors';\nimport { FilterParamEncoder } from '@provoly/dashboard';\n\nexport const PROCEDURE_PAGE_SIZE_FETCH = { value: 20 };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcedureService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n list(startWith = 0, pageSize = PROCEDURE_PAGE_SIZE_FETCH.value): Observable<HypProcedureModel[]> {\n return combineLatest([\n this.store.select(HypSelectors.url),\n this.store.select(ProcedureSelectors.sort),\n this.store.select(EventSelectors.filters).pipe(map((filters) => filters['procedure'] ?? {}))\n ]).pipe(\n mergeMap(([url, sort, filters]) => {\n let params = new HttpParams({ encoder: new FilterParamEncoder() });\n Object.keys(filters).forEach((filter) => {\n filters[filter].forEach((filterValue) => {\n params = params.append(filter, filterValue);\n });\n });\n params = params.set('page', startWith / pageSize + 1);\n\n if (sort) params = params.set('sort', sort.field).set('order', sort.order);\n return this.httpClient.get<HypProcedureModel[]>(encodeURI(`${url}/procedures/model`), { params });\n })\n );\n }\n\n getTop10ByUsage(domain?: string, search?: string): Observable<HypProcedureModel[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n\n params = params.set('sort', 'useCount').set('order', 'DESC').set('pageSize', '10');\n if (search) params = params.set('search', search);\n if (domain) params = params.set('domain', domain);\n return this.httpClient.get<HypProcedureModel[]>(encodeURI(`${url}/procedures/model`), { params });\n })\n );\n }\n\n get(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedureModel>(encodeURI(`${url}/procedures/model/id/${id}`));\n })\n );\n }\n\n save(model: HypProcedureModel) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n if (!model.id) {\n return this.httpClient.post<HypProcedureModel>(encodeURI(`${url}/procedures/model`), model);\n }\n return this.httpClient\n .put<void>(encodeURI(`${url}/procedures/model/id/${model.id}`), model)\n .pipe(map(() => model));\n })\n );\n }\n\n delete(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.delete<void>(encodeURI(`${url}/procedures/id/${id}`));\n })\n );\n }\n}\n","export const HypEventCategory = {\n values: ['ANOMALY', 'OUTOFORDER', 'MANIFESTATION', 'LIMIT']\n};\n\nexport const HypEventSubCategory = {\n values: {\n LIMIT: [],\n MANIFESTATION: [],\n OUTOFORDER: [],\n ANOMALY: ['NONE', 'UNUSUAL_FLOW', 'CARREFOUR_AU_NOIR_NP', 'CARREFOUR_AU_NOIR', 'CARREFOUR_CLIGNOTANT_NP', 'CARREFOUR_CLIGNOTANT', 'TRAFFIC_CONGESTION', 'WILD_STORAGE']\n } as { [type: string]: string[] }\n};\n\nexport const VpEventSubCategory = HypEventSubCategory.values['ANOMALY'].filter(cat =>\n cat !== 'NONE' &&\n cat !== 'CARREFOUR_AU_NOIR' &&\n cat !== 'CARREFOUR_AU_NOIR_NP' &&\n cat !== 'CARREFOUR_CLIGNOTANT' &&\n cat !== 'CARREFOUR_CLIGNOTANT_NP'\n)\n\nexport const CategoryBackground = {\n values: {\n LIMIT: 'square',\n MANIFESTATION: 'circle',\n OUTOFORDER: 'hexagon',\n ANOMALY: 'triangle'\n } as { [type: string]: string }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\nimport { Store } from '@ngrx/store';\nimport { DEFAULT_ICON_URL } from '@provoly/dashboard';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\nexport const EVENT_TO_ICON = {\n fn: (event: HypEvent | HypEventSummary | HypEventDetails, store: Store<any>) => of(DEFAULT_ICON_URL),\n};\n\n@Pipe({\n name: 'eventIcon',\n})\nexport class EventIconPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(value: HypEvent | HypEventSummary | HypEventDetails, ...args: unknown[]): Observable<string> {\n return EVENT_TO_ICON.fn(value, this.store);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\nimport { CategoryBackground } from '../../model/event/hyp-event-category.type';\n\n@Component({\n selector: 'hvy-icon-display',\n templateUrl: './icon-display.component.html'\n})\nexport class IconDisplayComponent {\n @Input() event!: HypEvent;\n protected readonly CategoryBackground = CategoryBackground;\n}\n","<div\n class=\"\n m-hvy-event-summary-item__event-icon-container\n -hvy-{{ event.criticality.toString().toLowerCase() }}\n -hvy-{{ CategoryBackground.values[event.category] }}\n \"\n [title]=\"'@hvy.event.category.' + event.category | i18n\"\n>\n <span\n class=\"m-hvy-event-summary-item__event-icon a-icon\"\n [ngStyle]=\"{\n 'mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')',\n '-webkit-mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')'\n }\"\n aria-hidden=\"true\"\n focusable=\"false\"\n ></span>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { BehaviorSubject, combineLatest, debounceTime, Observable, shareReplay, Subject, switchMap } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { ProcedureService } from '../../store/procedure/procedure.service';\nimport { catchError, map, startWith } from 'rxjs/operators';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { padId } from '../../general/pad-id.function';\n\nexport interface HypProcedureModelWithMatching extends HypProcedureModel {\n initial: string;\n html: string;\n}\n\n@Component({\n selector: 'hvy-procedure-association-modal',\n templateUrl: './procedure-association-modal.component.html'\n})\nexport class ProcedureAssociationModalComponent extends SubscriptionnerDirective {\n selectedEvents$: Observable<HypEventDetails[]>;\n\n selectedDomain?: string;\n selectedProcedureInComboBox?: HypProcedureModel;\n onDomainSelect$ = new BehaviorSubject<void>(undefined);\n\n procedureSelectValue?: string | HypProcedureModel;\n onProcedureSearch$ = new Subject<void>();\n procedures$: Observable<HypProcedureModelWithMatching[]>;\n eventsFromInput$ = new BehaviorSubject<HypEventDetails[] | null>(null);\n eventsForAction: HypEventDetails[] = [];\n disableValidButton = true;\n\n @Input() set events(events: HypEventDetails[]) {\n this.eventsFromInput$.next(events);\n }\n\n constructor(\n private store: Store,\n private procedureService: ProcedureService,\n private dialog: PryDialogRef<ProcedureAssociationModalComponent>\n ) {\n super();\n this.selectedEvents$ = combineLatest([\n this.eventsFromInput$,\n this.store.select(EventSelectors.selectedEvents)\n ]).pipe(\n map(([eventsFromInput, eventsFromSelect]) => (eventsFromInput !== null ? eventsFromInput : eventsFromSelect))\n );\n\n this.subscriptions.add(this.selectedEvents$.subscribe((events) => (this.eventsForAction = events)));\n\n this.subscriptions.add(\n this.selectedEvents$.subscribe((events) => {\n const domains = [...new Set(events.map((ev) => ev.domain))];\n if (domains.length === 1) {\n this.selectedDomain = domains[0];\n }\n })\n );\n\n this.procedures$ = combineLatest([\n this.onDomainSelect$.pipe(startWith()),\n this.onProcedureSearch$.pipe(startWith(), debounceTime(500))\n ]).pipe(\n switchMap(([_, __]) => {\n const search =\n typeof this.procedureSelectValue === 'string' && this.procedureSelectValue.length > 2 ?\n this.cleanProcedureNameForComboBoxSearch(this.procedureSelectValue) :\n typeof this.procedureSelectValue === 'object' ?\n this.procedureSelectValue.name :\n undefined;\n return this.procedureService.getTop10ByUsage(this.selectedDomain, search).pipe(\n map((procedures) =>\n procedures.map((proc) => {\n const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');\n const html = `${padId.fn(proc.id)} - ${proc.name} (${proc.creator})`;\n return {\n ...proc,\n initial: html,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`)\n } as HypProcedureModelWithMatching;\n })\n )\n );\n }),\n catchError(() => {\n throw new Error('Procedure catalog problem');\n }),\n shareReplay()\n );\n }\n\n onDomainChange() {\n this.onDomainSelect$.next();\n this.procedureSelectValue = undefined;\n }\n\n cleanProcedureNameForComboBoxSearch(procedure: string){\n const indexOfTiret = procedure.indexOf('-');\n const indexOfCreator = procedure.lastIndexOf('(');\n if(indexOfTiret !== -1 && indexOfCreator !== -1) {\n procedure = procedure.substring(indexOfTiret + 2, indexOfCreator - 1);\n } else if (indexOfTiret !== -1) {\n procedure = procedure.substring(indexOfTiret + 2);\n } else if(indexOfCreator !== -1) {\n procedure = procedure.substring(0, indexOfCreator - 1);\n }\n return procedure;\n }\n\n selectedProcedureChange($event: string | HypProcedureModel) {\n // when choose a procedure\n if(typeof $event === 'object') {\n this.selectedProcedureInComboBox = $event;\n this.procedureSelectValue = $event;\n // when click on choosen procedure\n } else if((this.selectedProcedureInComboBox as HypProcedureModelWithMatching)?.html === $event) {\n this.procedureSelectValue = this.selectedProcedureInComboBox;\n } else {\n this.procedureSelectValue = $event;\n }\n this.disableValidButton = typeof this.procedureSelectValue !== 'object';\n this.onProcedureSearch$.next();\n }\n\n associateProcedure() {\n this.store.dispatch(\n EventActions.associateProcedure({\n procedureId: (this.procedureSelectValue as HypProcedureModel).id,\n eventIds: this.eventsForAction.map((event) => event.id)\n })\n );\n this.closeModal();\n }\n\n closeModal() {\n this.dialog.close();\n }\n\n protected readonly DOMAINS = DOMAINS.values;\n}\n","<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>Événements liés ({{ 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\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"procedure-filter\"\n >{{ '@hvy.associationModal.searchProcedure' | i18n }}<span class=\"text-error\">*</span> :\n </label>\n <pry-select\n [items]=\"procedures$ | async\"\n bindLabel=\"initial\"\n [(ngModel)]=\"procedureSelectValue\"\n (ngModelChange)=\"selectedProcedureChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.associationModal.procedurePlaceholder' | i18n\"\n id=\"procedure-filter\"\n [template]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\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]=\"disableValidButton\" (click)=\"associateProcedure()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n","export const displayDate = (endDate: string) => {\n const date = new Date(endDate).toLocaleDateString();\n return date === 'Invalid Date' ? undefined : date;\n};\n","import { auditTime, filter, fromEvent, Observable, withLatestFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { MemoizedSelector, Store } from '@ngrx/store';\n\nexport const SCROLL_PX_TO_TRIGGER_FETCH_PAGE = { value: 200 };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InfiniteScrollService {\n constructor(private store: Store<any>) { }\n\n isEndOfPage = (scrollContainer: HTMLElement, noMoreSelector: MemoizedSelector<object, boolean>) => {\n return fromEvent((scrollContainer), 'scroll').pipe(\n map((e: Event) => {\n const target = e.currentTarget as HTMLElement;\n return target.scrollHeight - target.offsetHeight - target.scrollTop;\n }),\n withLatestFrom(this.store.select(noMoreSelector)),\n filter(([remaningScroll, noMore]) => !noMore && remaningScroll < SCROLL_PX_TO_TRIGGER_FETCH_PAGE.value),\n auditTime(200)\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'hvy-column-order',\n templateUrl: './column-order.component.html',\n})\nexport class ColumnOrderComponent extends SubscriptionnerDirective {\n @Input() field: string = 'no-field-defined';\n sortValue: { field: string; order: string } | undefined;\n\n constructor(protected store: Store) {\n super();\n }\n\n sort(order: string) { }\n\n isActive(order: string) {\n return this.field === this.sortValue?.field && order === this.sortValue.order;\n }\n}\n","<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","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { ColumnOrderComponent } from '../../general/column-order/column-order.component';\n\n@Component({\n selector: 'hvy-event-column-order',\n templateUrl: '../../general/column-order/column-order.component.html',\n})\nexport class EventColumnOrderComponent extends ColumnOrderComponent {\n constructor(store: Store) {\n super(store);\n this.subscriptions.add(\n this.store.select(EventSelectors.sort).subscribe(sort => this.sortValue = sort),\n );\n }\n\n override sort(order: string) {\n this.store.dispatch(EventActions.sort({ field: this.field, order }));\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'hvy-status-display',\n templateUrl: './status-display.component.html'\n})\nexport class StatusDisplayComponent extends SubscriptionnerDirective {\n static idCounter = 0;\n id = StatusDisplayComponent.idCounter++;\n @Output() modified = new EventEmitter<string>();\n private _item!: { status: string };\n targetStatuses: string[] = [];\n targetsDisplayed: boolean = false;\n _modifiable = false;\n @Input() type: 'service' | 'event' = 'event';\n @Input() readonly: boolean | null = null;\n\n @Input() set item(item: { status: string }) {\n this._item = item;\n this.updateTargetStatuses();\n }\n\n @Input() set modifiable(modifiable: boolean) {\n this._modifiable = modifiable;\n this.updateTargetStatuses();\n }\n\n get modifiable() {\n return this._modifiable && !this.readonly;\n }\n\n get item() {\n return this._item;\n }\n\n trigger(status: string) {\n this.modified.next(status);\n this.targetsDisplayed = false;\n }\n\n updateTargetStatuses() {\n this.targetStatuses = this.modifiable && this.item.status !== 'DONE' ? ['DONE'] : [];\n }\n\n toggle() {\n window.dispatchEvent(new CustomEvent('status-display-opening', { detail: this.id }));\n this.targetsDisplayed = this.targetStatuses.length > 0 && !this.targetsDisplayed;\n }\n\n constructor() {\n super();\n this.subscriptions.add(\n fromEvent(window, 'status-display-opening').subscribe((event) => {\n if ((event as CustomEvent).detail !== this.id) {\n this.targetsDisplayed = false;\n }\n })\n );\n }\n}\n","<span\n class=\"a-chip -{{ item.status }} a-chip-status -{{ type }}\"\n [class.-modifiable]=\"_modifiable\"\n [class.-readonly]=\"readonly\"\n (click)=\"toggle()\"\n>\n {{ '@hvy.' + type + '.status.' + item.status | i18n }}\n @if (targetStatuses.length > 0) {\n <pry-icon iconSvg=\"caret_bottom_rounded\" [width]=\"10\" [height]=\"10\"></pry-icon>\n }\n</span>\n@if (targetsDisplayed) {\n <div class=\"a-chip-status__target\">\n <div class=\"a-chip-status__target__filler\"></div>\n @for (status of targetStatuses; track status) {\n <div class=\"a-chip-status__target__item\" (click)=\"trigger(status)\">\n {{ '@hvy.' + type + '.status.' + status | i18n }}\n </div>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'displayLocaleDatetime'\n})\nexport class DisplayLocaleDateTime implements PipeTransform {\n static lang = navigator.languages?.length ? navigator.languages[0] : navigator.language;\n\n static formats = {\n default: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n medium: {\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n short: {\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n }\n } as { [key: string]: any };\n\n constructor() {}\n\n transform(dateAsString: string | undefined, ...args: string[]): string {\n const format = new Intl.DateTimeFormat(\n DisplayLocaleDateTime.lang,\n DisplayLocaleDateTime.formats[args[0] ?? 'default']\n );\n const localDate = new Date(dateAsString ?? '');\n return format.format(localDate);\n }\n}\n","import {AfterViewInit, Component, ElementRef, Input} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport {combineLatest, fromEvent, map, Observable} from 'rxjs';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { Router } from '@angular/router';\nimport { InfiniteScrollService } from '../../general/infiniteScroll.service';\nimport { padId } from '../../general/pad-id.function';\nimport {startWith} from \"rxjs/operators\";\n\nexport const EVENT_LINK = {\n fn: (event: HypEventDetails | HypEventSummary, store: Store<any>) => ['./', padId.fn(event.id)]\n};\n\n@Component({\n selector: 'hvy-event-list',\n templateUrl: './event-list.component.html'\n})\nexport class EventListComponent extends SubscriptionnerDirective implements AfterViewInit {\n events$: Observable<HypEventDetails[]>;\n selectedIds$: Observable<number[]>;\n EVENT_LINK = EVENT_LINK;\n _store = this.store;\n allSelected$: Observable<boolean>;\n _inhibit = true;\n @Input() disableGotoDetail: boolean | null = false;\n\n constructor(\n private store: Store<any>,\n private el: ElementRef,\n private router: Router,\n private scroll: InfiniteScrollService\n ) {\n super();\n this.subscriptions.add(\n fromEvent<CustomEvent>(window, 'journal-refresh').pipe(\n startWith(new CustomEvent(`journal-refresh`, { detail: true }))\n ).subscribe(() => {\n this.store.dispatch(EventActions.load({}));\n })\n )\n this.events$ = this.store.select(EventSelectors.events);\n this.selectedIds$ = this.store.select(EventSelectors.selectedIds);\n this.allSelected$ = combineLatest([this.events$, this.selectedIds$]).pipe(\n map(\n ([events, selectedIds]) => events.length > 0 && events.filter((ev) => !selectedIds.includes(ev.id)).length === 0\n )\n );\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.scroll.isEndOfPage(this.el.nativeElement, EventSelectors.noMoreEvents).subscribe(() => {\n this.store.dispatch(EventActions.load({ next: true }));\n this._inhibit = true;\n setTimeout(() => this._inhibit = false, 1000);\n })\n );\n this._inhibit = false;\n }\n\n select(event: HypEventDetails, $event: MouseEvent) {\n this.store.dispatch(EventActions.select({ ids: [event.id], cumulative: true }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n selectAll($event: any) {\n if (!this._inhibit) {\n const tmpSub = this.events$.subscribe((events) => {\n this.store.dispatch(EventActions.select({ ids: $event ? events.map((ev) => ev.id) : [], cumulative: false }));\n setTimeout(() => tmpSub.unsubscribe(), 10);\n });\n }\n }\n\n inhibit() {\n this._inhibit = true;\n setTimeout(() => (this._inhibit = false), 100);\n }\n\n goTo(event: HypEventDetails) {\n if (!this.disableGotoDetail) {\n return this.router.navigate(this.EVENT_LINK.fn(event, this.store));\n }\n return;\n }\n\n protected readonly Math = Math;\n protected readonly padId = padId;\n}\n","<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)\">\n <div>\n ({{(selectedIds$| async)?.length}})\n </div>\n </pry-checkbox>\n </th>\n <th>\n <hvy-event-column-order field=\"criticality\">{{ '@hvy.event.criticality.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"id\">{{ '@hvy.event.id' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"domain\">{{ '@hvy.event.domain.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"name\">{{ '@hvy.event.name' | 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=\"source\">{{ '@hvy.event.source' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"procedureProgress\"\n >{{ '@hvy.procedure.progress' | i18n }}\n </hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"category\">{{ '@hvy.event.category.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"creationDate\">{{ '@hvy.event.creationDateTable' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"lastModificationDate\"\n >{{ '@hvy.event.lastModificationDateTable' | i18n }}\n </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\" [class.-nogo]=\"disableGotoDetail\" (click)=\"goTo(event)\">\n <td class=\"o-hvy-events-table__line__cell checkbox\">\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async)!.includes(event.id)\"\n (click)=\"select(event, $event)\"\n ></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered icon\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell id\">\n {{ padId.fn(event.id) }}\n </td>\n <td class=\"o-hvy-events-table__line__cell domain\">\n {{ event.domain ?? '' }}\n </td>\n <td class=\"o-hvy-events-table__line__cell name\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div class=\"o-hvy-events-table__line__cell__name__sub\">\n @if (event.equipment) {\n {{ event.equipment.name ? event.equipment.name : '' }} -\n {{ event.equipment ? ('@hvy.event.family.' + event.equipment.family | i18n) : '' }}\n }\n </div>\n <div class=\"o-hvy-events-table__line__cell__name__subsub\">\n <span>{{ event.address }}</span>\n @if(event.district) {\n @if(event.address) {\n <span>,&nbsp;</span>\n }\n <span>{{(\"@hvy.event.places.\" + event.district | i18n)}} </span>\n }\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered status\">\n <hvy-status-display [item]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell source\">\n {{ event.externalSourceRef ?? ('@hvy.event.hypervisor' | i18n) }}\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered progress\">{{ event.procedureProgress }} %</td>\n <td class=\"o-hvy-events-table__line__cell category\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">\n {{ '@hvy.event.category.' + event.category | i18n }}\n </div>\n @if (event.subCategory && event.subCategory !== 'NONE') {\n <div class=\"o-hvy-events-table__line__cell__name__sub\">\n {{ '@hvy.event.subCategory.' + event.subCategory | i18n }}\n </div>\n }\n </td>\n <td class=\"o-hvy-events-table__line__cell creation-date\">\n {{ event.creationDate | displayLocaleDatetime }}\n </td>\n <td class=\"o-hvy-events-table__line__cell modification-date\">\n {{ event.lastModificationDate | displayLocaleDatetime }}\n </td>\n <td class=\"o-hvy-events-table__line__cell link\">\n @if (!disableGotoDetail) {\n <a\n [routerLink]=\"EVENT_LINK.fn(event, _store)\"\n [title]=\"\n '@hvy.event.consult'\n | i18n: { howMany: Math.max(1, event.linkedEvents), plural: event.linkedEvents > 1 ? 's' : '' }\n \"\n >\n <div class=\"consult-link\">\n <pry-icon iconSvg=\"eye\" [height]=\"30\" [width]=\"40\"></pry-icon>\n @if (event.linkedEvents > 1) {\n <div class=\"indicator-badge\">{{ event.linkedEvents }}</div>\n }\n </div>\n </a>\n }\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","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform {\n transform(value: string, args: any[]): string {\n const limit = args.length > 0 ? parseInt(args[0], 10) : 20;\n const trail = args.length > 1 ? args[1] : '...';\n return (value ?? '').length > limit ? value.substring(0, limit) + trail : value;\n }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {SubscriptionnerDirective} from '@provoly/dashboard';\nimport {displayDate} from '../display-date.function';\nimport {HypEventDetails} from '../../model/event/hyp-event-detail.interface';\nimport {HypServiceTooltip} from '../../model/event/hyp-event-tooltip.interface';\nimport {padId} from \"../pad-id.function\";\nimport {Router} from \"@angular/router\";\nimport {Store} from \"@ngrx/store\";\nimport {HypEventSummary} from \"../../model/event/hyp-event-summary.interface\";\nimport {EVENT_LINK} from \"../../event/list/event-list.component\";\n\n@Component({\n selector: 'hvy-last-events',\n templateUrl: './last-events.component.html'\n})\nexport class LastEventsComponent extends SubscriptionnerDirective implements OnInit{\n protected readonly displayDate = displayDate;\n\n @Input() services: HypServiceTooltip[] = [];\n @Input() events: HypEventDetails[] = [];\n @Output() closeDialogEmit = new EventEmitter<boolean>();\n @Input() closeButton = false;\n\n references: string[] = [];\n\n constructor(private router: Router, private store: Store<any>,) {\n super();\n }\n\n ngOnInit(): void {\n this.initActionReference(this.services);\n }\n\n closeDialog(){\n this.closeDialogEmit.next(true);\n }\n\n initActionReference(services: HypServiceTooltip[]){\n const statutOrder: { [key: string]: number} = {\n NEW: 0,\n ASKED: 1,\n IN_PROGRESS: 2,\n OT_CLOSED: 3,\n DONE: 4,\n CANCELLED: 5\n\n }\n\n services.forEach((service, index) => {\n if(service.externalId) {\n if(service.additionalInfo) {\n this.references[index] = `${service.externalId}@${service.additionalInfo}`\n } else {\n this.references[index] = service.externalId;\n }\n } else {\n this.references[index] = '';\n }\n })\n services = services.sort(function(a,b) {\n return(statutOrder[a.status] - statutOrder[b.status]) || (new Date(b.lastModificationDate).getTime() - new Date(a.lastModificationDate).getTime());\n })\n }\n\n goTo(event: HypEventDetails) {\n const url = this.router.serializeUrl(this.router.createUrlTree(EVENT_LINK.fn(event, this.store)))\n window.open(url, '_blank');\n }\n\n protected readonly padId = padId;\n}\n","@if (events.length > 0) {\n <div class=\"o-hvy-last-events__events\">\n <div>\n <h3>{{ '@chh.event.lastEvents' | i18n }} ({{ events.length }})</h3>\n <div class=\"o-modal__equipment__close\" [hidden]=\"!closeButton\">\n <button class=\"\" (click)=\"closeDialog()\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n </div>\n @for (event of events; track event.id) {\n <div class=\"o-hvy-last-events__events__item\">\n <div class=\"o-hvy-last-events__events__item__icon\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </div>\n <div class=\"o-hvy-event-tooltip-container\">\n <div class=\"o-hvy-last-events__events__item__title\" (click)=\"goTo(event)\">\n <span class=\"goto-link-eve\">{{ padId.fn(event.id) }} - {{ event.name }}</span>\n </div>\n <div class=\"o-hvy-last-events__events__item__descr\">\n <span>{{event.externalSourceRef}} - {{event.creationDate | date : 'dd/MM/yyyy'}}</span>\n </div>\n </div>\n <div class=\"o-hvy-last-events__events__item__status\">\n <hvy-status-display [item]=\"event\"></hvy-status-display>\n </div>\n </div>\n }\n </div>\n}\n@if (services.length > 0) {\n <div class=\"o-hvy-last-events__services\">\n @if ( !events || events.length === 0) {\n <div>\n <h3>{{ '@chh.event.services' | i18n }} ({{ services.length }})</h3>\n <div class=\"o-modal__equipment__close\" [hidden]=\"!closeButton\">\n <button class=\"\" (click)=\"closeDialog()\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n </div>\n } @else {\n <h3>{{ '@chh.event.services' | i18n }} ({{ services.length }})</h3>\n }\n @for (service of services; track service.id) {\n <div class=\"o-hvy-last-events__services__item\">\n <div class=\"o-hvy-last-events__services__item__icon\">\n <pry-icon iconSvg=\"service\"></pry-icon>\n </div>\n <div class=\"o-hvy-last-events__services__item__title\">\n <span>{{ references[$index] }} - {{ '@chh.intervention.' + service.category | i18n }}</span>\n </div>\n <div class=\"o-hvy-last-events__services__item__descr\">\n <span>{{ service.description | truncate: [50, '...'] }}</span>\n </div>\n <div class=\"o-hvy-last-events__services__item__date\">\n @if (service.status === 'ASKED') {\n <span>{{ '@chh.event.startDate' | i18n }} : {{ displayDate(service.startDate) }}</span>\n }\n @if (service.status === 'IN_PROGRESS') {\n <span>{{ '@chh.event.endPlannedDate' | i18n }} : {{ displayDate(service.endDate) }}</span>\n }\n @if (service.status === 'DONE' || service.status === 'OT_CLOSED') {\n <span>{{ '@chh.event.endDate' | i18n }} : {{ displayDate(service.endDate) }}</span>\n }\n @if (service.status === 'NEW') {\n <span>{{ '@chh.event.newDate' | i18n }} : {{ displayDate(service.creationDate) }}</span>\n }\n @if (service.status === 'CANCELLED') {\n <span>{{ '@chh.event.cancelledDate' | i18n }} : {{ displayDate(service.lastModificationDate) }}</span>\n }\n </div>\n <div class=\"o-hvy-last-events__services__item__status\">\n <hvy-status-display [item]=\"service\" type=\"service\"></hvy-status-display>\n </div>\n </div>\n }\n </div>\n}\n","import {PRY_DIALOG_DATA, PryDialogConfirmComponent, PryDialogRef} from '@provoly/dashboard';\nimport { Component, Inject } from '@angular/core';\nimport { HypServiceTooltip } from '../../model/event/hyp-event-tooltip.interface';\n\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-event-detail-tooltip',\n templateUrl: './event-details-tooltip.component.html'\n})\nexport class HvyEventDetailsTooltipComponent {\n constructor(\n private dialog: PryDialogRef<PryDialogConfirmComponent>,\n @Inject(PRY_DIALOG_DATA)\n public data: { events?: HypEventDetails[]; services?: HypServiceTooltip[] }\n ) {}\n\n closeDialog($event: boolean) {\n this.dialog.close($event);\n }\n}\n","@if ((data.events && data.events.length > 0) || (data.services && data.services.length > 0)){\n <div class=\"o-hvy-event-detail-tooltip\">\n <hvy-last-events\n [events]=\"data.events ?? []\"\n [services]=\"data.services ?? []\"\n (closeDialogEmit)=\"closeDialog($event)\"\n [closeButton]=\"true\"\n >\n </hvy-last-events>\n </div>\n} @else {\n <div class=\"o-hvy-event-detail-tooltip o-hvy-event-detail-tooltip__no-data\">\n {{ '@chh.event.noEvents' | i18n }}\n <div class=\"o-modal__equipment__close\">\n <button class=\"\" (click)=\"closeDialog(true)\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n </div>\n}\n","import { HypEvent } from './hyp-event.interface';\nimport { HypComment } from '../comment.interface';\n\nexport interface HypEventDetails extends HypEvent {\n address: string;\n district?: string;\n description: string;\n status: string;\n lastModificationDate: string;\n creationDate: string;\n equipment?: {\n id: string;\n name: string;\n entity: string;\n family: string;\n domain: string;\n district?: string;\n };\n externalSourceRef?: string;\n externalId?: string;\n startDate?: string;\n endDate?: string;\n closeDate: string;\n procedureId?: string;\n linkedEvents: number;\n procedureProgress?: number;\n domain?: string;\n lastComment: HypComment;\n commentCount: number;\n creator: string;\n}\n\nexport const eventForWriteAPI = (event: HypEventDetails) => ({\n ...event,\n equipmentId: event.equipment?.id,\n parent: event.parent && typeof event.parent === 'object' ? event.parent.id : event.parent,\n subCategory: event.category === 'ANOMALY' ? event.subCategory : undefined\n});\n","import { eventForWriteAPI, HypEventDetails } from '../event/hyp-event-detail.interface';\nimport { HypAction } from './hyp-action.interface';\n\nexport interface HypProcedure {\n id: number;\n name: string;\n description: string;\n creationDate: string;\n actions: HypAction[];\n progress: number;\n events: HypEventDetails[];\n closeComment?: string;\n}\n\nexport const procedureForWriteAPI = (procedure: HypProcedure) => ({\n ...procedure,\n events: procedure.events.map(eventForWriteAPI)\n});\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from './event.selectors';\nimport { eventForWriteAPI, HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure, procedureForWriteAPI } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventTooltip } from '../../model/event/hyp-event-tooltip.interface';\nimport { v4 } from 'uuid';\n\nexport const PAGE_SIZE_FETCH = { value: 20 };\n\nexport const KNOWN_FILTER_SETS = {\n EVENTS: 'events',\n SUMMARY: 'summary'\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n list(startWith = 0, pageSize = PAGE_SIZE_FETCH.value): Observable<Array<HypEventDetails>> {\n return this.store.select(HypSelectors.url).pipe(\n withLatestFrom(this.store.select(EventSelectors.filters), this.store.select(EventSelectors.sort)),\n mergeMap(([url, filterSets, sort]) => {\n const filters = filterSets[KNOWN_FILTER_SETS.EVENTS] ?? {};\n let params = new HttpParams();\n Object.keys(filters).forEach((filter) => {\n filters[filter].forEach((filterValue) => {\n params = params.append(filter, filterValue);\n });\n });\n params = params.set('page', startWith / pageSize + 1);\n if (sort) {\n params = params.set('sort', sort.field).set('order', sort.order);\n }\n return this.httpClient.get<Array<HypEventDetails>>(encodeURI(`${url}/events`), { params });\n })\n );\n }\n\n get(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventDetails>(encodeURI(`${url}/events/id/${id}`));\n })\n );\n }\n\n getTooltipInfo(name: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventTooltip>(encodeURI(`${url}/equipments/name/${name}`));\n })\n );\n }\n\n getProcedure(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedure>(encodeURI(`${url}/procedures/id/${id}`));\n })\n );\n }\n\n save(event: HypEventDetails) {\n const toSend = { ...event } as Partial<HypEventDetails>;\n if (event.id < 0) {\n delete toSend.id;\n }\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n if (!!toSend.id) {\n return this.httpClient.put<HypEventDetails>(\n encodeURI(`${url}/events/id/${toSend.id}`),\n eventForWriteAPI(event)\n );\n }\n return this.httpClient.post<HypEventDetails>(encodeURI(`${url}/events`), eventForWriteAPI(event));\n })\n );\n }\n\n saveProcedure(procedure: HypProcedure) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(\n encodeURI(`${url}/procedures/id/${procedure.id}`),\n procedureForWriteAPI(procedure)\n );\n })\n );\n }\n\n addEventToProcedure(eventId: number, procedure: HypProcedure) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(\n encodeURI(`${url}/procedures/id/${procedure.id}/associate/event/id/${eventId}`),\n {}\n );\n })\n );\n }\n\n status(event: HypEventDetails, status: string, comment: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(encodeURI(`${url}/events/id/${event.id}/close`), {\n id: v4(),\n message: comment\n });\n })\n );\n }\n\n statusProcedure(procedure: HypProcedure, status: string, comment: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(encodeURI(`${url}/procedures/id/${procedure.id}/close`), {\n id: v4(),\n message: comment\n });\n })\n );\n }\n\n associateProcedure(procedureId: number, eventIds: number[]) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<HypProcedure>(\n encodeURI(`${url}/procedures/model/id/${procedureId}/associate`),\n eventIds\n );\n })\n );\n }\n\n export(archived: boolean) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get(encodeURI(`${url}/events/export?archived=${archived}`), {\n observe: 'response',\n responseType: 'arraybuffer'\n });\n })\n );\n }\n\n search(search: string | undefined, fields: string[], statuses: string[] = []): Observable<HypEventDetails[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n params = params.set('sort', 'name').set('order', 'DESC').set('pageSize', '10');\n if (statuses.length > 0) {\n statuses.forEach((status) => {\n params = params.set('status', status);\n });\n }\n if (search && search.length > 0) {\n fields.forEach((field) => {\n params = params.set(field, search);\n });\n }\n return this.httpClient.get<HypEventDetails[]>(encodeURI(`${url}/events`), { params });\n })\n );\n }\n}\n","import { PRY_DIALOG_DATA, PryDialogRef } from '@provoly/dashboard';\nimport { Component, Inject } from '@angular/core';\nimport { debounceTime, Observable, shareReplay, Subject, switchMap } from 'rxjs';\nimport { HypEventDetails } from '../../../model/event/hyp-event-detail.interface';\nimport { HypEventDetailsWithMatching } from '../event-detail.component';\nimport { catchError, map, startWith } from 'rxjs/operators';\nimport { EventService } from '../../../store/event/event.service';\nimport { padId } from '../../../general/pad-id.function';\n\n@Component({\n selector: 'hvy-add-event',\n templateUrl: './add-event.component.html'\n})\nexport class HvyEventAddEventComponent {\n onEventSearch$ = new Subject<void>();\n eventSelectValue: string | HypEventDetails | undefined = undefined;\n events$: Observable<HypEventDetailsWithMatching[]>;\n eventToAdd?: HypEventDetails;\n\n constructor(\n private dialog: PryDialogRef<HvyEventAddEventComponent>,\n @Inject(PRY_DIALOG_DATA)\n public data: {},\n private eventService: EventService\n ) {\n this.events$ = this.onEventSearch$.pipe(startWith(), debounceTime(500)).pipe(\n switchMap(() => {\n const search =\n typeof this.eventSelectValue === 'string' && (this.eventSelectValue as string).length > 2\n ? (this.eventSelectValue as string)\n : undefined;\n return this.eventService.search(search, ['name', 'id'], ['NEW']).pipe(\n map((events) =>\n events.map((event) => {\n const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');\n const html = `${padId.fn(event.id)} - ${event.name}`;\n return {\n ...event,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`),\n displayName: html\n } as HypEventDetailsWithMatching;\n })\n )\n );\n }),\n catchError(() => {\n throw new Error('Search Equipment problem');\n }),\n shareReplay()\n );\n }\n\n selectedEventChange($event: any) {\n this.eventSelectValue = $event;\n this.onEventSearch$.next();\n if (typeof $event === 'object') {\n this.eventToAdd = $event;\n } else {\n this.eventToAdd = undefined;\n }\n }\n\n closeModal() {\n this.dialog.close({ value: 'cancel' });\n }\n\n add() {\n this.dialog.close({ value: 'add', event: this.eventToAdd });\n }\n}\n","<div class=\"o-hvy-event-detail-add\">\n <h3>{{ '@hvy.event.add.title' | i18n }}</h3>\n <p>{{ '@hvy.event.add.description' | i18n }}</p>\n\n <div class=\"o-hvy-event-detail-add__container\">\n <label for=\"event\">{{ '@hvy.event.add.search' | i18n }}<span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventToAdd\"\n (ngModelChange)=\"selectedEventChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"event\"\n [template]=\"templateOption\"\n class=\"o-hvy-event-detail-add__event\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-hvy-event-detail-add__buttons\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!eventToAdd\" (click)=\"add()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport {EquipmentForEvent, HypEquipment} from '../../model/hyp-equipment.interface';\nimport { HypEventTooltipBase } from '../../model/event/hyp-event-tooltip.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EquipmentService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n findByName(name: string): Observable<HypEventTooltipBase> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventTooltipBase>(encodeURI(`${url}/equipments/name/${name}`));\n })\n );\n }\n\n list() {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEquipment[]>(encodeURI(`${url}/equipments`));\n })\n );\n }\n\n search(search: string | undefined, domain ?: string): Observable<EquipmentForEvent[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n params = params.set('sort', 'name').set('order', 'DESC').set('pageSize', '10');\n if (search) params = params.set('search', search);\n if (domain) params = params.set('domain', domain);\n return this.httpClient.get<EquipmentForEvent[]>(encodeURI(`${url}/equipments`), { params });\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable, of, shareReplay } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypComment } from '../../model/comment.interface';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HypCommentsService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n get(id: number | string, type: 'events' | 'actions'): Observable<HypComment[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypComment[]>(encodeURI(`${url}/${type}/id/${id}/comments`));\n }),\n catchError(() => {\n console.error(`Unable to load comments for event id: ${id}`);\n return of([]);\n }),\n shareReplay()\n );\n }\n\n save(id: number | string, type: 'events' | 'actions', comment: { id: string; message: string }) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<HypComment[]>(encodeURI(`${url}/${type}/id/${id}/comments`), comment);\n })\n );\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvy-progress-display',\n templateUrl: './progress-display.component.html'\n})\nexport class ProgressDisplayComponent {\n private _progress = 50;\n\n @Input() set progress(progress: number) {\n this._progress = isNaN(progress) ? 0 : progress;\n }\n\n get progress() {\n return this._progress ?? 0;\n }\n}\n","<div class=\"o-progressbar\">\n <div class=\"o-progressbar__header\">\n <div>0%</div>\n @if (progress > 0 && progress < 100) {\n <div [style.flex-grow]=\"progress\" class=\"-value\">{{ progress }}%</div>\n }\n <div [style.flex-grow]=\"progress === 100 ? 100 : 100 - progress\">100%</div>\n </div>\n <div class=\"o-progressbar__value\">\n <div [style.flex-grow]=\"progress\" class=\"-filled\"></div>\n <div [style.flex-grow]=\"100 - progress\" class=\"-empty\"></div>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { HypComment } from '../../model/comment.interface';\nimport { v4 } from 'uuid';\nimport { Subject, Subscription } from 'rxjs';\nimport { HypCommentsService } from '../../store/comments/comments.service';\n\nexport type HypAugmentedComment = HypComment & {\n day: string;\n hour: string;\n edit: boolean;\n previousMessage: string;\n};\n\n@Component({\n selector: 'hvy-comments',\n templateUrl: './comments.component.html'\n})\nexport class HvyCommentsComponent implements OnDestroy {\n @Input() readonly: boolean | null = false;\n newComment = '';\n @Output() commented = new EventEmitter<{ id: string; message: string }>();\n more = false;\n @Input() me: string | null | undefined;\n @Input() type: 'actions' | 'events' = 'events';\n @Input() objectId?: string | number;\n @Input() displayEmpty = true;\n @Input() commentCount = 0;\n @ViewChild('message') message!: ElementRef<HTMLTextAreaElement>;\n opened = false;\n subTrigger?: Subscription;\n additionnalComments: HypAugmentedComment[] = [];\n _lastComment: HypAugmentedComment | undefined;\n @Input() set lastComment(comment: HypComment | undefined) {\n this._lastComment = !comment\n ? undefined\n : ({\n ...comment,\n day: new Date(comment.lastModificationDate).toLocaleDateString(),\n hour: new Date(comment.lastModificationDate)\n .toLocaleTimeString()\n .substring(0, new Date(comment.lastModificationDate).toLocaleTimeString().lastIndexOf(':')),\n edit: false,\n previousMessage: comment.message\n } as HypAugmentedComment);\n }\n\n @Input() set trigger(trigger$: Subject<boolean>) {\n this.subTrigger?.unsubscribe();\n this.subTrigger = trigger$.subscribe((opened) => (this.opened = opened ?? !this.opened));\n }\n\n constructor(private commentsService: HypCommentsService) {}\n\n ngOnDestroy(): void {\n this.subTrigger?.unsubscribe();\n }\n\n get comments(): HypAugmentedComment[] {\n return [this._lastComment, ...this.additionnalComments].filter((com) => !!com) as HypAugmentedComment[];\n }\n\n addComment() {\n this.commented.next({ id: v4(), message: this.newComment });\n this.newComment = '';\n this.more = false;\n }\n\n editComment(comment: HypAugmentedComment) {\n comment.edit = true;\n setTimeout(() => {\n this.message.nativeElement.focus();\n }, 200);\n }\n\n saveComment(comment: HypAugmentedComment) {\n this.commented.next({ id: comment.id, message: comment.message });\n comment.edit = false;\n this.more = false;\n }\n\n cancel(comment: HypAugmentedComment) {\n comment.message = comment.previousMessage;\n comment.edit = false;\n }\n\n toggleMore() {\n if (!this.more) {\n this.commentsService.get(this.objectId!, this.type).subscribe((comments) => {\n this.additionnalComments = comments\n .filter((comment) => comment.id !== this._lastComment?.id)\n .map(\n (comment: HypComment) =>\n ({\n ...comment,\n day: new Date(comment.lastModificationDate).toLocaleDateString(),\n hour: new Date(comment.lastModificationDate)\n .toLocaleTimeString()\n .substring(0, new Date(comment.lastModificationDate).toLocaleTimeString().lastIndexOf(':')),\n edit: false,\n previousMessage: comment.message\n }) as HypAugmentedComment\n );\n this.more = !this.more;\n });\n } else {\n this.more = !this.more;\n }\n }\n\n toggle() {\n this.opened = !this.opened;\n }\n}\n","<div class=\"o-hvy-comments\">\n @if (displayEmpty || commentCount > 0 || opened) {\n <div class=\"o-hvy-comments__header\">\n @if (type === 'actions') {\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened\"\n class=\"-hand\"\n (click)=\"toggle()\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n }\n <h3>\n {{\n (type === 'events' ? '@hvy.event.log.event.comments.name' : '@hvy.event.log.event.comments.actions')\n | i18n: { nb: commentCount }\n }}\n </h3>\n </div>\n\n @if (!readonly && (displayEmpty || opened)) {\n <textarea\n class=\"a-form-field\"\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComment\"\n maxlength=\"255\"\n ></textarea>\n <div class=\"o-hvy-comments__button\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"newComment.length === 0\" (click)=\"addComment()\">\n {{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n }\n\n @if (displayEmpty || opened) {\n @for (comment of comments; track comment.id) {\n @if ($first || more) {\n <div class=\"o-hvy-comments__previous\">\n <span class=\"o-hvy-comments__previous__title\">{{\n ($first && commentCount > 1 ? '@hvy.event.comment.lastDetail' : '@hvy.event.comment.detail')\n | i18n\n : {\n day: comment.day,\n hour: comment.hour,\n creator: comment.creatorName ?? '-'\n }\n }}</span>\n <div class=\"o-hvy-comments__previous__message\">\n <textarea\n class=\"a-form-field\"\n [(ngModel)]=\"comment.message\"\n [readonly]=\"!comment.edit\"\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n maxlength=\"255\"\n #message\n ></textarea>\n @if (!readonly && (!me || comment.creator === me)) {\n <button (click)=\"editComment(comment)\" [disabled]=\"comment.edit\">\n <pry-icon iconSvg=\"edit\" [height]=\"18\" [width]=\"18\"></pry-icon>\n </button>\n }\n </div>\n @if (comment.edit) {\n <div class=\"o-hvy-comments__previous__actions\">\n <button\n class=\"a-btn a-btn--primary\"\n [disabled]=\"comment.message.length === 0\"\n (click)=\"saveComment(comment)\"\n >\n {{ '@hvy.action.update' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"cancel(comment)\">\n {{ '@hvy.action.cancel' | i18n }}\n </button>\n </div>\n }\n </div>\n }\n }\n @if (commentCount > 1) {\n <div class=\"o-hvy-comments__more\">\n <button (click)=\"toggleMore()\">\n {{ (more ? '@hvy.event.comment.less' : '@hvy.event.comment.more') | i18n }}\n </button>\n </div>\n }\n }\n }\n</div>\n","import { Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { PRY_DIALOG_DATA, PryDialogRef } from '@provoly/dashboard';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\n\nexport interface HvyActionMenuData {\n action: HypAction;\n mode: string;\n enableEditActions: boolean;\n}\n\n@Component({\n selector: 'pry-action-menu',\n templateUrl: './action-menu.component.html'\n})\nexport class HvyActionMenuComponent {\n @Output() choice = new EventEmitter();\n\n constructor(\n private dialog: PryDialogRef<HvyActionMenuComponent>,\n @Inject(PRY_DIALOG_DATA) public data: HvyActionMenuData\n ) {}\n\n action(value: string) {\n this.dialog.close(value);\n }\n}\n","<div class=\"o-hvy-action-menu\">\n @if (data.mode === 'procedure') {\n <button\n (click)=\"action('comment')\"\n [disabled]=\"!data.action.commentsCount && data.action.commentsCount !== 0\"\n >\n {{ '@hvy.procedure.action.comment' | i18n }}\n </button>\n }\n @if (data.action.status === 'NEW' && data.enableEditActions) {\n <button (click)=\"action('update')\">{{ '@hvy.procedure.action.update' | i18n }}</button>\n }\n @if (data.action.status !== 'DONE' && data.action.status !== 'IN_PROGRESS' && data.enableEditActions) {\n <button (click)=\"action('delete')\">{{ '@hvy.procedure.action.delete' | i18n }}</button>\n }\n @if (data.action.status !== 'DONE' && data.mode === 'procedure') {\n <button (click)=\"action('done')\">{{ '@hvy.procedure.action.done' | i18n }}</button>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { HypAction } from '../../../model/procedure/hyp-action.interface';\nimport { HypEventDetails } from '../../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-base-action-parameter',\n template: ' <p>not used</p>'\n})\nexport class HvyBaseParameterActionComponent<T extends HypAction> {\n _action!: any;\n _events: HypEventDetails[] = [];\n @Input() mode: 'model' | 'procedure' = 'procedure';\n @Input() readonly!: null | boolean;\n @Input() disableSaveDIButton: boolean = false;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events;\n }\n\n get events() {\n return this._events;\n }\n\n @Input() set action(action: T) {\n this._action = action as T;\n }\n\n get action() {\n return this._action;\n }\n\n constructor() {}\n}\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypOtherAction } from './other-action-display.component';\n\n@Component({\n selector: 'hvy-other-action-parameter',\n templateUrl: './other-action-parameter.component.html'\n})\nexport class HvyOtherActionParameterComponent extends HvyBaseParameterActionComponent<HypOtherAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p class=\"param-line__short\">{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"50\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.other' | i18n\"\n />\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\nexport interface HypOtherAction extends HypAction {\n name: string;\n}\n\n@Component({\n selector: 'hvy-other-action-display',\n templateUrl: './other-action-display.component.html'\n})\nexport class HvyOtherActionDisplayComponent extends HvyBaseParameterActionComponent<HypOtherAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }} : <b>{{ action.name | i18n }}</b>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypEmailAction } from './email-action-display.component';\n\n@Component({\n selector: 'hvy-email-action-parameter',\n templateUrl: './email-action-parameter.component.html'\n})\nexport class HvyEmailActionParameterComponent extends HvyBaseParameterActionComponent<HypEmailAction> {\n static PATTERN = new RegExp(/^\\w+([.-]\\w+)*@\\w+([.-]\\w+)*(\\.\\w{2,3})+/);\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"30\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.name' | i18n\"\n />\n <p class=\"to\">{{ '@hvy.procedure.action.at' | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.email\"\n class=\"a-form-field\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.email' | i18n\"\n />\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\nexport interface HypEmailAction extends HypAction {\n name: string;\n email: string;\n}\n\n@Component({\n selector: 'hvy-email-action-display',\n templateUrl: './email-action-display.component.html'\n})\nexport class HvyEmailActionDisplayComponent extends HvyBaseParameterActionComponent<HypEmailAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }} <b>{{ action.name | i18n }}</b>\n {{ '@hvy.procedure.action.at' | i18n }} <b>{{ action.email | i18n }}</b>\n </p>\n</div>\n","import {Injectable} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {mergeMap, Observable, Subject} from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\n\nexport interface HypServiceType {\n name: string;\n domain: string;\n gti: number;\n gtr: number;\n gtrp: number;\n}\n\nexport interface HypService {\n name: string;\n equipment: string;\n priority: string;\n type: string;\n description: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServiceService {\n public refreshDiAction = new Subject();\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n types(): Observable<HypServiceType[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypServiceType[]>(encodeURI(`${url}/servicesType`));\n })\n );\n }\n\n create(service: HypService, actionId: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.post<{ id: string }>(encodeURI(`${url}/services/external/id/${actionId}`), service);\n })\n );\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { PRY_DIALOG_DATA, PryDialogRef, PryI18nService, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEquipment } from '../../../../model/hyp-equipment.interface';\nimport { HypServiceAction } from './service-action-display.component';\nimport { HypServiceType, ServiceService } from '../../../../store/service/service.service';\nimport { DOMAINS } from '../../../../model/domains.constant';\nimport { HypEventDetails } from '../../../../model/event/hyp-event-detail.interface';\n\nexport type HypCreateServiceResult = {\n value: string;\n name: string;\n equipment: string;\n domain: string;\n priority: string;\n type: string;\n description: string;\n gti?: string;\n gtr?: string;\n gtrp?: string;\n};\n\n@Component({\n selector: 'pry-create-service',\n templateUrl: './create-service.component.html'\n})\nexport class HvyCreateServiceComponent extends SubscriptionnerDirective {\n result: HypCreateServiceResult = {\n value: 'cancel',\n name: '',\n domain: '',\n priority: '',\n equipment: '',\n type: '',\n description: ''\n };\n errors: string[] = [];\n types: HypServiceType[] = [];\n priorities = ['1-MINEUR', '2-MAJEUR', '3-BLOQUANT'];\n domains = DOMAINS.values;\n equipments: (HypEquipment | { displayName: string })[] = [];\n allowedTypes: HypServiceType[] = [];\n\n constructor(\n private dialog: PryDialogRef<HvyCreateServiceComponent>,\n @Inject(PRY_DIALOG_DATA) public data: { action: HypServiceAction; events: HypEventDetails[] },\n private serviceService: ServiceService,\n private i18nService: PryI18nService\n ) {\n super();\n this.result.name =\n this.data.events && this.data.events.length > 0 ? this.data.events[0].name : this.data.action.name;\n this.equipments = [\n {\n displayName: this.i18nService.instant('@hvy.service.noEquip'),\n id: '__NO_EQUIPMENT__'\n },\n ...this.data.events\n .filter((ev) => !!ev.equipment)\n .map((ev) => ({\n ...ev.equipment,\n displayName: `${ev.equipment?.name} - ${this.i18nService.instant('@hvy.event.family.' + ev.equipment?.family)}`\n }))\n ].filter((obj, index, arr) =>\n {\n return arr.findIndex(o =>\n {\n return JSON.stringify(o) === JSON.stringify(obj)\n }) === index\n });\n\n this.serviceService.types().subscribe((types) => {\n this.types = types;\n this.updateAllowedTypes();\n });\n }\n\n action(value: string) {\n this.result.value = value;\n this.dialog.close(this.result);\n }\n\n onEquipmentChange($event: string) {\n this.result.equipment = $event;\n const equipment = (\n this.equipments.filter((equipment) => equipment.hasOwnProperty('domain')) as HypEquipment[]\n ).find((equip) => equip.id === $event);\n if (equipment) {\n this.result.domain = (equipment as HypEquipment).domain;\n }\n this.check();\n }\n\n onDescriptionChange($event: string) {\n this.result.description = $event;\n this.check();\n }\n\n onTypeChange($event: string) {\n this.result.type = $event;\n const typeValue = this.types.find((type) => type.name === $event) ?? {\n gti: '-',\n gtr: '-',\n gtrp: '-'\n };\n this.result.gti = (typeValue.gti ?? '-') + '';\n this.result.gtr = (typeValue.gtr ?? '-') + '';\n this.result.gtrp = (typeValue.gtrp ?? '-') + '';\n this.check();\n }\n\n onPriorityChange($event: any) {\n this.result.priority = $event;\n this.check();\n }\n\n onDomainChange($event: string) {\n this.result.domain = $event;\n this.updateAllowedTypes();\n this.check();\n }\n\n hasError(type: string) {\n return this.errors.includes(type);\n }\n\n check() {\n this.errors = [];\n if (!this.result.name || this.result.name.length === 0) {\n this.errors.push('name');\n }\n if (!this.result.equipment || this.result.equipment.length === 0) {\n this.errors.push('target');\n }\n if (!this.result.description || this.result.description.length === 0) {\n this.errors.push('description');\n }\n if (!this.result.type || this.result.type.length === 0) {\n this.errors.push('type');\n }\n if (!this.result.priority || this.result.priority.length === 0) {\n this.errors.push('priority');\n }\n if (!this.result.domain || this.result.domain.length === 0) {\n this.errors.push('domain');\n }\n }\n\n createDI() {\n this.dialog.close({\n ...this.result,\n equipment: this.result.equipment === '__NO_EQUIPMENT__' ? null : this.result.equipment,\n value: 'ok'\n });\n }\n\n closeModal() {\n this.dialog.close({ value: 'cancel' });\n }\n\n private updateAllowedTypes() {\n this.allowedTypes = this.types.filter(\n (type) => !this.result.domain || this.result.domain.length === 0 || type.domain === this.result.domain\n );\n }\n}\n","<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"allowedTypes\"\n [ngModel]=\"result.type\"\n (ngModelChange)=\"onTypeChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('type')\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n","import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\nimport { PryDialogService, I18nPipe } from '@provoly/dashboard';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { HvyCreateServiceComponent } from './create-service.component';\nimport { HypService, ServiceService } from '../../../../store/service/service.service';\nimport { act } from '@ngrx/effects';\n\nexport interface HypServiceAction extends HypAction {\n name: string;\n serviceExternalId?: string;\n serviceAdditionalInfo?: string;\n serviceStatus?: string;\n}\n\n@Component({\n selector: 'hvy-service-action-display',\n templateUrl: './service-action-display.component.html'\n})\nexport class HvyServiceActionDisplayComponent extends HvyBaseParameterActionComponent<HypServiceAction> implements OnInit{\n @ViewChild('menuButton', { read: ElementRef }) menuButton!: ElementRef;\n status!: string;\n reference!: string;\n\n constructor(\n private pryDialog: PryDialogService,\n private overlay: Overlay,\n private serviceService: ServiceService,\n private i18n: I18nPipe\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.status = this.action.serviceStatus ?\n '(' + this.i18n.transform(`@hvy.procedure.status.${this.action.serviceStatus}`) + ')' : '';\n this.initActionReference();\n }\n\n initActionReference(){\n if(this.action.serviceExternalId) {\n if(this.action.serviceAdditionalInfo) {\n this.reference = `${this.action.serviceExternalId}@${this.action.serviceAdditionalInfo}`\n } else {\n this.reference = this.action.serviceExternalId;\n }\n } else {\n this.reference = this.action.name;\n }\n }\n\n toggleModal() {\n const dialogRef = this.pryDialog.open(HvyCreateServiceComponent, {\n overlayConfig: {\n hasBackdrop: true,\n panelClass: ['pry-dialog-container'],\n backdropClass: 'backdrop-dark',\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically()\n },\n data: {\n action: this.action,\n events: this.events\n }\n });\n\n const sub = dialogRef.closeValue.subscribe((type: HypService & { value: string }) => {\n switch (type.value) {\n case 'ok':\n this.serviceService\n .create(type, this.action.id)\n .subscribe((name) => {\n this.action.serviceExternalId = name.id;\n this.initActionReference();\n this.serviceService.refreshDiAction.next(true);\n });\n break;\n case 'cancel':\n break;\n }\n setTimeout(() => {\n sub.unsubscribe();\n }, 100);\n });\n }\n\n protected readonly act = act;\n}\n","<div class=\"param-line -vertical\">\n <p>\n {{ '@hvy.procedure.action.service' | i18n }} : <b>{{ reference }}</b> {{ status }}\n </p>\n @if (!action.serviceExternalId && this.mode !== 'model') {\n <button\n class=\"a-link\"\n [disabled]=\"readonly ||\n (action.type === 'ASKED_SERVICE' &&\n (action.status === 'DONE' || action.status === 'OT_CLOSED' || !action.lastModificationDate)\n ) || disableSaveDIButton\"\n (click)=\"toggleModal()\"\n #menuButton\n >\n > {{ '@hvy.action.create' | i18n }}\n </button>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypServiceAction } from './service-action-display.component';\n\n@Component({\n selector: 'hvy-service-action-parameter',\n templateUrl: './service-action-parameter.component.html'\n})\nexport class HvyServiceActionParameterComponent extends HvyBaseParameterActionComponent<HypServiceAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p class=\"param-line__short\">{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"50\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.service' | i18n\"\n />\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\nexport interface HypPhoneAction extends HypAction {\n name: string;\n number: string;\n}\n\n@Component({\n selector: 'hvy-phone-action-display',\n templateUrl: './phone-action-display.component.html'\n})\nexport class HvyPhoneActionDisplayComponent extends HvyBaseParameterActionComponent<HypPhoneAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }} <b>{{ action.name | i18n }}</b>\n {{ '@hvy.procedure.action.to' | i18n }} <b>{{ action.number | i18n }}</b>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypPhoneAction } from './phone-action-display.component';\n\n@Component({\n selector: 'hvy-phone-action-parameter',\n templateUrl: './phone-action-parameter.component.html'\n})\nexport class HvyPhoneActionParameterComponent extends HvyBaseParameterActionComponent<HypPhoneAction> {\n static PATTERN_PHONE = new RegExp('^(?:(?:\\\\+|00)33|0)[1-9][0-9]{8}$');\n static PATTERN_SMS = new RegExp('^(?:(?:\\\\+|00)33|0)[6-7][0-9]{8}$');\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"30\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.name' | i18n\"\n />\n <p class=\"to\">{{ '@hvy.procedure.action.to' | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.number\"\n class=\"a-form-field phone\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.phone' | i18n\"\n [maxlength]=\"12\"\n />\n</div>\n","import { Type } from '@angular/core';\nimport { HvyOtherActionParameterComponent } from './action-parameters/other/other-action-parameter.component';\nimport { HvyBaseParameterActionComponent } from './action-parameters/base-parameter-action.component';\nimport { HvyOtherActionDisplayComponent } from './action-parameters/other/other-action-display.component';\nimport { HvyEmailActionParameterComponent } from './action-parameters/email/email-action-parameter.component';\nimport { HvyEmailActionDisplayComponent } from './action-parameters/email/email-action-display.component';\nimport { HvyServiceActionDisplayComponent } from './action-parameters/service/service-action-display.component';\nimport { HvyServiceActionParameterComponent } from './action-parameters/service/service-action-parameter.component';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { HvyPhoneActionDisplayComponent } from './action-parameters/phone/phone-action-display.component';\nimport { HvyPhoneActionParameterComponent } from './action-parameters/phone/phone-action-parameter.component';\n\nexport const ACTIONS_TYPES = {\n values: {\n PHONE: {\n display: HvyPhoneActionDisplayComponent,\n parameter: HvyPhoneActionParameterComponent,\n validator: (action) =>\n !!action.name && !!action.number && action.number.match(HvyPhoneActionParameterComponent.PATTERN_PHONE),\n order: 100\n },\n SMS: {\n display: HvyPhoneActionDisplayComponent,\n parameter: HvyPhoneActionParameterComponent,\n validator: (action) =>\n !!action.name && !!action.number && action.number.match(HvyPhoneActionParameterComponent.PATTERN_SMS),\n order: 200\n },\n OTHER: {\n display: HvyOtherActionDisplayComponent,\n parameter: HvyOtherActionParameterComponent,\n validator: (action) => !!action.name,\n order: 500\n },\n ASKED_SERVICE: {\n display: HvyServiceActionDisplayComponent,\n parameter: HvyServiceActionParameterComponent,\n validator: (action) => !!action.name,\n order: 400\n },\n EMAIL: {\n display: HvyEmailActionDisplayComponent,\n parameter: HvyEmailActionParameterComponent,\n validator: (action) =>\n !!action.name && !!action.email && action.email.match(HvyEmailActionParameterComponent.PATTERN),\n order: 300\n }\n } as {\n [key: string]: {\n display: undefined | Type<HvyBaseParameterActionComponent<HypAction>>;\n parameter: undefined | Type<HvyBaseParameterActionComponent<HypAction>>;\n validator: undefined | ((action: any) => boolean);\n order: number;\n };\n }\n};\n","import { Component, ComponentRef, Input, Type, ViewChild, ViewContainerRef } from '@angular/core';\nimport { HypAction } from '../../../model/procedure/hyp-action.interface';\nimport { ACTIONS_TYPES } from '../actions-types.constant';\nimport { HvyBaseParameterActionComponent } from './base-parameter-action.component';\nimport { HypEventDetails } from '../../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-action-parameter',\n templateUrl: './action-parameter.component.html'\n})\nexport class HvyActionParameterComponent {\n @ViewChild('ref', { read: ViewContainerRef }) ref!: ViewContainerRef;\n _action?: HypAction;\n _type: string = '';\n private componentRef?: ComponentRef<HvyBaseParameterActionComponent<HypAction>>;\n param = false;\n _events: HypEventDetails[] = [];\n @Input() mode: 'model' | 'procedure' = 'procedure';\n @Input() readonly!: null | boolean;\n @Input() disableSaveDIButton: boolean = false;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events;\n if (this.componentRef) {\n this.componentRef.instance.events = this._events as any;\n this.componentRef.instance.disableSaveDIButton = this.disableSaveDIButton;\n }\n }\n\n @Input() set isParam(param: boolean) {\n this.param = param;\n this.updateParameterComponent();\n }\n\n @Input() set type(type: string) {\n this._type = type;\n this.updateParameterComponent();\n }\n\n @Input() set action(action: any) {\n this._action = action;\n this.updateParameterComponent();\n }\n\n constructor() {}\n\n private updateParameterComponent() {\n if (!!this._action && !!this._type) {\n setTimeout(() => {\n this.componentRef?.destroy();\n\n const component = ACTIONS_TYPES.values[this._type ?? ''][this.param ? 'parameter' : 'display'] as\n | Type<HvyBaseParameterActionComponent<HypAction>>\n | undefined;\n if (!!component) {\n this.componentRef = this.ref.createComponent<HvyBaseParameterActionComponent<HypAction>>(component);\n this.componentRef.instance.action = this._action as any;\n this.componentRef.instance.events = this._events as any;\n this.componentRef.instance.mode = this.mode;\n this.componentRef.instance.readonly = this.readonly;\n }\n });\n }\n }\n}\n","<div #ref></div>\n","import { Component, ElementRef, EventEmitter, Input, model, Output, QueryList, ViewChildren } from '@angular/core';\nimport { PryDialogService, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { v4 } from 'uuid';\nimport { HvyActionMenuComponent, HvyActionMenuData } from './action-menu.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ACTIONS_TYPES } from './actions-types.constant';\nimport { HypCommentsService } from '../../store/comments/comments.service';\nimport { Subject } from 'rxjs';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypComment } from '../../model/comment.interface';\nimport { ServiceService } from '../../store/service/service.service';\n\n@Component({\n selector: 'hvy-procedure-actions',\n templateUrl: './procedure-actions.component.html'\n})\nexport class ProcedureActionsComponent extends SubscriptionnerDirective {\n static CARD_HEIGHT = 75;\n movingAction?: HypAction;\n moveStart = 0;\n moveInitialIndex = 0;\n initialActionList: HypAction[] = [];\n previousOffset = 0;\n dragTarget?: EventTarget | null;\n @Output() modified = new EventEmitter<HypAction[]>();\n @Output() commented = new EventEmitter<{ action: HypAction; comments: HypComment[] }>();\n @Input() mode: 'model' | 'procedure' = 'procedure';\n @Input() me: string | null | undefined;\n @Input() readonly: boolean | null = false;\n @Input() readOnlyComment: boolean | null = false;\n @Input() enableEditActions: boolean | null = false;\n @Input() events: HypEventDetails[] = [];\n @Input() disableSaveDIButton: boolean = false;\n @Input() initialActions: HypAction[] | undefined = [];\n @Input() procedureModificationsActions: HypAction[] | undefined = []\n ACTIONS_TYPES: string[];\n _actions: HypAction[] = [];\n @ViewChildren('menuButton', { read: ElementRef }) menuButtons!: QueryList<ElementRef>;\n triggers: { [p: string]: Subject<boolean> } = {};\n ignoreFirstEvent = true;\n\n constructor(\n private pryDialog: PryDialogService,\n private overlay: Overlay,\n private commentsService: HypCommentsService,\n private serviceService: ServiceService\n ) {\n super();\n this.ACTIONS_TYPES = Object.keys(ACTIONS_TYPES.values);\n this.ACTIONS_TYPES.sort((a, b) => ACTIONS_TYPES.values[a].order - ACTIONS_TYPES.values[b].order);\n this.subscriptions.add(\n this.serviceService.refreshDiAction.subscribe((result) => {\n if (result) {\n this.refreshActions.next(this.actions);\n }\n })\n );\n }\n\n @Input() set actions(actions: HypAction[]) {\n this._actions = JSON.parse(JSON.stringify(actions ?? []));\n this.triggers = this.actions\n .map((a) => ({ [a.id]: new Subject<boolean>() }))\n .reduce((p, c) => ({ ...p, ...c }), {});\n }\n\n @Output() refreshActions = new EventEmitter<HypAction[]>();\n\n get actions() {\n return this._actions;\n }\n\n get editing() {\n return !!this.actions.find((action) => action._status);\n }\n\n isAskedServiceWithoutExternalId() {\n return !!this.actions.find(action => !action.serviceExternalId && action.type === 'ASKED_SERVICE')\n }\n\n onMouseDown($event: MouseEvent) {\n this.dragTarget = $event.target;\n }\n\n dragStart($event: MouseEvent, action: HypAction, index: number) {\n if (this.dragTarget && (this.dragTarget as HTMLDivElement).style.maskImage.indexOf('six_dot') > -1) {\n this.movingAction = action;\n this.moveStart = $event.clientY;\n this.moveInitialIndex = index;\n this.initialActionList = [...this.actions];\n } else {\n $event.preventDefault();\n }\n }\n\n disabledCheckbox(action: HypAction) {\n return action.status === 'DONE' ||\n action.status === 'OT_CLOSED' ||\n this.editing ||\n (this.readonly ?? false)\n }\n\n move($event: MouseEvent) {\n $event.preventDefault();\n if (this.movingAction) {\n const offsetInCards = Math.round(($event.clientY - this.moveStart) / ProcedureActionsComponent.CARD_HEIGHT);\n if (this.previousOffset !== offsetInCards) {\n this.previousOffset = offsetInCards;\n const newIndex = Math.min(\n Math.max(this.moveInitialIndex + offsetInCards, 0),\n this.initialActionList.length - 1\n );\n const newActions = [...this.initialActionList];\n const element = newActions.splice(this.moveInitialIndex, 1)[0];\n newActions.splice(newIndex, 0, element);\n\n this.modified.next(newActions);\n }\n }\n }\n\n drop($event: MouseEvent) {\n $event.preventDefault();\n this.move($event);\n this.movingAction = undefined;\n }\n\n allowDrop($event: MouseEvent) {\n $event.preventDefault();\n }\n\n toggleActionStatus(index: number, $event: MouseEvent, disabled: boolean) {\n $event.preventDefault();\n if (!disabled) {\n const newActions = [...this.actions];\n if (newActions[index].status !== 'DONE') {\n newActions[index] = {\n ...newActions[index],\n status: newActions[index].status === 'NEW' ? 'IN_PROGRESS' : 'NEW'\n };\n this.modified.next(newActions);\n }\n }\n }\n\n add() {\n this.actions.push({ type: '', status: 'NEW', id: v4(), _status: 'create' } as HypAction);\n this.modified.next(this.actions);\n }\n\n protected readonly model = model;\n\n update(idx: number, prop: string, $event: any) {\n // @ts-ignore\n this.actions[idx][prop] = $event;\n if (!this.ignoreFirstEvent) {\n this.clearAction(idx);\n }\n this.ignoreFirstEvent = false;\n }\n\n clearAction(idx: number) {\n const { type, status, id, _status, _initial } = this.actions[idx];\n this.actions[idx] = { type, status, id, _status, _initial } as HypAction;\n }\n\n openModal(action: HypAction, idx: number) {\n const dialogRef = this.pryDialog.open(HvyActionMenuComponent, {\n overlayConfig: {\n hasBackdrop: true,\n panelClass: ['pry-dialog-container'],\n backdropClass: 'backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.menuButtons.get(idx)!)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n },\n data: {\n action,\n mode: this.mode,\n enableEditActions: this.enableEditActions\n } as HvyActionMenuData\n });\n\n const sub = dialogRef.closeValue.subscribe((type) => {\n switch (type) {\n case 'comment':\n this.triggers[action.id].next(true);\n break;\n case 'update':\n action._initial = JSON.parse(JSON.stringify(action));\n action._status = 'modify';\n break;\n case 'delete':\n this.actions.splice(idx, 1);\n break;\n case 'done':\n action.status = 'DONE';\n }\n this.modified.next(this.actions);\n setTimeout(() => {\n sub.unsubscribe();\n }, 100);\n });\n this.ignoreFirstEvent = true;\n }\n\n saveAction(action: HypAction, idx: number) {\n delete action._initial;\n delete action._status;\n this.modified.next(this.actions);\n }\n\n cancelAction(action: HypAction, idx: number) {\n if (action._status === 'modify') {\n this.actions[idx] = { ...action._initial! };\n delete this.actions[idx]._initial;\n delete this.actions[idx]._status;\n } else if (action._status === 'create') {\n this.actions.splice(idx, 1);\n } else {\n throw new Error('Cannot happen');\n }\n this.modified.next(this.actions);\n }\n\n isValid(action: HypAction) {\n return (\n action.type &&\n (ACTIONS_TYPES.values[action.type].validator === undefined ||\n ACTIONS_TYPES.values[action.type].validator!(action))\n );\n }\n\n isDraggable(action: HypAction) {\n return !this.editing && action.status === 'NEW' && !this.readonly && this.enableEditActions;\n }\n\n updateComment(action: HypAction, comment: { id: string; message: string }) {\n this.commentsService.save(action.id, 'actions', comment).subscribe(() => {\n this.commentsService.get(action.id, 'actions').subscribe((comments) => {\n this.commented.next({ action, comments });\n });\n });\n }\n}\n","<div\n class=\"o-hvy-events-detail__procedure__actions\"\n (drag)=\"move($event)\"\n (drop)=\"drop($event)\"\n (dragover)=\"allowDrop($event)\"\n>\n @for (action of actions; track action.id; let idx = $index) {\n <div\n class=\"o-hvy-events-detail__procedure__actions__action\"\n [draggable]=\"isDraggable(action) && !readonly\"\n (dragstart)=\"dragStart($event, action, idx)\"\n (mousedown)=\"onMouseDown($event)\"\n [class.-updating]=\"!!action._status\"\n [class.-other-updating]=\"editing\"\n >\n <div class=\"o-hvy-events-detail__procedure__actions__action__header\">\n @if (this.enableEditActions) {\n <pry-icon\n iconSvg=\"six_dot\"\n #handle\n [class.-disabled]=\"!isDraggable(action)\"\n [class.-hidden]=\"action._status || readonly\"\n class=\"grabbable\"\n ></pry-icon>\n }\n <div class=\"number-badge\">{{ idx + 1 }}</div>\n @if (!action._status || readonly) {\n @if (mode === 'procedure') {\n <pry-checkbox\n [ngModel]=\"action.status !== 'NEW'\"\n (click)=\"toggleActionStatus(idx, $event, disabledCheckbox(action))\"\n [disabled]=\"disabledCheckbox(action)\"\n [class.-disabled]=\"disabledCheckbox(action)\"\n [title]=\"'@hvy.procedure.checkbox.' + action.status | i18n\"\n ></pry-checkbox>\n }\n <div [class.-done]=\"action.status === 'DONE' || action.status === 'OT_CLOSED'\" [class.-disabled]=\"editing\">\n <hvy-action-parameter\n [action]=\"action\"\n [type]=\"action.type\"\n [isParam]=\"false\"\n [events]=\"this.events\"\n [mode]=\"this.mode\"\n [readonly]=\"readonly\"\n [disableSaveDIButton]=\"disableSaveDIButton || editing ||\n (actions.length !== initialActions?.length) ||\n (procedureModificationsActions !== undefined && procedureModificationsActions.length > 0)\"\n ></hvy-action-parameter>\n </div>\n @if (!readonly) {\n <button class=\"a-btn a-btn--icon-only\" (click)=\"openModal(action, idx)\" [disabled]=\"editing\">\n <pry-icon iconSvg=\"more_horiz\" #menuButton></pry-icon>\n </button>\n }\n } @else {\n <div class=\"o-hvy-events-detail__procedure__actions__action__create\">\n <div class=\"o-hvy-events-detail__procedure__actions__action__create__header\">\n <p>{{ '@hvy.procedure.action.' + action._status | i18n }}</p>\n <button class=\"a-btn a-btn--icon-only\" (click)=\"saveAction(action, idx)\" [disabled]=\"!isValid(action)\">\n <pry-icon iconSvg=\"check\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelAction(action, idx)\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <div>\n <pry-select\n [ngModel]=\"action.type\"\n [items]=\"ACTIONS_TYPES\"\n (ngModelChange)=\"update(idx, 'type', $event)\"\n i18nPrefix=\"@hvy.procedure.action.\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.action' | i18n\"\n ></pry-select>\n </div>\n <hvy-action-parameter\n [action]=\"action\"\n [type]=\"action.type\"\n [isParam]=\"true\"\n [events]=\"this.events\"\n [mode]=\"this.mode\"\n [disableSaveDIButton]=\"disableSaveDIButton || editing\"\n ></hvy-action-parameter>\n </div>\n }\n </div>\n <hvy-comments\n [lastComment]=\"action.lastComment\"\n [commentCount]=\"action.commentsCount\"\n [objectId]=\"action.id\"\n [readonly]=\"readOnlyComment\"\n (commented)=\"updateComment(action, $event)\"\n [type]=\"'actions'\"\n [trigger]=\"triggers[action.id]\"\n [displayEmpty]=\"false\"\n [me]=\"me\"\n ></hvy-comments>\n </div>\n } @empty {\n @if (actions.length === 0) {\n <div>{{ '@hvy.event.log.procedure.noAction' | i18n }}</div>\n }\n }\n @if (!readonly && enableEditActions) {\n <div class=\"o-hvy-events-detail__procedure__button\">\n <button class=\"a-btn a-btn--primary\" (click)=\"add()\" [disabled]=\"editing\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.procedure.action.add' | i18n }}\n </button>\n </div>\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'forDateTimeLocal'\n})\nexport class ForDatetimeLocalPipe implements PipeTransform {\n constructor() {}\n\n transform(dateAsString: string | undefined, ...args: unknown[]): string {\n const localDate = new Date(dateAsString ?? '');\n const ajustedDate = new Date(localDate.getTime() - localDate.getTimezoneOffset() * 60 * 1000);\n if (!isNaN(ajustedDate.getTime())) {\n const completeDate = ajustedDate.toISOString();\n return dateAsString ? completeDate.substring(0, completeDate.lastIndexOf(':')) : '';\n }\n return '';\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport { HypProcedure } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\nimport {\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogRef,\n PryDialogService,\n PryI18nService,\n PryIconComponent,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport {EquipmentForEvent, HypEquipment} from '../../model/hyp-equipment.interface';\nimport { EquipmentService } from '../../store/equipment/equipment.service';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { EventActions } from '../../store/event/event.actions';\nimport { Store } from '@ngrx/store';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { debounceTime, delay, Observable, shareReplay, Subject, switchMap, take, throwError, zip } from 'rxjs';\nimport { padId } from '../../general/pad-id.function';\nimport equal from 'fast-deep-equal/es6';\nimport { ProcedureAssociationModalComponent } from '../procedure-association-modal/procedure-association-modal.component';\nimport { ProcedureActions } from '../../store/procedure/procedure.actions';\nimport { HypEventCategory, HypEventSubCategory } from '../../model/event/hyp-event-category.type';\nimport { HypCommentsService } from '../../store/comments/comments.service';\nimport { catchError, map, startWith } from 'rxjs/operators';\nimport { HypServiceTooltip} from '../../model/event/hyp-event-tooltip.interface';\nimport { HvyEventDetailsTooltipComponent } from './event-details-tooltip.component';\nimport { EventService } from '../../store/event/event.service';\nimport { HvyEventAddEventComponent } from './add-event/add-event.component';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { HypComment } from '../../model/comment.interface';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { FormArray, FormBuilder, FormControl} from \"@angular/forms\";\nimport { MatAutocompleteTrigger } from \"@angular/material/autocomplete\";\n\nexport type ChangeStatusContext = {\n comment: string;\n events: HypEventDetails[];\n status: string;\n all: boolean;\n};\n\nexport interface HypEventDetailsWithMatching extends HypEventDetails {\n html: string;\n displayName: string;\n}\n\nexport const EVENT_DETAIL_ACCESS_FN = {\n value: (event: HypEventDetails, component: EventDetailComponent) => {\n const readonly =\n component.readonly ||\n event.status === 'DONE' ||\n (['LIMIT', 'OUTOFORDER', 'ANOMALY'].includes(event.category) && event.externalSourceRef !== 'Hyperviseur');\n\n return {\n name: readonly,\n category: readonly,\n subCategory: readonly,\n criticality: readonly,\n description: readonly,\n address: readonly,\n source: true,\n domain: readonly,\n eqName: readonly,\n eqEntity: readonly,\n startDate: readonly,\n endDate: readonly,\n parent: component.readonly || event.status === 'DONE'\n };\n }\n};\n\n@Component({\n selector: 'hvy-event-detail',\n templateUrl: './event-detail.component.html'\n})\nexport class EventDetailComponent extends SubscriptionnerDirective {\n eventForm = this.formBuilder.group({equips: this.formBuilder.array([])});\n get equipControls(){\n return this.eventForm.get('equips') as FormArray;\n }\n @Input() placesChoices: ({key: string, display: string})[] = [];\n opened: boolean[] = [];\n criticalities = HypEventCriticality.values;\n _events: HypEventDetails[] = [];\n eventModifications: Partial<HypEventDetails>[] = [];\n @Output() modifiedEvents = new EventEmitter<[Partial<HypEventDetails>, HypEventDetails][]>();\n _procedure?: HypProcedure;\n procedureModifications: Partial<HypProcedure> = {};\n @Output() modifiedProcedure = new EventEmitter<[Partial<HypProcedure>, HypProcedure] | undefined>();\n protected readonly DOMAINS = DOMAINS.values;\n @Output() eventErrors = new EventEmitter<{ field: string; code: string }[][]>();\n @Output() addedEvent = new EventEmitter<HypEventDetails>();\n errors: { field: string; code: string }[][] = [];\n canCloseSome = false;\n changeStatusContext: ChangeStatusContext = {\n comment: '',\n events: [],\n status: 'DONE',\n all: false\n };\n @Input() title?: string;\n\n @Input() set equipmentFromMap(\n equipmentFromMap: {equipment: EquipmentForEvent | null, family: string | null} | null) {\n if(equipmentFromMap && this.equipControls.length > 0) {\n if(equipmentFromMap.equipment) {\n this.equipControls.at(0).setValue(equipmentFromMap.equipment);\n this.manageEquipment(0);\n }\n }\n }\n @Input() readonly: boolean | null = false;\n @Input() readonlyProcedure: boolean | null = false;\n @Input() enableEditActions: boolean | null = false;\n @Input() readOnlyComment: boolean | null = false;\n overlayRef?: OverlayRef;\n @ViewChild('confirmDialog', { read: TemplateRef }) confirmDialog!: TemplateRef<any>;\n @Output() comfirmDialogOpened = new EventEmitter<ChangeStatusContext>();\n equipmentSelectValue: (string | HypEquipment | undefined)[] = [];\n equipments$: Observable<EquipmentForEvent[]>[] = [];\n @ViewChildren('detailHoverIcon', { read: ElementRef }) detailHoverIcon!: QueryList<ElementRef<PryIconComponent>>;\n onEventSearch$ = new Subject<number>();\n eventSelectValue: (string | HypEventDetails | undefined)[] = [];\n events$: Observable<HypEventDetailsWithMatching[]>;\n @Output() commented = new EventEmitter<\n | { event: HypEventDetails; comments: HypComment[] }[]\n | {\n action: HypAction;\n comments: HypComment[];\n }\n >();\n profile: { sub: string | undefined; userName: string | undefined } | null = null;\n\n @Input() set me(me: { sub: string | undefined; userName: string | undefined } | null) {\n this.profile = me;\n this.setCreatorForEvents();\n }\n\n @Input() set events(events: HypEventDetails[]) {\n this.equipControls.clear();\n this._events = events.filter((ev) => !!ev);\n this.eventModifications = new Array(this._events.length);\n if (this._events.length === 1) {\n this.opened = [true];\n }\n this.canCloseSome = this._events.filter((ev) => ev.status !== 'DONE').length > 0;\n this._events.forEach((ev, idx) => {\n let getEquipment = this._events[idx].equipment as EquipmentForEvent;\n if(this._events[idx].address && !!getEquipment){\n getEquipment = {...getEquipment, address: this._events[idx].address};\n }\n const equipControl = new FormControl<EquipmentForEvent | string | null>(getEquipment);\n if(ev.status === 'DONE') {\n equipControl.disable();\n }\n this.equipControls.push(equipControl);\n if(typeof getEquipment === 'object' && !!getEquipment){\n this.getDataForTooltip(getEquipment as HypEquipment, idx);\n this.selectedEquipment[idx] = true;\n this.adressDisabled[idx] = true;\n } else {\n this.selectedEquipment[idx] = false;\n this.adressDisabled[idx] = false;\n }\n this.equipmentSelectValue[idx] = getEquipment;\n if (ev.parent && ev.parent.id) {\n this.selectedParentChange(\n {\n ...ev.parent,\n displayName: `${padId.fn(ev.parent.id)} - ${ev.parent.name}`\n } as unknown as HypEventDetailsWithMatching,\n idx\n );\n }\n });\n\n this.equipControls.controls.forEach((control, index)=> {\n this.equipments$[index] = control.valueChanges.pipe(startWith(control.value), debounceTime(200),\n switchMap(equipment => {\n const domain = this.eventModifications[index]?.domain ?? this._events[index]?.domain ?? undefined;\n return this.equipmentService.search(typeof equipment === 'object' ? equipment?.name : equipment, domain).pipe(\n map((equipments) => {\n return equipments;\n })\n );\n }),\n catchError(() => throwError(() => new Error('Search Equipment problem'))),\n shareReplay()\n );\n })\n this.setCreatorForEvents();\n this.setDistrictForEvents();\n }\n\n @Input() set procedure(procedure: HypProcedure) {\n this._procedure = procedure;\n this.procedureModifications = {};\n }\n\n @Input() set cancelModifications(evt: any) {\n this.equipControls.controls.forEach((control, index)=> {\n const initialEquipment = this.equipmentSelectValue[index];\n control.setValue(initialEquipment);\n if(typeof initialEquipment === 'object' && !!initialEquipment) {\n this.selectedEquipment[index] = true;\n this.adressDisabled[index] = true;\n } else {\n this.selectedEquipment[index] = false;\n this.adressDisabled[index] = false;\n }\n })\n this.eventSelectValue = this.eventSelectValue.map((eventParent, index) => {\n const initialParent = this._events[index].parent;\n if (initialParent) {\n const regex = this.getComboBoxRegExp(initialParent.name);\n const html = `${padId.fn(initialParent.id)} - ${initialParent.name}`;\n return {\n ...initialParent,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`),\n displayName: html\n } as HypEventDetailsWithMatching;\n } else {\n return undefined;\n }\n });\n this.eventModifications = new Array(this._events.length);\n this.procedureModifications = {};\n this._outputModifications();\n }\n\n selectedEquipment = [false];\n adressDisabled = [false];\n openedAutocomplete = [false];\n\n constructor(\n private equipmentService: EquipmentService,\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n public i18nService: PryI18nService,\n private pryDialog: PryDialogService,\n private commentsService: HypCommentsService,\n private eventService: EventService,\n private actions$: Actions,\n private formBuilder: FormBuilder\n ) {\n super();\n this.subscriptions.add(\n this.actions$.pipe(ofType(EventActions.status), delay(1000)).subscribe({\n next: (result) => {\n if (result.event && result.event.id) {\n this.eventService.get(result.event.id).subscribe((event) => {\n this.commentsService.get(result.event!.id, 'events').subscribe((comments) => {\n this.commented.next([{ event, comments }]);\n });\n });\n } else if (result.procedure && result.targetStatus === 'DONE') {\n this.store\n .select(EventSelectors.details)\n .pipe(take(1))\n .subscribe((details) => {\n if (details.procedure && details.procedure.events) {\n this.canCloseSome = !!details.procedure.events.find((event) => event.status !== 'DONE');\n if (!this.canCloseSome) {\n this._events.forEach((event) => {\n event.status = 'DONE';\n });\n }\n }\n });\n }\n }\n })\n );\n\n this.store.dispatch(EventActions.select({ ids: [], cumulative: false }));\n\n this.events$ = this.onEventSearch$.pipe(startWith(), debounceTime(500)).pipe(\n switchMap((index: number) => {\n const search =\n typeof this.eventSelectValue[index] === 'string' && (this.eventSelectValue[index] as string).length > 2\n ? (this.eventSelectValue[index] as string)\n : // @ts-ignore\n this.eventSelectValue[index]\n ? padId.fn((this.eventSelectValue[index] as HypEventDetails).id)\n : undefined;\n return this.eventService.search(search, ['name', 'id']).pipe(\n map((events) =>\n events.map((event) => {\n const regex = this.getComboBoxRegExp(search);\n const html = `${padId.fn(event.id)} - ${event.name}`;\n return {\n ...event,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`),\n displayName: html\n } as HypEventDetailsWithMatching;\n })\n )\n );\n }),\n catchError(() => {\n return throwError(() => new Error('Search Equipment problem'));\n }),\n shareReplay()\n );\n }\n\n isEventModified(): boolean {\n return this.eventModifications.some((modif, index) =>\n Object.keys(this.eventModifications[index]).length !== 0\n )\n }\n\n private setDistrictForEvents(){\n this._events = this._events.map((eve) => {\n return {\n ...eve,\n district: eve.district ? eve.district : eve.equipment?.district ? eve.equipment.district : ''\n };\n });\n }\n\n private setCreatorForEvents() {\n this._events = this._events.map((eve) => {\n return {\n ...eve,\n creator: eve.creator\n ? eve.creator\n : eve.externalSourceRef === 'Hyperviseur'\n ? (this.profile?.userName as string)\n : '--'\n };\n });\n }\n\n private getComboBoxRegExp(search: string | undefined) {\n return RegExp(`(${search})` ?? '(/-/-/)', 'gid');\n }\n\n get me() {\n return this.profile;\n }\n\n get events() {\n return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));\n }\n\n get canAssociateProcedure() {\n return this._events.every((evt) => evt.status === 'NEW' && evt.id !== -1);\n }\n\n get procedure(): HypProcedure | undefined {\n return this._procedure\n ? {\n ...this._procedure,\n ...(this.procedureModifications ?? {}),\n events: this.events\n }\n : undefined;\n }\n\n get closeComment(): string {\n return this.procedure?.closeComment ?? '';\n }\n\n toggle(i: number) {\n this.opened[i] = !this.opened[i];\n }\n\n manageEquipment(index: number){\n const getEquipment = this.equipControls.at(index).value;\n if (typeof getEquipment === 'object') {\n this.selectedEquipment[index] = true;\n this.getDataForTooltip(getEquipment as HypEquipment, index);\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n this.eventModifications[index].address = getEquipment?.address;\n this.eventModifications[index].district = getEquipment?.district;\n this.eventModifications[index].equipment = getEquipment as HypEquipment;\n this.adressDisabled[index] = true;\n } else {\n this.selectedEquipment[index] = false;\n if(!this.eventModifications[index]){\n this.eventModifications[index] = {};\n }\n this.eventModifications[index].address = '';\n this.eventModifications[index].district = '';\n this.eventModifications[index].equipment = undefined;\n this.adressDisabled[index] = false;\n }\n\n if(this._events[index].equipment?.name === getEquipment?.name || this._events[index].equipment === getEquipment){\n if (!!this.eventModifications[index]) {\n // @ts-ignore\n delete this.eventModifications[index].equipment;\n delete this.eventModifications[index].address;\n delete this.eventModifications[index].district;\n if (Object.keys(this.eventModifications[index]).length === 0) {\n delete this.eventModifications[index];\n }\n }\n }\n }\n\n modifyEvent(index: number, prop: string, $event: Event | string) {\n this.eventModifications[index] = this.eventModifications[index] ?? ({} as Partial<HypEventDetails>);\n if (prop === 'category') {\n delete this.eventModifications[index].subCategory;\n if ($event === 'ANOMALY') {\n this.eventModifications[index].subCategory = 'NONE';\n }\n }\n\n if (prop === 'domain' && this.equipControls.at(index).value?.domain !== $event && !!$event) {\n this.equipControls.at(index).setValue('');\n this.manageEquipment(index);\n }\n const isDate = prop.indexOf('Date') > -1;\n // @ts-ignore\n const newValue = $event instanceof Event ? $event.target?.value : $event;\n\n const correctedValue = !isDate ? newValue : this.convertDate(newValue);\n // @ts-ignore\n if (this._events[index][prop] !== correctedValue) {\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index][prop] = correctedValue;\n\n this._outputModifications();\n } else {\n if (!!this.eventModifications[index]) {\n // @ts-ignore\n delete this.eventModifications[index][prop];\n if (Object.keys(this.eventModifications[index]).length === 0) {\n delete this.eventModifications[index];\n }\n this._outputModifications();\n }\n }\n }\n\n access(event: HypEventDetails) {\n return EVENT_DETAIL_ACCESS_FN.value(event, this);\n }\n\n _outputModifications() {\n this.validateEvents(this.events);\n this.modifiedEvents.next(this.events.map((ev, idx) => [this.eventModifications[idx], ev]));\n this.modifiedProcedure.next(this.procedure ? [this.procedureModifications, this.procedure!] : undefined);\n }\n\n validateEvents(events: HypEventDetails[]) {\n this.errors = [];\n events.forEach((event, idx) => {\n const eventErrors = [];\n const regex = new RegExp(/^\\s+$/);\n if (!event.name || event.name.length === 0 || regex.test(event.name)) {\n eventErrors.push({ field: 'name', code: 'required' });\n }\n if (!event.category || event.category.length === 0) {\n eventErrors.push({ field: 'category', code: 'required' });\n }\n if (!event.criticality || event.criticality.length === 0) {\n eventErrors.push({ field: 'criticality', code: 'required' });\n }\n if (!event.description || event.description.length === 0 || regex.test(event.description)) {\n eventErrors.push({ field: 'description', code: 'required' });\n }\n this.equipControls.controls.forEach((control, index) => {\n if( typeof control.value === 'string' && control.value.length > 0) {\n eventErrors.push({ field: 'equipment', code: 'no-equipment' });\n }\n })\n const parent = event.parent;\n if (parent) {\n const parentName = `${padId.fn(event.parent?.id ?? '')} - ${event.parent?.name}`;\n const selectedParentName = (this.eventSelectValue[idx] as HypEventDetailsWithMatching)?.displayName\n ? (this.eventSelectValue[idx] as HypEventDetailsWithMatching).displayName\n : this.eventSelectValue[idx];\n if (\n !!this.eventSelectValue[idx] &&\n // @ts-ignore\n parentName !== selectedParentName\n ) {\n eventErrors.push({ field: 'parent', code: 'not-found' });\n }\n }\n if (event.category === 'MANIFESTATION') {\n if (!event.startDate || event.startDate.length === 0) {\n eventErrors.push({ field: 'startDate', code: 'required' });\n }\n if (!event.endDate || event.endDate.length === 0) {\n eventErrors.push({ field: 'endDate', code: 'required' });\n }\n if (((event.startDate as string)?.localeCompare(event.endDate ?? '') ?? 0) > 0) {\n eventErrors.push({ field: 'startDate', code: 'before' });\n eventErrors.push({ field: 'endDate', code: 'after' });\n }\n } else {\n if (event.startDate && event.endDate && event.startDate.localeCompare(event.endDate) > 0) {\n eventErrors.push({ field: 'startDate', code: 'before' });\n eventErrors.push({ field: 'endDate', code: 'after' });\n }\n }\n this.errors.push(eventErrors);\n });\n this.eventErrors.next(this.errors);\n }\n\n hasError(prop: string, idx: number) {\n return this.errors[idx]?.find((err) => err.field === prop) ?? false;\n }\n\n categories(event: HypEventDetails) {\n return HypEventCategory.values;\n }\n\n changeStatus($event: string, event: HypEventDetails) {\n this.changeStatusContext.events = [event];\n this.changeStatusContext.status = $event;\n this.changeStatusContext.all = false;\n this.toggleConfirm();\n if($event === 'DONE') {\n this.equipControls.controls.forEach(control => {\n control.disable();\n })\n }\n }\n\n closeAll() {\n this.changeStatusContext.all = true;\n this.changeStatusContext.events = this.events;\n this.changeStatusContext.status = 'DONE';\n this.toggleConfirm();\n }\n\n confirmedClose() {\n if (this.changeStatusContext.all) {\n if (!this.procedure) {\n this.store.dispatch(\n EventActions.status({\n targetStatus: this.changeStatusContext.status,\n event: this.changeStatusContext.events[0],\n procedure: this.procedure,\n comment: this.changeStatusContext.comment\n })\n );\n } else {\n this.store.dispatch(\n EventActions.status({\n targetStatus: this.changeStatusContext.status,\n procedure: this.procedure,\n comment: this.changeStatusContext.comment\n })\n );\n }\n } else {\n this.store.dispatch(\n EventActions.status({\n targetStatus: this.changeStatusContext.status,\n event: this.changeStatusContext.events[0],\n procedure: this.procedure,\n comment: this.changeStatusContext.comment\n })\n );\n }\n this.toggleConfirm();\n }\n\n toggleConfirm() {\n if (!this.overlayRef) {\n this.comfirmDialogOpened.next(this.changeStatusContext);\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'backdrop-dark',\n panelClass: ['o-hvy-close-confirm']\n })\n );\n this.overlayRef.backdropClick().subscribe(() => this.toggleConfirm());\n this.overlayRef.attach(new TemplatePortal(this.confirmDialog, this.viewContainerRef));\n } else {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n this.changeStatusContext.comment = '';\n }\n\n confirmDisabled() {\n return this.changeStatusContext.comment.length === 0;\n }\n\n get calculatedProgress() {\n if (this.procedure!.actions.length === 0) {\n return 0;\n }\n return Math.round(\n (this.procedure!.actions.filter((action) => action.status === 'DONE' || action.status === 'OT_CLOSED').length / this.procedure!.actions.length) *\n 100\n );\n }\n\n protected readonly padId = padId;\n protected readonly subCategories = [undefined, ...HypEventSubCategory.values['ANOMALY']];\n\n modifiedActions($event: any) {\n if (equal($event, this._procedure!.actions)) {\n delete this.procedureModifications.actions;\n } else {\n this.procedureModifications.actions = $event;\n }\n this._outputModifications();\n }\n\n refreshActions($event: HypAction[]) {\n if (this.procedure && this.procedure.actions) {\n this.procedure = {\n ...this.procedure,\n actions: $event\n };\n this._outputModifications();\n }\n }\n\n openAssociationModal() {\n const ref = this.pryDialog.open(ProcedureAssociationModalComponent, {\n backdropClass: 'o-hvy-association-modal__backdrop'\n });\n if (!!ref && !!ref.component) {\n ref.component.events = this.events;\n }\n }\n\n openDeleteModal() {\n const data: PryDialogConfirmData = {\n title: '@chh.event.deleteT',\n message: this.i18nService.instant(this.events.length > 1 ? '@chh.event.deleteM+' : '@chh.event.deleteM1', {\n nbEvents: this.events.length\n }),\n actions: [\n { id: 0, label: '@chh.action.cancel', color: 'secondary' },\n {\n id: 1,\n label: '@chh.action.validate',\n actions: [\n ProcedureActions.deleteInstance({\n id: this.procedure!.id,\n returnToEvent: this.events.length === 1 ? (this.events[0] as HypEventDetailsWithMatching).id : undefined\n })\n ]\n }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, {\n data,\n backdropClass: 'backdrop-dark',\n panelClass: ['o-hvy-delete-procedure']\n });\n }\n\n private convertDate(newValue?: string) {\n return newValue ? new Date(newValue).toISOString() : undefined;\n }\n\n displayEquipment(equipment: EquipmentForEvent) {\n if(equipment && equipment.name && equipment.family) {\n return equipment.name.concat(\" - \", this.i18nService.instant('@hvy.event.family.' + equipment.family));\n } else {\n return '';\n }\n }\n\n getEquipControl(index: number){\n return this.equipControls.at(index) as FormControl;\n }\n\n openAutocomplete(index: number){\n this.openedAutocomplete[index] = !this.openedAutocomplete[index];\n const b = document.getElementById('provoly-event-detail-container');\n if(b){\n b.style.overflow = \"hidden\";\n }\n }\n\n closeAutocomplete(index: number){\n this.openedAutocomplete[index] = !this.openedAutocomplete[index];\n const b = document.getElementById('provoly-event-detail-container');\n if(b){\n b.style.overflow = \"auto\";\n }\n this.manageEquipment(index);\n this._outputModifications();\n }\n\n openOrCloseAutocomplete(event: Event, trigger: MatAutocompleteTrigger, index: number){\n const getEvent = this.events.at(index) as HypEventDetails;\n if(getEvent && getEvent.status !== 'DONE'){\n event.stopPropagation();\n this.openedAutocomplete[index] ? trigger.closePanel() : trigger.openPanel();\n }\n }\n\n equipmentEventsForTooltip: { events?: HypEventDetails[]; services?: HypServiceTooltip[] }[] = [];\n\n private getDataForTooltip($event: HypEquipment | undefined, index: number) {\n this.equipmentEventsForTooltip[index] = {};\n if ($event) {\n this.equipmentService.findByName($event.name).subscribe((equip) => {\n this.equipmentEventsForTooltip[index].events = equip.events;\n this.equipmentEventsForTooltip[index].services = equip.services;\n });\n }\n }\n\n tooltipRef?: PryDialogRef<HvyEventDetailsTooltipComponent>;\n\n toggleDetailsTooltip(idx: number) {\n if (!this.tooltipRef) {\n let idxOpened = 0;\n for (let i = 0; i < idx; i++) {\n if (this.opened[i]) {\n idxOpened++;\n }\n }\n\n this.tooltipRef = this.pryDialog.open(HvyEventDetailsTooltipComponent, {\n data: this.equipmentEventsForTooltip[idx] ?? { events: [], services: [] },\n overlayConfig: {\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.detailHoverIcon.get(idxOpened)!)\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n }\n });\n this.tooltipRef.closeValue.pipe(take(1)).subscribe((value) => {\n this.tooltipRef = undefined;\n });\n } else {\n this.tooltipRef.close();\n this.tooltipRef = undefined;\n }\n }\n\n selectedParentChange($event: string | HypEventDetails, index: number) {\n this.eventSelectValue[index] = $event;\n this.onEventSearch$.next(index);\n if (typeof $event === 'object' || $event === '') {\n const parentForEvent = $event !== '' ? { id: $event.id, name: $event.name } : undefined;\n if (!parentForEvent || this._events[index].parent?.id !== parentForEvent.id) {\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n this.eventModifications[index].parent = parentForEvent;\n this._outputModifications();\n } else {\n if (!!this.eventModifications[index]) {\n // @ts-ignore\n delete this.eventModifications[index].parent;\n if (Object.keys(this.eventModifications[index]).length === 0) {\n delete this.eventModifications[index];\n }\n this._outputModifications();\n }\n }\n } else {\n this._outputModifications();\n }\n }\n\n addOneEvent() {\n const ref = this.pryDialog.open(HvyEventAddEventComponent, {\n data: { procedure: this.procedure },\n backdropClass: 'backdrop-dark'\n });\n\n ref.closeValue.subscribe((value) => {\n switch (value.value) {\n case 'add':\n this.addedEvent.next(value.event);\n break;\n }\n ref.close();\n });\n }\n\n actionCommented($event: { action: HypAction; comments: HypComment[] }) {\n this.commented.next($event);\n }\n\n updateComment(event: HypEventDetails, comment: { id: string; message: string }) {\n this.commentsService.save(event.id, 'events', comment).subscribe(() => {\n let eventsAndComments: { event: HypEventDetails; comments: HypComment[] }[] = [];\n let comments$: Observable<HypComment[]>[] = [];\n for (let index = 0; index < this._events.length; index++) {\n comments$.push(this.commentsService.get(this._events[index].id, 'events'));\n }\n zip(comments$)\n .pipe(take(1))\n .subscribe({\n next: (commentsArray) => {\n commentsArray.forEach((comments, index) => {\n eventsAndComments.push({ event: this._events[index], comments: comments as HypComment[] });\n });\n },\n complete: () => {\n this.commented.next(eventsAndComments);\n }\n });\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.tooltipRef?.close();\n this.tooltipRef = undefined;\n }\n}\n","<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\" id=\"provoly-event-detail-container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>\n {{ '@hvy.event.log.event.category' | i18n }} : {{ '@hvy.event.category.' + event.category | i18n }}\n </div>\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <!--identifiant-->\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n }\n <!--nom-->\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n [maxLength]=\"50\"\n />\n </td>\n <td></td>\n </tr>\n <!--categorie-->\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--sous categorie-->\n @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.subCategory\"\n [items]=\"subCategories\"\n [class.-error]=\"hasError('subCategory', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'subCategory', $event)\"\n i18nPrefix=\"@hvy.event.subCategory.\"\n [disabled]=\"accessValue.subCategory\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n }\n <!--criticite-->\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--metier-->\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--equipement-->\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td class=\"td-autocomplete\">\n <input type=\"text\" class=\"input-autocomplete\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n [matAutocomplete]=\"auto\"\n [formControl]=\"getEquipControl(idx)\"\n [ngClass]=\"{'equipment-disabled': event.status === 'DONE'}\"\n #trigger=\"matAutocompleteTrigger\"\n [class.-error]=\"hasError('equipment', idx)\"/>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayEquipment.bind(this)\"\n (opened)=\"openAutocomplete(idx)\"\n (closed)=\"closeAutocomplete(idx)\"\n >\n @for (equipment of equipments$[idx] | async; track equipment) {\n <mat-option [value]=\"equipment\">\n {{equipment.name}} - {{'@hvy.event.family.' + equipment.family | i18n}}\n </mat-option>\n }\n </mat-autocomplete>\n\n <pry-icon\n class=\"a-pry-select__toggle autocomplete-chevron\"\n [iconSvg]=\"openedAutocomplete[idx]? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"10\"\n [height]=\"16\"\n (click)=\"openOrCloseAutocomplete($event, trigger, idx)\"\n ></pry-icon>\n </td>\n\n <td>\n @if (selectedEquipment[idx]) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand\"\n #detailHoverIcon\n (click)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\n <!--entite-->\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"\n (event.equipment?.entity ? '@hvy.event.entity.' + event.equipment?.entity : '') | i18n\n \"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--adresse-->\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n [maxLength]=\"256\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--ville-->\n <tr>\n <td>{{ '@hvy.event.district' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"placesChoices\"\n [ngModel]=\"event.district\"\n [bindValue]=\"'key'\"\n bindLabel=\"display\"\n i18nPrefix=\"@hvy.event.places.\"\n (ngModelChange)=\"modifyEvent(idx, 'district', $event)\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--evenement parent-->\n <tr>\n <td>{{ '@hvy.event.parentEvent.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventSelectValue[idx]\"\n (ngModelChange)=\"selectedParentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"parent\"\n [template]=\"templateParent\"\n [disabled]=\"accessValue.parent\"\n [class.-error]=\"hasError('parent', idx)\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateParent let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td></td>\n </tr>\n <!--description-->\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"256\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--date debut-->\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--date fin-->\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n @if (hasError('endDate', idx) && event.endDate && event.startDate) {\n <span class=\"a-form-field -error\">{{ '@hvy.event.errorDate' | i18n }}</span>\n }\n </td>\n <td></td>\n </tr>\n <!--source-->\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ('@hvy.event.hypervisor' | i18n)\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--reférence externe-->\n @if (event.externalSourceRef !== 'Hyperviseur') {\n <tr>\n <td>{{ '@hvy.event.externalId' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalId ?? '-'\"\n [readonly]=\"true\"\n />\n </td>\n <td></td>\n </tr>\n }\n <!--createur-->\n <tr>\n <td>{{ '@hvy.event.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"event.creator\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n <!--date creation-->\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date modification-->\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date cloture-->\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n </tbody>\n </table>\n @if (event.id !== -1) {\n <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"readonly\"\n [type]=\"'events'\"\n [me]=\"me?.sub\"\n [objectId]=\"event.id\"\n ></hvy-comments>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>\n <span>{{ procedure.name }}&nbsp;:</span>\n {{ procedure.description }}\n </p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [procedureModificationsActions]=\"procedureModifications?.actions\"\n [initialActions] = this._procedure?.actions\n [readonly]=\"readonlyProcedure || readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n [disableSaveDIButton]=\"isEventModified()\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n (refreshActions)=\"refreshActions($event)\"\n [me]=\"me?.sub\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n","import { AfterViewInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HvyUnitFilterComponent } from '../../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../../../store/event/event.actions';\nimport {debounceTime, Subject} from \"rxjs\";\n\n@Component({\n selector: 'hvy-event-filters',\n templateUrl: './event-filters.component.html'\n})\nexport class EventFiltersComponent extends SubscriptionnerDirective implements AfterViewInit {\n @Input() filterSet = 'global';\n @ContentChildren('filter', { descendants: true }) filters!: QueryList<HvyUnitFilterComponent>;\n @Output() filtered = new EventEmitter<void>();\n search$ = new Subject<{ text: string; eraseFilters: boolean }>();\n\n constructor(private store: Store) {\n super();\n this.search$.pipe(debounceTime(400)).subscribe((search) => {\n if (search) {\n window.localStorage.setItem('mapCodeSearch', search.text);\n let filters: {[p: string]: string[]};\n if(search.eraseFilters) {\n filters = !!search.text\n ? {\n code: [search.text],\n }\n : ({} as { [key: string]: string[] });\n } else {\n filters = this.filters.map((filter) => filter.getParams()).reduce((p, c) => ({ ...p, ...c }), {});\n }\n if(this.filterSet !== 'events'){\n filters = {...filters, ['deleted']: ['false']};\n }\n this.store.dispatch(\n EventActions.filter({\n filters,\n filterSet: this.filterSet,\n }),\n );\n this.filtered.next();\n window.dispatchEvent(new CustomEvent('forceCloseMapTooltip'));\n\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.filters.forEach((filter) => (filter.filterSet = this.filterSet));\n const getCode = window.localStorage.getItem('mapCodeSearch');\n if(getCode && this.filterSet === 'map'){\n this.search$.next({ text: getCode, eraseFilters: true });\n }\n }\n\n filter() {\n this.search$.next({ text: '', eraseFilters: false });\n }\n\n reset() {\n let filters = {};\n if(this.filterSet !== 'events') {\n filters = {...filters, ['deleted']: ['false']};\n }\n this.store.dispatch(EventActions.filter({ filters, filterSet: this.filterSet }));\n this.search$.next({ text: '', eraseFilters: true });\n this.filtered.next();\n window.dispatchEvent(new CustomEvent('forceCloseMapTooltip'));\n }\n\n triggerChange($event: Event) {\n // @ts-ignore\n this.search$.next({ text: $event.target!.value.toUpperCase(), eraseFilters: true });\n }\n}\n","<div class=\"o-hvy-event-filters\">\n <ng-content></ng-content>\n <div class=\"o-hvy-event-filters__buttons search-map-container\">\n <button (click)=\"filter()\" class=\"a-btn a-btn--primary filter-button\" [title]=\"'@hvy.event.filter.name' | i18n\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"event_filter\"></pry-icon>\n </button>\n <button (click)=\"reset()\" class=\"a-btn a-btn--primary filter-button-reset\" [title]=\"'@hvy.event.filter.reset' | i18n\">\n <pry-icon [width]=\"23\" [height]=\"23\" iconSvg=\"reset_filter\"></pry-icon>\n </button>\n @if (filterSet === 'map') {\n <div class=\"o-chh-journal__action__right\">\n <div class=\"o-hvy-text-filters\">\n <input\n class=\"a-form-field o-hvy-text-filters__search-input search-input-map\"\n type=\"text\"\n [value]=\"(search$ | async)?.text\"\n (input)=\"triggerChange($event)\"\n placeholder=\"{{ '@hvy.event.filter.search' | i18n }}\"\n />\n <pry-icon\n iconSvg=\"search\"\n class=\"o-hvy-text-filters__search-icon\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n @if ((search$ | async)?.text){\n <pry-icon\n class=\"filters-search-erase\"\n iconSvg=\"close\"\n [width]=\"18\"\n [height]=\"18\"\n (click)=\"filter()\"\n ></pry-icon>\n }\n </div>\n </div>\n }\n </div>\n</div>\n","import { AfterViewInit, Component, ContentChildren, Input, QueryList } from '@angular/core';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HvyUnitFilterComponent } from '../../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, distinctUntilChanged } from 'rxjs';\nimport { debounceTime, map, startWith } from 'rxjs/operators';\nimport { EventActions } from '../../../../store/event/event.actions';\nimport equal from 'fast-deep-equal/es6';\n\n@Component({\n selector: 'hvy-immediate-filters',\n templateUrl: './immediate-filters.component.html'\n})\nexport class ImmediateFiltersComponent extends SubscriptionnerDirective implements AfterViewInit {\n @Input() filterSet = 'global';\n @Input() delay = 400;\n @ContentChildren('filter', { descendants: true }) filters!: QueryList<HvyUnitFilterComponent>;\n\n constructor(private store: Store) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.filters.forEach((filter) => {\n filter.filterSet = this.filterSet;\n });\n\n combineLatest(this.filters.map((filter) => filter.changed.pipe(startWith(undefined))))\n .pipe(\n debounceTime(this.delay),\n map(() => this.filters.map((filter) => filter.getParams()).reduce((p, c) => ({ ...p, ...c }), {})),\n distinctUntilChanged((b, a) => equal(b, a))\n )\n .subscribe((filters) => {\n this.store.dispatch(EventActions.filter({ filters, filterSet: this.filterSet }));\n });\n }\n}\n","<div class=\"o-hvy-event-filters\">\n <ng-content></ng-content>\n</div>\n","import { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport type HvyFilterParams = { [filterSet: string]: { [key: string]: string[] } };\n\n@Directive()\nexport class HvyUnitFilterComponent extends SubscriptionnerDirective {\n @Input() prop: string = 'no-prop-defined';\n protected _filterSet$ = new BehaviorSubject('global');\n @Output() changed = new EventEmitter<void>();\n\n @Input() set filterSet(filterSet: string) {\n this._filterSet$.next(filterSet);\n }\n\n get filterSet() {\n return this._filterSet$.value;\n }\n\n constructor() {\n super();\n }\n\n getParams(): { [key: string]: string[] } {\n throw new Error('Must use sub implementation');\n }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n selector: 'hvy-date-filter',\n templateUrl: './date-filter.component.html',\n providers: [{ provide: HvyUnitFilterComponent, useExisting: forwardRef(() => DateFilterComponent) }]\n})\nexport class DateFilterComponent extends HvyUnitFilterComponent {\n value: string = '';\n\n constructor(private store: Store) {\n super();\n this.subscriptions.add(\n combineLatest([this.store.select(EventSelectors.filters), this._filterSet$]).subscribe(([filters, filterSet]) => {\n this.value = (filters[filterSet] ?? {})[this.prop] ? (filters[filterSet] ?? {})[this.prop][0] ?? '' : '';\n if(!!this.value){\n this.value=new Date(this.value).toISOString().substring(0,10);\n }\n })\n );\n }\n\n override getParams(): { [key: string]: string[] } {\n if (this.value === '') {\n return {};\n }\n return { [this.prop]: [new Date(this.value).toISOString()] };\n }\n\n triggerChange($event: Event) {\n // @ts-ignore\n this.value = $event instanceof Event ? $event.target?.value : $event;\n this.changed.next();\n }\n}\n","<div class=\"o-hvy-date-filters\">\n <label> {{ \"@chh.event.date\" | i18n }}&nbsp;:\n <input type=\"date\" class=\"a-form-field\"\n [value]=\"value\"\n (change)=\"triggerChange($event)\">\n </label>\n</div>\n","import {\n AfterViewInit,\n Component,\n computed,\n ElementRef,\n forwardRef,\n Input,\n signal,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n WritableSignal\n} from '@angular/core';\nimport { HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { PryI18nService } from '@provoly/dashboard';\nimport { combineLatest } from 'rxjs';\n\nexport type HvyChoiceFilter = {\n key: string;\n children?: { key: string }[];\n}[];\n\n@Component({\n selector: 'hvy-choice-filter',\n templateUrl: './choice-filter.component.html',\n providers: [{ provide: HvyUnitFilterComponent, useExisting: forwardRef(() => ChoiceFilterComponent) }]\n})\nexport class ChoiceFilterComponent extends HvyUnitFilterComponent implements AfterViewInit {\n static idCounter = 0;\n id = -1;\n\n @Input() allLabel: string = '@hvy.event.filter.choice.all';\n @Input() label: string = 'no-label-defined';\n @Input() i18nPrefix: string = '';\n @Input() addNonLeaves: boolean = false;\n value: WritableSignal<string[]> = signal([]);\n @Input() choices: HvyChoiceFilter = [];\n overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n inhibate?: string;\n displayValue = computed(() => {\n if (this.allSelected()) {\n return this.i18nService.instant(this.allLabel);\n }\n if (this.value().length === 1) {\n return this.i18nService.instant(this.i18nPrefix + this.value()[0]);\n }\n if (this.value().length >= 0) {\n return `(${this.value().length})`;\n }\n return '';\n });\n\n constructor(\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private i18nService: PryI18nService,\n private ref: ElementRef\n ) {\n super();\n this.id = ChoiceFilterComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n combineLatest([this.store.select(EventSelectors.filters), this._filterSet$]).subscribe(([filters, filterSet]) => {\n this.assignValue(\n (filters[filterSet] ?? {}).hasOwnProperty(this.prop)\n ? filters[filterSet][this.prop].length === 1 && filters[filterSet][this.prop][0] === ''\n ? []\n : filters[filterSet][this.prop]\n : this.allValues()\n );\n })\n );\n }\n\n override getParams(): { [key: string]: string[] } {\n if (this.value().length === this.allValues().length) {\n return {};\n }\n return { [this.prop]: this.value().length === 0 ? [''] : this.value() };\n }\n\n toggleModal() {\n if (!this.overlayRef) {\n this.triggerInhibate();\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'backdrop',\n panelClass: ['m-context-menu-wrapper', 'o-choice-filter-popup']\n })\n );\n this.overlayRef.backdropClick().subscribe(() => this.toggleModal());\n this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n const contextMenu = document.querySelector('.o-choice-filter-popup') as HTMLDivElement;\n if (!!contextMenu) {\n const rect = this.ref.nativeElement.getBoundingClientRect();\n contextMenu.style.left = rect.x + 'px';\n contextMenu.style.minWidth = rect.right - rect.x + 'px';\n contextMenu.style.top = rect.bottom + 'px';\n }\n } else {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n\n clickAll() {\n if (this.allSelected()) {\n this.assignValue([]);\n } else {\n this.assignValue(this.allValues());\n }\n }\n\n toggle(elt: { key: string; children?: { key: string }[] }) {\n const isSelected = this.isSelected(elt);\n const eltSubKeys = !elt.children ? [elt.key] : elt.children.map((ch) => ch.key);\n if (!isSelected) {\n this.assignValue([...new Set([...this.value(), ...eltSubKeys])]);\n } else {\n this.assignValue(this.value().filter((v) => !eltSubKeys.includes(v)));\n }\n }\n\n allSelected() {\n return this.choices.map((choice) => this.isSelected(choice)).reduce((p, c) => p && c, true);\n }\n\n isSelected(choice: { key: string; children?: { key: string }[] }): boolean {\n if (!choice.children) {\n return this.value().includes(choice.key);\n } else {\n return choice.children.map((child) => this.isSelected(child)).reduce((p, c) => p && c, true);\n }\n }\n\n allValues() {\n const branches = this.choices.filter((choice) => choice.children).map((choice) => choice.key);\n return this.choices\n .map((choice) =>\n !choice.children\n ? [choice.key]\n : [...choice.children.map((child) => child.key), ...(this.addNonLeaves ? branches : [])]\n )\n .reduce((p, c) => [...p, ...c], []);\n }\n\n assignValue(values: string[]) {\n if (!this.inhibate || this.inhibate !== this.filterSet) {\n this.triggerInhibate();\n\n // Add or removes tree branches, according to children statuses\n const branches = this.choices.filter((choice) => choice.children).map((choice) => choice.key);\n const withoutBranches = values.filter((value) => !branches.includes(value));\n const addedBranchValues = this.choices\n .filter((choice) => choice.children && !choice.children.find((child) => !values.includes(child.key)))\n .map((choice) => choice.key);\n this.value.set([...withoutBranches, ...(this.addNonLeaves ? addedBranchValues : [])]);\n\n this.changed.next();\n }\n }\n\n private triggerInhibate() {\n this.inhibate = this.filterSet;\n setTimeout(() => (this.inhibate = undefined), 50);\n }\n}\n","<button\n (click)=\"toggleModal()\"\n #button\n class=\"o-hvy-choice-filter -horizontal\"\n [class.-highlight]=\"displayValue() !== (allLabel | i18n)\"\n [class.-no-value]=\"displayValue()==='(0)'\"\n [class.-focus]=\"overlayRef\"\n>\n <div class=\"o-hvy-choice-filter__choice-value\">\n <span class=\"o-hvy-choice-filter__label\">{{ label | i18n }} :</span>\n <span class=\"o-hvy-choice-filter__value\" type=\"text\" id=\"select_{{ id }}\">{{ displayValue() }}</span>\n </div>\n <pry-icon [iconSvg]=\"!!overlayRef ? 'chevron_top' : 'chevron_bottom'\" [width]=\"10\" [height]=\"10\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div\n class=\"m-context-menu o-hvy-choice-filter\"\n aria-labelledby=\"choice\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"menu\"\n aria-modal=\"true\"\n >\n <div class=\"o-hvy-choice-filter__all\">\n <pry-checkbox [ngModel]=\"allSelected()\" (ngModelChange)=\"clickAll()\">\n <span>{{ allLabel | i18n }}</span>\n </pry-checkbox>\n </div>\n @for (elt of choices; track elt.key) {\n @if (!elt.children) {\n <pry-checkbox [ngModel]=\"isSelected(elt)\" (ngModelChange)=\"toggle(elt)\" class=\"o-hvy-choice-filter__root\">\n <span>{{ i18nPrefix + elt.key | i18n }}</span>\n </pry-checkbox>\n } @else {\n <pry-checkbox [ngModel]=\"isSelected(elt)\" (ngModelChange)=\"toggle(elt)\" class=\"o-hvy-choice-filter__root\">\n <span>{{ i18nPrefix + elt.key | i18n }}</span>\n </pry-checkbox>\n @for (child of elt.children; track child.key) {\n <pry-checkbox\n [ngModel]=\"isSelected(child)\"\n (ngModelChange)=\"toggle(child)\"\n class=\"o-hvy-choice-filter__child\"\n >\n <span>{{ i18nPrefix + child.key | i18n }}</span>\n </pry-checkbox>\n }\n }\n }\n </div>\n</ng-template>\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n selector: 'hvy-text-filter',\n templateUrl: './text-filter.component.html',\n providers: [{ provide: HvyUnitFilterComponent, useExisting: forwardRef(() => TextFilterComponent) }]\n})\nexport class TextFilterComponent extends HvyUnitFilterComponent {\n value: string = '';\n @Input() placeholder = '@hvy.action.search';\n\n constructor(private store: Store) {\n super();\n this.subscriptions.add(\n combineLatest([this.store.select(EventSelectors.filters), this._filterSet$]).subscribe(([filters, filterSet]) => {\n this.value = (filters[filterSet] ?? {})[this.prop] ? (filters[filterSet] ?? {})[this.prop][0] ?? '' : '';\n })\n );\n }\n\n override getParams(): { [key: string]: string[] } {\n if (this.value === '') {\n return {};\n }\n return { [this.prop]: [this.value] };\n }\n\n triggerChange($event: Event | string) {\n // @ts-ignore\n this.value = $event instanceof Event ? $event.target?.value : $event;\n this.changed.next();\n }\n}\n","<div class=\"o-hvy-text-filters\">\n <input\n class=\"a-form-field o-hvy-text-filters__search-input\"\n type=\"text\"\n [value]=\"value\"\n (input)=\"triggerChange($event)\"\n placeholder=\"{{ placeholder | i18n }}...\"\n />\n <pry-icon\n iconSvg=\"search\"\n class=\"o-hvy-text-filters__search-icon\">\n </pry-icon>\n @if (value) {\n <pry-icon\n (click)=\"triggerChange('')\"\n class=\"filters-search-erase\"\n iconSvg=\"close\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const EventSummaryActions = {\n load: createAction('[Event] Load Summaries'),\n loadSuccess: createAction('[Event Api] Load Summaries Success', props<{ summaries: HypEventSummaries }>()),\n loadFailure: createAction('[Event Api] Load Summaries Failure', props<{ error: string }>())\n};\n","export const emptySummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 }\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { emptySummaries } from './event-summary.const';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const eventSummaryFeatureKey = '@hvy/event-summary';\n\nexport interface EventSummaryState {\n summaries: HypEventSummaries\n loading: boolean;\n}\n\nexport const eventSummaryInitialState: EventSummaryState = {\n summaries: { ...emptySummaries },\n loading: false,\n};\n\nconst internalReducer = createReducer<EventSummaryState>(\n eventSummaryInitialState,\n on(EventSummaryActions.load, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EventSummaryActions.loadSuccess, (state, { summaries }) => ({\n ...state,\n loading: false,\n summaries\n })),\n on(EventSummaryActions.loadFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n\nexport function eventSummaryReducer(state: EventSummaryState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventSummaryFeatureKey, EventSummaryState } from './event-summary.reducer';\n\nconst feature = createFeatureSelector<EventSummaryState>(eventSummaryFeatureKey);\nconst summaries = createSelector(feature, (state) => state.summaries);\nconst loading = createSelector(feature, (state) => state.loading);\n\nexport const EventSummarySelectors = {\n feature,\n summaries,\n loading\n};\n","export const HypEventStatus = {\n values: ['NEW', 'IN_PROGRESS', 'DONE']\n};\n","import { Component, Input } from '@angular/core';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { EVENT_LINK } from '../../event/list/event-list.component';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'hvy-event-summary-item',\n templateUrl: './event-summary-item.component.html'\n})\nexport class EventSummaryItemComponent {\n @Input({ required: true }) event!: HypEventSummary;\n @Input() linkBase: string[] = [];\n @Input() doNotRedirectToDetail: boolean | null = false;\n EVENT_LINK = EVENT_LINK;\n\n constructor(public store: Store) {}\n}\n","<div class=\"m-hvy-event-summary-item\" [class.-no-pointer]=\"doNotRedirectToDetail\">\n <a [routerLink]=\"doNotRedirectToDetail ? null : EVENT_LINK.fn(event, store)\">\n <div class=\"m-hvy-event-summary-item__title\">\n <h4>\n {{ event.name }}\n </h4>\n </div>\n <div class=\"m-hvy-event-summary-item__content\">\n <div>\n {{ event.serviceTitle }}\n </div>\n <div>\n {{\n !event.startDate || !event.endDate || event.category !== 'MANIFESTATION'\n ? ''\n : ('@hvy.eventSummary.from' | i18n) +\n ' ' +\n (event.startDate | displayLocaleDatetime: 'short') +\n ' ' +\n ('@hvy.eventSummary.to' | i18n) +\n ' ' +\n (event.endDate | displayLocaleDatetime: 'short')\n }}\n </div>\n </div>\n <div class=\"m-hvy-event-summary-item__footer\">\n <div class=\"m-hvy-event-summary-item__icons\">\n @if (event.serviceCount !== 0) {\n <pry-icon iconSvg=\"service\"></pry-icon>\n <span class=\"m-hvy-event-summary-item__intervention-counter\">{{ event.serviceCount }}</span>\n }\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </div>\n <div class=\"m-hvy-event-summary-item__date\">\n <span>\n {{ event.lastModificationDate | displayLocaleDatetime: 'medium' }}\n </span>\n </div>\n </div>\n </a>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { KNOWN_FILTER_SETS } from '../../store/event/event.service';\n\n@Component({\n selector: 'hvy-event-summary-list',\n templateUrl: './event-summary-list.component.html'\n})\nexport class EventSummaryListComponent implements OnInit {\n @Input() events: HypEventSummary[] = [];\n @Input() totalEventCount = 0;\n @Input() status: string = '';\n @Input() consultLink: string[] = [];\n @Input() itemLinkBase: string[] = [];\n @Input() doNotRedirectToDetail: boolean | null = false;\n constructor(\n private store: Store<any>,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.consultLink = this.consultLink.length > 0 ? this.consultLink : ['events'];\n this.itemLinkBase = this.itemLinkBase.length > 0 ? this.itemLinkBase : ['events'];\n }\n\n filterAndRoute(status: string) {\n this.router.navigate([...this.consultLink], { queryParams: { status: this.status } });\n this.store.dispatch(EventActions.filter({ filters: { status: [status] }, filterSet: KNOWN_FILTER_SETS.EVENTS }));\n }\n}\n","<div class=\"o-hvy-event-summary-list -hvy-{{ status.toLowerCase() }}\">\n <div class=\"o-hvy-event-summary-list__header\">\n <h3 class=\"o-hvy-event-summary-list__title\">\n {{ '@hvy.eventSummary.statusLabels.' + status | i18n }}\n </h3>\n <span class=\"o-hvy-event-summary-list__counter\">\n {{ totalEventCount }}\n </span>\n </div>\n <div class=\"o-hvy-event-summary-list__content\">\n @for (event of events; track event.id) {\n <hvy-event-summary-item [event]=\"event\" [linkBase]=\"itemLinkBase\" [doNotRedirectToDetail]=\"doNotRedirectToDetail\">\n </hvy-event-summary-item>\n } @empty {\n <span class=\"o-hvy-event-summary-list__no-content\">\n {{ '@hvy.eventSummary.noContent.' + status | i18n }}\n </span>\n }\n </div>\n <div class=\"o-hvy-event-summary-list__footer\">\n <a class=\"o-hvy-event-summary-list__footer-button\" (click)=\"filterAndRoute(status)\">\n <pry-icon iconSvg=\"eye\"></pry-icon>\n {{ '@hvy.action.consult' | i18n }}\n </a>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummaries, HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport {fromEvent, Observable} from 'rxjs';\nimport { EventSummaryActions } from '../../store/event-summary/event-summary.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport {map, startWith} from 'rxjs/operators';\nimport { EventSummarySelectors } from '../../store/event-summary/event-summary.selectors';\nimport { SubscriptionnerDirective} from '@provoly/dashboard';\nimport { KNOWN_FILTER_SETS } from '../../store/event/event.service';\nimport { HypEventStatus } from '../../model/event/hyp-event-status.type';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\n\n@Component({\n selector: 'hvy-event-summary-page',\n templateUrl: './event-summary-page.component.html'\n})\nexport class EventSummaryPageComponent extends SubscriptionnerDirective {\n @Input() pageTitle = '';\n @Input() consultLink: string[] = [];\n summaries: HypEventSummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 }\n } as { [key: string]: { events: HypEventSummary[]; count: number } };\n selectedCriticality$: Observable<string | undefined>;\n criticalityList = ['ALL', ...HypEventCriticality.values];\n statusList = HypEventStatus.values;\n @Input() doNotRedirectToDetail: boolean | null = false;\n\n constructor(private store: Store<any>) {\n super();\n this.subscriptions.add(\n fromEvent<CustomEvent>(window, 'accueil-refresh').pipe(\n startWith(new CustomEvent(`accueil-refresh`, { detail: true }))\n ).subscribe(() => {\n this.store.dispatch(EventSummaryActions.load())\n })\n )\n this.selectedCriticality$ = this.store\n .select(EventSelectors.filters)\n .pipe(map((filters) => (filters[KNOWN_FILTER_SETS.EVENTS] ?? {})['criticality']?.[0] ?? 'ALL'));\n this.subscriptions.add(\n this.store.select(EventSummarySelectors.summaries).subscribe((summaries) => {\n this.summaries = summaries;\n })\n );\n }\n\n filterByCriticality($event: string) {\n $event === 'ALL'\n ? this.store.dispatch(EventActions.filter({ filters: {}, filterSet: KNOWN_FILTER_SETS.EVENTS }))\n : this.store.dispatch(\n EventActions.filter({\n filters: { criticality: [$event] },\n filterSet: KNOWN_FILTER_SETS.EVENTS\n })\n );\n this.store.dispatch(EventSummaryActions.load());\n }\n}\n","<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\"\n >{{ '@hvy.event.criticality.name' | i18n }} :&nbsp;</label\n >\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 @if (summaries[summaryKey]) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryKey\"\n [totalEventCount]=\"summaries[summaryKey].count ?? 0\"\n [events]=\"summaries[summaryKey].events\"\n [consultLink]=\"consultLink\"\n [doNotRedirectToDetail]=\"doNotRedirectToDetail\"\n >\n </hvy-event-summary-list>\n }\n }\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ColumnOrderComponent } from '../../general/column-order/column-order.component';\nimport { ProcedureSelectors } from '../../store/procedure/procedure.selectors';\nimport { ProcedureActions } from '../../store/procedure/procedure.actions';\n\n@Component({\n selector: 'hvy-procedure-column-order',\n templateUrl: '../../general/column-order/column-order.component.html'\n})\nexport class ProcedureColumnOrderComponent extends ColumnOrderComponent {\n constructor(store: Store) {\n super(store);\n this.subscriptions.add(this.store.select(ProcedureSelectors.sort).subscribe((sort) => (this.sortValue = sort)));\n }\n\n override sort(order: string) {\n this.store.dispatch(ProcedureActions.sort({ field: this.field, order }));\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ProcedureActions } from '../../store/procedure/procedure.actions';\nimport { Observable } from 'rxjs';\nimport { ProcedureSelectors } from '../../store/procedure/procedure.selectors';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { InfiniteScrollService } from '../../general/infiniteScroll.service';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { padId } from '../../general/pad-id.function';\n\nexport const PROCEDURE_LINK = {\n fn: (procedure: HypProcedureModel, store: Store<any>) => ['./', padId.fn(procedure.id)]\n};\n\n@Component({\n selector: 'hvy-procedure-model-list',\n templateUrl: './procedure-list.component.html'\n})\nexport class ProcedureListComponent extends SubscriptionnerDirective implements AfterViewInit, OnDestroy {\n procedures$: Observable<HypProcedureModel[]>;\n PROCEDURE_LINK = PROCEDURE_LINK;\n search: string = '';\n protected readonly DOMAINS = DOMAINS.values.map((d) => ({ key: d }));\n @ViewChild('scrollable') scrollable!: ElementRef;\n @Input() placeholder: string = '@hvy.action.search';\n\n constructor(\n protected store: Store<any>,\n private router: Router,\n private scroll: InfiniteScrollService\n ) {\n super();\n this.store.dispatch(ProcedureActions.load({}));\n this.procedures$ = this.store.select(ProcedureSelectors.procedures);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.scroll.isEndOfPage(this.scrollable.nativeElement, ProcedureSelectors.noMoreProcedures).subscribe(() => {\n this.store.dispatch(ProcedureActions.load({ next: true }));\n })\n );\n }\n\n goTo(procedure: HypProcedureModel) {\n return this.router.navigate(this.PROCEDURE_LINK.fn(procedure, this.store));\n }\n\n protected readonly padId = padId;\n}\n","<div class=\"o-procedure-list\">\n <div class=\"m-form-label-field o-procedure-list__action\">\n <hvy-immediate-filters [filterSet]=\"'procedure'\">\n <hvy-text-filter prop=\"search\" #filter [placeholder]=\"placeholder\"></hvy-text-filter>\n <hvy-choice-filter\n i18nPrefix=\"@hvy.event.domain.\"\n label=\"@hvy.event.domain.name\"\n [choices]=\"DOMAINS\"\n prop=\"domain\"\n #filter\n ></hvy-choice-filter>\n </hvy-immediate-filters>\n </div>\n <div class=\"o-procedure-list__table\" #scrollable>\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=\"id\">{{ '@hvy.procedure.id' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"name\">{{ '@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=\"useCount\"\n >{{ '@hvy.procedure.useCount' | i18n }}\n </hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creator\"\n >{{ '@hvy.procedure.author' | i18n }}\n </hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creationDate\"\n >{{ '@hvy.event.creationDateTable' | i18n }}\n </hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"lastModificationDate\">\n <span>{{ '@hvy.event.lastModificationDateTable' | i18n }}</span></hvy-procedure-column-order\n >\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\">{{ padId.fn(procedure.id) }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.name }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ '@hvy.event.domain.' + procedure.domain | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.useCount }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.creator }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.creationDate | displayLocaleDatetime }}</td>\n <td class=\"o-hvy-events-table__line__cell\">\n {{ procedure.lastModificationDate | displayLocaleDatetime }}\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"PROCEDURE_LINK.fn(procedure, store)\">\n <div class=\"consult-link\" [title]=\"'@hvy.action.consult' | i18n\">\n <pry-icon iconSvg=\"eye\" [height]=\"30\" [width]=\"40\"></pry-icon>\n </div>\n </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</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { Store } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { padId } from '../../general/pad-id.function';\nimport {Actions, ofType} from \"@ngrx/effects\";\nimport {ProcedureActions} from \"../../store/procedure/procedure.actions\";\nimport {delay} from \"rxjs\";\n\n@Component({\n selector: 'hvy-procedure-model-detail',\n templateUrl: './procedure-model-detail.component.html'\n})\nexport class ProcedureModelDetailComponent extends SubscriptionnerDirective {\n @Input() model?: HypProcedureModel;\n @Input() username: string = 'xxx';\n modifications: Partial<HypProcedureModel> = {};\n @Input() title?: string;\n saved = false;\n errors: { field: string; code: string }[] = [];\n @Input() eventErrors : { field: string; code: string }[] = [];\n @Output() eventErrorsChange = new EventEmitter<{ field: string; code: string }[]>();\n @Output() modified = new EventEmitter<[Partial<HypProcedureModel>, HypProcedureModel]>();\n protected readonly DOMAINS = DOMAINS.values;\n @Input() readonly = false;\n @Input() readOnlyComment = false;\n\n @Input() set cancelModifications(evt: any) {\n this.modifications = {};\n this._outputModifications();\n }\n\n get modifiedModel() {\n return { ...this.model, ...(this.modifications ?? {}) } as HypProcedureModel;\n }\n\n constructor(private actions$: Actions) {\n super();\n this.subscriptions.add(\n this.actions$.pipe(\n ofType(ProcedureActions.save)\n )\n .subscribe({\n next: result => {\n this.saved = true;\n }\n })\n )\n this.subscriptions.add(\n this.actions$.pipe(\n ofType(ProcedureActions.saveSuccess),\n delay(1000),\n )\n .subscribe({\n next: result => {\n this.saved = false;\n }\n })\n )\n this.subscriptions.add(\n this.actions$.pipe(\n ofType(ProcedureActions.saveFailure),\n delay(1000),\n )\n .subscribe({\n next: result => {\n this.saved = false;\n }\n })\n )\n }\n\n hasError(prop: string) {\n return this.errors.find((err) => err.field === prop) ?? false;\n }\n\n validate(model: HypProcedureModel) {\n if (!!model) {\n this.errors = [];\n const regex = new RegExp( /^\\s+$/);\n if (!model.name || model.name.length === 0 || regex.test(model.name)) {\n this.errors.push({ field: 'name', code: 'required' });\n }\n if (!model.domain || model.domain.length === 0) {\n this.errors.push({ field: 'domain', code: 'required' });\n }\n if (!model.description || model.description.length === 0 || regex.test(model.description)) {\n this.errors.push({ field: 'description', code: 'required' });\n }\n this.eventErrorsChange.next(this.errors);\n }\n }\n\n modify(prop: string, $event: Event) {\n if(!this.saved){\n if(prop === 'name'){\n const index = this.errors.findIndex(error => error.field == 'title');\n if(index !== -1){\n this.errors.splice(index, 1);\n }\n }\n // @ts-ignore\n const newValue = $event instanceof Event ? $event.target?.value : $event;\n\n if (this.model) {\n // @ts-ignore\n if (this.model[prop] !== newValue) {\n // @ts-ignore\n this.modifications[prop] = newValue;\n\n this._outputModifications();\n } else {\n // @ts-ignore\n delete this.modifications[prop];\n this._outputModifications();\n }\n }\n }\n\n }\n\n private _outputModifications() {\n this.validate(this.modifiedModel);\n this.modified.next([this.modifications, this.modifiedModel]);\n }\n\n updateActions($event: HypAction[]) {\n if (equal($event, this.model?.actions)) {\n delete this.modifications.actions;\n } else {\n this.modifications.actions = $event;\n }\n this._outputModifications();\n }\n\n protected readonly padId = padId;\n}\n","<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <!--identifiant-->\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n <!--titre-->\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n @if (hasError('title')) {\n <span class=\"a-form-field -error\">{{ '@hvy.procedure.alreadyExists' | i18n }}</span>\n }\n </td>\n </tr>\n <!--metier-->\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <!--description-->\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <!--createur-->\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n <!--date de création-->\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <!--date de dernière modification-->\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions?.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport const HYP_BASE_CONFIG = new InjectionToken<string>('base config');\n","export const enTranslations = {\n '@hvy': {\n event: {\n id: 'Identifier',\n name: 'Event',\n type: {\n name: 'Event type',\n ALERT: 'Alert',\n REPORT: 'Report',\n OPERATOR: 'Operator'\n },\n status: {\n name: 'Status',\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n ARCHIVED: 'Archived'\n },\n address: 'Address',\n source: 'Source',\n externalId: 'External reference',\n hypervisor: 'Hypervisor',\n equipment: 'Equipment reference',\n equipmentEntity: 'Equipment entity',\n notFound: 'Equipment not found',\n domain: {\n name: 'Métier'\n },\n startDate: 'Start date',\n endDate: 'End date',\n creationDate: 'Creation date',\n creator: 'Creator',\n errorDate: 'Please choose an end date after the start date.',\n lastModificationDate: 'Modification date',\n closeDate: 'Close date',\n detail: 'Events description',\n log: {\n name: 'Events log',\n empty: 'No event created',\n event: {\n description: 'Description',\n address: 'Address',\n detail: 'Information',\n mandatory: '* Mandatory fields',\n name: 'Name',\n id: 'Identifier',\n category: 'Category',\n close: 'Close all events',\n closed: 'All closed',\n comments: {\n name: 'Event comments ({{nb}})',\n placeholder: 'Write your comment',\n actions: 'Comments ({{nb}})'\n }\n },\n procedure: {\n delete: 'Delete procedure',\n progress: 'Progress',\n noAction: 'No actions',\n name: 'Common procedure',\n name1: 'Procedure',\n none: 'Aucune procédure n’a été associée à cet événement.'\n }\n },\n category: {\n name: 'Event category',\n MANIFESTATION: 'Manifestation',\n LIMIT: 'Limit',\n OUTOFORDER: 'Out of Order',\n ANOMALY: 'Anomaly'\n },\n criticality: {\n name: 'Criticality',\n LOW: 'Low',\n MEDIUM: 'Middle',\n HIGH: 'High'\n },\n filter: {\n name: 'Filter',\n choice: {\n all: 'All'\n },\n reset: 'Reset'\n },\n close: {\n oneTitle: 'Close event',\n multiTitle: 'Close events',\n one: 'Close event',\n multi: 'Close events',\n comment: 'Close comment'\n },\n installDate: 'Installation date',\n managed: 'Managed equipment',\n prm: 'PRM contract number',\n presenceSensor: 'Presence sensor',\n parent: 'Parent',\n consult: 'Consult {{howMany}} event{{plural}}',\n entity: {\n NOTFOUND: 'Unknown equipment'\n },\n comment: {\n lastDetail: 'Last comment {{day}} at {{hour}} by {{creator}}',\n detail: 'Comment {{day}} at {{hour}} by {{creator}}',\n more: 'See more comments',\n less: 'See less comments',\n head: '{{nb}} comment',\n heads: '{{nb}} comments'\n },\n equipmentPlaceholder: 'Search by family or reference'\n },\n eventSummary: {\n from: 'From',\n to: 'to',\n noContent: {\n NEW: 'No events created.',\n IN_PROGRESS: 'No events in progress.',\n DONE: 'No event done.'\n },\n statusLabels: {\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done'\n },\n criticalityLabels: {\n LOW: 'Low',\n MEDIUM: 'Medium',\n HIGH: 'High',\n ALL: 'All'\n }\n },\n procedure: {\n checkbox:{\n NEW: 'To do',\n IN_PROGRESS:'In progress',\n DONE: 'Done',\n },\n alreadyExists: 'This title already exists, please choose another',\n name: 'Procedure',\n progress: 'Procedure progress %',\n useCount: 'Usage',\n title: 'Title',\n category: 'Category',\n author: 'Author',\n id: 'Id',\n missingProperty: 'Missing property',\n noContent: 'No existing procedures found',\n domain: 'Domain',\n catalog: 'Procedure catalog',\n detail: 'Procedure details',\n actions: 'Associated actions',\n description: 'Description',\n creator: 'Creator',\n formTitle: 'Informations',\n action: {\n add: 'Add new Action',\n create: 'Add action to procedure',\n modify: 'Update action',\n comment: 'Comment',\n delete: 'Delete',\n update: 'Update',\n done: 'Mark done',\n PHONE: 'Call',\n SMS: 'Send a SMS',\n OTHER: 'Other',\n ASKED_SERVICE: 'Asked service',\n EMAIL: 'Send an email',\n to: 'to',\n at: 'to',\n placeholder: {\n name: 'Who ?',\n phone: '+33',\n email: 'ex: name@e-mail.com',\n service: 'Enter service',\n other: 'Enter your text',\n action: 'Select action'\n },\n question: {\n PHONE: 'Call',\n SMS: 'Send SMS to',\n EMAIL: 'Send e-mail to',\n ASKED_SERVICE: 'Create service',\n OTHER: 'Other'\n }\n },\n status: {\n NEW: 'Créé',\n ASKED: 'Demandé',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé',\n CANCELLED: 'Annulé',\n }\n },\n associationModal: {\n title: 'Link a procedure',\n description:\n 'Adding a procedure to selected events allows for selecting a list of actions to be performed to treat the events.',\n linkedEvents: 'Linked events',\n categoryFilter: 'Filter by category',\n searchProcedure: 'Search procedures',\n domainPlaceholder: 'Select a domain',\n procedurePlaceholder: 'Search procedure by name, by id, or by creator'\n },\n action: {\n consult: 'Consult',\n close: 'Close',\n send: 'Send',\n comment: 'Comment',\n associate: 'Link to procedure',\n validate: 'Validate',\n cancel: 'Cancel',\n search: 'Search',\n update: 'Update',\n create: 'Create'\n },\n service: {\n status: {\n NEW: 'Created',\n ASKED: 'Asked',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n CANCELLED: 'Cancelled'\n },\n title: 'Create service',\n subtitle: 'Create service to process these events',\n reason: 'Object',\n type: 'Type',\n priority: 'Priority',\n description: 'Description',\n target: 'Equipement',\n gti: 'GTI (hours)',\n gtr: 'GTR (hours)',\n gtrp: 'GTRP (hours)',\n describe: 'Description',\n noEquip: 'No équipement',\n domain: 'Domain',\n priorities: {\n '1-MINEUR': 'Minor',\n '2-MAJEUR': 'Major',\n '3-BLOQUANT': 'Blocking'\n }\n }\n }\n};\n","export const frTranslations = {\n '@hvy': {\n event: {\n district: 'Ville/Quartier',\n id: 'Identifiant',\n name: 'Événement',\n subCategory: {\n name: 'Sous-catégorie',\n NONE: 'Aucune',\n UNUSUAL_FLOW: 'Affluence anormale de personnes',\n TRAFFIC_CONGESTION: 'Congestion de véhicules',\n WILD_STORAGE: 'Dépôts sauvages',\n CARREFOUR_AU_NOIR: 'Carrefour au noir (Planifié)',\n CARREFOUR_CLIGNOTANT: 'Carrefour clignotant (Planifié)',\n CARREFOUR_AU_NOIR_NP: 'Carrefour au noir (Non planifié)',\n CARREFOUR_CLIGNOTANT_NP: 'Carrefour clignotant (Non planifié)'\n },\n status: {\n name: 'Statut événement',\n NEW: 'Nouveau',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturé',\n OT_CLOSED: 'Clôturé',\n ARCHIVED: 'Archivé'\n },\n address: 'Adresse',\n source: 'Source',\n externalId: 'Référence externe',\n hypervisor: 'Hyperviseur',\n equipment: \"Référence de l'équipement\",\n equipmentEntity: \"Entité de l'équipement\",\n notFound: 'Equipement inconnu',\n domain: {\n name: 'Métier'\n },\n startDate: 'Date de début',\n endDate: 'Date de fin',\n creationDate: 'Date de création',\n creationDateTable: 'Création',\n creator: 'Créateur',\n errorDate: 'Veuillez saisir une date de fin postérieure à la date de début.',\n lastModificationDate: 'Date de dernière modification',\n lastModificationDateTable: 'Modification',\n closeDate: 'Date de clôture',\n detail: `Description de l'événement`,\n details: 'Description des événements',\n log: {\n name: 'Journal des événements',\n empty: 'Aucun événement.',\n event: {\n description: 'Description',\n address: 'Adresse',\n detail: 'Informations',\n mandatory: '* Champs obligatoires',\n name: 'Nom',\n id: 'Identifiant',\n category: 'Catégorie',\n close: 'Clôturer tous ces événements',\n closed: 'Tous clôturés',\n comments: {\n name: \"Commentaires de l'événement ({{nb}})\",\n placeholder: 'Écrivez votre commentaire',\n actions: 'Commentaires ({{nb}})'\n }\n },\n procedure: {\n delete: 'Supprimer la procédure',\n progress: 'Progression',\n noAction: \"Une procédure est une succession d'actions à réaliser selon l'ordre d'intervention.\",\n name: 'Procédure commune',\n name1: 'Procédure',\n none: 'Aucune procédure n’a été associée à cet événement.'\n }\n },\n category: {\n name: \"Catégorie d'événement\",\n MANIFESTATION: 'Manifestation',\n LIMIT: 'Seuil',\n OUTOFORDER: 'Hors Service',\n ANOMALY: 'Anomalie'\n },\n criticality: {\n name: 'Criticité',\n LOW: 'Faible',\n MEDIUM: 'Moyenne',\n HIGH: 'Haute'\n },\n filter: {\n search: 'Recherchez par équipement',\n name: 'Filtrer',\n choice: {\n all: 'Tous'\n },\n reset: 'Réinitialiser'\n },\n close: {\n oneTitle: 'Clôturer un événement',\n multiTitle: 'Clôturer des événements',\n one: 'Êtes-vous sûr de vouloir clôturer cet événement ?',\n multi: 'Êtes-vous sûr de vouloir clôturer tous ces événements ?',\n comment: 'Commentaire de clôture'\n },\n installDate: \"Date d'installation\",\n managed: 'Équipement télégéré',\n prm: 'N° du contrat PRM',\n presenceSensor: 'Capteur de présence',\n parent: 'Parent',\n parentEvent: {\n name: 'Événement parent',\n placeholder: 'Recherchez par identifiant ou nom'\n },\n consult: 'Consulter {{howMany}} événement{{plural}}',\n entity: {\n NOTFOUND: 'Équipement inconnu'\n },\n comment: {\n lastDetail: 'Dernier commentaire du {{day}} à {{hour}} par {{creator}}',\n detail: 'Commentaire du {{day}} à {{hour}} par {{creator}}',\n more: 'Voir plus de commentaires',\n less: 'Voir moins de commentaires',\n head: '{{nb}} commentaire',\n heads: '{{nb}} commentaires'\n },\n equipmentPlaceholder: 'Recherchez par référence ou famille',\n export: {\n filename: 'Hyperviseur_Export_Journal_Evenements'\n },\n add: {\n title: 'Ajouter un événement',\n description: 'L’événement s’ajoutera au groupe d’événements et sera associé à la procédure commune.',\n search: 'Rechercher un événement'\n }\n },\n eventSummary: {\n from: 'Du',\n to: 'au',\n noContent: {\n NEW: 'Aucun nouvel événement.',\n IN_PROGRESS: \"Aucun événement n'est en cours.\",\n DONE: \"Aucun événement n'est clôturé.\"\n },\n statusLabels: {\n NEW: 'Nouveaux',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturés'\n },\n criticalityLabels: {\n LOW: 'Faible',\n MEDIUM: 'Moyenne',\n HIGH: 'Haute',\n ALL: 'Tous'\n }\n },\n procedure: {\n checkbox: {\n NEW: 'À faire',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé'\n },\n alreadyExists: 'Ce titre existe déjà. Veuillez en saisir un autre.',\n name: 'Procédure',\n progress: '% avancement procédure',\n useCount: 'Usage',\n title: 'Titre',\n category: 'Métier',\n author: 'Créateur',\n id: 'Identifiant',\n missingProperty: 'Propriété manquante',\n noContent: 'Aucune procédure.',\n domain: 'Métier',\n catalog: 'Bibliothèque des procédures',\n detail: 'Description de la procédure',\n actions: 'Actions associées',\n description: 'Description',\n creator: 'Créateur',\n formTitle: 'Informations',\n action: {\n add: 'Ajouter une action',\n create: 'Ajouter une action',\n modify: \"Modifier l'action\",\n comment: 'Commenter',\n delete: 'Supprimer',\n update: 'Modifier',\n done: 'Terminer',\n PHONE: 'Appeler le métier/police pour sécurisation',\n SMS: 'Informer le métier par téléphone/SMS (personne/service)',\n OTHER: 'Autre',\n ASKED_SERVICE: \"Créer une demande d’intervention GMAO\",\n EMAIL: 'Informer le métier par mail (personne/service)',\n to: 'au',\n at: 'à',\n service: \"Demande d'intervention\",\n placeholder: {\n name: 'Qui ?',\n phone: '+33',\n email: 'ex: nom@e-mail.com',\n service: \"Saisissez la demande d'intervention\",\n other: 'Saisissez votre texte',\n action: 'Sélectionner une action'\n },\n question: {\n PHONE: 'Appeler',\n SMS: 'Informer',\n EMAIL: 'Envoyer un e-mail à',\n ASKED_SERVICE: \"Créer une demande d’intervention GMAO\",\n OTHER: 'Autre'\n }\n },\n status: {\n NEW: 'Créé',\n ASKED: 'Demandé',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé',\n CANCELLED: 'Annulé',\n OT_CLOSED: 'Terminé'\n }\n },\n associationModal: {\n title: 'Associer à une procédure',\n description:\n 'Associer une procédure à des événements permet de sélectionner la liste des actions à réaliser pour traiter ces événements.',\n linkedEvents: 'Événements liés',\n categoryFilter: 'Filtrer par métier',\n searchProcedure: 'Rechercher une procédure',\n domainPlaceholder: 'Sélectionner un métier',\n procedurePlaceholder: 'Recherchez par identifiant, titre ou créateur'\n },\n action: {\n consult: 'Consulter',\n close: 'Clôturer',\n send: 'Envoyer',\n comment: 'Commenter',\n associate: 'Associer à une procédure',\n validate: 'Valider',\n cancel: 'Annuler',\n search: 'Rechercher',\n update: 'Modifier',\n create: 'Créer'\n },\n service: {\n status: {\n NEW: 'Créé',\n ASKED: 'Demandé',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé',\n CANCELLED: 'Annulé',\n OT_CLOSED: 'Terminé',\n },\n title: \"Créer une demande d'intervention\",\n subtitle: \"Créer une demande d'intervention pour traiter ces événements.\",\n reason: 'Objet de la demande',\n type: 'Nature de la demande',\n priority: 'Priorité',\n description: 'Description de la demande',\n target: 'Équipement',\n gti: 'GTI (heures)',\n gtr: 'GTR (heures)',\n gtrp: 'GTRP (heures)',\n describe: 'Description de la demande',\n noEquip: 'Aucun équipement',\n domain: 'Métier',\n priorities: {\n '1-MINEUR': 'Mineur',\n '2-MAJEUR': 'Majeur',\n '3-BLOQUANT': 'Bloquant'\n }\n }\n }\n};\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\n@Component({\n selector: 'hvy-no-params-action-display',\n templateUrl: './no-params-action-display.component.html'\n})\nexport class HvyNoParamsActionDisplayComponent extends HvyBaseParameterActionComponent<HypAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }}\n </p>\n</div>\n","export const HypEventType = { values: ['ALERT', 'REPORT', 'OPERATOR'] };\n","export const HypServiceStatus = {\n values: ['NEW', 'ASKED', 'IN_PROGRESS', 'DONE', 'CANCELLED']\n};\n","export const ENTITIES: { values: string[] } = {\n values: ['ENTITY1', 'ENTITY2', 'ENTITY3']\n};\n","/*\n * Public API Surface of hypervisor\n */\n\nexport * from './event/hyp-event.interface';\nexport * from './event/hyp-event-category.type';\nexport * from './event/hyp-event-criticality.type';\nexport * from './event/hyp-event-detail.interface';\nexport * from './event/hyp-event-status.type';\nexport * from './event/hyp-event-summary.interface';\nexport * from './event/hyp-event-type';\nexport * from './procedure/hyp-procedure.interface';\nexport * from './procedure/hyp-procedure-model.interface';\nexport * from './procedure/hyp-action.interface';\nexport * from './hyp-equipment.interface';\nexport * from './hyp-service-status.type';\nexport * from './domains.constant';\nexport * from './entites.constant';\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventActions } from './event.actions';\nimport { EventService, KNOWN_FILTER_SETS } from './event.service';\nimport { filter, withLatestFrom } from 'rxjs';\nimport { EventSelectors } from './event.selectors';\nimport { Store } from '@ngrx/store';\n\n@Injectable()\nexport class EventEffects {\n loadEvents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.load),\n debounceTime(200),\n withLatestFrom(this.store.select(EventSelectors.events), this.store.select(EventSelectors.noMoreEvents)),\n filter(([action, events, noMore]) => !action.next || (action.next && !noMore)),\n mergeMap(([action, stateEvents]) =>\n this.eventService.list(action.next ? stateEvents.length : 0).pipe(\n map((events) => EventActions.loadSuccess({ events, startingFrom: action.next ? stateEvents.length : 0 })),\n catchError((error) => [EventActions.loadFailure({ error: error })])\n )\n )\n )\n );\n\n getEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.get),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.get(action.id).pipe(\n map((event) => EventActions.getSuccess({ event })),\n catchError((error) => [EventActions.getFailure({ error: error })])\n )\n )\n )\n );\n\n getEventByName$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.getTooltipInfo),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.getTooltipInfo(action.name).pipe(\n map((event) => EventActions.getTooltipInfoSuccess({ event })),\n catchError((error) => [EventActions.getTooltipInfoFailure({ error: error })])\n )\n )\n )\n );\n\n getForProcedureEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.getForProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.getProcedure(action.id).pipe(\n map((procedure) => EventActions.getSuccess({ procedure })),\n catchError((error) => [EventActions.getFailure({ error: error })])\n )\n )\n )\n );\n\n saveEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.save),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.save(action.event).pipe(\n map((event) => EventActions.saveSuccess({ event: event ?? action.event, creation: action.event.id < 0 })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n saveProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.saveProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.saveProcedure(action.procedure).pipe(\n map((procedure) => EventActions.saveSuccess({ procedure: action.procedure, creation: false })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n addEventToProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.addEventToProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.addEventToProcedure(action.eventId, action.procedure).pipe(\n map(() => EventActions.saveSuccess({ procedure: action.procedure, creation: false })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n refreshAfterSave$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.saveSuccess, EventActions.statusSuccess),\n debounceTime(200),\n map((action) =>\n !!action.procedure\n ? EventActions.getForProcedure({ id: action.procedure.id })\n : EventActions.get({ id: action.event!.id })\n )\n )\n );\n\n close$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.status),\n debounceTime(200),\n mergeMap((action) => {\n if (!!action.event) {\n return this.eventService.status(action.event, action.targetStatus, action.comment).pipe(\n mergeMap((event) => [\n EventActions.statusSuccess({ event: action.event, procedure: action.procedure }),\n EventActions.load({})\n ]),\n catchError((error) => [EventActions.statusFailure({ error: error })])\n );\n } else {\n return this.eventService.statusProcedure(action.procedure!, action.targetStatus, action.comment).pipe(\n mergeMap((event) => [EventActions.statusSuccess({ procedure: action.procedure }), EventActions.load({})]),\n catchError((error) => [EventActions.statusFailure({ error: error })])\n );\n }\n })\n )\n );\n\n sort$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.sort),\n debounceTime(200),\n map(() => EventActions.load({}))\n )\n );\n\n filter$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.filter),\n filter((action) => action.filterSet === KNOWN_FILTER_SETS.EVENTS),\n debounceTime(200),\n map(() => EventActions.load({}))\n )\n );\n\n associateProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.associateProcedure),\n mergeMap((action) =>\n this.eventService.associateProcedure(action.procedureId, action.eventIds).pipe(\n mergeMap((procedure) => [EventActions.load({}), EventActions.associateProcedureSuccess({ procedure })]),\n catchError((error) => [EventActions.associateProcedureFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private eventService: EventService,\n private store: Store\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Store } from '@ngrx/store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HypervisorService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions } from '@ngrx/effects';\nimport { HypervisorService } from './hypervisor.service';\n\n@Injectable()\nexport class HypervisorEffects {\n\n constructor(\n private actions$: Actions,\n private eventService: HypervisorService,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from '../event/event.selectors';\nimport { HypEventSummaries } from '../../model/public-api';\nimport { KNOWN_FILTER_SETS } from '../event/event.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventSummaryService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n list(): Observable<HypEventSummaries> {\n return this.store.select(HypSelectors.url).pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filterSets]) => {\n const filters = filterSets[KNOWN_FILTER_SETS.EVENTS];\n let params = new HttpParams();\n Object.keys(filters).forEach((filter) => {\n filters[filter].forEach((filterValue) => {\n params = params.set(filter, filterValue);\n });\n });\n return this.httpClient.get<HypEventSummaries>(encodeURI(`${url}/events/summary`), { params });\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { EventSummaryService } from './event-summary.service';\n\n@Injectable()\nexport class EventSummaryEffects {\n loadSummaries$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventSummaryActions.load),\n debounceTime(200),\n mergeMap((action) =>\n this.eventSummaryService.list().pipe(\n map((summaries) => EventSummaryActions.loadSuccess({ summaries })),\n catchError((error) => [EventSummaryActions.loadFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventSummaryService: EventSummaryService,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { filter, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ProcedureActions } from './procedure.actions';\nimport { ProcedureSelectors } from './procedure.selectors';\nimport { ProcedureService } from './procedure.service';\n\n@Injectable()\nexport class ProcedureEffects {\n loadProcedures$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.load),\n debounceTime(200),\n withLatestFrom(\n this.store.select(ProcedureSelectors.procedures),\n this.store.select(ProcedureSelectors.noMoreProcedures)\n ),\n filter(([action, stateProcedures, noMore]) => !noMore),\n mergeMap(([action, stateProcedures]) =>\n this.procedureService.list(action.next ? stateProcedures.length : 0).pipe(\n map((procedures) =>\n ProcedureActions.loadSuccess({ procedures, startingFrom: action.next ? stateProcedures.length : 0 })\n ),\n catchError((error) => [ProcedureActions.loadFailure({ error: error })])\n )\n )\n )\n );\n\n sort$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.sort),\n debounceTime(200),\n map(() => ProcedureActions.load({}))\n )\n );\n\n model$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.model),\n debounceTime(200),\n mergeMap((action) =>\n this.procedureService.get(action.id).pipe(\n map((model) => ProcedureActions.modelSuccess({ model })),\n catchError((error) => [ProcedureActions.modelFailure({ error: error })])\n )\n )\n )\n );\n\n save$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.save),\n debounceTime(200),\n mergeMap((action) =>\n this.procedureService.save(action.model).pipe(\n map((model) => ProcedureActions.saveSuccess({ model, wasCreation: !action.model.id })),\n catchError((error) => [ProcedureActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n refreshAfterSave$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.saveSuccess),\n debounceTime(200),\n map((action) => ProcedureActions.model({ id: action.model.id }))\n )\n );\n\n deleteInstance$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.deleteInstance),\n debounceTime(200),\n mergeMap((action) =>\n this.procedureService.delete(action.id).pipe(\n map((model) => ProcedureActions.deleteInstanceSuccess({ returnToEvent: action.returnToEvent })),\n catchError((error) => [ProcedureActions.deleteInstanceFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private procedureService: ProcedureService,\n private store: Store\n ) {}\n}\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { Store, StoreModule } from '@ngrx/store';\nimport { eventFeatureKey, eventReducer } from './store/event/event.reducer';\nimport { EventEffects } from './store/event/event.effects';\nimport { EventDetailComponent } from './event/detail/event-detail.component';\nimport { hypervisorReducer, hypFeatureKey } from './store/hypervisor/hypervisor.reducer';\nimport { HypervisorEffects } from './store/hypervisor/hypervisor.effects';\nimport { HYP_BASE_CONFIG } from './general/base.token';\nimport { HypervisorActions } from './store/hypervisor/hypervisor.actions';\nimport {AsyncPipe, DatePipe, JsonPipe, KeyValuePipe, NgClass, NgForOf, NgIf, NgStyle} from '@angular/common';\nimport {\n I18nPipe,\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PrySinceDateModule\n} from '@provoly/dashboard';\nimport { enTranslations } from './general/i18n/en.translations';\nimport { frTranslations } from './general/i18n/fr.translations';\nimport { IconDisplayComponent } from './general/icon-display/icon-display.component';\nimport { EventIconPipe } from './general/icon-pipe/event-icon.pipe';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { EventListComponent } from './event/list/event-list.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { EventSummaryListComponent } from './event-summary/list/event-summary-list.component';\nimport { EventSummaryItemComponent } from './event-summary/item/event-summary-item.component';\nimport { EventSummaryEffects } from './store/event-summary/event-summary.effects';\nimport { eventSummaryFeatureKey, eventSummaryReducer } from './store/event-summary/event-summary.reducer';\nimport { EventSummaryPageComponent } from './event-summary/page/event-summary-page.component';\nimport { ForDatetimeLocalPipe } from './general/for-datetime-local-pipe/for-datetime-local.pipe';\nimport { StatusDisplayComponent } from './general/status-display/status-display.component';\nimport { ProgressDisplayComponent } from './general/progress-display/progress-display.component';\nimport { ColumnOrderComponent } from './general/column-order/column-order.component';\nimport { EventFiltersComponent } from './event/filters/on/click/event-filters.component';\nimport { DateFilterComponent } from './event/filters/date/date-filter.component';\nimport { ChoiceFilterComponent } from './event/filters/choice/choice-filter.component';\nimport { ProcedureListComponent } from './procedure/model-list/procedure-list.component';\nimport { procedureFeatureKey, procedureReducer } from './store/procedure/procedure.reducer';\nimport { ProcedureEffects } from './store/procedure/procedure.effects';\nimport { EventColumnOrderComponent } from './event/list/event-column-order.component';\nimport { ProcedureColumnOrderComponent } from './procedure/model-list/procedure-column-order.component';\nimport { ProcedureAssociationModalComponent } from './event/procedure-association-modal/procedure-association-modal.component';\nimport { TextFilterComponent } from './event/filters/text/text-filter.component';\nimport { ImmediateFiltersComponent } from './event/filters/on/immediate/immediate-filters.component';\nimport { ProcedureModelDetailComponent } from './procedure/model-detail/procedure-model-detail.component';\nimport { ProcedureActionsComponent } from './general/procedure-actions/procedure-actions.component';\nimport { HvyActionMenuComponent } from './general/procedure-actions/action-menu.component';\nimport { HvyActionParameterComponent } from './general/procedure-actions/action-parameters/action-parameter.component';\nimport { HvyBaseParameterActionComponent } from './general/procedure-actions/action-parameters/base-parameter-action.component';\nimport { HvyOtherActionParameterComponent } from './general/procedure-actions/action-parameters/other/other-action-parameter.component';\nimport { HvyOtherActionDisplayComponent } from './general/procedure-actions/action-parameters/other/other-action-display.component';\nimport { HvyNoParamsActionDisplayComponent } from './general/procedure-actions/action-parameters/no-param/no-params-action-display.component';\nimport { HvyPhoneActionParameterComponent } from './general/procedure-actions/action-parameters/phone/phone-action-parameter.component';\nimport { HvyPhoneActionDisplayComponent } from './general/procedure-actions/action-parameters/phone/phone-action-display.component';\nimport { HvyEmailActionDisplayComponent } from './general/procedure-actions/action-parameters/email/email-action-display.component';\nimport { HvyEmailActionParameterComponent } from './general/procedure-actions/action-parameters/email/email-action-parameter.component';\nimport { HvyServiceActionParameterComponent } from './general/procedure-actions/action-parameters/service/service-action-parameter.component';\nimport { HvyServiceActionDisplayComponent } from './general/procedure-actions/action-parameters/service/service-action-display.component';\nimport { DisplayLocaleDateTime } from './general/display-locale-datetime/display-locale-datetime.pipe';\nimport { HvyCommentsComponent } from './general/comments/comments.component';\nimport { HvyCreateServiceComponent } from './general/procedure-actions/action-parameters/service/create-service.component';\nimport { LastEventsComponent } from './general/last-events/last-events.component';\nimport { HvyEventDetailsTooltipComponent } from './event/detail/event-details-tooltip.component';\nimport { HvyEventAddEventComponent } from './event/detail/add-event/add-event.component';\nimport { TruncatePipe } from './general/truncate-pipe/truncate.pipe';\nimport {\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatOption\n} from \"@angular/material/autocomplete\";\n\nconst components = [\n EventDetailComponent,\n EventListComponent,\n EventColumnOrderComponent,\n IconDisplayComponent,\n EventSummaryItemComponent,\n EventSummaryListComponent,\n EventSummaryPageComponent,\n EventIconPipe,\n ForDatetimeLocalPipe,\n StatusDisplayComponent,\n ProgressDisplayComponent,\n ColumnOrderComponent,\n EventFiltersComponent,\n DateFilterComponent,\n TextFilterComponent,\n ChoiceFilterComponent,\n ProcedureListComponent,\n ProcedureColumnOrderComponent,\n ProcedureAssociationModalComponent,\n ProcedureModelDetailComponent,\n ImmediateFiltersComponent,\n HvyActionMenuComponent,\n HvyCreateServiceComponent,\n HvyActionParameterComponent,\n HvyBaseParameterActionComponent,\n HvyOtherActionParameterComponent,\n HvyOtherActionDisplayComponent,\n HvyNoParamsActionDisplayComponent,\n HvyPhoneActionParameterComponent,\n HvyPhoneActionDisplayComponent,\n HvyEmailActionDisplayComponent,\n HvyEmailActionParameterComponent,\n HvyServiceActionParameterComponent,\n HvyServiceActionDisplayComponent,\n DisplayLocaleDateTime,\n HvyCommentsComponent,\n LastEventsComponent,\n HvyEventDetailsTooltipComponent,\n HvyEventAddEventComponent\n];\n\n@NgModule({\n declarations: [...components, ProcedureActionsComponent],\n imports: [\n StoreModule.forFeature(hypFeatureKey, hypervisorReducer),\n StoreModule.forFeature(eventFeatureKey, eventReducer),\n StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),\n StoreModule.forFeature(procedureFeatureKey, procedureReducer),\n EffectsModule.forFeature([EventEffects, EventSummaryEffects, ProcedureEffects, HypervisorEffects]),\n NgForOf,\n AsyncPipe,\n PryI18nModule,\n PryCoreModule,\n NgStyle,\n PryCheckboxModule,\n FormsModule,\n RouterLink,\n PrySinceDateModule,\n DatePipe,\n PryIconModule,\n KeyValuePipe,\n PrySelectModule,\n JsonPipe,\n PryDatePickerModule,\n NgIf,\n PryCoreModule,\n PryI18nModule,\n FormsModule,\n AsyncPipe,\n TruncatePipe,\n DatePipe,\n AsyncPipe,\n MatAutocompleteTrigger,\n MatAutocomplete,\n MatOption,\n ReactiveFormsModule,\n PryIconModule,\n NgClass,\n AsyncPipe,\n PryI18nModule,\n AsyncPipe,\n PryI18nModule,\n ],\n exports: [...components],\n providers: [I18nPipe]\n})\nexport class PvyHypervisorModule {\n static forRoot(options: { url?: string }): ModuleWithProviders<PvyHypervisorModule> {\n return {\n ngModule: PvyHypervisorModule,\n providers: [{ provide: HYP_BASE_CONFIG, useValue: options }]\n };\n }\n\n constructor(\n @Inject(HYP_BASE_CONFIG)\n private baseConfig: {\n url: string;\n },\n private store: Store<any>,\n private i18nService: PryI18nService\n ) {\n this.store.dispatch(HypervisorActions.setUrl({ url: baseConfig.url }));\n this.i18nService.addLangObject('en', '@hvy', enTranslations);\n this.i18nService.addLangObject('fr', '@hvy', frTranslations);\n }\n}\n","/*\n * Public API Surface of hypervisor\n */\nexport * from './src/lib/auth/public-api';\nexport * from './src/lib/event/public-api';\nexport * from './src/lib/event-summary/public-api';\nexport * from './src/lib/procedure/public-api';\nexport * from './src/lib/general/public-api';\nexport * from './src/lib/model/public-api';\nexport * from './src/lib/hypervisor.module';\nexport * from './src/lib/store/event/public-api';\nexport * from './src/lib/store/event-summary/public-api';\nexport * from './src/lib/store/equipment/public-api';\nexport * from './src/lib/store/hypervisor/public-api';\nexport * from './src/lib/store/procedure/public-api';\nexport * from './src/lib/store/comments/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["internalReducer","feature","loading","sort","i2","i1","i3.EventIconPipe","map","i2.ProcedureService","i3","i4","i5.IconDisplayComponent","i6","i3.InfiniteScrollService","i5","i7.EventColumnOrderComponent","i8.IconDisplayComponent","i9.StatusDisplayComponent","i11.DisplayLocaleDateTime","i4.IconDisplayComponent","i5.StatusDisplayComponent","i7.TruncatePipe","i2.LastEventsComponent","i2.EventService","i1.HypCommentsService","i2.ServiceService","i3.ServiceService","model","i3.HypCommentsService","i4.ServiceService","i7.HvyActionParameterComponent","i8.HvyCommentsComponent","i1.EquipmentService","i5.HypCommentsService","i6.EventService","i7","i8","i11.IconDisplayComponent","i12.StatusDisplayComponent","i13.ProgressDisplayComponent","i14.HvyCommentsComponent","i15.ProcedureActionsComponent","i16.ForDatetimeLocalPipe","debounceTime","i5.DisplayLocaleDateTime","i4.EventSummaryItemComponent","i4.EventSummaryListComponent","i5.TextFilterComponent","i6.ChoiceFilterComponent","i7.ProcedureColumnOrderComponent","i8.ImmediateFiltersComponent","i9","i10.DisplayLocaleDateTime","i4.ProcedureActionsComponent","i5.ForDatetimeLocalPipe","mergeMap","i2.HypervisorService","i2.EventSummaryService"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-hypervisor.mjs","sources":["../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-criticality.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/domains.constant.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.actions.ts","../../../../projects/provoly/hypervisor/src/lib/general/pad-id.function.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.service.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-category.type.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-pipe/event-icon.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.html","../../../../projects/provoly/hypervisor/src/lib/event/procedure-association-modal/procedure-association-modal.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/procedure-association-modal/procedure-association-modal.component.html","../../../../projects/provoly/hypervisor/src/lib/general/display-date.function.ts","../../../../projects/provoly/hypervisor/src/lib/general/infiniteScroll.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/column-order/column-order.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/column-order/column-order.component.html","../../../../projects/provoly/hypervisor/src/lib/event/list/event-column-order.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/display-locale-datetime/display-locale-datetime.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.html","../../../../projects/provoly/hypervisor/src/lib/general/truncate-pipe/truncate.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/general/last-events/last-events.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/last-events/last-events.component.html","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-details-tooltip.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-details-tooltip.component.html","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-detail.interface.ts","../../../../projects/provoly/hypervisor/src/lib/model/procedure/hyp-procedure.interface.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.service.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/add-event/add-event.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/add-event/add-event.component.html","../../../../projects/provoly/hypervisor/src/lib/store/equipment/equipment.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/comments/comments.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/comments/comments.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/comments/comments.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-menu.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-menu.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/base-parameter-action.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/other/other-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/email/email-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/store/service/service.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/create-service.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/create-service.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/service/service-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/phone/phone-action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/actions-types.constant.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/action-parameter.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/action-parameter.component.html","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/procedure-actions.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/procedure-actions.component.html","../../../../projects/provoly/hypervisor/src/lib/general/for-datetime-local-pipe/for-datetime-local.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/click/event-filters.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/click/event-filters.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/immediate/immediate-filters.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/on/immediate/immediate-filters.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/hvy-unit-filter.class.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/date/date-filter.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/date/date-filter.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/choice/choice-filter.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/choice/choice-filter.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/text/text-filter.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/text/text-filter.component.html","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.const.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-status.type.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.html","../../../../projects/provoly/hypervisor/src/lib/procedure/model-list/procedure-column-order.component.ts","../../../../projects/provoly/hypervisor/src/lib/procedure/model-list/procedure-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/procedure/model-list/procedure-list.component.html","../../../../projects/provoly/hypervisor/src/lib/procedure/model-detail/procedure-model-detail.component.ts","../../../../projects/provoly/hypervisor/src/lib/procedure/model-detail/procedure-model-detail.component.html","../../../../projects/provoly/hypervisor/src/lib/general/base.token.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/en.translations.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/fr.translations.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/no-param/no-params-action-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/procedure-actions/action-parameters/no-param/no-params-action-display.component.html","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-type.ts","../../../../projects/provoly/hypervisor/src/lib/model/hyp-service-status.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/entites.constant.ts","../../../../projects/provoly/hypervisor/src/lib/model/public-api.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/procedure/procedure.effects.ts","../../../../projects/provoly/hypervisor/src/lib/hypervisor.module.ts","../../../../projects/provoly/hypervisor/public-api.ts","../../../../projects/provoly/hypervisor/provoly-hypervisor.ts"],"sourcesContent":["export const HypEventCriticality = {\n values: ['HIGH', 'MEDIUM', 'LOW']\n};\n","export const DOMAINS: { values: string[] } = {\n values: ['DOMAIN1', 'DOMAIN2'],\n};\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventTooltip } from '../../model/event/hyp-event-tooltip.interface';\n\nexport const EventActions = {\n load: createAction('[Event] Load Events', props<{ next?: boolean }>()),\n loadSuccess: createAction(\n '[Event Api] Load Events Success',\n props<{\n events: HypEventDetails[];\n startingFrom?: number;\n }>()\n ),\n loadFailure: createAction('[Event Api] Load Events Failure', props<{ error: string }>()),\n filter: createAction('[Event Api] Set filters', props<{ filters: { [key: string]: string[] }; filterSet: string }>()),\n select: createAction('[Event Api] Select', props<{ cumulative: boolean; ids: number[] }>()),\n get: createAction('[Event] Load specific Event', props<{ id: number }>()),\n getForProcedure: createAction('[Event] Load specific Event for procedure', props<{ id: number }>()),\n getSuccess: createAction(\n '[Event Api] Get Events/Procedure Success',\n props<{\n event?: HypEventDetails;\n procedure?: HypProcedure;\n }>()\n ),\n getFailure: createAction('[Event Api] Get Events/Procedure Failure', props<{ error: string }>()),\n getTooltipInfo: createAction('[Event] Load tooltip info', props<{ name: string }>()),\n getTooltipInfoSuccess: createAction(\n '[Event Api] Load tooltip info Success',\n props<{\n event: HypEventTooltip;\n }>()\n ),\n getTooltipInfoFailure: createAction('[Event Api] Load tooltip info Failure', props<{ error: string }>()),\n save: createAction('[Event] Save Event', props<{ event: HypEventDetails }>()),\n saveProcedure: createAction('[Event] Save Procedure and linked Events', props<{ procedure: HypProcedure }>()),\n addEventToProcedure: createAction(\n '[Event] Add event to procedure',\n props<{ eventId: number; procedure: HypProcedure }>()\n ),\n saveSuccess: createAction(\n '[Event] Save success',\n props<{ event?: HypEventDetails; procedure?: HypProcedure; creation: boolean }>()\n ),\n saveFailure: createAction('[Event] Save failure', props<{ error: any }>()),\n status: createAction(\n '[Event] Close Event or Procedure',\n props<{\n targetStatus: string;\n event?: HypEventDetails;\n procedure?: HypProcedure;\n comment: string;\n }>()\n ),\n statusSuccess: createAction('[Event] Close success', props<{ event?: HypEventDetails; procedure?: HypProcedure }>()),\n statusFailure: createAction('[Event] Close failure', props<{ error: any }>()),\n sort: createAction('[Event] set log event sorting', props<{ field: string; order: string }>()),\n associateProcedure: createAction(\n '[Event] Associate Procedure to Event',\n props<{ procedureId: number; eventIds: number[] }>()\n ),\n associateProcedureSuccess: createAction(\n '[Event] Associate Procedure to Event Success',\n props<{ procedure: HypProcedure }>()\n ),\n associateProcedureFailure: createAction('[Event] Associate Procedure to Event Failure', props<{ error: string }>()),\n export: createAction('[Event] Export events', props<{ archived: boolean }>())\n};\n","export const padId = {\n fn: (id: number | string) => {\n return `${id}`.padStart(6, '0');\n }\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventActions } from './event.actions';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HvyFilterParams } from '../../event/filters/hvy-unit-filter.class';\nimport { HypProcedure } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventTooltip } from '../../model/event/hyp-event-tooltip.interface';\n\nexport const eventFeatureKey = '@hvy/event';\n\nexport interface EventState {\n events: HypEventDetails[];\n noMoreEvents: boolean;\n loading: boolean;\n filters: HvyFilterParams;\n selectedIds: number[];\n details: {\n event?: HypEventDetails;\n procedure?: HypProcedure;\n };\n sort?: {\n field: string;\n order: string;\n };\n tooltip?: HypEventTooltip;\n}\n\nexport const eventInitialState: EventState = {\n events: [],\n noMoreEvents: false,\n loading: false,\n filters: {},\n selectedIds: [],\n details: {}\n};\n\nconst internalReducer = createReducer<EventState>(\n eventInitialState,\n on(EventActions.load, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EventActions.loadSuccess, (state, { events, startingFrom }) => {\n return {\n ...state,\n loading: false,\n noMoreEvents: events.length < 20,\n events: [...state.events.slice(0, startingFrom), ...events]\n };\n }),\n on(EventActions.loadFailure, (state, action) => ({\n ...state,\n loading: false,\n events: []\n })),\n on(EventActions.select, (state, { ids, cumulative }) => ({\n ...state,\n selectedIds: !cumulative\n ? ids\n : [...state.selectedIds, ...ids].reduce(\n (p, c) => (p.indexOf(c) === -1 ? [...p, c] : p.filter((p1) => p1 !== c)),\n [] as number[]\n )\n })),\n on(EventActions.get, EventActions.getForProcedure, (state, _) => ({\n ...state,\n details: {}\n })),\n on(EventActions.getSuccess, (state, { event, procedure }) => ({\n ...state,\n details: { event, procedure }\n })),\n on(EventActions.sort, (state, { field, order }) => ({\n ...state,\n events: [],\n noMoreEvents: false,\n sort: { field, order }\n })),\n on(EventActions.filter, (state, { filters, filterSet }) => ({\n ...state,\n events: [],\n noMoreEvents: false,\n filters: { ...state.filters, [filterSet]: filters }\n })),\n on(EventActions.getTooltipInfo, (state, _) => ({\n ...state,\n tooltip: undefined\n })),\n on(EventActions.getTooltipInfoSuccess, (state, { event }) => ({\n ...state,\n tooltip: event\n }))\n);\n\nexport function eventReducer(state: EventState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventFeatureKey, EventState } from './event.reducer';\n\nconst feature = createFeatureSelector<EventState>(eventFeatureKey);\nconst events = createSelector(feature, (state) => state.events);\nconst noMoreEvents = createSelector(feature, (state) => state.noMoreEvents);\nconst selectedIds = createSelector(feature, (state) => state.selectedIds);\nconst selectedEvents = createSelector(feature, (state) =>\n state.events.filter((event) => state.selectedIds.includes(event.id))\n);\nconst loading = createSelector(feature, (state) => state.loading);\nconst filters = createSelector(feature, (state) => state.filters);\nconst details = createSelector(feature, (state) => state.details);\nconst sort = createSelector(feature, (state) => state.sort);\nconst tooltipInfo = createSelector(feature, (state) => state.tooltip);\n\nexport const EventSelectors = {\n feature,\n events,\n selectedIds,\n selectedEvents,\n loading,\n filters,\n details,\n noMoreEvents,\n sort,\n tooltipInfo\n};\n","import { createAction, props } from '@ngrx/store';\n\nexport const HypervisorActions = {\n setUrl: createAction('[Event] Set Backend Url', props<{ url?: string }>())\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { HypervisorActions } from './hypervisor.actions';\n\nexport const hypFeatureKey = '@hvy/general';\n\nexport interface HypState {\n url: string;\n}\n\nexport const hypInitialState: HypState = {\n url: '/api/hypervisor',\n};\n\nconst internalReducer = createReducer<HypState>(\n hypInitialState,\n on(HypervisorActions.setUrl, (state, action) => ({\n ...state,\n url: action.url ?? state.url,\n })),\n);\n\nexport function hypervisorReducer(state: HypState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { hypFeatureKey, HypState } from './hypervisor.reducer';\n\n\nconst feature = createFeatureSelector<HypState>(hypFeatureKey);\nconst url = createSelector(feature, (state) => state.url);\n\nexport const HypSelectors = {\n feature,\n url\n};\n","import { createAction, props } from '@ngrx/store';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\n\nexport const ProcedureActions = {\n load: createAction('[Procedure] Load Procedures', props<{ next?: boolean }>()),\n loadSuccess: createAction(\n '[Procedure] (bus) Load Procedure Success',\n props<{\n procedures: HypProcedureModel[];\n startingFrom?: number;\n }>()\n ),\n loadFailure: createAction('[Procedure] Load Procedures Failure', props<{ error: string }>()),\n sort: createAction('[Procedure] Set Procedure List Sorting', props<{ field: string; order: string }>()),\n setCategory: createAction('[Procedure] Set Category Value', props<{ category?: string }>()),\n model: createAction('[Procedure] Get Procedure Model', props<{ id: number }>()),\n modelSuccess: createAction('[Procedure] Get Procedure Model Success', props<{ model: HypProcedureModel }>()),\n modelFailure: createAction('[Procedure] Get Procedure Model Failure', props<{ error?: any }>()),\n save: createAction('[Procedure] Save Procedure Model', props<{ model: HypProcedureModel }>()),\n saveSuccess: createAction(\n '[Procedure] Save Procedure Model Success',\n props<{ model: HypProcedureModel; wasCreation: boolean }>()\n ),\n saveFailure: createAction('[Procedure] Save Procedure Model Failure', props<{ error?: any }>()),\n deleteInstance: createAction(\n '[Procedure] Delete Procedure instance',\n props<{ id: number; returnToEvent?: number }>()\n ),\n deleteInstanceSuccess: createAction(\n '[Procedure] Delete Procedure instance Success',\n props<{ returnToEvent?: number }>()\n ),\n deleteInstanceFailure: createAction('[Procedure] Delete Procedure instance Failure', props<{ error?: any }>())\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { ProcedureActions } from './procedure.actions';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\n\nexport const procedureFeatureKey = '@hvy/procedure';\n\nexport interface ProcedureState {\n procedures: HypProcedureModel[];\n noMoreProcedures: boolean;\n loading: boolean;\n sort?: {\n field: string;\n order: string;\n };\n model?: HypProcedureModel;\n}\n\nexport const procedureInitialState: ProcedureState = {\n procedures: [],\n noMoreProcedures: false,\n loading: false\n};\n\nconst internalReducer = createReducer<ProcedureState>(\n procedureInitialState,\n on(ProcedureActions.load, (state) => ({\n ...state,\n loading: true\n })),\n on(ProcedureActions.loadSuccess, (state, { procedures, startingFrom }) => {\n return {\n ...state,\n loading: false,\n noMoreProcedures: procedures.length < 20,\n procedures: [...state.procedures.slice(0, startingFrom), ...procedures]\n };\n }),\n on(ProcedureActions.loadFailure, (state) => ({\n ...state,\n loading: false,\n procedures: [],\n noMoreProcedures: false\n })),\n on(ProcedureActions.sort, (state, { field, order }) => ({\n ...state,\n procedures: [],\n noMoreProcedures: false,\n sort: { field, order }\n })),\n on(ProcedureActions.model, (state) => ({\n ...state,\n model: undefined,\n loading: true\n })),\n on(ProcedureActions.modelSuccess, (state, action) => ({\n ...state,\n model: action.model,\n loading: false\n })),\n on(ProcedureActions.modelFailure, (state, action) => ({\n ...state,\n model: undefined,\n loading: false,\n error: action.error\n })),\n on(ProcedureActions.save, (state) => ({\n ...state,\n loading: true\n })),\n on(ProcedureActions.saveSuccess, (state, action) => ({\n ...state,\n model: action.model,\n loading: false\n })),\n on(ProcedureActions.saveFailure, (state, action) => ({\n ...state,\n loading: false,\n error: action.error\n }))\n);\n\nexport function procedureReducer(state: ProcedureState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { procedureFeatureKey, ProcedureState } from './procedure.reducer';\n\nconst feature = createFeatureSelector<ProcedureState>(procedureFeatureKey);\nconst procedures = createSelector(feature, (state) => state.procedures);\nconst noMoreProcedures = createSelector(feature, (state) => state.noMoreProcedures);\nconst loading = createSelector(feature, (state) => state.loading);\nconst sort = createSelector(feature, (state) => state.sort);\nconst model = createSelector(feature, (state) => state.model);\n\nexport const ProcedureSelectors = {\n feature,\n procedures,\n loading,\n noMoreProcedures,\n sort,\n model\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { combineLatest, map, mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { ProcedureSelectors } from './procedure.selectors';\nimport { EventSelectors } from '../event/event.selectors';\nimport { FilterParamEncoder } from '@provoly/dashboard';\n\nexport const PROCEDURE_PAGE_SIZE_FETCH = { value: 20 };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcedureService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n list(startWith = 0, pageSize = PROCEDURE_PAGE_SIZE_FETCH.value): Observable<HypProcedureModel[]> {\n return combineLatest([\n this.store.select(HypSelectors.url),\n this.store.select(ProcedureSelectors.sort),\n this.store.select(EventSelectors.filters).pipe(map((filters) => filters['procedure'] ?? {}))\n ]).pipe(\n mergeMap(([url, sort, filters]) => {\n let params = new HttpParams({ encoder: new FilterParamEncoder() });\n Object.keys(filters).forEach((filter) => {\n filters[filter].forEach((filterValue) => {\n params = params.append(filter, filterValue);\n });\n });\n params = params.set('page', startWith / pageSize + 1);\n\n if (sort) params = params.set('sort', sort.field).set('order', sort.order);\n return this.httpClient.get<HypProcedureModel[]>(encodeURI(`${url}/procedures/model`), { params });\n })\n );\n }\n\n getTop10ByUsage(domain?: string, search?: string): Observable<HypProcedureModel[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n\n params = params.set('sort', 'useCount').set('order', 'DESC').set('pageSize', '10');\n if (search) params = params.set('search', search);\n if (domain) params = params.set('domain', domain);\n return this.httpClient.get<HypProcedureModel[]>(encodeURI(`${url}/procedures/model`), { params });\n })\n );\n }\n\n get(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedureModel>(encodeURI(`${url}/procedures/model/id/${id}`));\n })\n );\n }\n\n save(model: HypProcedureModel) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n if (!model.id) {\n return this.httpClient.post<HypProcedureModel>(encodeURI(`${url}/procedures/model`), model);\n }\n return this.httpClient\n .put<void>(encodeURI(`${url}/procedures/model/id/${model.id}`), model)\n .pipe(map(() => model));\n })\n );\n }\n\n delete(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.delete<void>(encodeURI(`${url}/procedures/id/${id}`));\n })\n );\n }\n}\n","export const HypEventCategory = {\n values: ['ANOMALY', 'OUTOFORDER', 'MANIFESTATION', 'LIMIT']\n};\n\nexport const HypEventSubCategory = {\n values: {\n LIMIT: [],\n MANIFESTATION: [],\n OUTOFORDER: [],\n ANOMALY: ['NONE', 'UNUSUAL_FLOW', 'CARREFOUR_AU_NOIR_NP', 'CARREFOUR_AU_NOIR', 'CARREFOUR_CLIGNOTANT_NP', 'CARREFOUR_CLIGNOTANT', 'TRAFFIC_CONGESTION', 'WILD_STORAGE']\n } as { [type: string]: string[] }\n};\n\nexport const VpEventSubCategory = HypEventSubCategory.values['ANOMALY'].filter(cat =>\n cat !== 'NONE' &&\n cat !== 'CARREFOUR_AU_NOIR' &&\n cat !== 'CARREFOUR_AU_NOIR_NP' &&\n cat !== 'CARREFOUR_CLIGNOTANT' &&\n cat !== 'CARREFOUR_CLIGNOTANT_NP'\n)\n\nexport const CategoryBackground = {\n values: {\n LIMIT: 'square',\n MANIFESTATION: 'circle',\n OUTOFORDER: 'hexagon',\n ANOMALY: 'triangle'\n } as { [type: string]: string }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\nimport { Store } from '@ngrx/store';\nimport { DEFAULT_ICON_URL } from '@provoly/dashboard';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\nexport const EVENT_TO_ICON = {\n fn: (event: HypEvent | HypEventSummary | HypEventDetails, store: Store<any>) => of(DEFAULT_ICON_URL),\n};\n\n@Pipe({\n name: 'eventIcon',\n})\nexport class EventIconPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(value: HypEvent | HypEventSummary | HypEventDetails, ...args: unknown[]): Observable<string> {\n return EVENT_TO_ICON.fn(value, this.store);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\nimport { CategoryBackground } from '../../model/event/hyp-event-category.type';\n\n@Component({\n selector: 'hvy-icon-display',\n templateUrl: './icon-display.component.html'\n})\nexport class IconDisplayComponent {\n @Input() event!: HypEvent;\n protected readonly CategoryBackground = CategoryBackground;\n}\n","<div\n class=\"\n m-hvy-event-summary-item__event-icon-container\n -hvy-{{ event.criticality.toString().toLowerCase() }}\n -hvy-{{ CategoryBackground.values[event.category] }}\n \"\n [title]=\"'@hvy.event.category.' + event.category | i18n\"\n>\n <span\n class=\"m-hvy-event-summary-item__event-icon a-icon\"\n [ngStyle]=\"{\n 'mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')',\n '-webkit-mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')'\n }\"\n aria-hidden=\"true\"\n focusable=\"false\"\n ></span>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { BehaviorSubject, combineLatest, debounceTime, Observable, shareReplay, Subject, switchMap } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { ProcedureService } from '../../store/procedure/procedure.service';\nimport { catchError, map, startWith } from 'rxjs/operators';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { padId } from '../../general/pad-id.function';\n\nexport interface HypProcedureModelWithMatching extends HypProcedureModel {\n initial: string;\n html: string;\n}\n\n@Component({\n selector: 'hvy-procedure-association-modal',\n templateUrl: './procedure-association-modal.component.html'\n})\nexport class ProcedureAssociationModalComponent extends SubscriptionnerDirective {\n selectedEvents$: Observable<HypEventDetails[]>;\n\n selectedDomain?: string;\n selectedProcedureInComboBox?: HypProcedureModel;\n onDomainSelect$ = new BehaviorSubject<void>(undefined);\n\n procedureSelectValue?: string | HypProcedureModel;\n onProcedureSearch$ = new Subject<void>();\n procedures$: Observable<HypProcedureModelWithMatching[]>;\n eventsFromInput$ = new BehaviorSubject<HypEventDetails[] | null>(null);\n eventsForAction: HypEventDetails[] = [];\n disableValidButton = true;\n\n @Input() set events(events: HypEventDetails[]) {\n this.eventsFromInput$.next(events);\n }\n\n constructor(\n private store: Store,\n private procedureService: ProcedureService,\n private dialog: PryDialogRef<ProcedureAssociationModalComponent>\n ) {\n super();\n this.selectedEvents$ = combineLatest([\n this.eventsFromInput$,\n this.store.select(EventSelectors.selectedEvents)\n ]).pipe(\n map(([eventsFromInput, eventsFromSelect]) => (eventsFromInput !== null ? eventsFromInput : eventsFromSelect))\n );\n\n this.subscriptions.add(this.selectedEvents$.subscribe((events) => (this.eventsForAction = events)));\n\n this.subscriptions.add(\n this.selectedEvents$.subscribe((events) => {\n const domains = [...new Set(events.map((ev) => ev.domain))];\n if (domains.length === 1) {\n this.selectedDomain = domains[0];\n }\n })\n );\n\n this.procedures$ = combineLatest([\n this.onDomainSelect$.pipe(startWith()),\n this.onProcedureSearch$.pipe(startWith(), debounceTime(500))\n ]).pipe(\n switchMap(([_, __]) => {\n const search =\n typeof this.procedureSelectValue === 'string' && this.procedureSelectValue.length > 2 ?\n this.cleanProcedureNameForComboBoxSearch(this.procedureSelectValue) :\n typeof this.procedureSelectValue === 'object' ?\n this.procedureSelectValue.name :\n undefined;\n return this.procedureService.getTop10ByUsage(this.selectedDomain, search).pipe(\n map((procedures) =>\n procedures.map((proc) => {\n const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');\n const html = `${padId.fn(proc.id)} - ${proc.name} (${proc.creator})`;\n return {\n ...proc,\n initial: html,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`)\n } as HypProcedureModelWithMatching;\n })\n )\n );\n }),\n catchError(() => {\n throw new Error('Procedure catalog problem');\n }),\n shareReplay()\n );\n }\n\n onDomainChange() {\n this.onDomainSelect$.next();\n this.procedureSelectValue = undefined;\n }\n\n cleanProcedureNameForComboBoxSearch(procedure: string){\n const indexOfTiret = procedure.indexOf('-');\n const indexOfCreator = procedure.lastIndexOf('(');\n if(indexOfTiret !== -1 && indexOfCreator !== -1) {\n procedure = procedure.substring(indexOfTiret + 2, indexOfCreator - 1);\n } else if (indexOfTiret !== -1) {\n procedure = procedure.substring(indexOfTiret + 2);\n } else if(indexOfCreator !== -1) {\n procedure = procedure.substring(0, indexOfCreator - 1);\n }\n return procedure;\n }\n\n selectedProcedureChange($event: string | HypProcedureModel) {\n // when choose a procedure\n if(typeof $event === 'object') {\n this.selectedProcedureInComboBox = $event;\n this.procedureSelectValue = $event;\n // when click on choosen procedure\n } else if((this.selectedProcedureInComboBox as HypProcedureModelWithMatching)?.html === $event) {\n this.procedureSelectValue = this.selectedProcedureInComboBox;\n } else {\n this.procedureSelectValue = $event;\n }\n this.disableValidButton = typeof this.procedureSelectValue !== 'object';\n this.onProcedureSearch$.next();\n }\n\n associateProcedure() {\n this.store.dispatch(\n EventActions.associateProcedure({\n procedureId: (this.procedureSelectValue as HypProcedureModel).id,\n eventIds: this.eventsForAction.map((event) => event.id)\n })\n );\n this.closeModal();\n }\n\n closeModal() {\n this.dialog.close();\n }\n\n protected readonly DOMAINS = DOMAINS.values;\n}\n","<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>Événements liés ({{ 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\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"procedure-filter\"\n >{{ '@hvy.associationModal.searchProcedure' | i18n }}<span class=\"text-error\">*</span> :\n </label>\n <pry-select\n [items]=\"procedures$ | async\"\n bindLabel=\"initial\"\n [(ngModel)]=\"procedureSelectValue\"\n (ngModelChange)=\"selectedProcedureChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.associationModal.procedurePlaceholder' | i18n\"\n id=\"procedure-filter\"\n [template]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\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]=\"disableValidButton\" (click)=\"associateProcedure()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n","export const displayDate = (endDate: string) => {\n const date = new Date(endDate).toLocaleDateString();\n return date === 'Invalid Date' ? undefined : date;\n};\n","import { auditTime, filter, fromEvent, Observable, withLatestFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { MemoizedSelector, Store } from '@ngrx/store';\n\nexport const SCROLL_PX_TO_TRIGGER_FETCH_PAGE = { value: 200 };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InfiniteScrollService {\n constructor(private store: Store<any>) { }\n\n isEndOfPage = (scrollContainer: HTMLElement, noMoreSelector: MemoizedSelector<object, boolean>) => {\n return fromEvent((scrollContainer), 'scroll').pipe(\n map((e: Event) => {\n const target = e.currentTarget as HTMLElement;\n return target.scrollHeight - target.offsetHeight - target.scrollTop;\n }),\n withLatestFrom(this.store.select(noMoreSelector)),\n filter(([remaningScroll, noMore]) => !noMore && remaningScroll < SCROLL_PX_TO_TRIGGER_FETCH_PAGE.value),\n auditTime(200)\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'hvy-column-order',\n templateUrl: './column-order.component.html',\n})\nexport class ColumnOrderComponent extends SubscriptionnerDirective {\n @Input() field: string = 'no-field-defined';\n sortValue: { field: string; order: string } | undefined;\n\n constructor(protected store: Store) {\n super();\n }\n\n sort(order: string) { }\n\n isActive(order: string) {\n return this.field === this.sortValue?.field && order === this.sortValue.order;\n }\n}\n","<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","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { ColumnOrderComponent } from '../../general/column-order/column-order.component';\n\n@Component({\n selector: 'hvy-event-column-order',\n templateUrl: '../../general/column-order/column-order.component.html',\n})\nexport class EventColumnOrderComponent extends ColumnOrderComponent {\n constructor(store: Store) {\n super(store);\n this.subscriptions.add(\n this.store.select(EventSelectors.sort).subscribe(sort => this.sortValue = sort),\n );\n }\n\n override sort(order: string) {\n this.store.dispatch(EventActions.sort({ field: this.field, order }));\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'hvy-status-display',\n templateUrl: './status-display.component.html'\n})\nexport class StatusDisplayComponent extends SubscriptionnerDirective {\n static idCounter = 0;\n id = StatusDisplayComponent.idCounter++;\n @Output() modified = new EventEmitter<string>();\n private _item!: { status: string };\n targetStatuses: string[] = [];\n targetsDisplayed: boolean = false;\n _modifiable = false;\n @Input() type: 'service' | 'event' = 'event';\n @Input() readonly: boolean | null = null;\n\n @Input() set item(item: { status: string }) {\n this._item = item;\n this.updateTargetStatuses();\n }\n\n @Input() set modifiable(modifiable: boolean) {\n this._modifiable = modifiable;\n this.updateTargetStatuses();\n }\n\n get modifiable() {\n return this._modifiable && !this.readonly;\n }\n\n get item() {\n return this._item;\n }\n\n trigger(status: string) {\n this.modified.next(status);\n this.targetsDisplayed = false;\n }\n\n updateTargetStatuses() {\n this.targetStatuses = this.modifiable && this.item.status !== 'DONE' ? ['DONE'] : [];\n }\n\n toggle() {\n window.dispatchEvent(new CustomEvent('status-display-opening', { detail: this.id }));\n this.targetsDisplayed = this.targetStatuses.length > 0 && !this.targetsDisplayed;\n }\n\n constructor() {\n super();\n this.subscriptions.add(\n fromEvent(window, 'status-display-opening').subscribe((event) => {\n if ((event as CustomEvent).detail !== this.id) {\n this.targetsDisplayed = false;\n }\n })\n );\n }\n}\n","<span\n class=\"a-chip -{{ item.status }} a-chip-status -{{ type }}\"\n [class.-modifiable]=\"_modifiable\"\n [class.-readonly]=\"readonly\"\n (click)=\"toggle()\"\n>\n {{ '@hvy.' + type + '.status.' + item.status | i18n }}\n @if (targetStatuses.length > 0) {\n <pry-icon iconSvg=\"caret_bottom_rounded\" [width]=\"10\" [height]=\"10\"></pry-icon>\n }\n</span>\n@if (targetsDisplayed) {\n <div class=\"a-chip-status__target\">\n <div class=\"a-chip-status__target__filler\"></div>\n @for (status of targetStatuses; track status) {\n <div class=\"a-chip-status__target__item\" (click)=\"trigger(status)\">\n {{ '@hvy.' + type + '.status.' + status | i18n }}\n </div>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'displayLocaleDatetime'\n})\nexport class DisplayLocaleDateTime implements PipeTransform {\n static lang = navigator.languages?.length ? navigator.languages[0] : navigator.language;\n\n static formats = {\n default: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n medium: {\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n short: {\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n }\n } as { [key: string]: any };\n\n constructor() {}\n\n transform(dateAsString: string | undefined, ...args: string[]): string {\n const format = new Intl.DateTimeFormat(\n DisplayLocaleDateTime.lang,\n DisplayLocaleDateTime.formats[args[0] ?? 'default']\n );\n const localDate = new Date(dateAsString ?? '');\n return format.format(localDate);\n }\n}\n","import {AfterViewInit, Component, ElementRef, Input} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport {combineLatest, fromEvent, map, Observable} from 'rxjs';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { Router } from '@angular/router';\nimport { InfiniteScrollService } from '../../general/infiniteScroll.service';\nimport { padId } from '../../general/pad-id.function';\nimport {startWith} from \"rxjs/operators\";\n\nexport const EVENT_LINK = {\n fn: (event: HypEventDetails | HypEventSummary, store: Store<any>) => ['./', padId.fn(event.id)]\n};\n\n@Component({\n selector: 'hvy-event-list',\n templateUrl: './event-list.component.html'\n})\nexport class EventListComponent extends SubscriptionnerDirective implements AfterViewInit {\n events$: Observable<HypEventDetails[]>;\n selectedIds$: Observable<number[]>;\n EVENT_LINK = EVENT_LINK;\n _store = this.store;\n allSelected$: Observable<boolean>;\n _inhibit = true;\n @Input() disableGotoDetail: boolean | null = false;\n\n constructor(\n private store: Store<any>,\n private el: ElementRef,\n private router: Router,\n private scroll: InfiniteScrollService\n ) {\n super();\n this.subscriptions.add(\n fromEvent<CustomEvent>(window, 'journal-refresh').pipe(\n startWith(new CustomEvent(`journal-refresh`, { detail: true }))\n ).subscribe(() => {\n this.store.dispatch(EventActions.load({}));\n })\n )\n this.events$ = this.store.select(EventSelectors.events);\n this.selectedIds$ = this.store.select(EventSelectors.selectedIds);\n this.allSelected$ = combineLatest([this.events$, this.selectedIds$]).pipe(\n map(\n ([events, selectedIds]) => events.length > 0 && events.filter((ev) => !selectedIds.includes(ev.id)).length === 0\n )\n );\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.scroll.isEndOfPage(this.el.nativeElement, EventSelectors.noMoreEvents).subscribe(() => {\n this.store.dispatch(EventActions.load({ next: true }));\n this._inhibit = true;\n setTimeout(() => this._inhibit = false, 1000);\n })\n );\n this._inhibit = false;\n }\n\n select(event: HypEventDetails, $event: MouseEvent) {\n this.store.dispatch(EventActions.select({ ids: [event.id], cumulative: true }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n selectAll($event: any) {\n if (!this._inhibit) {\n const tmpSub = this.events$.subscribe((events) => {\n this.store.dispatch(EventActions.select({ ids: $event ? events.map((ev) => ev.id) : [], cumulative: false }));\n setTimeout(() => tmpSub.unsubscribe(), 10);\n });\n }\n }\n\n inhibit() {\n this._inhibit = true;\n setTimeout(() => (this._inhibit = false), 100);\n }\n\n goTo(event: HypEventDetails) {\n if (!this.disableGotoDetail) {\n return this.router.navigate(this.EVENT_LINK.fn(event, this.store));\n }\n return;\n }\n\n protected readonly Math = Math;\n protected readonly padId = padId;\n}\n","<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)\">\n <div>\n ({{(selectedIds$| async)?.length}})\n </div>\n </pry-checkbox>\n </th>\n <th>\n <hvy-event-column-order field=\"criticality\">{{ '@hvy.event.criticality.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"id\">{{ '@hvy.event.id' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"domain\">{{ '@hvy.event.domain.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"name\">{{ '@hvy.event.name' | 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=\"source\">{{ '@hvy.event.source' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"procedureProgress\"\n >{{ '@hvy.procedure.progress' | i18n }}\n </hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"category\">{{ '@hvy.event.category.name' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"creationDate\">{{ '@hvy.event.creationDateTable' | i18n }}</hvy-event-column-order>\n </th>\n <th>\n <hvy-event-column-order field=\"lastModificationDate\"\n >{{ '@hvy.event.lastModificationDateTable' | i18n }}\n </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\" [class.-nogo]=\"disableGotoDetail\" (click)=\"goTo(event)\">\n <td class=\"o-hvy-events-table__line__cell checkbox\">\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async)!.includes(event.id)\"\n (click)=\"select(event, $event)\"\n ></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered icon\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell id\">\n {{ padId.fn(event.id) }}\n </td>\n <td class=\"o-hvy-events-table__line__cell domain\">\n {{ event.domain ?? '' }}\n </td>\n <td class=\"o-hvy-events-table__line__cell name\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div class=\"o-hvy-events-table__line__cell__name__sub\">\n @if (event.equipment) {\n {{ event.equipment.name ? event.equipment.name : '' }} -\n {{ event.equipment ? ('@hvy.event.family.' + event.equipment.family | i18n) : '' }}\n }\n </div>\n <div class=\"o-hvy-events-table__line__cell__name__subsub\">\n <span>{{ event.address }}</span>\n @if(event.district) {\n @if(event.address) {\n <span>,&nbsp;</span>\n }\n <span>{{(\"@hvy.event.places.\" + event.district | i18n)}} </span>\n }\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered status\">\n <hvy-status-display [item]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell source\">\n {{ event.externalSourceRef ?? ('@hvy.event.hypervisor' | i18n) }}\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered progress\">{{ event.procedureProgress }} %</td>\n <td class=\"o-hvy-events-table__line__cell category\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">\n {{ '@hvy.event.category.' + event.category | i18n }}\n </div>\n @if (event.subCategory && event.subCategory !== 'NONE') {\n <div class=\"o-hvy-events-table__line__cell__name__sub\">\n {{ '@hvy.event.subCategory.' + event.subCategory | i18n }}\n </div>\n }\n </td>\n <td class=\"o-hvy-events-table__line__cell creation-date\">\n {{ event.creationDate | displayLocaleDatetime }}\n </td>\n <td class=\"o-hvy-events-table__line__cell modification-date\">\n {{ event.lastModificationDate | displayLocaleDatetime }}\n </td>\n <td class=\"o-hvy-events-table__line__cell link\">\n @if (!disableGotoDetail) {\n <a\n [routerLink]=\"EVENT_LINK.fn(event, _store)\"\n [title]=\"\n '@hvy.event.consult'\n | i18n: { howMany: Math.max(1, event.linkedEvents), plural: event.linkedEvents > 1 ? 's' : '' }\n \"\n >\n <div class=\"consult-link\">\n <pry-icon iconSvg=\"eye\" [height]=\"30\" [width]=\"40\"></pry-icon>\n @if (event.linkedEvents > 1) {\n <div class=\"indicator-badge\">{{ event.linkedEvents }}</div>\n }\n </div>\n </a>\n }\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","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform {\n transform(value: string, args: any[]): string {\n const limit = args.length > 0 ? parseInt(args[0], 10) : 20;\n const trail = args.length > 1 ? args[1] : '...';\n return (value ?? '').length > limit ? value.substring(0, limit) + trail : value;\n }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {SubscriptionnerDirective} from '@provoly/dashboard';\nimport {displayDate} from '../display-date.function';\nimport {HypEventDetails} from '../../model/event/hyp-event-detail.interface';\nimport {HypServiceTooltip} from '../../model/event/hyp-event-tooltip.interface';\nimport {padId} from \"../pad-id.function\";\nimport {Router} from \"@angular/router\";\nimport {Store} from \"@ngrx/store\";\nimport {HypEventSummary} from \"../../model/event/hyp-event-summary.interface\";\nimport {EVENT_LINK} from \"../../event/list/event-list.component\";\n\n@Component({\n selector: 'hvy-last-events',\n templateUrl: './last-events.component.html'\n})\nexport class LastEventsComponent extends SubscriptionnerDirective implements OnInit{\n protected readonly displayDate = displayDate;\n\n @Input() services: HypServiceTooltip[] = [];\n @Input() events: HypEventDetails[] = [];\n @Output() closeDialogEmit = new EventEmitter<boolean>();\n @Input() closeButton = false;\n\n references: string[] = [];\n\n constructor(private router: Router, private store: Store<any>,) {\n super();\n }\n\n ngOnInit(): void {\n this.services = this.initActionReference(this.services);\n }\n\n closeDialog(){\n this.closeDialogEmit.next(true);\n }\n\n initActionReference(services: HypServiceTooltip[]){\n const statutOrder: { [key: string]: number} = {\n NEW: 0,\n ASKED: 1,\n IN_PROGRESS: 2,\n OT_CLOSED: 3,\n DONE: 3,\n CANCELLED: 5\n\n }\n\n services.forEach((service, index) => {\n if(service.externalId) {\n if(service.additionalInfo) {\n this.references[index] = `${service.externalId}@${service.additionalInfo}`\n } else {\n this.references[index] = service.externalId;\n }\n } else {\n this.references[index] = '';\n }\n })\n return services.sort(function(a,b) {\n return(statutOrder[a.status] - statutOrder[b.status]) || (new Date(b.lastModificationDate).getTime() - new Date(a.lastModificationDate).getTime());\n })\n }\n\n goTo(event: HypEventDetails) {\n const url = this.router.serializeUrl(this.router.createUrlTree(EVENT_LINK.fn(event, this.store)))\n window.open(url, '_blank');\n }\n\n protected readonly padId = padId;\n}\n","@if (events.length > 0) {\n <div class=\"o-hvy-last-events__events\">\n <div>\n <h3>{{ '@chh.event.lastEvents' | i18n }} ({{ events.length }})</h3>\n <div class=\"o-modal__equipment__close\" [hidden]=\"!closeButton\">\n <button class=\"\" (click)=\"closeDialog()\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n </div>\n @for (event of events; track event.id) {\n <div class=\"o-hvy-last-events__events__item\">\n <div class=\"o-hvy-last-events__events__item__icon\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </div>\n <div class=\"o-hvy-event-tooltip-container\">\n <div class=\"o-hvy-last-events__events__item__title\" (click)=\"goTo(event)\">\n <span class=\"goto-link-eve\">{{ padId.fn(event.id) }} - {{ event.name }}</span>\n </div>\n <div class=\"o-hvy-last-events__events__item__descr\">\n <span>{{event.externalSourceRef}} - {{event.creationDate | date : 'dd/MM/yyyy'}}</span>\n </div>\n </div>\n <div class=\"o-hvy-last-events__events__item__status\">\n <hvy-status-display [item]=\"event\"></hvy-status-display>\n </div>\n </div>\n }\n </div>\n}\n@if (services.length > 0) {\n <div class=\"o-hvy-last-events__services\">\n @if ( !events || events.length === 0) {\n <div>\n <h3>{{ '@chh.event.services' | i18n }} ({{ services.length }})</h3>\n <div class=\"o-modal__equipment__close\" [hidden]=\"!closeButton\">\n <button class=\"\" (click)=\"closeDialog()\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n </div>\n } @else {\n <h3>{{ '@chh.event.services' | i18n }} ({{ services.length }})</h3>\n }\n @for (service of services; track service.id) {\n <div class=\"o-hvy-last-events__services__item\">\n <div class=\"o-hvy-last-events__services__item__icon\">\n <pry-icon iconSvg=\"service\"></pry-icon>\n </div>\n <div class=\"o-hvy-last-events__services__item__title\">\n <span>{{ references[$index] }} - {{ '@chh.intervention.' + service.category | i18n }}</span>\n </div>\n <div class=\"o-hvy-last-events__services__item__descr\">\n <span>{{ service.description | truncate: [50, '...'] }}</span>\n </div>\n <div class=\"o-hvy-last-events__services__item__date\">\n @if (service.status === 'ASKED') {\n <span>{{ '@chh.event.startDate' | i18n }} : {{ displayDate(service.startDate) }}</span>\n }\n @if (service.status === 'IN_PROGRESS') {\n <span>{{ '@chh.event.endPlannedDate' | i18n }} : {{ displayDate(service.endDate) }}</span>\n }\n @if (service.status === 'DONE' || service.status === 'OT_CLOSED') {\n <span>{{ '@chh.event.endDate' | i18n }} : {{ displayDate(service.endDate) }}</span>\n }\n @if (service.status === 'NEW') {\n <span>{{ '@chh.event.newDate' | i18n }} : {{ displayDate(service.creationDate) }}</span>\n }\n @if (service.status === 'CANCELLED') {\n <span>{{ '@chh.event.cancelledDate' | i18n }} : {{ displayDate(service.lastModificationDate) }}</span>\n }\n </div>\n <div class=\"o-hvy-last-events__services__item__status\">\n <hvy-status-display [item]=\"service\" type=\"service\"></hvy-status-display>\n </div>\n </div>\n }\n </div>\n}\n","import {PRY_DIALOG_DATA, PryDialogConfirmComponent, PryDialogRef} from '@provoly/dashboard';\nimport { Component, Inject } from '@angular/core';\nimport { HypServiceTooltip } from '../../model/event/hyp-event-tooltip.interface';\n\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-event-detail-tooltip',\n templateUrl: './event-details-tooltip.component.html'\n})\nexport class HvyEventDetailsTooltipComponent {\n constructor(\n private dialog: PryDialogRef<PryDialogConfirmComponent>,\n @Inject(PRY_DIALOG_DATA)\n public data: { events?: HypEventDetails[]; services?: HypServiceTooltip[] }\n ) {}\n\n closeDialog($event: boolean) {\n this.dialog.close($event);\n }\n}\n","@if ((data.events && data.events.length > 0) || (data.services && data.services.length > 0)){\n <div class=\"o-hvy-event-detail-tooltip\">\n <hvy-last-events\n [events]=\"data.events ?? []\"\n [services]=\"data.services ?? []\"\n (closeDialogEmit)=\"closeDialog($event)\"\n [closeButton]=\"true\"\n >\n </hvy-last-events>\n </div>\n} @else {\n <div class=\"o-hvy-event-detail-tooltip o-hvy-event-detail-tooltip__no-data\">\n {{ '@chh.event.noEvents' | i18n }}\n <div class=\"o-modal__equipment__close\">\n <button class=\"\" (click)=\"closeDialog(true)\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n </div>\n}\n","import { HypEvent } from './hyp-event.interface';\nimport { HypComment } from '../comment.interface';\n\nexport interface HypEventDetails extends HypEvent {\n address: string;\n district?: string;\n description: string;\n status: string;\n lastModificationDate: string;\n creationDate: string;\n equipment?: {\n id: string;\n name: string;\n entity: string;\n family: string;\n domain: string;\n district?: string;\n };\n externalSourceRef?: string;\n externalId?: string;\n startDate?: string;\n endDate?: string;\n closeDate: string;\n procedureId?: string;\n linkedEvents: number;\n procedureProgress?: number;\n domain?: string;\n lastComment: HypComment;\n commentCount: number;\n creator: string;\n}\n\nexport const eventForWriteAPI = (event: HypEventDetails) => ({\n ...event,\n equipmentId: event.equipment?.id,\n parent: event.parent && typeof event.parent === 'object' ? event.parent.id : event.parent,\n subCategory: event.category === 'ANOMALY' ? event.subCategory : undefined\n});\n","import { eventForWriteAPI, HypEventDetails } from '../event/hyp-event-detail.interface';\nimport { HypAction } from './hyp-action.interface';\n\nexport interface HypProcedure {\n id: number;\n name: string;\n description: string;\n creationDate: string;\n actions: HypAction[];\n progress: number;\n events: HypEventDetails[];\n closeComment?: string;\n}\n\nexport const procedureForWriteAPI = (procedure: HypProcedure) => ({\n ...procedure,\n events: procedure.events.map(eventForWriteAPI)\n});\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from './event.selectors';\nimport { eventForWriteAPI, HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure, procedureForWriteAPI } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventTooltip } from '../../model/event/hyp-event-tooltip.interface';\nimport { v4 } from 'uuid';\n\nexport const PAGE_SIZE_FETCH = { value: 20 };\n\nexport const KNOWN_FILTER_SETS = {\n EVENTS: 'events',\n SUMMARY: 'summary'\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n list(startWith = 0, pageSize = PAGE_SIZE_FETCH.value): Observable<Array<HypEventDetails>> {\n return this.store.select(HypSelectors.url).pipe(\n withLatestFrom(this.store.select(EventSelectors.filters), this.store.select(EventSelectors.sort)),\n mergeMap(([url, filterSets, sort]) => {\n const filters = filterSets[KNOWN_FILTER_SETS.EVENTS] ?? {};\n let params = new HttpParams();\n Object.keys(filters).forEach((filter) => {\n filters[filter].forEach((filterValue) => {\n params = params.append(filter, filterValue);\n });\n });\n params = params.set('page', startWith / pageSize + 1);\n if (sort) {\n params = params.set('sort', sort.field).set('order', sort.order);\n }\n return this.httpClient.get<Array<HypEventDetails>>(encodeURI(`${url}/events`), { params });\n })\n );\n }\n\n get(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventDetails>(encodeURI(`${url}/events/id/${id}`));\n })\n );\n }\n\n getTooltipInfo(name: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventTooltip>(encodeURI(`${url}/equipments/name/${name}`));\n })\n );\n }\n\n getProcedure(id: number) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedure>(encodeURI(`${url}/procedures/id/${id}`));\n })\n );\n }\n\n save(event: HypEventDetails) {\n const toSend = { ...event } as Partial<HypEventDetails>;\n if (event.id < 0) {\n delete toSend.id;\n }\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n if (!!toSend.id) {\n return this.httpClient.put<HypEventDetails>(\n encodeURI(`${url}/events/id/${toSend.id}`),\n eventForWriteAPI(event)\n );\n }\n return this.httpClient.post<HypEventDetails>(encodeURI(`${url}/events`), eventForWriteAPI(event));\n })\n );\n }\n\n saveProcedure(procedure: HypProcedure) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(\n encodeURI(`${url}/procedures/id/${procedure.id}`),\n procedureForWriteAPI(procedure)\n );\n })\n );\n }\n\n addEventToProcedure(eventId: number, procedure: HypProcedure) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(\n encodeURI(`${url}/procedures/id/${procedure.id}/associate/event/id/${eventId}`),\n {}\n );\n })\n );\n }\n\n status(event: HypEventDetails, status: string, comment: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(encodeURI(`${url}/events/id/${event.id}/close`), {\n id: v4(),\n message: comment\n });\n })\n );\n }\n\n statusProcedure(procedure: HypProcedure, status: string, comment: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(encodeURI(`${url}/procedures/id/${procedure.id}/close`), {\n id: v4(),\n message: comment\n });\n })\n );\n }\n\n associateProcedure(procedureId: number, eventIds: number[]) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<HypProcedure>(\n encodeURI(`${url}/procedures/model/id/${procedureId}/associate`),\n eventIds\n );\n })\n );\n }\n\n export(archived: boolean) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get(encodeURI(`${url}/events/export?archived=${archived}`), {\n observe: 'response',\n responseType: 'arraybuffer'\n });\n })\n );\n }\n\n search(search: string | undefined, fields: string[], statuses: string[] = []): Observable<HypEventDetails[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n params = params.set('sort', 'name').set('order', 'DESC').set('pageSize', '10');\n if (statuses.length > 0) {\n statuses.forEach((status) => {\n params = params.set('status', status);\n });\n }\n if (search && search.length > 0) {\n fields.forEach((field) => {\n params = params.set(field, search);\n });\n }\n return this.httpClient.get<HypEventDetails[]>(encodeURI(`${url}/events`), { params });\n })\n );\n }\n}\n","import { PRY_DIALOG_DATA, PryDialogRef } from '@provoly/dashboard';\nimport { Component, Inject } from '@angular/core';\nimport { debounceTime, Observable, shareReplay, Subject, switchMap } from 'rxjs';\nimport { HypEventDetails } from '../../../model/event/hyp-event-detail.interface';\nimport { HypEventDetailsWithMatching } from '../event-detail.component';\nimport { catchError, map, startWith } from 'rxjs/operators';\nimport { EventService } from '../../../store/event/event.service';\nimport { padId } from '../../../general/pad-id.function';\n\n@Component({\n selector: 'hvy-add-event',\n templateUrl: './add-event.component.html'\n})\nexport class HvyEventAddEventComponent {\n onEventSearch$ = new Subject<void>();\n eventSelectValue: string | HypEventDetails | undefined = undefined;\n events$: Observable<HypEventDetailsWithMatching[]>;\n eventToAdd?: HypEventDetails;\n\n constructor(\n private dialog: PryDialogRef<HvyEventAddEventComponent>,\n @Inject(PRY_DIALOG_DATA)\n public data: {},\n private eventService: EventService\n ) {\n this.events$ = this.onEventSearch$.pipe(startWith(), debounceTime(500)).pipe(\n switchMap(() => {\n const search =\n typeof this.eventSelectValue === 'string' && (this.eventSelectValue as string).length > 2\n ? (this.eventSelectValue as string)\n : undefined;\n return this.eventService.search(search, ['name', 'id'], ['NEW']).pipe(\n map((events) =>\n events.map((event) => {\n const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');\n const html = `${padId.fn(event.id)} - ${event.name}`;\n return {\n ...event,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`),\n displayName: html\n } as HypEventDetailsWithMatching;\n })\n )\n );\n }),\n catchError(() => {\n throw new Error('Search Equipment problem');\n }),\n shareReplay()\n );\n }\n\n selectedEventChange($event: any) {\n this.eventSelectValue = $event;\n this.onEventSearch$.next();\n if (typeof $event === 'object') {\n this.eventToAdd = $event;\n } else {\n this.eventToAdd = undefined;\n }\n }\n\n closeModal() {\n this.dialog.close({ value: 'cancel' });\n }\n\n add() {\n this.dialog.close({ value: 'add', event: this.eventToAdd });\n }\n}\n","<div class=\"o-hvy-event-detail-add\">\n <h3>{{ '@hvy.event.add.title' | i18n }}</h3>\n <p>{{ '@hvy.event.add.description' | i18n }}</p>\n\n <div class=\"o-hvy-event-detail-add__container\">\n <label for=\"event\">{{ '@hvy.event.add.search' | i18n }}<span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventToAdd\"\n (ngModelChange)=\"selectedEventChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"event\"\n [template]=\"templateOption\"\n class=\"o-hvy-event-detail-add__event\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-hvy-event-detail-add__buttons\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!eventToAdd\" (click)=\"add()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport {EquipmentForEvent, HypEquipment} from '../../model/hyp-equipment.interface';\nimport { HypEventTooltipBase } from '../../model/event/hyp-event-tooltip.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EquipmentService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n findByName(name: string): Observable<HypEventTooltipBase> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventTooltipBase>(encodeURI(`${url}/equipments/name/${name}`));\n })\n );\n }\n\n list() {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEquipment[]>(encodeURI(`${url}/equipments`));\n })\n );\n }\n\n search(search: string | undefined, domain ?: string): Observable<EquipmentForEvent[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n params = params.set('sort', 'name').set('order', 'DESC').set('pageSize', '10');\n if (search) params = params.set('search', search);\n if (domain) params = params.set('domain', domain);\n return this.httpClient.get<EquipmentForEvent[]>(encodeURI(`${url}/equipments`), { params });\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable, of, shareReplay } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypComment } from '../../model/comment.interface';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HypCommentsService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n get(id: number | string, type: 'events' | 'actions'): Observable<HypComment[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypComment[]>(encodeURI(`${url}/${type}/id/${id}/comments`));\n }),\n catchError(() => {\n console.error(`Unable to load comments for event id: ${id}`);\n return of([]);\n }),\n shareReplay()\n );\n }\n\n save(id: number | string, type: 'events' | 'actions', comment: { id: string; message: string }) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.put<HypComment[]>(encodeURI(`${url}/${type}/id/${id}/comments`), comment);\n })\n );\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvy-progress-display',\n templateUrl: './progress-display.component.html'\n})\nexport class ProgressDisplayComponent {\n private _progress = 50;\n\n @Input() set progress(progress: number) {\n this._progress = isNaN(progress) ? 0 : progress;\n }\n\n get progress() {\n return this._progress ?? 0;\n }\n}\n","<div class=\"o-progressbar\">\n <div class=\"o-progressbar__header\">\n <div>0%</div>\n @if (progress > 0 && progress < 100) {\n <div [style.flex-grow]=\"progress\" class=\"-value\">{{ progress }}%</div>\n }\n <div [style.flex-grow]=\"progress === 100 ? 100 : 100 - progress\">100%</div>\n </div>\n <div class=\"o-progressbar__value\">\n <div [style.flex-grow]=\"progress\" class=\"-filled\"></div>\n <div [style.flex-grow]=\"100 - progress\" class=\"-empty\"></div>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { HypComment } from '../../model/comment.interface';\nimport { v4 } from 'uuid';\nimport { Subject, Subscription } from 'rxjs';\nimport { HypCommentsService } from '../../store/comments/comments.service';\n\nexport type HypAugmentedComment = HypComment & {\n day: string;\n hour: string;\n edit: boolean;\n previousMessage: string;\n};\n\n@Component({\n selector: 'hvy-comments',\n templateUrl: './comments.component.html'\n})\nexport class HvyCommentsComponent implements OnDestroy {\n @Input() readonly: boolean | null = false;\n newComment = '';\n @Output() commented = new EventEmitter<{ id: string; message: string }>();\n more = false;\n @Input() me: string | null | undefined;\n @Input() type: 'actions' | 'events' = 'events';\n @Input() objectId?: string | number;\n @Input() displayEmpty = true;\n @Input() commentCount = 0;\n @ViewChild('message') message!: ElementRef<HTMLTextAreaElement>;\n opened = false;\n subTrigger?: Subscription;\n additionnalComments: HypAugmentedComment[] = [];\n _lastComment: HypAugmentedComment | undefined;\n @Input() set lastComment(comment: HypComment | undefined) {\n this._lastComment = !comment\n ? undefined\n : ({\n ...comment,\n day: new Date(comment.lastModificationDate).toLocaleDateString(),\n hour: new Date(comment.lastModificationDate)\n .toLocaleTimeString()\n .substring(0, new Date(comment.lastModificationDate).toLocaleTimeString().lastIndexOf(':')),\n edit: false,\n previousMessage: comment.message\n } as HypAugmentedComment);\n }\n\n @Input() set trigger(trigger$: Subject<boolean>) {\n this.subTrigger?.unsubscribe();\n this.subTrigger = trigger$.subscribe((opened) => (this.opened = opened ?? !this.opened));\n }\n\n constructor(private commentsService: HypCommentsService) {}\n\n ngOnDestroy(): void {\n this.subTrigger?.unsubscribe();\n }\n\n get comments(): HypAugmentedComment[] {\n return [this._lastComment, ...this.additionnalComments].filter((com) => !!com) as HypAugmentedComment[];\n }\n\n addComment() {\n this.commented.next({ id: v4(), message: this.newComment });\n this.newComment = '';\n this.more = false;\n }\n\n editComment(comment: HypAugmentedComment) {\n comment.edit = true;\n setTimeout(() => {\n this.message.nativeElement.focus();\n }, 200);\n }\n\n saveComment(comment: HypAugmentedComment) {\n this.commented.next({ id: comment.id, message: comment.message });\n comment.edit = false;\n this.more = false;\n }\n\n cancel(comment: HypAugmentedComment) {\n comment.message = comment.previousMessage;\n comment.edit = false;\n }\n\n toggleMore() {\n if (!this.more) {\n this.commentsService.get(this.objectId!, this.type).subscribe((comments) => {\n this.additionnalComments = comments\n .filter((comment) => comment.id !== this._lastComment?.id)\n .map(\n (comment: HypComment) =>\n ({\n ...comment,\n day: new Date(comment.lastModificationDate).toLocaleDateString(),\n hour: new Date(comment.lastModificationDate)\n .toLocaleTimeString()\n .substring(0, new Date(comment.lastModificationDate).toLocaleTimeString().lastIndexOf(':')),\n edit: false,\n previousMessage: comment.message\n }) as HypAugmentedComment\n );\n this.more = !this.more;\n });\n } else {\n this.more = !this.more;\n }\n }\n\n toggle() {\n this.opened = !this.opened;\n }\n}\n","<div class=\"o-hvy-comments\">\n @if (displayEmpty || commentCount > 0 || opened) {\n <div class=\"o-hvy-comments__header\">\n @if (type === 'actions') {\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened\"\n class=\"-hand\"\n (click)=\"toggle()\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n }\n <h3>\n {{\n (type === 'events' ? '@hvy.event.log.event.comments.name' : '@hvy.event.log.event.comments.actions')\n | i18n: { nb: commentCount }\n }}\n </h3>\n </div>\n\n @if (!readonly && (displayEmpty || opened)) {\n <textarea\n class=\"a-form-field\"\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComment\"\n maxlength=\"255\"\n ></textarea>\n <div class=\"o-hvy-comments__button\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"newComment.length === 0\" (click)=\"addComment()\">\n {{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n }\n\n @if (displayEmpty || opened) {\n @for (comment of comments; track comment.id) {\n @if ($first || more) {\n <div class=\"o-hvy-comments__previous\">\n <span class=\"o-hvy-comments__previous__title\">{{\n ($first && commentCount > 1 ? '@hvy.event.comment.lastDetail' : '@hvy.event.comment.detail')\n | i18n\n : {\n day: comment.day,\n hour: comment.hour,\n creator: comment.creatorName ?? '-'\n }\n }}</span>\n <div class=\"o-hvy-comments__previous__message\">\n <textarea\n class=\"a-form-field\"\n [(ngModel)]=\"comment.message\"\n [readonly]=\"!comment.edit\"\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n maxlength=\"255\"\n #message\n ></textarea>\n @if (!readonly && (!me || comment.creator === me)) {\n <button (click)=\"editComment(comment)\" [disabled]=\"comment.edit\">\n <pry-icon iconSvg=\"edit\" [height]=\"18\" [width]=\"18\"></pry-icon>\n </button>\n }\n </div>\n @if (comment.edit) {\n <div class=\"o-hvy-comments__previous__actions\">\n <button\n class=\"a-btn a-btn--primary\"\n [disabled]=\"comment.message.length === 0\"\n (click)=\"saveComment(comment)\"\n >\n {{ '@hvy.action.update' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"cancel(comment)\">\n {{ '@hvy.action.cancel' | i18n }}\n </button>\n </div>\n }\n </div>\n }\n }\n @if (commentCount > 1) {\n <div class=\"o-hvy-comments__more\">\n <button (click)=\"toggleMore()\">\n {{ (more ? '@hvy.event.comment.less' : '@hvy.event.comment.more') | i18n }}\n </button>\n </div>\n }\n }\n }\n</div>\n","import { Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { PRY_DIALOG_DATA, PryDialogRef } from '@provoly/dashboard';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\n\nexport interface HvyActionMenuData {\n action: HypAction;\n mode: string;\n enableEditActions: boolean;\n}\n\n@Component({\n selector: 'pry-action-menu',\n templateUrl: './action-menu.component.html'\n})\nexport class HvyActionMenuComponent {\n @Output() choice = new EventEmitter();\n\n constructor(\n private dialog: PryDialogRef<HvyActionMenuComponent>,\n @Inject(PRY_DIALOG_DATA) public data: HvyActionMenuData\n ) {}\n\n action(value: string) {\n this.dialog.close(value);\n }\n}\n","<div class=\"o-hvy-action-menu\">\n @if (data.mode === 'procedure') {\n <button\n (click)=\"action('comment')\"\n [disabled]=\"!data.action.commentsCount && data.action.commentsCount !== 0\"\n >\n {{ '@hvy.procedure.action.comment' | i18n }}\n </button>\n }\n @if (data.action.status === 'NEW' && data.enableEditActions) {\n <button (click)=\"action('update')\">{{ '@hvy.procedure.action.update' | i18n }}</button>\n }\n @if (data.action.status !== 'DONE' && data.action.status !== 'IN_PROGRESS' && data.enableEditActions) {\n <button (click)=\"action('delete')\">{{ '@hvy.procedure.action.delete' | i18n }}</button>\n }\n @if (data.action.status !== 'DONE' && data.mode === 'procedure') {\n <button (click)=\"action('done')\">{{ '@hvy.procedure.action.done' | i18n }}</button>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { HypAction } from '../../../model/procedure/hyp-action.interface';\nimport { HypEventDetails } from '../../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-base-action-parameter',\n template: ' <p>not used</p>'\n})\nexport class HvyBaseParameterActionComponent<T extends HypAction> {\n _action!: any;\n _events: HypEventDetails[] = [];\n @Input() mode: 'model' | 'procedure' = 'procedure';\n @Input() readonly!: null | boolean;\n @Input() disableSaveDIButton: boolean = false;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events;\n }\n\n get events() {\n return this._events;\n }\n\n @Input() set action(action: T) {\n this._action = action as T;\n }\n\n get action() {\n return this._action;\n }\n\n constructor() {}\n}\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypOtherAction } from './other-action-display.component';\n\n@Component({\n selector: 'hvy-other-action-parameter',\n templateUrl: './other-action-parameter.component.html'\n})\nexport class HvyOtherActionParameterComponent extends HvyBaseParameterActionComponent<HypOtherAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p class=\"param-line__short\">{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"50\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.other' | i18n\"\n />\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\nexport interface HypOtherAction extends HypAction {\n name: string;\n}\n\n@Component({\n selector: 'hvy-other-action-display',\n templateUrl: './other-action-display.component.html'\n})\nexport class HvyOtherActionDisplayComponent extends HvyBaseParameterActionComponent<HypOtherAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }} : <b>{{ action.name | i18n }}</b>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypEmailAction } from './email-action-display.component';\n\n@Component({\n selector: 'hvy-email-action-parameter',\n templateUrl: './email-action-parameter.component.html'\n})\nexport class HvyEmailActionParameterComponent extends HvyBaseParameterActionComponent<HypEmailAction> {\n static PATTERN = new RegExp(/^\\w+([.-]\\w+)*@\\w+([.-]\\w+)*(\\.\\w{2,3})+/);\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"30\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.name' | i18n\"\n />\n <p class=\"to\">{{ '@hvy.procedure.action.at' | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.email\"\n class=\"a-form-field\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.email' | i18n\"\n />\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\nexport interface HypEmailAction extends HypAction {\n name: string;\n email: string;\n}\n\n@Component({\n selector: 'hvy-email-action-display',\n templateUrl: './email-action-display.component.html'\n})\nexport class HvyEmailActionDisplayComponent extends HvyBaseParameterActionComponent<HypEmailAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }} <b>{{ action.name | i18n }}</b>\n {{ '@hvy.procedure.action.at' | i18n }} <b>{{ action.email | i18n }}</b>\n </p>\n</div>\n","import {Injectable} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {mergeMap, Observable, Subject} from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\n\nexport interface HypServiceType {\n name: string;\n domain: string;\n gti: number;\n gtr: number;\n gtrp: number;\n}\n\nexport interface HypService {\n name: string;\n equipment: string;\n priority: string;\n type: string;\n description: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServiceService {\n public refreshDiAction = new Subject();\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n types(): Observable<HypServiceType[]> {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypServiceType[]>(encodeURI(`${url}/servicesType`));\n })\n );\n }\n\n create(service: HypService, actionId: string) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.post<{ id: string }>(encodeURI(`${url}/services/external/id/${actionId}`), service);\n })\n );\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { PRY_DIALOG_DATA, PryDialogRef, PryI18nService, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEquipment } from '../../../../model/hyp-equipment.interface';\nimport { HypServiceAction } from './service-action-display.component';\nimport { HypServiceType, ServiceService } from '../../../../store/service/service.service';\nimport { DOMAINS } from '../../../../model/domains.constant';\nimport { HypEventDetails } from '../../../../model/event/hyp-event-detail.interface';\n\nexport type HypCreateServiceResult = {\n value: string;\n name: string;\n equipment: string;\n domain: string;\n priority: string;\n type: string;\n description: string;\n gti?: string;\n gtr?: string;\n gtrp?: string;\n};\n\n@Component({\n selector: 'pry-create-service',\n templateUrl: './create-service.component.html'\n})\nexport class HvyCreateServiceComponent extends SubscriptionnerDirective {\n result: HypCreateServiceResult = {\n value: 'cancel',\n name: '',\n domain: '',\n priority: '',\n equipment: '',\n type: '',\n description: ''\n };\n errors: string[] = [];\n types: HypServiceType[] = [];\n priorities = ['1-MINEUR', '2-MAJEUR', '3-BLOQUANT'];\n domains = DOMAINS.values;\n equipments: (HypEquipment | { displayName: string })[] = [];\n allowedTypes: HypServiceType[] = [];\n\n constructor(\n private dialog: PryDialogRef<HvyCreateServiceComponent>,\n @Inject(PRY_DIALOG_DATA) public data: { action: HypServiceAction; events: HypEventDetails[] },\n private serviceService: ServiceService,\n private i18nService: PryI18nService\n ) {\n super();\n this.result.name =\n this.data.events && this.data.events.length > 0 ? this.data.events[0].name : this.data.action.name;\n this.equipments = [\n {\n displayName: this.i18nService.instant('@hvy.service.noEquip'),\n id: '__NO_EQUIPMENT__'\n },\n ...this.data.events\n .filter((ev) => !!ev.equipment)\n .map((ev) => ({\n ...ev.equipment,\n displayName: `${ev.equipment?.name} - ${this.i18nService.instant('@hvy.event.family.' + ev.equipment?.family)}`\n }))\n ].filter((obj, index, arr) =>\n {\n return arr.findIndex(o =>\n {\n return JSON.stringify(o) === JSON.stringify(obj)\n }) === index\n });\n\n this.serviceService.types().subscribe((types) => {\n this.types = types;\n this.updateAllowedTypes();\n });\n }\n\n action(value: string) {\n this.result.value = value;\n this.dialog.close(this.result);\n }\n\n onEquipmentChange($event: string) {\n this.result.equipment = $event;\n const equipment = (\n this.equipments.filter((equipment) => equipment.hasOwnProperty('domain')) as HypEquipment[]\n ).find((equip) => equip.id === $event);\n if (equipment) {\n this.result.domain = (equipment as HypEquipment).domain;\n }\n this.check();\n }\n\n onDescriptionChange($event: string) {\n this.result.description = $event;\n this.check();\n }\n\n onTypeChange($event: string) {\n this.result.type = $event;\n const typeValue = this.types.find((type) => type.name === $event) ?? {\n gti: '-',\n gtr: '-',\n gtrp: '-'\n };\n this.result.gti = (typeValue.gti ?? '-') + '';\n this.result.gtr = (typeValue.gtr ?? '-') + '';\n this.result.gtrp = (typeValue.gtrp ?? '-') + '';\n this.check();\n }\n\n onPriorityChange($event: any) {\n this.result.priority = $event;\n this.check();\n }\n\n onDomainChange($event: string) {\n this.result.domain = $event;\n this.updateAllowedTypes();\n this.check();\n }\n\n hasError(type: string) {\n return this.errors.includes(type);\n }\n\n check() {\n this.errors = [];\n if (!this.result.name || this.result.name.length === 0) {\n this.errors.push('name');\n }\n if (!this.result.equipment || this.result.equipment.length === 0) {\n this.errors.push('target');\n }\n if (!this.result.description || this.result.description.length === 0) {\n this.errors.push('description');\n }\n if (!this.result.type || this.result.type.length === 0) {\n this.errors.push('type');\n }\n if (!this.result.priority || this.result.priority.length === 0) {\n this.errors.push('priority');\n }\n if (!this.result.domain || this.result.domain.length === 0) {\n this.errors.push('domain');\n }\n }\n\n createDI() {\n this.dialog.close({\n ...this.result,\n equipment: this.result.equipment === '__NO_EQUIPMENT__' ? null : this.result.equipment,\n value: 'ok'\n });\n }\n\n closeModal() {\n this.dialog.close({ value: 'cancel' });\n }\n\n private updateAllowedTypes() {\n this.allowedTypes = this.types.filter(\n (type) => !this.result.domain || this.result.domain.length === 0 || type.domain === this.result.domain\n );\n }\n}\n","<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"allowedTypes\"\n [ngModel]=\"result.type\"\n (ngModelChange)=\"onTypeChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('type')\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n","import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\nimport { PryDialogService, I18nPipe } from '@provoly/dashboard';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { HvyCreateServiceComponent } from './create-service.component';\nimport { HypService, ServiceService } from '../../../../store/service/service.service';\nimport { act } from '@ngrx/effects';\n\nexport interface HypServiceAction extends HypAction {\n name: string;\n serviceExternalId?: string;\n serviceAdditionalInfo?: string;\n serviceStatus?: string;\n}\n\n@Component({\n selector: 'hvy-service-action-display',\n templateUrl: './service-action-display.component.html'\n})\nexport class HvyServiceActionDisplayComponent extends HvyBaseParameterActionComponent<HypServiceAction> implements OnInit{\n @ViewChild('menuButton', { read: ElementRef }) menuButton!: ElementRef;\n status!: string;\n reference!: string;\n\n constructor(\n private pryDialog: PryDialogService,\n private overlay: Overlay,\n private serviceService: ServiceService,\n private i18n: I18nPipe\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.status = this.action.serviceStatus ?\n '(' + this.i18n.transform(`@hvy.procedure.status.${this.action.serviceStatus}`) + ')' : '';\n this.initActionReference();\n }\n\n initActionReference(){\n if(this.action.serviceExternalId) {\n if(this.action.serviceAdditionalInfo) {\n this.reference = `${this.action.serviceExternalId}@${this.action.serviceAdditionalInfo}`\n } else {\n this.reference = this.action.serviceExternalId;\n }\n } else {\n this.reference = this.action.name;\n }\n }\n\n toggleModal() {\n const dialogRef = this.pryDialog.open(HvyCreateServiceComponent, {\n overlayConfig: {\n hasBackdrop: true,\n panelClass: ['pry-dialog-container'],\n backdropClass: 'backdrop-dark',\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically()\n },\n data: {\n action: this.action,\n events: this.events\n }\n });\n\n const sub = dialogRef.closeValue.subscribe((type: HypService & { value: string }) => {\n switch (type.value) {\n case 'ok':\n this.serviceService\n .create(type, this.action.id)\n .subscribe((name) => {\n this.action.serviceExternalId = name.id;\n this.initActionReference();\n this.serviceService.refreshDiAction.next(true);\n });\n break;\n case 'cancel':\n break;\n }\n setTimeout(() => {\n sub.unsubscribe();\n }, 100);\n });\n }\n\n protected readonly act = act;\n}\n","<div class=\"param-line -vertical\">\n <p>\n {{ '@hvy.procedure.action.service' | i18n }} : <b>{{ reference }}</b> {{ status }}\n </p>\n @if (!action.serviceExternalId && this.mode !== 'model') {\n <button\n class=\"a-link\"\n [disabled]=\"readonly ||\n (action.type === 'ASKED_SERVICE' &&\n (action.status === 'DONE' || action.status === 'OT_CLOSED' || !action.lastModificationDate)\n ) || disableSaveDIButton\"\n (click)=\"toggleModal()\"\n #menuButton\n >\n > {{ '@hvy.action.create' | i18n }}\n </button>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypServiceAction } from './service-action-display.component';\n\n@Component({\n selector: 'hvy-service-action-parameter',\n templateUrl: './service-action-parameter.component.html'\n})\nexport class HvyServiceActionParameterComponent extends HvyBaseParameterActionComponent<HypServiceAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p class=\"param-line__short\">{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"50\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.service' | i18n\"\n />\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\nexport interface HypPhoneAction extends HypAction {\n name: string;\n number: string;\n}\n\n@Component({\n selector: 'hvy-phone-action-display',\n templateUrl: './phone-action-display.component.html'\n})\nexport class HvyPhoneActionDisplayComponent extends HvyBaseParameterActionComponent<HypPhoneAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }} <b>{{ action.name | i18n }}</b>\n {{ '@hvy.procedure.action.to' | i18n }} <b>{{ action.number | i18n }}</b>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypPhoneAction } from './phone-action-display.component';\n\n@Component({\n selector: 'hvy-phone-action-parameter',\n templateUrl: './phone-action-parameter.component.html'\n})\nexport class HvyPhoneActionParameterComponent extends HvyBaseParameterActionComponent<HypPhoneAction> {\n static PATTERN_PHONE = new RegExp('^(?:(?:\\\\+|00)33|0)[1-9][0-9]{8}$');\n static PATTERN_SMS = new RegExp('^(?:(?:\\\\+|00)33|0)[6-7][0-9]{8}$');\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>{{ '@hvy.procedure.action.question.' + action.type | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.name\"\n class=\"a-form-field\"\n maxlength=\"30\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.name' | i18n\"\n />\n <p class=\"to\">{{ '@hvy.procedure.action.to' | i18n }}</p>\n <input\n type=\"text\"\n [(ngModel)]=\"_action.number\"\n class=\"a-form-field phone\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.phone' | i18n\"\n [maxlength]=\"12\"\n />\n</div>\n","import { Type } from '@angular/core';\nimport { HvyOtherActionParameterComponent } from './action-parameters/other/other-action-parameter.component';\nimport { HvyBaseParameterActionComponent } from './action-parameters/base-parameter-action.component';\nimport { HvyOtherActionDisplayComponent } from './action-parameters/other/other-action-display.component';\nimport { HvyEmailActionParameterComponent } from './action-parameters/email/email-action-parameter.component';\nimport { HvyEmailActionDisplayComponent } from './action-parameters/email/email-action-display.component';\nimport { HvyServiceActionDisplayComponent } from './action-parameters/service/service-action-display.component';\nimport { HvyServiceActionParameterComponent } from './action-parameters/service/service-action-parameter.component';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { HvyPhoneActionDisplayComponent } from './action-parameters/phone/phone-action-display.component';\nimport { HvyPhoneActionParameterComponent } from './action-parameters/phone/phone-action-parameter.component';\n\nexport const ACTIONS_TYPES = {\n values: {\n PHONE: {\n display: HvyPhoneActionDisplayComponent,\n parameter: HvyPhoneActionParameterComponent,\n validator: (action) =>\n !!action.name && !!action.number && action.number.match(HvyPhoneActionParameterComponent.PATTERN_PHONE),\n order: 100\n },\n SMS: {\n display: HvyPhoneActionDisplayComponent,\n parameter: HvyPhoneActionParameterComponent,\n validator: (action) =>\n !!action.name && !!action.number && action.number.match(HvyPhoneActionParameterComponent.PATTERN_SMS),\n order: 200\n },\n OTHER: {\n display: HvyOtherActionDisplayComponent,\n parameter: HvyOtherActionParameterComponent,\n validator: (action) => !!action.name,\n order: 500\n },\n ASKED_SERVICE: {\n display: HvyServiceActionDisplayComponent,\n parameter: HvyServiceActionParameterComponent,\n validator: (action) => !!action.name,\n order: 400\n },\n EMAIL: {\n display: HvyEmailActionDisplayComponent,\n parameter: HvyEmailActionParameterComponent,\n validator: (action) =>\n !!action.name && !!action.email && action.email.match(HvyEmailActionParameterComponent.PATTERN),\n order: 300\n }\n } as {\n [key: string]: {\n display: undefined | Type<HvyBaseParameterActionComponent<HypAction>>;\n parameter: undefined | Type<HvyBaseParameterActionComponent<HypAction>>;\n validator: undefined | ((action: any) => boolean);\n order: number;\n };\n }\n};\n","import { Component, ComponentRef, Input, Type, ViewChild, ViewContainerRef } from '@angular/core';\nimport { HypAction } from '../../../model/procedure/hyp-action.interface';\nimport { ACTIONS_TYPES } from '../actions-types.constant';\nimport { HvyBaseParameterActionComponent } from './base-parameter-action.component';\nimport { HypEventDetails } from '../../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-action-parameter',\n templateUrl: './action-parameter.component.html'\n})\nexport class HvyActionParameterComponent {\n @ViewChild('ref', { read: ViewContainerRef }) ref!: ViewContainerRef;\n _action?: HypAction;\n _type: string = '';\n private componentRef?: ComponentRef<HvyBaseParameterActionComponent<HypAction>>;\n param = false;\n _events: HypEventDetails[] = [];\n @Input() mode: 'model' | 'procedure' = 'procedure';\n @Input() readonly!: null | boolean;\n @Input() disableSaveDIButton: boolean = false;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events;\n if (this.componentRef) {\n this.componentRef.instance.events = this._events as any;\n this.componentRef.instance.disableSaveDIButton = this.disableSaveDIButton;\n }\n }\n\n @Input() set isParam(param: boolean) {\n this.param = param;\n this.updateParameterComponent();\n }\n\n @Input() set type(type: string) {\n this._type = type;\n this.updateParameterComponent();\n }\n\n @Input() set action(action: any) {\n this._action = action;\n this.updateParameterComponent();\n }\n\n constructor() {}\n\n private updateParameterComponent() {\n if (!!this._action && !!this._type) {\n setTimeout(() => {\n this.componentRef?.destroy();\n\n const component = ACTIONS_TYPES.values[this._type ?? ''][this.param ? 'parameter' : 'display'] as\n | Type<HvyBaseParameterActionComponent<HypAction>>\n | undefined;\n if (!!component) {\n this.componentRef = this.ref.createComponent<HvyBaseParameterActionComponent<HypAction>>(component);\n this.componentRef.instance.action = this._action as any;\n this.componentRef.instance.events = this._events as any;\n this.componentRef.instance.mode = this.mode;\n this.componentRef.instance.readonly = this.readonly;\n }\n });\n }\n }\n}\n","<div #ref></div>\n","import { Component, ElementRef, EventEmitter, Input, model, Output, QueryList, ViewChildren } from '@angular/core';\nimport { PryDialogService, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { v4 } from 'uuid';\nimport { HvyActionMenuComponent, HvyActionMenuData } from './action-menu.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ACTIONS_TYPES } from './actions-types.constant';\nimport { HypCommentsService } from '../../store/comments/comments.service';\nimport { Subject } from 'rxjs';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypComment } from '../../model/comment.interface';\nimport { ServiceService } from '../../store/service/service.service';\n\n@Component({\n selector: 'hvy-procedure-actions',\n templateUrl: './procedure-actions.component.html'\n})\nexport class ProcedureActionsComponent extends SubscriptionnerDirective {\n static CARD_HEIGHT = 75;\n movingAction?: HypAction;\n moveStart = 0;\n moveInitialIndex = 0;\n initialActionList: HypAction[] = [];\n previousOffset = 0;\n dragTarget?: EventTarget | null;\n @Output() modified = new EventEmitter<HypAction[]>();\n @Output() commented = new EventEmitter<{ action: HypAction; comments: HypComment[] }>();\n @Input() mode: 'model' | 'procedure' = 'procedure';\n @Input() me: string | null | undefined;\n @Input() readonly: boolean | null = false;\n @Input() readOnlyComment: boolean | null = false;\n @Input() enableEditActions: boolean | null = false;\n @Input() events: HypEventDetails[] = [];\n @Input() disableSaveDIButton: boolean = false;\n @Input() initialActions: HypAction[] | undefined = [];\n @Input() procedureModificationsActions: HypAction[] | undefined = []\n ACTIONS_TYPES: string[];\n _actions: HypAction[] = [];\n @ViewChildren('menuButton', { read: ElementRef }) menuButtons!: QueryList<ElementRef>;\n triggers: { [p: string]: Subject<boolean> } = {};\n ignoreFirstEvent = true;\n\n constructor(\n private pryDialog: PryDialogService,\n private overlay: Overlay,\n private commentsService: HypCommentsService,\n private serviceService: ServiceService\n ) {\n super();\n this.ACTIONS_TYPES = Object.keys(ACTIONS_TYPES.values);\n this.ACTIONS_TYPES.sort((a, b) => ACTIONS_TYPES.values[a].order - ACTIONS_TYPES.values[b].order);\n this.subscriptions.add(\n this.serviceService.refreshDiAction.subscribe((result) => {\n if (result) {\n this.refreshActions.next(this.actions);\n }\n })\n );\n }\n\n @Input() set actions(actions: HypAction[]) {\n this._actions = JSON.parse(JSON.stringify(actions ?? []));\n this.triggers = this.actions\n .map((a) => ({ [a.id]: new Subject<boolean>() }))\n .reduce((p, c) => ({ ...p, ...c }), {});\n }\n\n @Output() refreshActions = new EventEmitter<HypAction[]>();\n\n get actions() {\n return this._actions;\n }\n\n get editing() {\n return !!this.actions.find((action) => action._status);\n }\n\n isAskedServiceWithoutExternalId() {\n return !!this.actions.find(action => !action.serviceExternalId && action.type === 'ASKED_SERVICE')\n }\n\n onMouseDown($event: MouseEvent) {\n this.dragTarget = $event.target;\n }\n\n dragStart($event: MouseEvent, action: HypAction, index: number) {\n if (this.dragTarget && (this.dragTarget as HTMLDivElement).style.maskImage.indexOf('six_dot') > -1) {\n this.movingAction = action;\n this.moveStart = $event.clientY;\n this.moveInitialIndex = index;\n this.initialActionList = [...this.actions];\n } else {\n $event.preventDefault();\n }\n }\n\n disabledCheckbox(action: HypAction) {\n return action.status === 'DONE' ||\n action.status === 'OT_CLOSED' ||\n this.editing ||\n (this.readonly ?? false)\n }\n\n move($event: MouseEvent) {\n $event.preventDefault();\n if (this.movingAction) {\n const offsetInCards = Math.round(($event.clientY - this.moveStart) / ProcedureActionsComponent.CARD_HEIGHT);\n if (this.previousOffset !== offsetInCards) {\n this.previousOffset = offsetInCards;\n const newIndex = Math.min(\n Math.max(this.moveInitialIndex + offsetInCards, 0),\n this.initialActionList.length - 1\n );\n const newActions = [...this.initialActionList];\n const element = newActions.splice(this.moveInitialIndex, 1)[0];\n newActions.splice(newIndex, 0, element);\n\n this.modified.next(newActions);\n }\n }\n }\n\n drop($event: MouseEvent) {\n $event.preventDefault();\n this.move($event);\n this.movingAction = undefined;\n }\n\n allowDrop($event: MouseEvent) {\n $event.preventDefault();\n }\n\n toggleActionStatus(index: number, $event: MouseEvent, disabled: boolean) {\n $event.preventDefault();\n if (!disabled) {\n const newActions = [...this.actions];\n if (newActions[index].status !== 'DONE') {\n newActions[index] = {\n ...newActions[index],\n status: newActions[index].status === 'NEW' ? 'IN_PROGRESS' : 'NEW'\n };\n this.modified.next(newActions);\n }\n }\n }\n\n add() {\n this.actions.push({ type: '', status: 'NEW', id: v4(), _status: 'create' } as HypAction);\n this.modified.next(this.actions);\n }\n\n protected readonly model = model;\n\n update(idx: number, prop: string, $event: any) {\n // @ts-ignore\n this.actions[idx][prop] = $event;\n if (!this.ignoreFirstEvent) {\n this.clearAction(idx);\n }\n this.ignoreFirstEvent = false;\n }\n\n clearAction(idx: number) {\n const { type, status, id, _status, _initial } = this.actions[idx];\n this.actions[idx] = { type, status, id, _status, _initial } as HypAction;\n }\n\n openModal(action: HypAction, idx: number) {\n const dialogRef = this.pryDialog.open(HvyActionMenuComponent, {\n overlayConfig: {\n hasBackdrop: true,\n panelClass: ['pry-dialog-container'],\n backdropClass: 'backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.menuButtons.get(idx)!)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n },\n data: {\n action,\n mode: this.mode,\n enableEditActions: this.enableEditActions\n } as HvyActionMenuData\n });\n\n const sub = dialogRef.closeValue.subscribe((type) => {\n switch (type) {\n case 'comment':\n this.triggers[action.id].next(true);\n break;\n case 'update':\n action._initial = JSON.parse(JSON.stringify(action));\n action._status = 'modify';\n break;\n case 'delete':\n this.actions.splice(idx, 1);\n break;\n case 'done':\n action.status = 'DONE';\n }\n this.modified.next(this.actions);\n setTimeout(() => {\n sub.unsubscribe();\n }, 100);\n });\n this.ignoreFirstEvent = true;\n }\n\n saveAction(action: HypAction, idx: number) {\n delete action._initial;\n delete action._status;\n this.modified.next(this.actions);\n }\n\n cancelAction(action: HypAction, idx: number) {\n if (action._status === 'modify') {\n this.actions[idx] = { ...action._initial! };\n delete this.actions[idx]._initial;\n delete this.actions[idx]._status;\n } else if (action._status === 'create') {\n this.actions.splice(idx, 1);\n } else {\n throw new Error('Cannot happen');\n }\n this.modified.next(this.actions);\n }\n\n isValid(action: HypAction) {\n return (\n action.type &&\n (ACTIONS_TYPES.values[action.type].validator === undefined ||\n ACTIONS_TYPES.values[action.type].validator!(action))\n );\n }\n\n isDraggable(action: HypAction) {\n return !this.editing && action.status === 'NEW' && !this.readonly && this.enableEditActions;\n }\n\n updateComment(action: HypAction, comment: { id: string; message: string }) {\n this.commentsService.save(action.id, 'actions', comment).subscribe(() => {\n this.commentsService.get(action.id, 'actions').subscribe((comments) => {\n this.commented.next({ action, comments });\n });\n });\n }\n}\n","<div\n class=\"o-hvy-events-detail__procedure__actions\"\n (drag)=\"move($event)\"\n (drop)=\"drop($event)\"\n (dragover)=\"allowDrop($event)\"\n>\n @for (action of actions; track action.id; let idx = $index) {\n <div\n class=\"o-hvy-events-detail__procedure__actions__action\"\n [draggable]=\"isDraggable(action) && !readonly\"\n (dragstart)=\"dragStart($event, action, idx)\"\n (mousedown)=\"onMouseDown($event)\"\n [class.-updating]=\"!!action._status\"\n [class.-other-updating]=\"editing\"\n >\n <div class=\"o-hvy-events-detail__procedure__actions__action__header\">\n @if (this.enableEditActions) {\n <pry-icon\n iconSvg=\"six_dot\"\n #handle\n [class.-disabled]=\"!isDraggable(action)\"\n [class.-hidden]=\"action._status || readonly\"\n class=\"grabbable\"\n ></pry-icon>\n }\n <div class=\"number-badge\">{{ idx + 1 }}</div>\n @if (!action._status || readonly) {\n @if (mode === 'procedure') {\n <pry-checkbox\n [ngModel]=\"action.status !== 'NEW'\"\n (click)=\"toggleActionStatus(idx, $event, disabledCheckbox(action))\"\n [disabled]=\"disabledCheckbox(action)\"\n [class.-disabled]=\"disabledCheckbox(action)\"\n [title]=\"'@hvy.procedure.checkbox.' + action.status | i18n\"\n ></pry-checkbox>\n }\n <div [class.-done]=\"action.status === 'DONE' || action.status === 'OT_CLOSED'\" [class.-disabled]=\"editing\">\n <hvy-action-parameter\n [action]=\"action\"\n [type]=\"action.type\"\n [isParam]=\"false\"\n [events]=\"this.events\"\n [mode]=\"this.mode\"\n [readonly]=\"readonly\"\n [disableSaveDIButton]=\"disableSaveDIButton || editing ||\n (actions.length !== initialActions?.length) ||\n (procedureModificationsActions !== undefined && procedureModificationsActions.length > 0)\"\n ></hvy-action-parameter>\n </div>\n @if (!readonly) {\n <button class=\"a-btn a-btn--icon-only\" (click)=\"openModal(action, idx)\" [disabled]=\"editing\">\n <pry-icon iconSvg=\"more_horiz\" #menuButton></pry-icon>\n </button>\n }\n } @else {\n <div class=\"o-hvy-events-detail__procedure__actions__action__create\">\n <div class=\"o-hvy-events-detail__procedure__actions__action__create__header\">\n <p>{{ '@hvy.procedure.action.' + action._status | i18n }}</p>\n <button class=\"a-btn a-btn--icon-only\" (click)=\"saveAction(action, idx)\" [disabled]=\"!isValid(action)\">\n <pry-icon iconSvg=\"check\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelAction(action, idx)\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <div>\n <pry-select\n [ngModel]=\"action.type\"\n [items]=\"ACTIONS_TYPES\"\n (ngModelChange)=\"update(idx, 'type', $event)\"\n i18nPrefix=\"@hvy.procedure.action.\"\n [placeholder]=\"'@hvy.procedure.action.placeholder.action' | i18n\"\n ></pry-select>\n </div>\n <hvy-action-parameter\n [action]=\"action\"\n [type]=\"action.type\"\n [isParam]=\"true\"\n [events]=\"this.events\"\n [mode]=\"this.mode\"\n [disableSaveDIButton]=\"disableSaveDIButton || editing\"\n ></hvy-action-parameter>\n </div>\n }\n </div>\n <hvy-comments\n [lastComment]=\"action.lastComment\"\n [commentCount]=\"action.commentsCount\"\n [objectId]=\"action.id\"\n [readonly]=\"readOnlyComment\"\n (commented)=\"updateComment(action, $event)\"\n [type]=\"'actions'\"\n [trigger]=\"triggers[action.id]\"\n [displayEmpty]=\"false\"\n [me]=\"me\"\n ></hvy-comments>\n </div>\n } @empty {\n @if (actions.length === 0) {\n <div>{{ '@hvy.event.log.procedure.noAction' | i18n }}</div>\n }\n }\n @if (!readonly && enableEditActions) {\n <div class=\"o-hvy-events-detail__procedure__button\">\n <button class=\"a-btn a-btn--primary\" (click)=\"add()\" [disabled]=\"editing\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.procedure.action.add' | i18n }}\n </button>\n </div>\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'forDateTimeLocal'\n})\nexport class ForDatetimeLocalPipe implements PipeTransform {\n constructor() {}\n\n transform(dateAsString: string | undefined, ...args: unknown[]): string {\n const localDate = new Date(dateAsString ?? '');\n const ajustedDate = new Date(localDate.getTime() - localDate.getTimezoneOffset() * 60 * 1000);\n if (!isNaN(ajustedDate.getTime())) {\n const completeDate = ajustedDate.toISOString();\n return dateAsString ? completeDate.substring(0, completeDate.lastIndexOf(':')) : '';\n }\n return '';\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport { HypProcedure } from '../../model/procedure/hyp-procedure.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\nimport {\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogRef,\n PryDialogService,\n PryI18nService,\n PryIconComponent,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport {EquipmentForEvent, HypEquipment} from '../../model/hyp-equipment.interface';\nimport { EquipmentService } from '../../store/equipment/equipment.service';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { EventActions } from '../../store/event/event.actions';\nimport { Store } from '@ngrx/store';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { debounceTime, delay, Observable, shareReplay, Subject, switchMap, take, throwError, zip } from 'rxjs';\nimport { padId } from '../../general/pad-id.function';\nimport equal from 'fast-deep-equal/es6';\nimport { ProcedureAssociationModalComponent } from '../procedure-association-modal/procedure-association-modal.component';\nimport { ProcedureActions } from '../../store/procedure/procedure.actions';\nimport { HypEventCategory, HypEventSubCategory } from '../../model/event/hyp-event-category.type';\nimport { HypCommentsService } from '../../store/comments/comments.service';\nimport { catchError, map, startWith } from 'rxjs/operators';\nimport { HypServiceTooltip} from '../../model/event/hyp-event-tooltip.interface';\nimport { HvyEventDetailsTooltipComponent } from './event-details-tooltip.component';\nimport { EventService } from '../../store/event/event.service';\nimport { HvyEventAddEventComponent } from './add-event/add-event.component';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { HypComment } from '../../model/comment.interface';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { FormArray, FormBuilder, FormControl} from \"@angular/forms\";\nimport { MatAutocompleteTrigger } from \"@angular/material/autocomplete\";\n\nexport type ChangeStatusContext = {\n comment: string;\n events: HypEventDetails[];\n status: string;\n all: boolean;\n};\n\nexport interface HypEventDetailsWithMatching extends HypEventDetails {\n html: string;\n displayName: string;\n}\n\nexport const EVENT_DETAIL_ACCESS_FN = {\n value: (event: HypEventDetails, component: EventDetailComponent) => {\n const readonly =\n component.readonly ||\n event.status === 'DONE' ||\n (['LIMIT', 'OUTOFORDER', 'ANOMALY'].includes(event.category) && event.externalSourceRef !== 'Hyperviseur');\n\n return {\n name: readonly,\n category: readonly,\n subCategory: readonly,\n criticality: readonly,\n description: readonly,\n address: readonly,\n source: true,\n domain: readonly,\n eqName: readonly,\n eqEntity: readonly,\n startDate: readonly,\n endDate: readonly,\n parent: component.readonly || event.status === 'DONE'\n };\n }\n};\n\n@Component({\n selector: 'hvy-event-detail',\n templateUrl: './event-detail.component.html'\n})\nexport class EventDetailComponent extends SubscriptionnerDirective {\n eventForm = this.formBuilder.group({equips: this.formBuilder.array([])});\n get equipControls(){\n return this.eventForm.get('equips') as FormArray;\n }\n @Input() placesChoices: ({key: string, display: string})[] = [];\n opened: boolean[] = [];\n criticalities = HypEventCriticality.values;\n _events: HypEventDetails[] = [];\n eventModifications: Partial<HypEventDetails>[] = [];\n @Output() modifiedEvents = new EventEmitter<[Partial<HypEventDetails>, HypEventDetails][]>();\n _procedure?: HypProcedure;\n procedureModifications: Partial<HypProcedure> = {};\n @Output() modifiedProcedure = new EventEmitter<[Partial<HypProcedure>, HypProcedure] | undefined>();\n protected readonly DOMAINS = DOMAINS.values;\n @Output() eventErrors = new EventEmitter<{ field: string; code: string }[][]>();\n @Output() addedEvent = new EventEmitter<HypEventDetails>();\n errors: { field: string; code: string }[][] = [];\n canCloseSome = false;\n changeStatusContext: ChangeStatusContext = {\n comment: '',\n events: [],\n status: 'DONE',\n all: false\n };\n @Input() title?: string;\n\n @Input() set equipmentFromMap(\n equipmentFromMap: {equipment: EquipmentForEvent | null, family: string | null} | null) {\n if(equipmentFromMap && this.equipControls.length > 0) {\n if(equipmentFromMap.equipment) {\n this.equipControls.at(0).setValue(equipmentFromMap.equipment);\n this.manageEquipment(0);\n }\n }\n }\n @Input() readonly: boolean | null = false;\n @Input() readonlyProcedure: boolean | null = false;\n @Input() enableEditActions: boolean | null = false;\n @Input() readOnlyComment: boolean | null = false;\n overlayRef?: OverlayRef;\n @ViewChild('confirmDialog', { read: TemplateRef }) confirmDialog!: TemplateRef<any>;\n @Output() comfirmDialogOpened = new EventEmitter<ChangeStatusContext>();\n equipmentSelectValue: (string | HypEquipment | undefined)[] = [];\n equipments$: Observable<EquipmentForEvent[]>[] = [];\n @ViewChildren('detailHoverIcon', { read: ElementRef }) detailHoverIcon!: QueryList<ElementRef<PryIconComponent>>;\n onEventSearch$ = new Subject<number>();\n eventSelectValue: (string | HypEventDetails | undefined)[] = [];\n events$: Observable<HypEventDetailsWithMatching[]>;\n @Output() commented = new EventEmitter<\n | { event: HypEventDetails; comments: HypComment[] }[]\n | {\n action: HypAction;\n comments: HypComment[];\n }\n >();\n profile: { sub: string | undefined; userName: string | undefined } | null = null;\n\n @Input() set me(me: { sub: string | undefined; userName: string | undefined } | null) {\n this.profile = me;\n this.setCreatorForEvents();\n }\n\n @Input() set events(events: HypEventDetails[]) {\n this.equipControls.clear();\n this._events = events.filter((ev) => !!ev);\n this.eventModifications = new Array(this._events.length);\n if (this._events.length === 1) {\n this.opened = [true];\n }\n this.canCloseSome = this._events.filter((ev) => ev.status !== 'DONE').length > 0;\n this._events.forEach((ev, idx) => {\n let getEquipment = this._events[idx].equipment as EquipmentForEvent;\n if(this._events[idx].address && !!getEquipment){\n getEquipment = {...getEquipment, address: this._events[idx].address};\n }\n const equipControl = new FormControl<EquipmentForEvent | string | null>(getEquipment);\n if(ev.status === 'DONE') {\n equipControl.disable();\n }\n this.equipControls.push(equipControl);\n if(typeof getEquipment === 'object' && !!getEquipment){\n this.getDataForTooltip(getEquipment as HypEquipment, idx);\n this.selectedEquipment[idx] = true;\n this.adressDisabled[idx] = true;\n } else {\n this.selectedEquipment[idx] = false;\n this.adressDisabled[idx] = false;\n }\n this.equipmentSelectValue[idx] = getEquipment;\n if (ev.parent && ev.parent.id) {\n this.selectedParentChange(\n {\n ...ev.parent,\n displayName: `${padId.fn(ev.parent.id)} - ${ev.parent.name}`\n } as unknown as HypEventDetailsWithMatching,\n idx\n );\n }\n });\n\n this.equipControls.controls.forEach((control, index)=> {\n this.equipments$[index] = control.valueChanges.pipe(startWith(control.value), debounceTime(200),\n switchMap(equipment => {\n const domain = this.eventModifications[index]?.domain ?? this._events[index]?.domain ?? undefined;\n return this.equipmentService.search(typeof equipment === 'object' ? equipment?.name : equipment, domain).pipe(\n map((equipments) => {\n return equipments;\n })\n );\n }),\n catchError(() => throwError(() => new Error('Search Equipment problem'))),\n shareReplay()\n );\n })\n this.setCreatorForEvents();\n this.setDistrictForEvents();\n }\n\n @Input() set procedure(procedure: HypProcedure) {\n this._procedure = procedure;\n this.procedureModifications = {};\n }\n\n @Input() set cancelModifications(evt: any) {\n this.equipControls.controls.forEach((control, index)=> {\n const initialEquipment = this.equipmentSelectValue[index];\n control.setValue(initialEquipment);\n if(typeof initialEquipment === 'object' && !!initialEquipment) {\n this.selectedEquipment[index] = true;\n this.adressDisabled[index] = true;\n } else {\n this.selectedEquipment[index] = false;\n this.adressDisabled[index] = false;\n }\n })\n this.eventSelectValue = this.eventSelectValue.map((eventParent, index) => {\n const initialParent = this._events[index].parent;\n if (initialParent) {\n const regex = this.getComboBoxRegExp(initialParent.name);\n const html = `${padId.fn(initialParent.id)} - ${initialParent.name}`;\n return {\n ...initialParent,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`),\n displayName: html\n } as HypEventDetailsWithMatching;\n } else {\n return undefined;\n }\n });\n this.eventModifications = new Array(this._events.length);\n this.procedureModifications = {};\n this._outputModifications();\n }\n\n selectedEquipment = [false];\n adressDisabled = [false];\n openedAutocomplete = [false];\n\n constructor(\n private equipmentService: EquipmentService,\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n public i18nService: PryI18nService,\n private pryDialog: PryDialogService,\n private commentsService: HypCommentsService,\n private eventService: EventService,\n private actions$: Actions,\n private formBuilder: FormBuilder\n ) {\n super();\n this.subscriptions.add(\n this.actions$.pipe(ofType(EventActions.status), delay(1000)).subscribe({\n next: (result) => {\n if (result.event && result.event.id) {\n this.eventService.get(result.event.id).subscribe((event) => {\n this.commentsService.get(result.event!.id, 'events').subscribe((comments) => {\n this.commented.next([{ event, comments }]);\n });\n });\n } else if (result.procedure && result.targetStatus === 'DONE') {\n this.store\n .select(EventSelectors.details)\n .pipe(take(1))\n .subscribe((details) => {\n if (details.procedure && details.procedure.events) {\n this.canCloseSome = !!details.procedure.events.find((event) => event.status !== 'DONE');\n if (!this.canCloseSome) {\n this._events.forEach((event) => {\n event.status = 'DONE';\n });\n }\n }\n });\n }\n }\n })\n );\n\n this.store.dispatch(EventActions.select({ ids: [], cumulative: false }));\n\n this.events$ = this.onEventSearch$.pipe(startWith(), debounceTime(500)).pipe(\n switchMap((index: number) => {\n const search =\n typeof this.eventSelectValue[index] === 'string' && (this.eventSelectValue[index] as string).length > 2\n ? (this.eventSelectValue[index] as string)\n : // @ts-ignore\n this.eventSelectValue[index]\n ? padId.fn((this.eventSelectValue[index] as HypEventDetails).id)\n : undefined;\n return this.eventService.search(search, ['name', 'id']).pipe(\n map((events) =>\n events.map((event) => {\n const regex = this.getComboBoxRegExp(search);\n const html = `${padId.fn(event.id)} - ${event.name}`;\n return {\n ...event,\n html: html.replaceAll(regex, (matched: string, capture1: string) => `<b>${capture1}</b>`),\n displayName: html\n } as HypEventDetailsWithMatching;\n })\n )\n );\n }),\n catchError(() => {\n return throwError(() => new Error('Search Equipment problem'));\n }),\n shareReplay()\n );\n }\n\n isEventModified(): boolean {\n return this.eventModifications.some((modif, index) =>\n Object.keys(this.eventModifications[index]).length !== 0\n )\n }\n\n private setDistrictForEvents(){\n this._events = this._events.map((eve) => {\n return {\n ...eve,\n district: eve.district ? eve.district : eve.equipment?.district ? eve.equipment.district : ''\n };\n });\n }\n\n private setCreatorForEvents() {\n this._events = this._events.map((eve) => {\n return {\n ...eve,\n creator: eve.creator\n ? eve.creator\n : eve.externalSourceRef === 'Hyperviseur'\n ? (this.profile?.userName as string)\n : '--'\n };\n });\n }\n\n private getComboBoxRegExp(search: string | undefined) {\n return RegExp(`(${search})` ?? '(/-/-/)', 'gid');\n }\n\n get me() {\n return this.profile;\n }\n\n get events() {\n return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));\n }\n\n get canAssociateProcedure() {\n return this._events.every((evt) => evt.status === 'NEW' && evt.id !== -1);\n }\n\n get procedure(): HypProcedure | undefined {\n return this._procedure\n ? {\n ...this._procedure,\n ...(this.procedureModifications ?? {}),\n events: this.events\n }\n : undefined;\n }\n\n get closeComment(): string {\n return this.procedure?.closeComment ?? '';\n }\n\n toggle(i: number) {\n this.opened[i] = !this.opened[i];\n }\n\n manageEquipment(index: number){\n const getEquipment = this.equipControls.at(index).value;\n if (typeof getEquipment === 'object') {\n this.selectedEquipment[index] = true;\n this.getDataForTooltip(getEquipment as HypEquipment, index);\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n this.eventModifications[index].address = getEquipment?.address;\n this.eventModifications[index].district = getEquipment?.district;\n this.eventModifications[index].equipment = getEquipment as HypEquipment;\n this.adressDisabled[index] = true;\n } else {\n this.selectedEquipment[index] = false;\n if(!this.eventModifications[index]){\n this.eventModifications[index] = {};\n }\n this.eventModifications[index].address = '';\n this.eventModifications[index].district = '';\n this.eventModifications[index].equipment = undefined;\n this.adressDisabled[index] = false;\n }\n\n if(this._events[index].equipment?.name === getEquipment?.name || this._events[index].equipment === getEquipment){\n if (!!this.eventModifications[index]) {\n // @ts-ignore\n delete this.eventModifications[index].equipment;\n delete this.eventModifications[index].address;\n delete this.eventModifications[index].district;\n if (Object.keys(this.eventModifications[index]).length === 0) {\n delete this.eventModifications[index];\n }\n }\n }\n }\n\n modifyEvent(index: number, prop: string, $event: Event | string) {\n this.eventModifications[index] = this.eventModifications[index] ?? ({} as Partial<HypEventDetails>);\n if (prop === 'category') {\n delete this.eventModifications[index].subCategory;\n if ($event === 'ANOMALY') {\n this.eventModifications[index].subCategory = 'NONE';\n }\n }\n\n if (prop === 'domain' && this.equipControls.at(index).value?.domain !== $event && !!$event) {\n this.equipControls.at(index).setValue('');\n this.manageEquipment(index);\n }\n const isDate = prop.indexOf('Date') > -1;\n // @ts-ignore\n const newValue = $event instanceof Event ? $event.target?.value : $event;\n\n const correctedValue = !isDate ? newValue : this.convertDate(newValue);\n // @ts-ignore\n if (this._events[index][prop] !== correctedValue) {\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index][prop] = correctedValue;\n\n this._outputModifications();\n } else {\n if (!!this.eventModifications[index]) {\n // @ts-ignore\n delete this.eventModifications[index][prop];\n if (Object.keys(this.eventModifications[index]).length === 0) {\n delete this.eventModifications[index];\n }\n this._outputModifications();\n }\n }\n }\n\n access(event: HypEventDetails) {\n return EVENT_DETAIL_ACCESS_FN.value(event, this);\n }\n\n _outputModifications() {\n this.validateEvents(this.events);\n this.modifiedEvents.next(this.events.map((ev, idx) => [this.eventModifications[idx], ev]));\n this.modifiedProcedure.next(this.procedure ? [this.procedureModifications, this.procedure!] : undefined);\n }\n\n validateEvents(events: HypEventDetails[]) {\n this.errors = [];\n events.forEach((event, idx) => {\n const eventErrors = [];\n const regex = new RegExp(/^\\s+$/);\n if (!event.name || event.name.length === 0 || regex.test(event.name)) {\n eventErrors.push({ field: 'name', code: 'required' });\n }\n if (!event.category || event.category.length === 0) {\n eventErrors.push({ field: 'category', code: 'required' });\n }\n if (!event.criticality || event.criticality.length === 0) {\n eventErrors.push({ field: 'criticality', code: 'required' });\n }\n if (!event.description || event.description.length === 0 || regex.test(event.description)) {\n eventErrors.push({ field: 'description', code: 'required' });\n }\n this.equipControls.controls.forEach((control, index) => {\n if( typeof control.value === 'string' && control.value.length > 0) {\n eventErrors.push({ field: 'equipment', code: 'no-equipment' });\n }\n })\n const parent = event.parent;\n if (parent) {\n const parentName = `${padId.fn(event.parent?.id ?? '')} - ${event.parent?.name}`;\n const selectedParentName = (this.eventSelectValue[idx] as HypEventDetailsWithMatching)?.displayName\n ? (this.eventSelectValue[idx] as HypEventDetailsWithMatching).displayName\n : this.eventSelectValue[idx];\n if (\n !!this.eventSelectValue[idx] &&\n // @ts-ignore\n parentName !== selectedParentName\n ) {\n eventErrors.push({ field: 'parent', code: 'not-found' });\n }\n }\n if (event.category === 'MANIFESTATION') {\n if (!event.startDate || event.startDate.length === 0) {\n eventErrors.push({ field: 'startDate', code: 'required' });\n }\n if (!event.endDate || event.endDate.length === 0) {\n eventErrors.push({ field: 'endDate', code: 'required' });\n }\n if (((event.startDate as string)?.localeCompare(event.endDate ?? '') ?? 0) > 0) {\n eventErrors.push({ field: 'startDate', code: 'before' });\n eventErrors.push({ field: 'endDate', code: 'after' });\n }\n } else {\n if (event.startDate && event.endDate && event.startDate.localeCompare(event.endDate) > 0) {\n eventErrors.push({ field: 'startDate', code: 'before' });\n eventErrors.push({ field: 'endDate', code: 'after' });\n }\n }\n this.errors.push(eventErrors);\n });\n this.eventErrors.next(this.errors);\n }\n\n hasError(prop: string, idx: number) {\n return this.errors[idx]?.find((err) => err.field === prop) ?? false;\n }\n\n categories(event: HypEventDetails) {\n return HypEventCategory.values;\n }\n\n changeStatus($event: string, event: HypEventDetails) {\n this.changeStatusContext.events = [event];\n this.changeStatusContext.status = $event;\n this.changeStatusContext.all = false;\n this.toggleConfirm();\n if($event === 'DONE') {\n this.equipControls.controls.forEach(control => {\n control.disable();\n })\n }\n }\n\n closeAll() {\n this.changeStatusContext.all = true;\n this.changeStatusContext.events = this.events;\n this.changeStatusContext.status = 'DONE';\n this.toggleConfirm();\n }\n\n confirmedClose() {\n if (this.changeStatusContext.all) {\n if (!this.procedure) {\n this.store.dispatch(\n EventActions.status({\n targetStatus: this.changeStatusContext.status,\n event: this.changeStatusContext.events[0],\n procedure: this.procedure,\n comment: this.changeStatusContext.comment\n })\n );\n } else {\n this.store.dispatch(\n EventActions.status({\n targetStatus: this.changeStatusContext.status,\n procedure: this.procedure,\n comment: this.changeStatusContext.comment\n })\n );\n }\n } else {\n this.store.dispatch(\n EventActions.status({\n targetStatus: this.changeStatusContext.status,\n event: this.changeStatusContext.events[0],\n procedure: this.procedure,\n comment: this.changeStatusContext.comment\n })\n );\n }\n this.toggleConfirm();\n }\n\n toggleConfirm() {\n if (!this.overlayRef) {\n this.comfirmDialogOpened.next(this.changeStatusContext);\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'backdrop-dark',\n panelClass: ['o-hvy-close-confirm']\n })\n );\n this.overlayRef.backdropClick().subscribe(() => this.toggleConfirm());\n this.overlayRef.attach(new TemplatePortal(this.confirmDialog, this.viewContainerRef));\n } else {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n this.changeStatusContext.comment = '';\n }\n\n confirmDisabled() {\n return this.changeStatusContext.comment.length === 0;\n }\n\n get calculatedProgress() {\n if (this.procedure!.actions.length === 0) {\n return 0;\n }\n return Math.round(\n (this.procedure!.actions.filter((action) => action.status === 'DONE' || action.status === 'OT_CLOSED').length / this.procedure!.actions.length) *\n 100\n );\n }\n\n protected readonly padId = padId;\n protected readonly subCategories = [undefined, ...HypEventSubCategory.values['ANOMALY']];\n\n modifiedActions($event: any) {\n if (equal($event, this._procedure!.actions)) {\n delete this.procedureModifications.actions;\n } else {\n this.procedureModifications.actions = $event;\n }\n this._outputModifications();\n }\n\n refreshActions($event: HypAction[]) {\n if (this.procedure && this.procedure.actions) {\n this.procedure = {\n ...this.procedure,\n actions: $event\n };\n this._outputModifications();\n }\n }\n\n openAssociationModal() {\n const ref = this.pryDialog.open(ProcedureAssociationModalComponent, {\n backdropClass: 'o-hvy-association-modal__backdrop'\n });\n if (!!ref && !!ref.component) {\n ref.component.events = this.events;\n }\n }\n\n openDeleteModal() {\n const data: PryDialogConfirmData = {\n title: '@chh.event.deleteT',\n message: this.i18nService.instant(this.events.length > 1 ? '@chh.event.deleteM+' : '@chh.event.deleteM1', {\n nbEvents: this.events.length\n }),\n actions: [\n { id: 0, label: '@chh.action.cancel', color: 'secondary' },\n {\n id: 1,\n label: '@chh.action.validate',\n actions: [\n ProcedureActions.deleteInstance({\n id: this.procedure!.id,\n returnToEvent: this.events.length === 1 ? (this.events[0] as HypEventDetailsWithMatching).id : undefined\n })\n ]\n }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, {\n data,\n backdropClass: 'backdrop-dark',\n panelClass: ['o-hvy-delete-procedure']\n });\n }\n\n private convertDate(newValue?: string) {\n return newValue ? new Date(newValue).toISOString() : undefined;\n }\n\n displayEquipment(equipment: EquipmentForEvent) {\n if(equipment && equipment.name && equipment.family) {\n return equipment.name.concat(\" - \", this.i18nService.instant('@hvy.event.family.' + equipment.family));\n } else {\n return '';\n }\n }\n\n getEquipControl(index: number){\n return this.equipControls.at(index) as FormControl;\n }\n\n openAutocomplete(index: number){\n this.openedAutocomplete[index] = !this.openedAutocomplete[index];\n const b = document.getElementById('provoly-event-detail-container');\n if(b){\n b.style.overflow = \"hidden\";\n }\n }\n\n closeAutocomplete(index: number){\n this.openedAutocomplete[index] = !this.openedAutocomplete[index];\n const b = document.getElementById('provoly-event-detail-container');\n if(b){\n b.style.overflow = \"auto\";\n }\n this.manageEquipment(index);\n this._outputModifications();\n }\n\n openOrCloseAutocomplete(event: Event, trigger: MatAutocompleteTrigger, index: number){\n const getEvent = this.events.at(index) as HypEventDetails;\n if(getEvent && getEvent.status !== 'DONE'){\n event.stopPropagation();\n this.openedAutocomplete[index] ? trigger.closePanel() : trigger.openPanel();\n }\n }\n\n equipmentEventsForTooltip: { events?: HypEventDetails[]; services?: HypServiceTooltip[] }[] = [];\n\n private getDataForTooltip($event: HypEquipment | undefined, index: number) {\n this.equipmentEventsForTooltip[index] = {};\n if ($event) {\n this.equipmentService.findByName($event.name).subscribe((equip) => {\n this.equipmentEventsForTooltip[index].events = equip.events;\n this.equipmentEventsForTooltip[index].services = equip.services;\n });\n }\n }\n\n tooltipRef?: PryDialogRef<HvyEventDetailsTooltipComponent>;\n\n toggleDetailsTooltip(idx: number) {\n if (!this.tooltipRef) {\n let idxOpened = 0;\n for (let i = 0; i < idx; i++) {\n if (this.opened[i]) {\n idxOpened++;\n }\n }\n\n this.tooltipRef = this.pryDialog.open(HvyEventDetailsTooltipComponent, {\n data: this.equipmentEventsForTooltip[idx] ?? { events: [], services: [] },\n overlayConfig: {\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.detailHoverIcon.get(idxOpened)!)\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n }\n });\n this.tooltipRef.closeValue.pipe(take(1)).subscribe((value) => {\n this.tooltipRef = undefined;\n });\n } else {\n this.tooltipRef.close();\n this.tooltipRef = undefined;\n }\n }\n\n selectedParentChange($event: string | HypEventDetails, index: number) {\n this.eventSelectValue[index] = $event;\n this.onEventSearch$.next(index);\n if (typeof $event === 'object' || $event === '') {\n const parentForEvent = $event !== '' ? { id: $event.id, name: $event.name } : undefined;\n if (!parentForEvent || this._events[index].parent?.id !== parentForEvent.id) {\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n this.eventModifications[index].parent = parentForEvent;\n this._outputModifications();\n } else {\n if (!!this.eventModifications[index]) {\n // @ts-ignore\n delete this.eventModifications[index].parent;\n if (Object.keys(this.eventModifications[index]).length === 0) {\n delete this.eventModifications[index];\n }\n this._outputModifications();\n }\n }\n } else {\n this._outputModifications();\n }\n }\n\n addOneEvent() {\n const ref = this.pryDialog.open(HvyEventAddEventComponent, {\n data: { procedure: this.procedure },\n backdropClass: 'backdrop-dark'\n });\n\n ref.closeValue.subscribe((value) => {\n switch (value.value) {\n case 'add':\n this.addedEvent.next(value.event);\n break;\n }\n ref.close();\n });\n }\n\n actionCommented($event: { action: HypAction; comments: HypComment[] }) {\n this.commented.next($event);\n }\n\n updateComment(event: HypEventDetails, comment: { id: string; message: string }) {\n this.commentsService.save(event.id, 'events', comment).subscribe(() => {\n let eventsAndComments: { event: HypEventDetails; comments: HypComment[] }[] = [];\n let comments$: Observable<HypComment[]>[] = [];\n for (let index = 0; index < this._events.length; index++) {\n comments$.push(this.commentsService.get(this._events[index].id, 'events'));\n }\n zip(comments$)\n .pipe(take(1))\n .subscribe({\n next: (commentsArray) => {\n commentsArray.forEach((comments, index) => {\n eventsAndComments.push({ event: this._events[index], comments: comments as HypComment[] });\n });\n },\n complete: () => {\n this.commented.next(eventsAndComments);\n }\n });\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.tooltipRef?.close();\n this.tooltipRef = undefined;\n }\n}\n","<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\" id=\"provoly-event-detail-container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>\n {{ '@hvy.event.log.event.category' | i18n }} : {{ '@hvy.event.category.' + event.category | i18n }}\n </div>\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <!--identifiant-->\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n }\n <!--nom-->\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n [maxLength]=\"50\"\n />\n </td>\n <td></td>\n </tr>\n <!--categorie-->\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--sous categorie-->\n @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.subCategory\"\n [items]=\"subCategories\"\n [class.-error]=\"hasError('subCategory', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'subCategory', $event)\"\n i18nPrefix=\"@hvy.event.subCategory.\"\n [disabled]=\"accessValue.subCategory\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n }\n <!--criticite-->\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--metier-->\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--equipement-->\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td class=\"td-autocomplete\">\n <input type=\"text\" class=\"input-autocomplete\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n [matAutocomplete]=\"auto\"\n [formControl]=\"getEquipControl(idx)\"\n [ngClass]=\"{'equipment-disabled': event.status === 'DONE'}\"\n #trigger=\"matAutocompleteTrigger\"\n [class.-error]=\"hasError('equipment', idx)\"/>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayEquipment.bind(this)\"\n (opened)=\"openAutocomplete(idx)\"\n (closed)=\"closeAutocomplete(idx)\"\n >\n @for (equipment of equipments$[idx] | async; track equipment) {\n <mat-option [value]=\"equipment\">\n {{equipment.name}} - {{'@hvy.event.family.' + equipment.family | i18n}}\n </mat-option>\n }\n </mat-autocomplete>\n\n <pry-icon\n class=\"a-pry-select__toggle autocomplete-chevron\"\n [iconSvg]=\"openedAutocomplete[idx]? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"10\"\n [height]=\"16\"\n (click)=\"openOrCloseAutocomplete($event, trigger, idx)\"\n ></pry-icon>\n </td>\n\n <td>\n @if (selectedEquipment[idx]) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand\"\n #detailHoverIcon\n (click)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\n <!--entite-->\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"\n (event.equipment?.entity ? '@hvy.event.entity.' + event.equipment?.entity : '') | i18n\n \"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--adresse-->\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n [maxLength]=\"256\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--ville-->\n <tr>\n <td>{{ '@hvy.event.district' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"placesChoices\"\n [ngModel]=\"event.district\"\n [bindValue]=\"'key'\"\n bindLabel=\"display\"\n i18nPrefix=\"@hvy.event.places.\"\n (ngModelChange)=\"modifyEvent(idx, 'district', $event)\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--evenement parent-->\n <tr>\n <td>{{ '@hvy.event.parentEvent.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventSelectValue[idx]\"\n (ngModelChange)=\"selectedParentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"parent\"\n [template]=\"templateParent\"\n [disabled]=\"accessValue.parent\"\n [class.-error]=\"hasError('parent', idx)\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateParent let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td></td>\n </tr>\n <!--description-->\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"256\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--date debut-->\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--date fin-->\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n @if (hasError('endDate', idx) && event.endDate && event.startDate) {\n <span class=\"a-form-field -error\">{{ '@hvy.event.errorDate' | i18n }}</span>\n }\n </td>\n <td></td>\n </tr>\n <!--source-->\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ('@hvy.event.hypervisor' | i18n)\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--reférence externe-->\n @if (event.externalSourceRef !== 'Hyperviseur') {\n <tr>\n <td>{{ '@hvy.event.externalId' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalId ?? '-'\"\n [readonly]=\"true\"\n />\n </td>\n <td></td>\n </tr>\n }\n <!--createur-->\n <tr>\n <td>{{ '@hvy.event.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"event.creator\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n <!--date creation-->\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date modification-->\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date cloture-->\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n </tbody>\n </table>\n @if (event.id !== -1) {\n <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"readonly\"\n [type]=\"'events'\"\n [me]=\"me?.sub\"\n [objectId]=\"event.id\"\n ></hvy-comments>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>\n <span>{{ procedure.name }}&nbsp;:</span>\n {{ procedure.description }}\n </p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [procedureModificationsActions]=\"procedureModifications?.actions\"\n [initialActions] = this._procedure?.actions\n [readonly]=\"readonlyProcedure || readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n [disableSaveDIButton]=\"isEventModified()\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n (refreshActions)=\"refreshActions($event)\"\n [me]=\"me?.sub\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n","import { AfterViewInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HvyUnitFilterComponent } from '../../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../../../store/event/event.actions';\nimport {debounceTime, Subject} from \"rxjs\";\n\n@Component({\n selector: 'hvy-event-filters',\n templateUrl: './event-filters.component.html'\n})\nexport class EventFiltersComponent extends SubscriptionnerDirective implements AfterViewInit {\n @Input() filterSet = 'global';\n @ContentChildren('filter', { descendants: true }) filters!: QueryList<HvyUnitFilterComponent>;\n @Output() filtered = new EventEmitter<void>();\n search$ = new Subject<{ text: string; eraseFilters: boolean }>();\n\n constructor(private store: Store) {\n super();\n this.search$.pipe(debounceTime(400)).subscribe((search) => {\n if (search) {\n window.localStorage.setItem('mapCodeSearch', search.text);\n let filters: {[p: string]: string[]};\n if(search.eraseFilters) {\n filters = !!search.text\n ? {\n code: [search.text],\n }\n : ({} as { [key: string]: string[] });\n } else {\n filters = this.filters.map((filter) => filter.getParams()).reduce((p, c) => ({ ...p, ...c }), {});\n }\n if(this.filterSet !== 'events'){\n filters = {...filters, ['deleted']: ['false']};\n }\n this.store.dispatch(\n EventActions.filter({\n filters,\n filterSet: this.filterSet,\n }),\n );\n this.filtered.next();\n window.dispatchEvent(new CustomEvent('forceCloseMapTooltip'));\n\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.filters.forEach((filter) => (filter.filterSet = this.filterSet));\n const getCode = window.localStorage.getItem('mapCodeSearch');\n if(getCode && this.filterSet === 'map'){\n this.search$.next({ text: getCode, eraseFilters: true });\n }\n }\n\n filter() {\n this.search$.next({ text: '', eraseFilters: false });\n }\n\n reset() {\n let filters = {};\n if(this.filterSet !== 'events') {\n filters = {...filters, ['deleted']: ['false']};\n }\n this.store.dispatch(EventActions.filter({ filters, filterSet: this.filterSet }));\n this.search$.next({ text: '', eraseFilters: true });\n this.filtered.next();\n window.dispatchEvent(new CustomEvent('forceCloseMapTooltip'));\n }\n\n triggerChange($event: Event) {\n // @ts-ignore\n this.search$.next({ text: $event.target!.value.toUpperCase(), eraseFilters: true });\n }\n}\n","<div class=\"o-hvy-event-filters\">\n <ng-content></ng-content>\n <div class=\"o-hvy-event-filters__buttons search-map-container\">\n <button (click)=\"filter()\" class=\"a-btn a-btn--primary filter-button\" [title]=\"'@hvy.event.filter.name' | i18n\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"event_filter\"></pry-icon>\n </button>\n <button (click)=\"reset()\" class=\"a-btn a-btn--primary filter-button-reset\" [title]=\"'@hvy.event.filter.reset' | i18n\">\n <pry-icon [width]=\"23\" [height]=\"23\" iconSvg=\"reset_filter\"></pry-icon>\n </button>\n @if (filterSet === 'map') {\n <div class=\"o-chh-journal__action__right\">\n <div class=\"o-hvy-text-filters\">\n <input\n class=\"a-form-field o-hvy-text-filters__search-input search-input-map\"\n type=\"text\"\n [value]=\"(search$ | async)?.text\"\n (input)=\"triggerChange($event)\"\n placeholder=\"{{ '@hvy.event.filter.search' | i18n }}\"\n />\n <pry-icon\n iconSvg=\"search\"\n class=\"o-hvy-text-filters__search-icon\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n @if ((search$ | async)?.text){\n <pry-icon\n class=\"filters-search-erase\"\n iconSvg=\"close\"\n [width]=\"18\"\n [height]=\"18\"\n (click)=\"filter()\"\n ></pry-icon>\n }\n </div>\n </div>\n }\n </div>\n</div>\n","import { AfterViewInit, Component, ContentChildren, Input, QueryList } from '@angular/core';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HvyUnitFilterComponent } from '../../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, distinctUntilChanged } from 'rxjs';\nimport { debounceTime, map, startWith } from 'rxjs/operators';\nimport { EventActions } from '../../../../store/event/event.actions';\nimport equal from 'fast-deep-equal/es6';\n\n@Component({\n selector: 'hvy-immediate-filters',\n templateUrl: './immediate-filters.component.html'\n})\nexport class ImmediateFiltersComponent extends SubscriptionnerDirective implements AfterViewInit {\n @Input() filterSet = 'global';\n @Input() delay = 400;\n @ContentChildren('filter', { descendants: true }) filters!: QueryList<HvyUnitFilterComponent>;\n\n constructor(private store: Store) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.filters.forEach((filter) => {\n filter.filterSet = this.filterSet;\n });\n\n combineLatest(this.filters.map((filter) => filter.changed.pipe(startWith(undefined))))\n .pipe(\n debounceTime(this.delay),\n map(() => this.filters.map((filter) => filter.getParams()).reduce((p, c) => ({ ...p, ...c }), {})),\n distinctUntilChanged((b, a) => equal(b, a))\n )\n .subscribe((filters) => {\n this.store.dispatch(EventActions.filter({ filters, filterSet: this.filterSet }));\n });\n }\n}\n","<div class=\"o-hvy-event-filters\">\n <ng-content></ng-content>\n</div>\n","import { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport type HvyFilterParams = { [filterSet: string]: { [key: string]: string[] } };\n\n@Directive()\nexport class HvyUnitFilterComponent extends SubscriptionnerDirective {\n @Input() prop: string = 'no-prop-defined';\n protected _filterSet$ = new BehaviorSubject('global');\n @Output() changed = new EventEmitter<void>();\n\n @Input() set filterSet(filterSet: string) {\n this._filterSet$.next(filterSet);\n }\n\n get filterSet() {\n return this._filterSet$.value;\n }\n\n constructor() {\n super();\n }\n\n getParams(): { [key: string]: string[] } {\n throw new Error('Must use sub implementation');\n }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n selector: 'hvy-date-filter',\n templateUrl: './date-filter.component.html',\n providers: [{ provide: HvyUnitFilterComponent, useExisting: forwardRef(() => DateFilterComponent) }]\n})\nexport class DateFilterComponent extends HvyUnitFilterComponent {\n value: string = '';\n\n constructor(private store: Store) {\n super();\n this.subscriptions.add(\n combineLatest([this.store.select(EventSelectors.filters), this._filterSet$]).subscribe(([filters, filterSet]) => {\n this.value = (filters[filterSet] ?? {})[this.prop] ? (filters[filterSet] ?? {})[this.prop][0] ?? '' : '';\n if(!!this.value){\n this.value=new Date(this.value).toISOString().substring(0,10);\n }\n })\n );\n }\n\n override getParams(): { [key: string]: string[] } {\n if (this.value === '') {\n return {};\n }\n return { [this.prop]: [new Date(this.value).toISOString()] };\n }\n\n triggerChange($event: Event) {\n // @ts-ignore\n this.value = $event instanceof Event ? $event.target?.value : $event;\n this.changed.next();\n }\n}\n","<div class=\"o-hvy-date-filters\">\n <label> {{ \"@chh.event.date\" | i18n }}&nbsp;:\n <input type=\"date\" class=\"a-form-field\"\n [value]=\"value\"\n (change)=\"triggerChange($event)\">\n </label>\n</div>\n","import {\n AfterViewInit,\n Component,\n computed,\n ElementRef,\n forwardRef,\n Input,\n signal,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n WritableSignal\n} from '@angular/core';\nimport { HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { PryI18nService } from '@provoly/dashboard';\nimport { combineLatest } from 'rxjs';\n\nexport type HvyChoiceFilter = {\n key: string;\n children?: { key: string }[];\n}[];\n\n@Component({\n selector: 'hvy-choice-filter',\n templateUrl: './choice-filter.component.html',\n providers: [{ provide: HvyUnitFilterComponent, useExisting: forwardRef(() => ChoiceFilterComponent) }]\n})\nexport class ChoiceFilterComponent extends HvyUnitFilterComponent implements AfterViewInit {\n static idCounter = 0;\n id = -1;\n\n @Input() allLabel: string = '@hvy.event.filter.choice.all';\n @Input() label: string = 'no-label-defined';\n @Input() i18nPrefix: string = '';\n @Input() addNonLeaves: boolean = false;\n value: WritableSignal<string[]> = signal([]);\n @Input() choices: HvyChoiceFilter = [];\n overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n inhibate?: string;\n displayValue = computed(() => {\n if (this.allSelected()) {\n return this.i18nService.instant(this.allLabel);\n }\n if (this.value().length === 1) {\n return this.i18nService.instant(this.i18nPrefix + this.value()[0]);\n }\n if (this.value().length >= 0) {\n return `(${this.value().length})`;\n }\n return '';\n });\n\n constructor(\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private i18nService: PryI18nService,\n private ref: ElementRef\n ) {\n super();\n this.id = ChoiceFilterComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n combineLatest([this.store.select(EventSelectors.filters), this._filterSet$]).subscribe(([filters, filterSet]) => {\n this.assignValue(\n (filters[filterSet] ?? {}).hasOwnProperty(this.prop)\n ? filters[filterSet][this.prop].length === 1 && filters[filterSet][this.prop][0] === ''\n ? []\n : filters[filterSet][this.prop]\n : this.allValues()\n );\n })\n );\n }\n\n override getParams(): { [key: string]: string[] } {\n if (this.value().length === this.allValues().length) {\n return {};\n }\n return { [this.prop]: this.value().length === 0 ? [''] : this.value() };\n }\n\n toggleModal() {\n if (!this.overlayRef) {\n this.triggerInhibate();\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'backdrop',\n panelClass: ['m-context-menu-wrapper', 'o-choice-filter-popup']\n })\n );\n this.overlayRef.backdropClick().subscribe(() => this.toggleModal());\n this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n const contextMenu = document.querySelector('.o-choice-filter-popup') as HTMLDivElement;\n if (!!contextMenu) {\n const rect = this.ref.nativeElement.getBoundingClientRect();\n contextMenu.style.left = rect.x + 'px';\n contextMenu.style.minWidth = rect.right - rect.x + 'px';\n contextMenu.style.top = rect.bottom + 'px';\n }\n } else {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n\n clickAll() {\n if (this.allSelected()) {\n this.assignValue([]);\n } else {\n this.assignValue(this.allValues());\n }\n }\n\n toggle(elt: { key: string; children?: { key: string }[] }) {\n const isSelected = this.isSelected(elt);\n const eltSubKeys = !elt.children ? [elt.key] : elt.children.map((ch) => ch.key);\n if (!isSelected) {\n this.assignValue([...new Set([...this.value(), ...eltSubKeys])]);\n } else {\n this.assignValue(this.value().filter((v) => !eltSubKeys.includes(v)));\n }\n }\n\n allSelected() {\n return this.choices.map((choice) => this.isSelected(choice)).reduce((p, c) => p && c, true);\n }\n\n isSelected(choice: { key: string; children?: { key: string }[] }): boolean {\n if (!choice.children) {\n return this.value().includes(choice.key);\n } else {\n return choice.children.map((child) => this.isSelected(child)).reduce((p, c) => p && c, true);\n }\n }\n\n allValues() {\n const branches = this.choices.filter((choice) => choice.children).map((choice) => choice.key);\n return this.choices\n .map((choice) =>\n !choice.children\n ? [choice.key]\n : [...choice.children.map((child) => child.key), ...(this.addNonLeaves ? branches : [])]\n )\n .reduce((p, c) => [...p, ...c], []);\n }\n\n assignValue(values: string[]) {\n if (!this.inhibate || this.inhibate !== this.filterSet) {\n this.triggerInhibate();\n\n // Add or removes tree branches, according to children statuses\n const branches = this.choices.filter((choice) => choice.children).map((choice) => choice.key);\n const withoutBranches = values.filter((value) => !branches.includes(value));\n const addedBranchValues = this.choices\n .filter((choice) => choice.children && !choice.children.find((child) => !values.includes(child.key)))\n .map((choice) => choice.key);\n this.value.set([...withoutBranches, ...(this.addNonLeaves ? addedBranchValues : [])]);\n\n this.changed.next();\n }\n }\n\n private triggerInhibate() {\n this.inhibate = this.filterSet;\n setTimeout(() => (this.inhibate = undefined), 50);\n }\n}\n","<button\n (click)=\"toggleModal()\"\n #button\n class=\"o-hvy-choice-filter -horizontal\"\n [class.-highlight]=\"displayValue() !== (allLabel | i18n)\"\n [class.-no-value]=\"displayValue()==='(0)'\"\n [class.-focus]=\"overlayRef\"\n>\n <div class=\"o-hvy-choice-filter__choice-value\">\n <span class=\"o-hvy-choice-filter__label\">{{ label | i18n }} :</span>\n <span class=\"o-hvy-choice-filter__value\" type=\"text\" id=\"select_{{ id }}\">{{ displayValue() }}</span>\n </div>\n <pry-icon [iconSvg]=\"!!overlayRef ? 'chevron_top' : 'chevron_bottom'\" [width]=\"10\" [height]=\"10\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div\n class=\"m-context-menu o-hvy-choice-filter\"\n aria-labelledby=\"choice\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"menu\"\n aria-modal=\"true\"\n >\n <div class=\"o-hvy-choice-filter__all\">\n <pry-checkbox [ngModel]=\"allSelected()\" (ngModelChange)=\"clickAll()\">\n <span>{{ allLabel | i18n }}</span>\n </pry-checkbox>\n </div>\n @for (elt of choices; track elt.key) {\n @if (!elt.children) {\n <pry-checkbox [ngModel]=\"isSelected(elt)\" (ngModelChange)=\"toggle(elt)\" class=\"o-hvy-choice-filter__root\">\n <span>{{ i18nPrefix + elt.key | i18n }}</span>\n </pry-checkbox>\n } @else {\n <pry-checkbox [ngModel]=\"isSelected(elt)\" (ngModelChange)=\"toggle(elt)\" class=\"o-hvy-choice-filter__root\">\n <span>{{ i18nPrefix + elt.key | i18n }}</span>\n </pry-checkbox>\n @for (child of elt.children; track child.key) {\n <pry-checkbox\n [ngModel]=\"isSelected(child)\"\n (ngModelChange)=\"toggle(child)\"\n class=\"o-hvy-choice-filter__child\"\n >\n <span>{{ i18nPrefix + child.key | i18n }}</span>\n </pry-checkbox>\n }\n }\n }\n </div>\n</ng-template>\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n selector: 'hvy-text-filter',\n templateUrl: './text-filter.component.html',\n providers: [{ provide: HvyUnitFilterComponent, useExisting: forwardRef(() => TextFilterComponent) }]\n})\nexport class TextFilterComponent extends HvyUnitFilterComponent {\n value: string = '';\n @Input() placeholder = '@hvy.action.search';\n\n constructor(private store: Store) {\n super();\n this.subscriptions.add(\n combineLatest([this.store.select(EventSelectors.filters), this._filterSet$]).subscribe(([filters, filterSet]) => {\n this.value = (filters[filterSet] ?? {})[this.prop] ? (filters[filterSet] ?? {})[this.prop][0] ?? '' : '';\n })\n );\n }\n\n override getParams(): { [key: string]: string[] } {\n if (this.value === '') {\n return {};\n }\n return { [this.prop]: [this.value] };\n }\n\n triggerChange($event: Event | string) {\n // @ts-ignore\n this.value = $event instanceof Event ? $event.target?.value : $event;\n this.changed.next();\n }\n}\n","<div class=\"o-hvy-text-filters\">\n <input\n class=\"a-form-field o-hvy-text-filters__search-input\"\n type=\"text\"\n [value]=\"value\"\n (input)=\"triggerChange($event)\"\n placeholder=\"{{ placeholder | i18n }}...\"\n />\n <pry-icon\n iconSvg=\"search\"\n class=\"o-hvy-text-filters__search-icon\">\n </pry-icon>\n @if (value) {\n <pry-icon\n (click)=\"triggerChange('')\"\n class=\"filters-search-erase\"\n iconSvg=\"close\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const EventSummaryActions = {\n load: createAction('[Event] Load Summaries'),\n loadSuccess: createAction('[Event Api] Load Summaries Success', props<{ summaries: HypEventSummaries }>()),\n loadFailure: createAction('[Event Api] Load Summaries Failure', props<{ error: string }>())\n};\n","export const emptySummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 }\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { emptySummaries } from './event-summary.const';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const eventSummaryFeatureKey = '@hvy/event-summary';\n\nexport interface EventSummaryState {\n summaries: HypEventSummaries\n loading: boolean;\n}\n\nexport const eventSummaryInitialState: EventSummaryState = {\n summaries: { ...emptySummaries },\n loading: false,\n};\n\nconst internalReducer = createReducer<EventSummaryState>(\n eventSummaryInitialState,\n on(EventSummaryActions.load, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EventSummaryActions.loadSuccess, (state, { summaries }) => ({\n ...state,\n loading: false,\n summaries\n })),\n on(EventSummaryActions.loadFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n\nexport function eventSummaryReducer(state: EventSummaryState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventSummaryFeatureKey, EventSummaryState } from './event-summary.reducer';\n\nconst feature = createFeatureSelector<EventSummaryState>(eventSummaryFeatureKey);\nconst summaries = createSelector(feature, (state) => state.summaries);\nconst loading = createSelector(feature, (state) => state.loading);\n\nexport const EventSummarySelectors = {\n feature,\n summaries,\n loading\n};\n","export const HypEventStatus = {\n values: ['NEW', 'IN_PROGRESS', 'DONE']\n};\n","import { Component, Input } from '@angular/core';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { EVENT_LINK } from '../../event/list/event-list.component';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'hvy-event-summary-item',\n templateUrl: './event-summary-item.component.html'\n})\nexport class EventSummaryItemComponent {\n @Input({ required: true }) event!: HypEventSummary;\n @Input() linkBase: string[] = [];\n @Input() doNotRedirectToDetail: boolean | null = false;\n EVENT_LINK = EVENT_LINK;\n\n constructor(public store: Store) {}\n}\n","<div class=\"m-hvy-event-summary-item\" [class.-no-pointer]=\"doNotRedirectToDetail\">\n <a [routerLink]=\"doNotRedirectToDetail ? null : EVENT_LINK.fn(event, store)\">\n <div class=\"m-hvy-event-summary-item__title\">\n <h4>\n {{ event.name }}\n </h4>\n </div>\n <div class=\"m-hvy-event-summary-item__content\">\n <div>\n {{ event.serviceTitle }}\n </div>\n <div>\n {{\n !event.startDate || !event.endDate || event.category !== 'MANIFESTATION'\n ? ''\n : ('@hvy.eventSummary.from' | i18n) +\n ' ' +\n (event.startDate | displayLocaleDatetime: 'short') +\n ' ' +\n ('@hvy.eventSummary.to' | i18n) +\n ' ' +\n (event.endDate | displayLocaleDatetime: 'short')\n }}\n </div>\n </div>\n <div class=\"m-hvy-event-summary-item__footer\">\n <div class=\"m-hvy-event-summary-item__icons\">\n @if (event.serviceCount !== 0) {\n <pry-icon iconSvg=\"service\"></pry-icon>\n <span class=\"m-hvy-event-summary-item__intervention-counter\">{{ event.serviceCount }}</span>\n }\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </div>\n <div class=\"m-hvy-event-summary-item__date\">\n <span>\n {{ event.lastModificationDate | displayLocaleDatetime: 'medium' }}\n </span>\n </div>\n </div>\n </a>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { KNOWN_FILTER_SETS } from '../../store/event/event.service';\n\n@Component({\n selector: 'hvy-event-summary-list',\n templateUrl: './event-summary-list.component.html'\n})\nexport class EventSummaryListComponent implements OnInit {\n @Input() events: HypEventSummary[] = [];\n @Input() totalEventCount = 0;\n @Input() status: string = '';\n @Input() consultLink: string[] = [];\n @Input() itemLinkBase: string[] = [];\n @Input() doNotRedirectToDetail: boolean | null = false;\n constructor(\n private store: Store<any>,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.consultLink = this.consultLink.length > 0 ? this.consultLink : ['events'];\n this.itemLinkBase = this.itemLinkBase.length > 0 ? this.itemLinkBase : ['events'];\n }\n\n filterAndRoute(status: string) {\n this.router.navigate([...this.consultLink], { queryParams: { status: this.status } });\n this.store.dispatch(EventActions.filter({ filters: { status: [status] }, filterSet: KNOWN_FILTER_SETS.EVENTS }));\n }\n}\n","<div class=\"o-hvy-event-summary-list -hvy-{{ status.toLowerCase() }}\">\n <div class=\"o-hvy-event-summary-list__header\">\n <h3 class=\"o-hvy-event-summary-list__title\">\n {{ '@hvy.eventSummary.statusLabels.' + status | i18n }}\n </h3>\n <span class=\"o-hvy-event-summary-list__counter\">\n {{ totalEventCount }}\n </span>\n </div>\n <div class=\"o-hvy-event-summary-list__content\">\n @for (event of events; track event.id) {\n <hvy-event-summary-item [event]=\"event\" [linkBase]=\"itemLinkBase\" [doNotRedirectToDetail]=\"doNotRedirectToDetail\">\n </hvy-event-summary-item>\n } @empty {\n <span class=\"o-hvy-event-summary-list__no-content\">\n {{ '@hvy.eventSummary.noContent.' + status | i18n }}\n </span>\n }\n </div>\n <div class=\"o-hvy-event-summary-list__footer\">\n <a class=\"o-hvy-event-summary-list__footer-button\" (click)=\"filterAndRoute(status)\">\n <pry-icon iconSvg=\"eye\"></pry-icon>\n {{ '@hvy.action.consult' | i18n }}\n </a>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummaries, HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport {fromEvent, Observable} from 'rxjs';\nimport { EventSummaryActions } from '../../store/event-summary/event-summary.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport {map, startWith} from 'rxjs/operators';\nimport { EventSummarySelectors } from '../../store/event-summary/event-summary.selectors';\nimport { SubscriptionnerDirective} from '@provoly/dashboard';\nimport { KNOWN_FILTER_SETS } from '../../store/event/event.service';\nimport { HypEventStatus } from '../../model/event/hyp-event-status.type';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\n\n@Component({\n selector: 'hvy-event-summary-page',\n templateUrl: './event-summary-page.component.html'\n})\nexport class EventSummaryPageComponent extends SubscriptionnerDirective {\n @Input() pageTitle = '';\n @Input() consultLink: string[] = [];\n summaries: HypEventSummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 }\n } as { [key: string]: { events: HypEventSummary[]; count: number } };\n selectedCriticality$: Observable<string | undefined>;\n criticalityList = ['ALL', ...HypEventCriticality.values];\n statusList = HypEventStatus.values;\n @Input() doNotRedirectToDetail: boolean | null = false;\n\n constructor(private store: Store<any>) {\n super();\n this.subscriptions.add(\n fromEvent<CustomEvent>(window, 'accueil-refresh').pipe(\n startWith(new CustomEvent(`accueil-refresh`, { detail: true }))\n ).subscribe(() => {\n this.store.dispatch(EventSummaryActions.load())\n })\n )\n this.selectedCriticality$ = this.store\n .select(EventSelectors.filters)\n .pipe(map((filters) => (filters[KNOWN_FILTER_SETS.EVENTS] ?? {})['criticality']?.[0] ?? 'ALL'));\n this.subscriptions.add(\n this.store.select(EventSummarySelectors.summaries).subscribe((summaries) => {\n this.summaries = summaries;\n })\n );\n }\n\n filterByCriticality($event: string) {\n $event === 'ALL'\n ? this.store.dispatch(EventActions.filter({ filters: {}, filterSet: KNOWN_FILTER_SETS.EVENTS }))\n : this.store.dispatch(\n EventActions.filter({\n filters: { criticality: [$event] },\n filterSet: KNOWN_FILTER_SETS.EVENTS\n })\n );\n this.store.dispatch(EventSummaryActions.load());\n }\n}\n","<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\"\n >{{ '@hvy.event.criticality.name' | i18n }} :&nbsp;</label\n >\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 @if (summaries[summaryKey]) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryKey\"\n [totalEventCount]=\"summaries[summaryKey].count ?? 0\"\n [events]=\"summaries[summaryKey].events\"\n [consultLink]=\"consultLink\"\n [doNotRedirectToDetail]=\"doNotRedirectToDetail\"\n >\n </hvy-event-summary-list>\n }\n }\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ColumnOrderComponent } from '../../general/column-order/column-order.component';\nimport { ProcedureSelectors } from '../../store/procedure/procedure.selectors';\nimport { ProcedureActions } from '../../store/procedure/procedure.actions';\n\n@Component({\n selector: 'hvy-procedure-column-order',\n templateUrl: '../../general/column-order/column-order.component.html'\n})\nexport class ProcedureColumnOrderComponent extends ColumnOrderComponent {\n constructor(store: Store) {\n super(store);\n this.subscriptions.add(this.store.select(ProcedureSelectors.sort).subscribe((sort) => (this.sortValue = sort)));\n }\n\n override sort(order: string) {\n this.store.dispatch(ProcedureActions.sort({ field: this.field, order }));\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ProcedureActions } from '../../store/procedure/procedure.actions';\nimport { Observable } from 'rxjs';\nimport { ProcedureSelectors } from '../../store/procedure/procedure.selectors';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { InfiniteScrollService } from '../../general/infiniteScroll.service';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { padId } from '../../general/pad-id.function';\n\nexport const PROCEDURE_LINK = {\n fn: (procedure: HypProcedureModel, store: Store<any>) => ['./', padId.fn(procedure.id)]\n};\n\n@Component({\n selector: 'hvy-procedure-model-list',\n templateUrl: './procedure-list.component.html'\n})\nexport class ProcedureListComponent extends SubscriptionnerDirective implements AfterViewInit, OnDestroy {\n procedures$: Observable<HypProcedureModel[]>;\n PROCEDURE_LINK = PROCEDURE_LINK;\n search: string = '';\n protected readonly DOMAINS = DOMAINS.values.map((d) => ({ key: d }));\n @ViewChild('scrollable') scrollable!: ElementRef;\n @Input() placeholder: string = '@hvy.action.search';\n\n constructor(\n protected store: Store<any>,\n private router: Router,\n private scroll: InfiniteScrollService\n ) {\n super();\n this.store.dispatch(ProcedureActions.load({}));\n this.procedures$ = this.store.select(ProcedureSelectors.procedures);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.scroll.isEndOfPage(this.scrollable.nativeElement, ProcedureSelectors.noMoreProcedures).subscribe(() => {\n this.store.dispatch(ProcedureActions.load({ next: true }));\n })\n );\n }\n\n goTo(procedure: HypProcedureModel) {\n return this.router.navigate(this.PROCEDURE_LINK.fn(procedure, this.store));\n }\n\n protected readonly padId = padId;\n}\n","<div class=\"o-procedure-list\">\n <div class=\"m-form-label-field o-procedure-list__action\">\n <hvy-immediate-filters [filterSet]=\"'procedure'\">\n <hvy-text-filter prop=\"search\" #filter [placeholder]=\"placeholder\"></hvy-text-filter>\n <hvy-choice-filter\n i18nPrefix=\"@hvy.event.domain.\"\n label=\"@hvy.event.domain.name\"\n [choices]=\"DOMAINS\"\n prop=\"domain\"\n #filter\n ></hvy-choice-filter>\n </hvy-immediate-filters>\n </div>\n <div class=\"o-procedure-list__table\" #scrollable>\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=\"id\">{{ '@hvy.procedure.id' | i18n }}</hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"name\">{{ '@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=\"useCount\"\n >{{ '@hvy.procedure.useCount' | i18n }}\n </hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creator\"\n >{{ '@hvy.procedure.author' | i18n }}\n </hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"creationDate\"\n >{{ '@hvy.event.creationDateTable' | i18n }}\n </hvy-procedure-column-order>\n </th>\n <th>\n <hvy-procedure-column-order field=\"lastModificationDate\">\n <span>{{ '@hvy.event.lastModificationDateTable' | i18n }}</span></hvy-procedure-column-order\n >\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\">{{ padId.fn(procedure.id) }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.name }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ '@hvy.event.domain.' + procedure.domain | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.useCount }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.creator }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ procedure.creationDate | displayLocaleDatetime }}</td>\n <td class=\"o-hvy-events-table__line__cell\">\n {{ procedure.lastModificationDate | displayLocaleDatetime }}\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"PROCEDURE_LINK.fn(procedure, store)\">\n <div class=\"consult-link\" [title]=\"'@hvy.action.consult' | i18n\">\n <pry-icon iconSvg=\"eye\" [height]=\"30\" [width]=\"40\"></pry-icon>\n </div>\n </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</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypProcedureModel } from '../../model/procedure/hyp-procedure-model.interface';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { Store } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport { HypAction } from '../../model/procedure/hyp-action.interface';\nimport { padId } from '../../general/pad-id.function';\nimport {Actions, ofType} from \"@ngrx/effects\";\nimport {ProcedureActions} from \"../../store/procedure/procedure.actions\";\nimport {delay} from \"rxjs\";\n\n@Component({\n selector: 'hvy-procedure-model-detail',\n templateUrl: './procedure-model-detail.component.html'\n})\nexport class ProcedureModelDetailComponent extends SubscriptionnerDirective {\n @Input() model?: HypProcedureModel;\n @Input() username: string = 'xxx';\n modifications: Partial<HypProcedureModel> = {};\n @Input() title?: string;\n saved = false;\n errors: { field: string; code: string }[] = [];\n @Input() eventErrors : { field: string; code: string }[] = [];\n @Output() eventErrorsChange = new EventEmitter<{ field: string; code: string }[]>();\n @Output() modified = new EventEmitter<[Partial<HypProcedureModel>, HypProcedureModel]>();\n protected readonly DOMAINS = DOMAINS.values;\n @Input() readonly = false;\n @Input() readOnlyComment = false;\n\n @Input() set cancelModifications(evt: any) {\n this.modifications = {};\n this._outputModifications();\n }\n\n get modifiedModel() {\n return { ...this.model, ...(this.modifications ?? {}) } as HypProcedureModel;\n }\n\n constructor(private actions$: Actions) {\n super();\n this.subscriptions.add(\n this.actions$.pipe(\n ofType(ProcedureActions.save)\n )\n .subscribe({\n next: result => {\n this.saved = true;\n }\n })\n )\n this.subscriptions.add(\n this.actions$.pipe(\n ofType(ProcedureActions.saveSuccess),\n delay(1000),\n )\n .subscribe({\n next: result => {\n this.saved = false;\n }\n })\n )\n this.subscriptions.add(\n this.actions$.pipe(\n ofType(ProcedureActions.saveFailure),\n delay(1000),\n )\n .subscribe({\n next: result => {\n this.saved = false;\n }\n })\n )\n }\n\n hasError(prop: string) {\n return this.errors.find((err) => err.field === prop) ?? false;\n }\n\n validate(model: HypProcedureModel) {\n if (!!model) {\n this.errors = [];\n const regex = new RegExp( /^\\s+$/);\n if (!model.name || model.name.length === 0 || regex.test(model.name)) {\n this.errors.push({ field: 'name', code: 'required' });\n }\n if (!model.domain || model.domain.length === 0) {\n this.errors.push({ field: 'domain', code: 'required' });\n }\n if (!model.description || model.description.length === 0 || regex.test(model.description)) {\n this.errors.push({ field: 'description', code: 'required' });\n }\n this.eventErrorsChange.next(this.errors);\n }\n }\n\n modify(prop: string, $event: Event) {\n if(!this.saved){\n if(prop === 'name'){\n const index = this.errors.findIndex(error => error.field == 'title');\n if(index !== -1){\n this.errors.splice(index, 1);\n }\n }\n // @ts-ignore\n const newValue = $event instanceof Event ? $event.target?.value : $event;\n\n if (this.model) {\n // @ts-ignore\n if (this.model[prop] !== newValue) {\n // @ts-ignore\n this.modifications[prop] = newValue;\n\n this._outputModifications();\n } else {\n // @ts-ignore\n delete this.modifications[prop];\n this._outputModifications();\n }\n }\n }\n\n }\n\n private _outputModifications() {\n this.validate(this.modifiedModel);\n this.modified.next([this.modifications, this.modifiedModel]);\n }\n\n updateActions($event: HypAction[]) {\n if (equal($event, this.model?.actions)) {\n delete this.modifications.actions;\n } else {\n this.modifications.actions = $event;\n }\n this._outputModifications();\n }\n\n protected readonly padId = padId;\n}\n","<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <!--identifiant-->\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n <!--titre-->\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n @if (hasError('title')) {\n <span class=\"a-form-field -error\">{{ '@hvy.procedure.alreadyExists' | i18n }}</span>\n }\n </td>\n </tr>\n <!--metier-->\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <!--description-->\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <!--createur-->\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n <!--date de création-->\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <!--date de dernière modification-->\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions?.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport const HYP_BASE_CONFIG = new InjectionToken<string>('base config');\n","export const enTranslations = {\n '@hvy': {\n event: {\n id: 'Identifier',\n name: 'Event',\n type: {\n name: 'Event type',\n ALERT: 'Alert',\n REPORT: 'Report',\n OPERATOR: 'Operator'\n },\n status: {\n name: 'Status',\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n ARCHIVED: 'Archived'\n },\n address: 'Address',\n source: 'Source',\n externalId: 'External reference',\n hypervisor: 'Hypervisor',\n equipment: 'Equipment reference',\n equipmentEntity: 'Equipment entity',\n notFound: 'Equipment not found',\n domain: {\n name: 'Métier'\n },\n startDate: 'Start date',\n endDate: 'End date',\n creationDate: 'Creation date',\n creator: 'Creator',\n errorDate: 'Please choose an end date after the start date.',\n lastModificationDate: 'Modification date',\n closeDate: 'Close date',\n detail: 'Events description',\n log: {\n name: 'Events log',\n empty: 'No event created',\n event: {\n description: 'Description',\n address: 'Address',\n detail: 'Information',\n mandatory: '* Mandatory fields',\n name: 'Name',\n id: 'Identifier',\n category: 'Category',\n close: 'Close all events',\n closed: 'All closed',\n comments: {\n name: 'Event comments ({{nb}})',\n placeholder: 'Write your comment',\n actions: 'Comments ({{nb}})'\n }\n },\n procedure: {\n delete: 'Delete procedure',\n progress: 'Progress',\n noAction: 'No actions',\n name: 'Common procedure',\n name1: 'Procedure',\n none: 'Aucune procédure n’a été associée à cet événement.'\n }\n },\n category: {\n name: 'Event category',\n MANIFESTATION: 'Manifestation',\n LIMIT: 'Limit',\n OUTOFORDER: 'Out of Order',\n ANOMALY: 'Anomaly'\n },\n criticality: {\n name: 'Criticality',\n LOW: 'Low',\n MEDIUM: 'Middle',\n HIGH: 'High'\n },\n filter: {\n name: 'Filter',\n choice: {\n all: 'All'\n },\n reset: 'Reset'\n },\n close: {\n oneTitle: 'Close event',\n multiTitle: 'Close events',\n one: 'Close event',\n multi: 'Close events',\n comment: 'Close comment'\n },\n installDate: 'Installation date',\n managed: 'Managed equipment',\n prm: 'PRM contract number',\n presenceSensor: 'Presence sensor',\n parent: 'Parent',\n consult: 'Consult {{howMany}} event{{plural}}',\n entity: {\n NOTFOUND: 'Unknown equipment'\n },\n comment: {\n lastDetail: 'Last comment {{day}} at {{hour}} by {{creator}}',\n detail: 'Comment {{day}} at {{hour}} by {{creator}}',\n more: 'See more comments',\n less: 'See less comments',\n head: '{{nb}} comment',\n heads: '{{nb}} comments'\n },\n equipmentPlaceholder: 'Search by family or reference'\n },\n eventSummary: {\n from: 'From',\n to: 'to',\n noContent: {\n NEW: 'No events created.',\n IN_PROGRESS: 'No events in progress.',\n DONE: 'No event done.'\n },\n statusLabels: {\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done'\n },\n criticalityLabels: {\n LOW: 'Low',\n MEDIUM: 'Medium',\n HIGH: 'High',\n ALL: 'All'\n }\n },\n procedure: {\n checkbox:{\n NEW: 'To do',\n IN_PROGRESS:'In progress',\n DONE: 'Done',\n },\n alreadyExists: 'This title already exists, please choose another',\n name: 'Procedure',\n progress: 'Procedure progress %',\n useCount: 'Usage',\n title: 'Title',\n category: 'Category',\n author: 'Author',\n id: 'Id',\n missingProperty: 'Missing property',\n noContent: 'No existing procedures found',\n domain: 'Domain',\n catalog: 'Procedure catalog',\n detail: 'Procedure details',\n actions: 'Associated actions',\n description: 'Description',\n creator: 'Creator',\n formTitle: 'Informations',\n action: {\n add: 'Add new Action',\n create: 'Add action to procedure',\n modify: 'Update action',\n comment: 'Comment',\n delete: 'Delete',\n update: 'Update',\n done: 'Mark done',\n PHONE: 'Call',\n SMS: 'Send a SMS',\n OTHER: 'Other',\n ASKED_SERVICE: 'Asked service',\n EMAIL: 'Send an email',\n to: 'to',\n at: 'to',\n placeholder: {\n name: 'Who ?',\n phone: '+33',\n email: 'ex: name@e-mail.com',\n service: 'Enter service',\n other: 'Enter your text',\n action: 'Select action'\n },\n question: {\n PHONE: 'Call',\n SMS: 'Send SMS to',\n EMAIL: 'Send e-mail to',\n ASKED_SERVICE: 'Create service',\n OTHER: 'Other'\n }\n },\n status: {\n NEW: 'Créé',\n ASKED: 'Demandé',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé',\n CANCELLED: 'Annulé',\n }\n },\n associationModal: {\n title: 'Link a procedure',\n description:\n 'Adding a procedure to selected events allows for selecting a list of actions to be performed to treat the events.',\n linkedEvents: 'Linked events',\n categoryFilter: 'Filter by category',\n searchProcedure: 'Search procedures',\n domainPlaceholder: 'Select a domain',\n procedurePlaceholder: 'Search procedure by name, by id, or by creator'\n },\n action: {\n consult: 'Consult',\n close: 'Close',\n send: 'Send',\n comment: 'Comment',\n associate: 'Link to procedure',\n validate: 'Validate',\n cancel: 'Cancel',\n search: 'Search',\n update: 'Update',\n create: 'Create'\n },\n service: {\n status: {\n NEW: 'Created',\n ASKED: 'Asked',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n CANCELLED: 'Cancelled'\n },\n title: 'Create service',\n subtitle: 'Create service to process these events',\n reason: 'Object',\n type: 'Type',\n priority: 'Priority',\n description: 'Description',\n target: 'Equipement',\n gti: 'GTI (hours)',\n gtr: 'GTR (hours)',\n gtrp: 'GTRP (hours)',\n describe: 'Description',\n noEquip: 'No équipement',\n domain: 'Domain',\n priorities: {\n '1-MINEUR': 'Minor',\n '2-MAJEUR': 'Major',\n '3-BLOQUANT': 'Blocking'\n }\n }\n }\n};\n","export const frTranslations = {\n '@hvy': {\n event: {\n district: 'Ville/Quartier',\n id: 'Identifiant',\n name: 'Événement',\n subCategory: {\n name: 'Sous-catégorie',\n NONE: 'Aucune',\n UNUSUAL_FLOW: 'Affluence anormale de personnes',\n TRAFFIC_CONGESTION: 'Congestion de véhicules',\n WILD_STORAGE: 'Dépôts sauvages',\n CARREFOUR_AU_NOIR: 'Carrefour au noir (Planifié)',\n CARREFOUR_CLIGNOTANT: 'Carrefour clignotant (Planifié)',\n CARREFOUR_AU_NOIR_NP: 'Carrefour au noir (Non planifié)',\n CARREFOUR_CLIGNOTANT_NP: 'Carrefour clignotant (Non planifié)'\n },\n status: {\n name: 'Statut événement',\n NEW: 'Nouveau',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturé',\n OT_CLOSED: 'Clôturé',\n ARCHIVED: 'Archivé'\n },\n address: 'Adresse',\n source: 'Source',\n externalId: 'Référence externe',\n hypervisor: 'Hyperviseur',\n equipment: \"Référence de l'équipement\",\n equipmentEntity: \"Entité de l'équipement\",\n notFound: 'Equipement inconnu',\n domain: {\n name: 'Métier'\n },\n startDate: 'Date de début',\n endDate: 'Date de fin',\n creationDate: 'Date de création',\n creationDateTable: 'Création',\n creator: 'Créateur',\n errorDate: 'Veuillez saisir une date de fin postérieure à la date de début.',\n lastModificationDate: 'Date de dernière modification',\n lastModificationDateTable: 'Modification',\n closeDate: 'Date de clôture',\n detail: `Description de l'événement`,\n details: 'Description des événements',\n log: {\n name: 'Journal des événements',\n empty: 'Aucun événement.',\n event: {\n description: 'Description',\n address: 'Adresse',\n detail: 'Informations',\n mandatory: '* Champs obligatoires',\n name: 'Nom',\n id: 'Identifiant',\n category: 'Catégorie',\n close: 'Clôturer tous ces événements',\n closed: 'Tous clôturés',\n comments: {\n name: \"Commentaires de l'événement ({{nb}})\",\n placeholder: 'Écrivez votre commentaire',\n actions: 'Commentaires ({{nb}})'\n }\n },\n procedure: {\n delete: 'Supprimer la procédure',\n progress: 'Progression',\n noAction: \"Une procédure est une succession d'actions à réaliser selon l'ordre d'intervention.\",\n name: 'Procédure commune',\n name1: 'Procédure',\n none: 'Aucune procédure n’a été associée à cet événement.'\n }\n },\n category: {\n name: \"Catégorie d'événement\",\n MANIFESTATION: 'Manifestation',\n LIMIT: 'Seuil',\n OUTOFORDER: 'Hors Service',\n ANOMALY: 'Anomalie'\n },\n criticality: {\n name: 'Criticité',\n LOW: 'Faible',\n MEDIUM: 'Moyenne',\n HIGH: 'Haute'\n },\n filter: {\n search: 'Recherchez par équipement',\n name: 'Filtrer',\n choice: {\n all: 'Tous'\n },\n reset: 'Réinitialiser'\n },\n close: {\n oneTitle: 'Clôturer un événement',\n multiTitle: 'Clôturer des événements',\n one: 'Êtes-vous sûr de vouloir clôturer cet événement ?',\n multi: 'Êtes-vous sûr de vouloir clôturer tous ces événements ?',\n comment: 'Commentaire de clôture'\n },\n installDate: \"Date d'installation\",\n managed: 'Équipement télégéré',\n prm: 'N° du contrat PRM',\n presenceSensor: 'Capteur de présence',\n parent: 'Parent',\n parentEvent: {\n name: 'Événement parent',\n placeholder: 'Recherchez par identifiant ou nom'\n },\n consult: 'Consulter {{howMany}} événement{{plural}}',\n entity: {\n NOTFOUND: 'Équipement inconnu'\n },\n comment: {\n lastDetail: 'Dernier commentaire du {{day}} à {{hour}} par {{creator}}',\n detail: 'Commentaire du {{day}} à {{hour}} par {{creator}}',\n more: 'Voir plus de commentaires',\n less: 'Voir moins de commentaires',\n head: '{{nb}} commentaire',\n heads: '{{nb}} commentaires'\n },\n equipmentPlaceholder: 'Recherchez par référence ou famille',\n export: {\n filename: 'Hyperviseur_Export_Journal_Evenements'\n },\n add: {\n title: 'Ajouter un événement',\n description: 'L’événement s’ajoutera au groupe d’événements et sera associé à la procédure commune.',\n search: 'Rechercher un événement'\n }\n },\n eventSummary: {\n from: 'Du',\n to: 'au',\n noContent: {\n NEW: 'Aucun nouvel événement.',\n IN_PROGRESS: \"Aucun événement n'est en cours.\",\n DONE: \"Aucun événement n'est clôturé.\"\n },\n statusLabels: {\n NEW: 'Nouveaux',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturés'\n },\n criticalityLabels: {\n LOW: 'Faible',\n MEDIUM: 'Moyenne',\n HIGH: 'Haute',\n ALL: 'Tous'\n }\n },\n procedure: {\n checkbox: {\n NEW: 'À faire',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé'\n },\n alreadyExists: 'Ce titre existe déjà. Veuillez en saisir un autre.',\n name: 'Procédure',\n progress: '% avancement procédure',\n useCount: 'Usage',\n title: 'Titre',\n category: 'Métier',\n author: 'Créateur',\n id: 'Identifiant',\n missingProperty: 'Propriété manquante',\n noContent: 'Aucune procédure.',\n domain: 'Métier',\n catalog: 'Bibliothèque des procédures',\n detail: 'Description de la procédure',\n actions: 'Actions associées',\n description: 'Description',\n creator: 'Créateur',\n formTitle: 'Informations',\n action: {\n add: 'Ajouter une action',\n create: 'Ajouter une action',\n modify: \"Modifier l'action\",\n comment: 'Commenter',\n delete: 'Supprimer',\n update: 'Modifier',\n done: 'Terminer',\n PHONE: 'Appeler le métier/police pour sécurisation',\n SMS: 'Informer le métier par téléphone/SMS (personne/service)',\n OTHER: 'Autre',\n ASKED_SERVICE: \"Créer une demande d’intervention GMAO\",\n EMAIL: 'Informer le métier par mail (personne/service)',\n to: 'au',\n at: 'à',\n service: \"Demande d'intervention\",\n placeholder: {\n name: 'Qui ?',\n phone: '+33',\n email: 'ex: nom@e-mail.com',\n service: \"Saisissez la demande d'intervention\",\n other: 'Saisissez votre texte',\n action: 'Sélectionner une action'\n },\n question: {\n PHONE: 'Appeler',\n SMS: 'Informer',\n EMAIL: 'Envoyer un e-mail à',\n ASKED_SERVICE: \"Créer une demande d’intervention GMAO\",\n OTHER: 'Autre'\n }\n },\n status: {\n NEW: 'Créé',\n ASKED: 'Demandé',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé',\n CANCELLED: 'Annulé',\n OT_CLOSED: 'Terminé'\n }\n },\n associationModal: {\n title: 'Associer à une procédure',\n description:\n 'Associer une procédure à des événements permet de sélectionner la liste des actions à réaliser pour traiter ces événements.',\n linkedEvents: 'Événements liés',\n categoryFilter: 'Filtrer par métier',\n searchProcedure: 'Rechercher une procédure',\n domainPlaceholder: 'Sélectionner un métier',\n procedurePlaceholder: 'Recherchez par identifiant, titre ou créateur'\n },\n action: {\n consult: 'Consulter',\n close: 'Clôturer',\n send: 'Envoyer',\n comment: 'Commenter',\n associate: 'Associer à une procédure',\n validate: 'Valider',\n cancel: 'Annuler',\n search: 'Rechercher',\n update: 'Modifier',\n create: 'Créer'\n },\n service: {\n status: {\n NEW: 'Créé',\n ASKED: 'Demandé',\n IN_PROGRESS: 'En cours',\n DONE: 'Terminé',\n CANCELLED: 'Annulé',\n OT_CLOSED: 'Terminé',\n },\n title: \"Créer une demande d'intervention\",\n subtitle: \"Créer une demande d'intervention pour traiter ces événements.\",\n reason: 'Objet de la demande',\n type: 'Nature de la demande',\n priority: 'Priorité',\n description: 'Description de la demande',\n target: 'Équipement',\n gti: 'GTI (heures)',\n gtr: 'GTR (heures)',\n gtrp: 'GTRP (heures)',\n describe: 'Description de la demande',\n noEquip: 'Aucun équipement',\n domain: 'Métier',\n priorities: {\n '1-MINEUR': 'Mineur',\n '2-MAJEUR': 'Majeur',\n '3-BLOQUANT': 'Bloquant'\n }\n }\n }\n};\n","import { Component } from '@angular/core';\nimport { HvyBaseParameterActionComponent } from '../base-parameter-action.component';\nimport { HypAction } from '../../../../model/procedure/hyp-action.interface';\n\n@Component({\n selector: 'hvy-no-params-action-display',\n templateUrl: './no-params-action-display.component.html'\n})\nexport class HvyNoParamsActionDisplayComponent extends HvyBaseParameterActionComponent<HypAction> {\n constructor() {\n super();\n }\n}\n","<div class=\"param-line\">\n <p>\n {{ '@hvy.procedure.action.question.' + action.type | i18n }}\n </p>\n</div>\n","export const HypEventType = { values: ['ALERT', 'REPORT', 'OPERATOR'] };\n","export const HypServiceStatus = {\n values: ['NEW', 'ASKED', 'IN_PROGRESS', 'DONE', 'CANCELLED']\n};\n","export const ENTITIES: { values: string[] } = {\n values: ['ENTITY1', 'ENTITY2', 'ENTITY3']\n};\n","/*\n * Public API Surface of hypervisor\n */\n\nexport * from './event/hyp-event.interface';\nexport * from './event/hyp-event-category.type';\nexport * from './event/hyp-event-criticality.type';\nexport * from './event/hyp-event-detail.interface';\nexport * from './event/hyp-event-status.type';\nexport * from './event/hyp-event-summary.interface';\nexport * from './event/hyp-event-type';\nexport * from './procedure/hyp-procedure.interface';\nexport * from './procedure/hyp-procedure-model.interface';\nexport * from './procedure/hyp-action.interface';\nexport * from './hyp-equipment.interface';\nexport * from './hyp-service-status.type';\nexport * from './domains.constant';\nexport * from './entites.constant';\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventActions } from './event.actions';\nimport { EventService, KNOWN_FILTER_SETS } from './event.service';\nimport { filter, withLatestFrom } from 'rxjs';\nimport { EventSelectors } from './event.selectors';\nimport { Store } from '@ngrx/store';\n\n@Injectable()\nexport class EventEffects {\n loadEvents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.load),\n debounceTime(200),\n withLatestFrom(this.store.select(EventSelectors.events), this.store.select(EventSelectors.noMoreEvents)),\n filter(([action, events, noMore]) => !action.next || (action.next && !noMore)),\n mergeMap(([action, stateEvents]) =>\n this.eventService.list(action.next ? stateEvents.length : 0).pipe(\n map((events) => EventActions.loadSuccess({ events, startingFrom: action.next ? stateEvents.length : 0 })),\n catchError((error) => [EventActions.loadFailure({ error: error })])\n )\n )\n )\n );\n\n getEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.get),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.get(action.id).pipe(\n map((event) => EventActions.getSuccess({ event })),\n catchError((error) => [EventActions.getFailure({ error: error })])\n )\n )\n )\n );\n\n getEventByName$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.getTooltipInfo),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.getTooltipInfo(action.name).pipe(\n map((event) => EventActions.getTooltipInfoSuccess({ event })),\n catchError((error) => [EventActions.getTooltipInfoFailure({ error: error })])\n )\n )\n )\n );\n\n getForProcedureEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.getForProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.getProcedure(action.id).pipe(\n map((procedure) => EventActions.getSuccess({ procedure })),\n catchError((error) => [EventActions.getFailure({ error: error })])\n )\n )\n )\n );\n\n saveEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.save),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.save(action.event).pipe(\n map((event) => EventActions.saveSuccess({ event: event ?? action.event, creation: action.event.id < 0 })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n saveProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.saveProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.saveProcedure(action.procedure).pipe(\n map((procedure) => EventActions.saveSuccess({ procedure: action.procedure, creation: false })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n addEventToProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.addEventToProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.addEventToProcedure(action.eventId, action.procedure).pipe(\n map(() => EventActions.saveSuccess({ procedure: action.procedure, creation: false })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n refreshAfterSave$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.saveSuccess, EventActions.statusSuccess),\n debounceTime(200),\n map((action) =>\n !!action.procedure\n ? EventActions.getForProcedure({ id: action.procedure.id })\n : EventActions.get({ id: action.event!.id })\n )\n )\n );\n\n close$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.status),\n debounceTime(200),\n mergeMap((action) => {\n if (!!action.event) {\n return this.eventService.status(action.event, action.targetStatus, action.comment).pipe(\n mergeMap((event) => [\n EventActions.statusSuccess({ event: action.event, procedure: action.procedure }),\n EventActions.load({})\n ]),\n catchError((error) => [EventActions.statusFailure({ error: error })])\n );\n } else {\n return this.eventService.statusProcedure(action.procedure!, action.targetStatus, action.comment).pipe(\n mergeMap((event) => [EventActions.statusSuccess({ procedure: action.procedure }), EventActions.load({})]),\n catchError((error) => [EventActions.statusFailure({ error: error })])\n );\n }\n })\n )\n );\n\n sort$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.sort),\n debounceTime(200),\n map(() => EventActions.load({}))\n )\n );\n\n filter$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.filter),\n filter((action) => action.filterSet === KNOWN_FILTER_SETS.EVENTS),\n debounceTime(200),\n map(() => EventActions.load({}))\n )\n );\n\n associateProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.associateProcedure),\n mergeMap((action) =>\n this.eventService.associateProcedure(action.procedureId, action.eventIds).pipe(\n mergeMap((procedure) => [EventActions.load({}), EventActions.associateProcedureSuccess({ procedure })]),\n catchError((error) => [EventActions.associateProcedureFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private eventService: EventService,\n private store: Store\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Store } from '@ngrx/store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HypervisorService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions } from '@ngrx/effects';\nimport { HypervisorService } from './hypervisor.service';\n\n@Injectable()\nexport class HypervisorEffects {\n\n constructor(\n private actions$: Actions,\n private eventService: HypervisorService,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from '../event/event.selectors';\nimport { HypEventSummaries } from '../../model/public-api';\nimport { KNOWN_FILTER_SETS } from '../event/event.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventSummaryService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n list(): Observable<HypEventSummaries> {\n return this.store.select(HypSelectors.url).pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filterSets]) => {\n const filters = filterSets[KNOWN_FILTER_SETS.EVENTS];\n let params = new HttpParams();\n Object.keys(filters).forEach((filter) => {\n filters[filter].forEach((filterValue) => {\n params = params.set(filter, filterValue);\n });\n });\n return this.httpClient.get<HypEventSummaries>(encodeURI(`${url}/events/summary`), { params });\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { EventSummaryService } from './event-summary.service';\n\n@Injectable()\nexport class EventSummaryEffects {\n loadSummaries$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventSummaryActions.load),\n debounceTime(200),\n mergeMap((action) =>\n this.eventSummaryService.list().pipe(\n map((summaries) => EventSummaryActions.loadSuccess({ summaries })),\n catchError((error) => [EventSummaryActions.loadFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventSummaryService: EventSummaryService,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { filter, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ProcedureActions } from './procedure.actions';\nimport { ProcedureSelectors } from './procedure.selectors';\nimport { ProcedureService } from './procedure.service';\n\n@Injectable()\nexport class ProcedureEffects {\n loadProcedures$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.load),\n debounceTime(200),\n withLatestFrom(\n this.store.select(ProcedureSelectors.procedures),\n this.store.select(ProcedureSelectors.noMoreProcedures)\n ),\n filter(([action, stateProcedures, noMore]) => !noMore),\n mergeMap(([action, stateProcedures]) =>\n this.procedureService.list(action.next ? stateProcedures.length : 0).pipe(\n map((procedures) =>\n ProcedureActions.loadSuccess({ procedures, startingFrom: action.next ? stateProcedures.length : 0 })\n ),\n catchError((error) => [ProcedureActions.loadFailure({ error: error })])\n )\n )\n )\n );\n\n sort$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.sort),\n debounceTime(200),\n map(() => ProcedureActions.load({}))\n )\n );\n\n model$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.model),\n debounceTime(200),\n mergeMap((action) =>\n this.procedureService.get(action.id).pipe(\n map((model) => ProcedureActions.modelSuccess({ model })),\n catchError((error) => [ProcedureActions.modelFailure({ error: error })])\n )\n )\n )\n );\n\n save$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.save),\n debounceTime(200),\n mergeMap((action) =>\n this.procedureService.save(action.model).pipe(\n map((model) => ProcedureActions.saveSuccess({ model, wasCreation: !action.model.id })),\n catchError((error) => [ProcedureActions.saveFailure({ error: error })])\n )\n )\n )\n );\n\n refreshAfterSave$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.saveSuccess),\n debounceTime(200),\n map((action) => ProcedureActions.model({ id: action.model.id }))\n )\n );\n\n deleteInstance$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ProcedureActions.deleteInstance),\n debounceTime(200),\n mergeMap((action) =>\n this.procedureService.delete(action.id).pipe(\n map((model) => ProcedureActions.deleteInstanceSuccess({ returnToEvent: action.returnToEvent })),\n catchError((error) => [ProcedureActions.deleteInstanceFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private procedureService: ProcedureService,\n private store: Store\n ) {}\n}\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { Store, StoreModule } from '@ngrx/store';\nimport { eventFeatureKey, eventReducer } from './store/event/event.reducer';\nimport { EventEffects } from './store/event/event.effects';\nimport { EventDetailComponent } from './event/detail/event-detail.component';\nimport { hypervisorReducer, hypFeatureKey } from './store/hypervisor/hypervisor.reducer';\nimport { HypervisorEffects } from './store/hypervisor/hypervisor.effects';\nimport { HYP_BASE_CONFIG } from './general/base.token';\nimport { HypervisorActions } from './store/hypervisor/hypervisor.actions';\nimport {AsyncPipe, DatePipe, JsonPipe, KeyValuePipe, NgClass, NgForOf, NgIf, NgStyle} from '@angular/common';\nimport {\n I18nPipe,\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PrySinceDateModule\n} from '@provoly/dashboard';\nimport { enTranslations } from './general/i18n/en.translations';\nimport { frTranslations } from './general/i18n/fr.translations';\nimport { IconDisplayComponent } from './general/icon-display/icon-display.component';\nimport { EventIconPipe } from './general/icon-pipe/event-icon.pipe';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { EventListComponent } from './event/list/event-list.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { EventSummaryListComponent } from './event-summary/list/event-summary-list.component';\nimport { EventSummaryItemComponent } from './event-summary/item/event-summary-item.component';\nimport { EventSummaryEffects } from './store/event-summary/event-summary.effects';\nimport { eventSummaryFeatureKey, eventSummaryReducer } from './store/event-summary/event-summary.reducer';\nimport { EventSummaryPageComponent } from './event-summary/page/event-summary-page.component';\nimport { ForDatetimeLocalPipe } from './general/for-datetime-local-pipe/for-datetime-local.pipe';\nimport { StatusDisplayComponent } from './general/status-display/status-display.component';\nimport { ProgressDisplayComponent } from './general/progress-display/progress-display.component';\nimport { ColumnOrderComponent } from './general/column-order/column-order.component';\nimport { EventFiltersComponent } from './event/filters/on/click/event-filters.component';\nimport { DateFilterComponent } from './event/filters/date/date-filter.component';\nimport { ChoiceFilterComponent } from './event/filters/choice/choice-filter.component';\nimport { ProcedureListComponent } from './procedure/model-list/procedure-list.component';\nimport { procedureFeatureKey, procedureReducer } from './store/procedure/procedure.reducer';\nimport { ProcedureEffects } from './store/procedure/procedure.effects';\nimport { EventColumnOrderComponent } from './event/list/event-column-order.component';\nimport { ProcedureColumnOrderComponent } from './procedure/model-list/procedure-column-order.component';\nimport { ProcedureAssociationModalComponent } from './event/procedure-association-modal/procedure-association-modal.component';\nimport { TextFilterComponent } from './event/filters/text/text-filter.component';\nimport { ImmediateFiltersComponent } from './event/filters/on/immediate/immediate-filters.component';\nimport { ProcedureModelDetailComponent } from './procedure/model-detail/procedure-model-detail.component';\nimport { ProcedureActionsComponent } from './general/procedure-actions/procedure-actions.component';\nimport { HvyActionMenuComponent } from './general/procedure-actions/action-menu.component';\nimport { HvyActionParameterComponent } from './general/procedure-actions/action-parameters/action-parameter.component';\nimport { HvyBaseParameterActionComponent } from './general/procedure-actions/action-parameters/base-parameter-action.component';\nimport { HvyOtherActionParameterComponent } from './general/procedure-actions/action-parameters/other/other-action-parameter.component';\nimport { HvyOtherActionDisplayComponent } from './general/procedure-actions/action-parameters/other/other-action-display.component';\nimport { HvyNoParamsActionDisplayComponent } from './general/procedure-actions/action-parameters/no-param/no-params-action-display.component';\nimport { HvyPhoneActionParameterComponent } from './general/procedure-actions/action-parameters/phone/phone-action-parameter.component';\nimport { HvyPhoneActionDisplayComponent } from './general/procedure-actions/action-parameters/phone/phone-action-display.component';\nimport { HvyEmailActionDisplayComponent } from './general/procedure-actions/action-parameters/email/email-action-display.component';\nimport { HvyEmailActionParameterComponent } from './general/procedure-actions/action-parameters/email/email-action-parameter.component';\nimport { HvyServiceActionParameterComponent } from './general/procedure-actions/action-parameters/service/service-action-parameter.component';\nimport { HvyServiceActionDisplayComponent } from './general/procedure-actions/action-parameters/service/service-action-display.component';\nimport { DisplayLocaleDateTime } from './general/display-locale-datetime/display-locale-datetime.pipe';\nimport { HvyCommentsComponent } from './general/comments/comments.component';\nimport { HvyCreateServiceComponent } from './general/procedure-actions/action-parameters/service/create-service.component';\nimport { LastEventsComponent } from './general/last-events/last-events.component';\nimport { HvyEventDetailsTooltipComponent } from './event/detail/event-details-tooltip.component';\nimport { HvyEventAddEventComponent } from './event/detail/add-event/add-event.component';\nimport { TruncatePipe } from './general/truncate-pipe/truncate.pipe';\nimport {\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatOption\n} from \"@angular/material/autocomplete\";\n\nconst components = [\n EventDetailComponent,\n EventListComponent,\n EventColumnOrderComponent,\n IconDisplayComponent,\n EventSummaryItemComponent,\n EventSummaryListComponent,\n EventSummaryPageComponent,\n EventIconPipe,\n ForDatetimeLocalPipe,\n StatusDisplayComponent,\n ProgressDisplayComponent,\n ColumnOrderComponent,\n EventFiltersComponent,\n DateFilterComponent,\n TextFilterComponent,\n ChoiceFilterComponent,\n ProcedureListComponent,\n ProcedureColumnOrderComponent,\n ProcedureAssociationModalComponent,\n ProcedureModelDetailComponent,\n ImmediateFiltersComponent,\n HvyActionMenuComponent,\n HvyCreateServiceComponent,\n HvyActionParameterComponent,\n HvyBaseParameterActionComponent,\n HvyOtherActionParameterComponent,\n HvyOtherActionDisplayComponent,\n HvyNoParamsActionDisplayComponent,\n HvyPhoneActionParameterComponent,\n HvyPhoneActionDisplayComponent,\n HvyEmailActionDisplayComponent,\n HvyEmailActionParameterComponent,\n HvyServiceActionParameterComponent,\n HvyServiceActionDisplayComponent,\n DisplayLocaleDateTime,\n HvyCommentsComponent,\n LastEventsComponent,\n HvyEventDetailsTooltipComponent,\n HvyEventAddEventComponent\n];\n\n@NgModule({\n declarations: [...components, ProcedureActionsComponent],\n imports: [\n StoreModule.forFeature(hypFeatureKey, hypervisorReducer),\n StoreModule.forFeature(eventFeatureKey, eventReducer),\n StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),\n StoreModule.forFeature(procedureFeatureKey, procedureReducer),\n EffectsModule.forFeature([EventEffects, EventSummaryEffects, ProcedureEffects, HypervisorEffects]),\n NgForOf,\n AsyncPipe,\n PryI18nModule,\n PryCoreModule,\n NgStyle,\n PryCheckboxModule,\n FormsModule,\n RouterLink,\n PrySinceDateModule,\n DatePipe,\n PryIconModule,\n KeyValuePipe,\n PrySelectModule,\n JsonPipe,\n PryDatePickerModule,\n NgIf,\n PryCoreModule,\n PryI18nModule,\n FormsModule,\n AsyncPipe,\n TruncatePipe,\n DatePipe,\n AsyncPipe,\n MatAutocompleteTrigger,\n MatAutocomplete,\n MatOption,\n ReactiveFormsModule,\n PryIconModule,\n NgClass,\n AsyncPipe,\n PryI18nModule,\n AsyncPipe,\n PryI18nModule,\n ],\n exports: [...components],\n providers: [I18nPipe]\n})\nexport class PvyHypervisorModule {\n static forRoot(options: { url?: string }): ModuleWithProviders<PvyHypervisorModule> {\n return {\n ngModule: PvyHypervisorModule,\n providers: [{ provide: HYP_BASE_CONFIG, useValue: options }]\n };\n }\n\n constructor(\n @Inject(HYP_BASE_CONFIG)\n private baseConfig: {\n url: string;\n },\n private store: Store<any>,\n private i18nService: PryI18nService\n ) {\n this.store.dispatch(HypervisorActions.setUrl({ url: baseConfig.url }));\n this.i18nService.addLangObject('en', '@hvy', enTranslations);\n this.i18nService.addLangObject('fr', '@hvy', frTranslations);\n }\n}\n","/*\n * Public API Surface of hypervisor\n */\nexport * from './src/lib/auth/public-api';\nexport * from './src/lib/event/public-api';\nexport * from './src/lib/event-summary/public-api';\nexport * from './src/lib/procedure/public-api';\nexport * from './src/lib/general/public-api';\nexport * from './src/lib/model/public-api';\nexport * from './src/lib/hypervisor.module';\nexport * from './src/lib/store/event/public-api';\nexport * from './src/lib/store/event-summary/public-api';\nexport * from './src/lib/store/equipment/public-api';\nexport * from './src/lib/store/hypervisor/public-api';\nexport * from './src/lib/store/procedure/public-api';\nexport * from './src/lib/store/comments/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["internalReducer","feature","loading","sort","i2","i1","i3.EventIconPipe","map","i2.ProcedureService","i3","i4","i5.IconDisplayComponent","i6","i3.InfiniteScrollService","i5","i7.EventColumnOrderComponent","i8.IconDisplayComponent","i9.StatusDisplayComponent","i11.DisplayLocaleDateTime","i4.IconDisplayComponent","i5.StatusDisplayComponent","i7.TruncatePipe","i2.LastEventsComponent","i2.EventService","i1.HypCommentsService","i2.ServiceService","i3.ServiceService","model","i3.HypCommentsService","i4.ServiceService","i7.HvyActionParameterComponent","i8.HvyCommentsComponent","i1.EquipmentService","i5.HypCommentsService","i6.EventService","i7","i8","i11.IconDisplayComponent","i12.StatusDisplayComponent","i13.ProgressDisplayComponent","i14.HvyCommentsComponent","i15.ProcedureActionsComponent","i16.ForDatetimeLocalPipe","debounceTime","i5.DisplayLocaleDateTime","i4.EventSummaryItemComponent","i4.EventSummaryListComponent","i5.TextFilterComponent","i6.ChoiceFilterComponent","i7.ProcedureColumnOrderComponent","i8.ImmediateFiltersComponent","i9","i10.DisplayLocaleDateTime","i4.ProcedureActionsComponent","i5.ForDatetimeLocalPipe","mergeMap","i2.HypervisorService","i2.EventSummaryService"],"mappings":"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"}