@provoly/hypervisor 0.0.21 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/svgs/i.svg +18 -0
- package/esm2022/src/lib/event/detail/event-detail.component.mjs +92 -32
- package/esm2022/src/lib/event/filters/choice/choice-filter.component.mjs +21 -21
- package/esm2022/src/lib/event/filters/date/date-filter.component.mjs +7 -9
- package/esm2022/src/lib/event/filters/event-filters.component.mjs +14 -9
- package/esm2022/src/lib/event/filters/hvy-unit-filter.class.mjs +21 -1
- package/esm2022/src/lib/event/list/event-list.component.mjs +10 -8
- package/esm2022/src/lib/event-summary/list/event-summary-list.component.mjs +4 -3
- package/esm2022/src/lib/event-summary/page/event-summary-page.component.mjs +12 -5
- package/esm2022/src/lib/general/i18n/en.translations.mjs +25 -18
- package/esm2022/src/lib/general/i18n/fr.translations.mjs +33 -24
- package/esm2022/src/lib/general/status-display/status-display.component.mjs +3 -3
- package/esm2022/src/lib/model/event/hyp-event-detail.interface.mjs +1 -1
- package/esm2022/src/lib/model/event/hyp-event-summary.interface.mjs +1 -1
- package/esm2022/src/lib/model/event/hyp-event.interface.mjs +1 -1
- package/esm2022/src/lib/store/event/event.actions.mjs +2 -2
- package/esm2022/src/lib/store/event/event.effects.mjs +3 -3
- package/esm2022/src/lib/store/event/event.reducer.mjs +15 -13
- package/esm2022/src/lib/store/event/event.service.mjs +21 -31
- package/esm2022/src/lib/store/event-summary/event-summary.service.mjs +5 -5
- package/fesm2022/provoly-hypervisor.mjs +316 -226
- package/fesm2022/provoly-hypervisor.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/event/detail/event-detail.component.d.ts +16 -2
- package/src/lib/event/filters/choice/choice-filter.component.d.ts +6 -5
- package/src/lib/event/filters/date/date-filter.component.d.ts +5 -4
- package/src/lib/event/filters/event-filters.component.d.ts +5 -3
- package/src/lib/event/filters/hvy-unit-filter.class.d.ts +14 -2
- package/src/lib/event/list/event-list.component.d.ts +3 -0
- package/src/lib/general/i18n/en.translations.d.ts +7 -0
- package/src/lib/general/i18n/fr.translations.d.ts +9 -0
- package/src/lib/model/event/hyp-event-detail.interface.d.ts +1 -2
- package/src/lib/model/event/hyp-event-summary.interface.d.ts +0 -1
- package/src/lib/model/event/hyp-event.interface.d.ts +1 -0
- package/src/lib/model/hyp-procedure.interface.d.ts +1 -1
- package/src/lib/store/event/event.actions.d.ts +4 -0
- package/src/lib/store/event/event.service.d.ts +9 -3
- package/styles/components/_m-hvy-event-summary-item.scss +37 -7
- package/styles/components/_o-hvy-event-detail.scss +41 -0
- package/styles/components/_o-hvy-event-filters.scss +3 -0
- package/styles/components/_o-hvy-events-table.scss +2 -1
|
@@ -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/model/event/hyp-event-category.type.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.actions.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/equipment/equipment.service.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/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/progress-display/progress-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.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/store/event/event.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.selectors.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-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/event-filters.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/event-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/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/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/model/event/hyp-event-detail.interface.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-type.ts","../../../../projects/provoly/hypervisor/src/lib/model/hyp-procedure.interface.ts","../../../../projects/provoly/hypervisor/src/lib/model/public-api.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.service.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/hypervisor.module.ts","../../../../projects/provoly/hypervisor/public-api.ts","../../../../projects/provoly/hypervisor/provoly-hypervisor.ts"],"sourcesContent":["export const HypEventCriticality = {\n values: ['LOW', 'MEDIUM', 'HIGH'],\n};\n\n","export const DOMAINS: { values: string[] } = {\n values: ['DOMAIN1', 'DOMAIN2'],\n};\n","export const HypEventCategory = {\n values: ['ALERT_MALFUNCTION', 'REPORT', 'OPERATOR_EVENT', 'ALERT_LIMIT', 'MANIFESTATION'],\n};\n\nexport const CATEGORIES_BY_TYPE = {\n values: {\n 'OPERATOR': ['OPERATOR_EVENT', 'MANIFESTATION'],\n 'ALERT': ['ALERT_MALFUNCTION', 'ALERT_LIMIT'],\n 'REPORT': ['REPORT'],\n } as { [type: string]: string[] },\n};\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\nexport const EventActions = {\n load: createAction('[Event] Load Events', props<{ next?: boolean }>()),\n loadSuccess: createAction('[Event Api] (bus) Load Events Success', props<{\n events: HypEventDetails[],\n startingFrom?: number\n }>()),\n loadFailure: createAction('[Event Api] Load Events Failure', props<{ error: string }>()),\n filter: createAction('[Event Api] Set filters', props<{ filters: { [key: string]: string[] } }>()),\n select: createAction('[Event Api] Select', props<{ cumulative: boolean, ids: string[] }>()),\n get: createAction('[Event] Load specific Event', props<{ id: string }>()),\n getForProcedure: createAction('[Event] Load specific Event for procedure', props<{ id: string }>()),\n getSuccess: createAction('[Event Api] (bus) Get Events/Procedure Success', props<{\n event?: HypEventDetails,\n procedure?: HypProcedure\n }>()),\n getFailure: createAction('[Event Api] Get Events/Procedure 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 saveSuccess: createAction('[Event] Save success', props<{ event?: HypEventDetails, procedure?: HypProcedure }>()),\n saveFailure: createAction('[Event] Save failure', props<{ error: string }>()),\n status: createAction('[Event] Close Event or Procedure', props<{\n targetStatus: string;\n event?: HypEventDetails;\n procedure?: HypProcedure\n }>()),\n statusSuccess: createAction('[Event] Close success'),\n statusFailure: createAction('[Event] Close failure', props<{ error: string }>()),\n sort: createAction('[Event] set log event sorting', props<{ field: string; order: string }>()),\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 { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypEquipment } from '../../model/hyp-equipment.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\n findByName(name: string): Observable<HypEquipment> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEquipment>(encodeURI(`${url}/equipments/name/${name}`));\n }),\n );\n }\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';\n\n@Component({\n selector: 'hvy-icon-display',\n templateUrl: './icon-display.component.html'\n})\nexport class IconDisplayComponent {\n @Input() event!: HypEvent;\n}\n","<div class=\"\n m-hvy-event-summary-item__event-icon-container\n -hvy-{{ event.criticality.toString().toLowerCase()}}\n -hvy-{{event.type.toString().toLowerCase()}}\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, EventEmitter, Input, Output } from '@angular/core';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-status-display',\n templateUrl: './status-display.component.html',\n})\nexport class StatusDisplayComponent {\n\n @Output() modified = new EventEmitter<string>();\n private _event!: HypEventDetails;\n targetStatuses: string[] = [];\n targetsDisplayed: boolean = false;\n _modifiable = false;\n\n @Input() set event(event: HypEventDetails) {\n this._event = event;\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;\n }\n\n get event() {\n return this._event;\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.event.status !== 'DONE') ? ['DONE'] : [];\n }\n\n toggle() {\n this.targetsDisplayed = this.targetStatuses.length > 0 && !this.targetsDisplayed;\n }\n}\n","<span class=\"a-chip -md -{{event.status}} a-chip-status\" (click)=\"toggle()\" >\n {{ '@hvy.event.status.' + event.status | i18n }}\n @if (targetStatuses.length > 0) {\n <pry-icon iconSvg=\"chevron_bottom\" [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)\">{{ '@hvy.event.status.' + status | i18n }}</div>\n }\n </div>\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\n @Input() progress: number = 50;\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 { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\n@Pipe({\n name: 'forDateTimeLocal',\n})\nexport class ForDatetimeLocalPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(completeDate: string | undefined, ...args: unknown[]): string {\n return completeDate ? completeDate.substring(0, completeDate.lastIndexOf(':')) : '';\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEquipment } from '../../model/hyp-equipment.interface';\nimport { EquipmentService } from '../../store/equipment/equipment.service';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { CATEGORIES_BY_TYPE } from '../../model/event/hyp-event-category.type';\nimport { EventActions } from '../../store/event/event.actions';\nimport { Store } from '@ngrx/store';\nimport { HypAction } from '../../model/hyp-action.interface';\n\n@Component({\n selector: 'hvy-event-detail',\n templateUrl: './event-detail.component.html',\n})\nexport class EventDetailComponent extends SubscriptionnerDirective {\n static CARD_HEIGHT = 75;\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 errors: { field: string; code: string }[][] = [];\n canCloseSome = false;\n newComentContent = '';\n movingAction?: HypAction;\n moveStart = 0;\n moveInitialIndex = 0;\n initialActionList: HypAction[] = [];\n previousOffset = 0;\n dragTarget?: EventTarget | null;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events.filter(ev => !!ev);\n this.eventModifications = new Array(this._events.length);\n this.opened = this._events.length === 1 ? [true] : [];\n this.canCloseSome = this._events.filter(ev => ev.status !== 'DONE').length > 0;\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.eventModifications = new Array(this._events.length);\n this.procedureModifications = {};\n this._outputModifications();\n }\n\n constructor(private equipmentService: EquipmentService, private store: Store) {\n super();\n }\n\n get events() {\n return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));\n }\n\n get procedure(): HypProcedure | undefined {\n return this._procedure ? ({\n ...this._procedure,\n ...(this.procedureModifications ?? {}),\n events: this.events,\n }) : undefined;\n }\n\n toggle(i: number) {\n this.opened[i] = !this.opened[i];\n }\n\n modifyEvent(index: number, prop: string, $event: Event | string) {\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 : `${newValue}:00.000000Z`;\n // @ts-ignore\n if (this.events[index][prop] !== correctedValue) {\n\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index][prop] = correctedValue;\n\n this._outputModifications();\n }\n }\n\n access(event: HypEventDetails) {\n if (event.status === 'DONE') {\n return {\n name: true,\n category: true,\n criticality: true,\n description: true,\n address: true,\n source: true,\n domain: true,\n eqName: true,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n }\n switch (event.type) {\n case 'ALERT':\n default:\n return {\n name: true,\n category: true,\n criticality: true,\n description: true,\n address: true,\n source: true,\n domain: true,\n eqName: true,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n case 'REPORT':\n return {\n name: false,\n category: true,\n criticality: false,\n description: true,\n address: false,\n source: true,\n domain: false,\n eqName: false,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n case 'OPERATOR':\n return {\n name: false,\n category: false,\n criticality: false,\n description: false,\n address: false,\n source: false,\n domain: false,\n eqName: false,\n eqEntity: false,\n startDate: false,\n endDate: false,\n };\n }\n }\n\n changeEquipment(index: number, $event: any) {\n this.equipmentService.findByName($event.target.value).subscribe((equipment: HypEquipment) => {\n if (equipment && this._events[index].name !== equipment.name) {\n\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index].equipment = equipment;\n this._outputModifications();\n }\n });\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 => {\n const eventErrors = [];\n if (!event.name || event.name.length === 0) {\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) {\n eventErrors.push({ field: 'description', code: 'required' });\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?.localeCompare(event.endDate ?? '') ?? 0) > 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 CATEGORIES_BY_TYPE.values[event.type];\n }\n\n changeStatus($event: string, event: HypEventDetails) {\n this.store.dispatch(EventActions.status({ targetStatus: $event, event: event }));\n }\n\n closeAll() {\n if (!this.procedure) {\n this.store.dispatch(EventActions.status({ targetStatus: 'DONE', event: this.events[0] }));\n } else {\n this.store.dispatch(EventActions.status({ targetStatus: 'DONE', procedure: this.procedure }));\n }\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.procedure!.actions];\n } else {\n $event.preventDefault();\n }\n }\n\n move($event: MouseEvent) {\n $event.preventDefault();\n if (this.movingAction) {\n const offsetInCards = Math.round(($event.clientY - this.moveStart) / EventDetailComponent.CARD_HEIGHT);\n if (this.previousOffset !== offsetInCards) {\n this.previousOffset = offsetInCards;\n const newIndex = Math.min(Math.max(this.moveInitialIndex + offsetInCards, 0), this.initialActionList.length - 1);\n const newTab = [...this.initialActionList];\n const element = newTab.splice(this.moveInitialIndex, 1)[0];\n newTab.splice(newIndex, 0, element);\n this.procedureModifications.actions = newTab;\n }\n }\n }\n\n drop($event: MouseEvent) {\n $event.preventDefault();\n this.move($event);\n this.movingAction = undefined;\n this._outputModifications();\n }\n\n allowDrop($event: MouseEvent) {\n $event.preventDefault();\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>{{ '@hvy.event.detail' | i18n }}</h1>\n @if (events.length > 1) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\"\n (click)=\"closeAll()\">{{ '@hvy.event.log.event.close' | i18n }}\n </button>\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-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 [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"event.status !== 'DONE'\"\n (modified)=\"changeStatus($event, event)\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n } @else {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [class.-error]=\"hasError('equipment', idx)\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" 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 </tr>\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n </td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n </td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComentContent\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\"\n [disabled]=\"newComentContent.length === 0\">{{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n </div>\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>{{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}</h2>\n </div>\n @if (procedure) {\n <div>\n <p>{{ procedure.name }}</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]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\" (drag)=\"move($event)\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n @for (action of procedure.actions;track action.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\" [draggable]=\"true\" (dragstart)=\"dragStart($event, action, idx)\" (mousedown)=\"onMouseDown($event)\">\n <pry-icon iconSvg=\"six_dot\" #handle></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n } @else {\n <button class=\"a-btn a-btn--secondary\">\n {{ '@chh.actions.associate' | i18n }}\n </button>\n }\n </div>\n </div>\n </div>\n</div>\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventActions } from './event.actions';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\nimport { HvyFilterParams } from '../../event/filters/hvy-unit-filter.class';\n\nexport const eventFeatureKey = '@hvy/event';\n\nexport interface EventState {\n events: HypEventDetails[];\n noMoreEvents: boolean;\n loading: boolean;\n filters: HvyFilterParams,\n selectedIds: string[];\n details: {\n event?: HypEventDetails;\n procedure?: HypProcedure;\n },\n sort?: {\n field: string;\n order: string;\n }\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 ? ids : [...state.selectedIds, ...ids].reduce((p, c) => p.indexOf(c) === -1 ? [...p, c] : p.filter(p1 => p1 !== c), [] as string[]),\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 }) => ({\n ...state,\n events: [],\n noMoreEvents: false,\n filters: filters,\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\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 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);\n\nexport const EventSelectors = {\n feature,\n events,\n selectedIds,\n loading,\n filters,\n details,\n noMoreEvents,\n sort\n};\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\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(private store: Store) {\n super();\n this.subscriptions.add(\n this.store.select(EventSelectors.sort).subscribe(sort => this.sortValue = sort),\n );\n }\n\n\n sort(order: string) {\n this.store.dispatch(EventActions.sort({ field: this.field, order }));\n }\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>\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 { AfterViewInit, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { auditTime, combineLatest, filter, fromEvent, map, Observable, withLatestFrom } 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';\n\nexport const EVENT_LINK = {\n fn: (event: HypEventDetails | HypEventSummary, store: Store<any>) => ['./', 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<string[]>;\n EVENT_LINK = EVENT_LINK;\n _store = this.store;\n allSelected$: Observable<boolean>;\n _inhibate = false;\n\n constructor(private store: Store<any>, private el: ElementRef) {\n super();\n this.store.dispatch(EventActions.load({}));\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(map(([events, selectedIds]) => events.filter(ev => !selectedIds.includes(ev.id)).length === 0));\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n fromEvent(this.el.nativeElement, 'scroll')\n .pipe(\n // Are we close to end\n map((e: any) => {\n const target = e.currentTarget;\n return target.scrollHeight - target.offsetHeight - target.scrollTop;\n }),\n withLatestFrom(this.store.select(EventSelectors.noMoreEvents)),\n filter(([remaningScroll, noMore]) => !noMore && remaningScroll < 200),\n auditTime(200),\n ).subscribe(() => {\n this.store.dispatch(EventActions.load({ next: true }));\n }));\n }\n\n select(event: HypEventDetails, $event: MouseEvent) {\n this.inhibate();\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._inhibate) {\n this.inhibate();\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\n inhibate() {\n this._inhibate = true;\n setTimeout(() => this._inhibate = false, 100);\n }\n}\n","<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th>\n <pry-checkbox [ngModel]=\"allSelected$|async\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>\n <hvy-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"lastModificationDate\">{{ '@hvy.event.lastModificationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"status\">{{ '@hvy.event.status.name' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"procedureProgress\">{{ '@hvy.procedure.progress' | i18n }}</hvy-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (event of events$|async; track event.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"select(event, $event)\">\n <td class=\"o-hvy-events-table__line__cell\">\n <pry-checkbox [ngModel]=\"(selectedIds$|async)!.includes(event.id)\"></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div\n class=\"o-hvy-events-table__line__cell__name__sub\">{{ event.equipment?.name ? event.equipment?.name : '' }}\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ '@hvy.event.category.' + event.category | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.address }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.creationDate| sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.lastModificationDate | sinceDate: { onlyLocale: true } }}\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-status-display [event]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n {{ event.procedureProgress }} %\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"EVENT_LINK.fn(event, _store)\">\n > {{ '@hvy.action.consult' | i18n }} @if (event.linkedEvents > 1) {\n ({{ event.linkedEvents }})\n }\n </a>\n </td>\n </tr>\n } @empty {\n <tr>\n <td class=\"o-hvy-events-table__empty\" colspan=\"50\">\n <div>{{ '@hvy.event.log.empty' | i18n }}</div>\n <div>\n <ng-content></ng-content>\n </div>\n </td>\n </tr>\n }\n </tbody>\n</table>\n","import { Component, ContentChildren, 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';\n\n@Component({\n selector: 'hvy-event-filters',\n templateUrl: './event-filters.component.html',\n})\nexport class EventFiltersComponent extends SubscriptionnerDirective {\n\n @ContentChildren('filter', { descendants: true }) filters!: QueryList<HvyUnitFilterComponent>;\n\n constructor(private store: Store) {\n super();\n }\n\n filter() {\n const filters = this.filters.map(filter => filter.getParams())\n .reduce((p, c) => ({ ...p, ...c }), {});\n this.store.dispatch(EventActions.filter({ filters }));\n }\n\n reset() {\n this.filters.forEach(filter => filter.reset());\n this.store.dispatch(EventActions.filter({ filters: {} }));\n }\n}\n","<div class=\"o-hvy-event-filters\">\n <ng-content></ng-content>\n <div class=\"o-hvy-event-filters__buttons\">\n <button (click)=\"reset()\" class=\"a-btn a-btn--secondary\">\n <pry-icon iconSvg=\"reset_filter_event\"></pry-icon>\n </button>\n <button (click)=\"filter()\" class=\"a-btn a-btn--primary\">\n {{ '@hvy.event.filter.name' | i18n }}\n <pry-icon iconSvg=\"event_filter\"></pry-icon>\n </button>\n </div>\n</div>\n","import { SubscriptionnerDirective } from '@provoly/dashboard';\n\nexport type HvyFilterParams = { [key: string]: string[] }\n\nexport class HvyUnitFilterComponent extends SubscriptionnerDirective {\n\n constructor() {\n super();\n }\n\n getParams(): HvyFilterParams {\n throw new Error('Must use sub implementation');\n }\n\n reset(): void {\n throw new Error('Must use sub implementation');\n }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { HvyFilterParams, HvyUnitFilterComponent } from '../hvy-unit-filter.class';\nimport { Store } from '@ngrx/store';\nimport { EventSelectors } from '../../../store/event/event.selectors';\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 @Input() prop: string = 'no-prop-defined';\n value: string = '';\n\n constructor(private store: Store) {\n super();\n this.subscriptions.add(this.store.select(EventSelectors.filters).subscribe(filters => {\n this.value = filters[this.prop] ? (filters[this.prop][0] ?? '') : '';\n }));\n }\n\n override getParams(): HvyFilterParams {\n if (this.value === '') {\n return {};\n }\n return { [this.prop]: [new Date(this.value).toISOString()] };\n }\n\n override reset(): void {\n this.value = '';\n }\n\n triggerChange($event: Event) {\n // @ts-ignore\n this.value = $event instanceof Event ? $event.target?.value : $event;\n }\n}\n","<div class=\"o-hvy-date-filters\">\n <input type=\"date\" class=\"a-form-field\"\n [value]=\"value\"\n (change)=\"triggerChange($event)\">\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 { HvyFilterParams, 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';\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 @Input() prop: string = 'no-prop-defined';\n @Input() label: string = 'no-label-defined';\n @Input() i18nPrefix: string = '';\n value: WritableSignal<string[]> = signal([]);\n @Input() choices: HvyChoiceFilter = [];\n overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n inhibate = false;\n displayValue = computed(() => {\n if (this.allSelected()) {\n return this.i18nService.instant('@hvy.event.filter.choice.all');\n }\n if (this.value().length > 1) {\n return `(${this.value().length})`;\n }\n if (this.value().length === 1) {\n return this.i18nService.instant(this.i18nPrefix + this.value()[0]);\n }\n return '';\n });\n\n constructor(private store: Store, private overlay: Overlay, private viewContainerRef: ViewContainerRef, private i18nService: PryI18nService, private ref: ElementRef) {\n super();\n this.id = ChoiceFilterComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(this.store.select(EventSelectors.filters).subscribe(filters => {\n this.assignValue(filters.hasOwnProperty(this.prop) ?\n filters[this.prop].length === 1 && filters[this.prop][0] === '' ? [] : filters[this.prop] : this.allValues());\n }));\n }\n\n override getParams(): HvyFilterParams {\n if (this.value().length === this.allValues().length) {\n return {};\n }\n return { [this.prop]: this.value().length === 0 ? [''] : this.value() };\n }\n\n override reset(): void {\n this.assignValue([]);\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.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 return this.choices\n .map(choice => !choice.children ? [choice.key] : choice.children.map(child => child.key))\n .reduce((p, c) => [...p, ...c], []);\n }\n\n assignValue(value: string[]) {\n if (!this.inhibate) {\n this.triggerInhibate();\n this.value.set(value);\n }\n }\n\n private triggerInhibate() {\n this.inhibate = true;\n setTimeout(() => this.inhibate = false, 50);\n }\n}\n","<button (click)=\"toggleModal()\" #button class=\"o-hvy-choice-filter -horizontal\"\n [class.-highlight]=\"displayValue() !== ('@hvy.event.filter.choice.all' | i18n)\" [class.-focus]=\"overlayRef\">\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=\"manage-account\"\n tabindex=\"-1\"\n id=\"account-menu\"\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>{{ '@hvy.event.filter.choice.all' | 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 [ngModel]=\"isSelected(child)\" (ngModelChange)=\"toggle(child)\"\n class=\"o-hvy-choice-filter__child\">\n <span>{{ i18nPrefix + child.key | i18n }}</span>\n </pry-checkbox>\n }\n }\n }\n </div>\n</ng-template>\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 EVENT_LINK = EVENT_LINK;\n\n constructor(public store: Store) {\n }\n}\n","<div class=\"m-hvy-event-summary-item\" [routerLink]=\"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 <span>\n {{\n event.manifestation ?\n (event.manifestation.startDate | date : 'dd/MM HH:MM') + ' - ' + (event.manifestation.endDate | date : 'dd/MM HH:MM') :\n event.serviceTitle\n }}\n </span>\n </div>\n <div class=\"m-hvy-event-summary-item__footer\">\n <div class=\"m-hvy-event-summary-item__icons\">\n <span class=\"m-hvy-event-summary-item__intervention-counter\">{{ event.serviceCount }}</span>\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 | date : 'd MMMM . HH:MM' }}\n </span>\n </div>\n </div>\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';\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\n constructor(private store: Store<any>, 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]);\n this.store.dispatch(EventActions.filter({ filters: { status: [status] } }));\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\n [event]=\"event\"\n [linkBase]=\"itemLinkBase\">\n </hvy-event-summary-item>\n } @empty {\n <span class=\"o-hvy-event-summary-list__no-content\">\n {{ '@hvy.eventSummary.noContent' | 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 > {{ '@hvy.action.consult' | i18n }}\n <pry-icon iconSvg=\"arrow\"></pry-icon>\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 { Observable } from 'rxjs';\nimport { EventSummaryActions } from '../../store/event-summary/event-summary.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { map } from 'rxjs/operators';\nimport { EventSummarySelectors } from '../../store/event-summary/event-summary.selectors';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEventStatus } from '../../model/event/hyp-event-status.type';\nimport { KeyValue } from '@angular/common';\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 };\n selectedCriticality$: Observable<string | undefined>;\n criticalityList = [...HypEventStatus.values, 'ALL'];\n\n constructor(private store: Store<any>) {\n super();\n this.store.dispatch(EventSummaryActions.load());\n this.selectedCriticality$ = this.store.select(EventSelectors.filters).pipe(\n map((filters) => filters['criticality']?.[0] ?? 'ALL'),\n );\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' ? this.store.dispatch(EventActions.filter({ filters: { criticality: [] } })) :\n this.store.dispatch(EventActions.filter({ filters: { criticality: [$event] } }));\n this.store.dispatch(EventSummaryActions.load());\n }\n\n criticalityOrder = (a: KeyValue<string, { events: HypEventSummary[]; count: number; }>, b: KeyValue<string, {\n events: HypEventSummary[];\n count: number;\n }>): number => {\n return this.criticalityList.indexOf(a.key) - this.criticalityList.indexOf(b.key);\n };\n}\n","<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }}\n : </label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n <div class=\"o-hvy-event-summary-page__content__sub\">\n @for (summaryList of summaries | keyvalue: criticalityOrder;track summaryList.key) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryList.key\"\n [totalEventCount]=\"summaryList.value.count\"\n [events]=\"summaryList.value.events\"\n [consultLink]=\"consultLink\">\n </hvy-event-summary-list>\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 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 },\n address: 'Address',\n source: 'External reference',\n equipment: 'Equipment reference',\n equipmentEntity: 'Equipment entity',\n domain: {\n name: 'Métier'\n },\n startDate: 'Start date',\n endDate: 'End date',\n creationDate: 'Creation date',\n lastModificationDate: 'Modification date',\n closeDate: 'Close date',\n detail: \"Events description\",\n log: {\n name: 'Events log',\n event: {\n description: 'Description',\n address: 'Address',\n detail: 'Information',\n name: 'Name',\n category: 'Category',\n comments: {\n name: 'Event comments',\n placeholder: 'Write your comment',\n },\n },\n procedure: {\n delete: 'Delete procedure',\n progress: 'Progress',\n noAction: 'No actions',\n name: 'Common procedure',\n addAction: 'Add action'\n },\n },\n category: {\n name: \"Event category\",\n ALERT_MALFUNCTION: 'Dysfunction alert',\n REPORT: 'GRC report',\n OPERATOR_EVENT: 'Operator event',\n ALERT_LIMIT: 'Limit alert',\n MANIFESTATION: 'Manifestation',\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 },\n eventSummary: {\n noContent: 'No event with given criticality',\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 name: 'Procedure',\n progress: 'Procedure progress %',\n },\n action: {\n consult: 'Consult',\n close: 'Close',\n send: 'Send',\n comment: 'Comment'\n },\n },\n};\n","export const frTranslations = {\n '@hvy': {\n event: {\n name: 'Événements',\n type: {\n name: 'Type d\\'événement',\n ALERT: 'Alerte',\n REPORT: 'Signalement',\n OPERATOR: 'Opérateur',\n },\n status: {\n name: 'Statut événement',\n NEW: 'Nouveau',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturé',\n },\n address: 'Adresse',\n source: 'Référence externe',\n equipment: 'Référence matériel',\n equipmentEntity: 'Entité de l\\'équipement',\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 lastModificationDate: 'Date dernières modifications',\n closeDate: 'Date de clotûre',\n detail: 'Description des événements',\n log: {\n name: 'Journal des événements',\n empty: 'Aucun événement n\\'a été créé',\n event: {\n description: 'Description',\n address: 'Adresse',\n detail: 'Informations',\n name: 'Nom',\n category: 'Catégorie',\n close: 'Clôturer tous ces événements',\n comments: {\n name: 'Commentaires de l\\'événement',\n placeholder: 'Écrivez votre commentaire',\n },\n },\n procedure: {\n delete: 'Supprimer la procédure',\n progress: 'Progression',\n noAction: 'Pas d\\'action',\n name: 'Procédure commune',\n name1: 'Procédure',\n addAction: 'Ajouter une action',\n },\n },\n category: {\n name: 'Catégorie d\\'événement',\n ALERT_MALFUNCTION: 'Alerte Dysfonctionnement',\n REPORT: 'Signalement GRC',\n OPERATOR_EVENT: 'Evènement Opérateur',\n ALERT_LIMIT: 'Alerte Seuil',\n MANIFESTATION: 'Manifestation',\n },\n criticality: {\n name: 'Criticité',\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n },\n filter: {\n name: 'Filtrer',\n choice: {\n all: 'Tous',\n },\n reset: 'Réinitialiser'\n },\n },\n eventSummary: {\n noContent: 'Aucun événement avec la criticité donnée',\n statusLabels: {\n NEW: 'Nouveaux',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturés',\n },\n criticalityLabels: {\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n ALL: 'Tous',\n },\n },\n procedure: {\n name: 'Procédure',\n progress: '% avancement procédure',\n },\n action: {\n consult: 'Consulter',\n close: 'Clotûrer',\n send: 'Envoyer',\n comment: 'Commenter',\n },\n },\n};\n","import { HypEvent } from './hyp-event.interface';\n\nexport interface HypEventDetails extends HypEvent {\n address: string,\n description: string,\n status: string;\n lastModificationDate: string,\n creationDate: string,\n equipment?: {\n id: string,\n name: string,\n type: string,\n entity: string\n },\n externalSourceRef?: string,\n category: string,\n startDate?: string;\n endDate?: string;\n closeDate: string;\n procedureId?: string;\n linkedEvents: number;\n procedureProgress?: number;\n domain?: string;\n}\n\nexport const eventForWriteAPI = (event: HypEventDetails) => ({\n ...event,\n equipmentId: event.equipment?.id\n})\n\n\n\n","export const HypEventType = { values: ['ALERT', 'REPORT', 'OPERATOR'] };\n","import { eventForWriteAPI, HypEventDetails } from './event/hyp-event-detail.interface';\nimport { HypAction } from './hyp-action.interface';\n\nexport interface HypProcedure {\n id: string;\n name: string;\n description: string,\n creationDate: string,\n actions: HypAction[],\n progress: number,\n events: HypEventDetails[]\n}\n\nexport const procedureForWriteAPI = (procedure: HypProcedure) => ({\n ...procedure,\n events: procedure.events.map(eventForWriteAPI)\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 './hyp-procedure.interface';\nexport * from './hyp-equipment.interface';\nexport * from './domains.constant';\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/hyp-procedure.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>,\n ) {\n }\n\n list(startWith = 0): Observable<Array<HypEventDetails>> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n withLatestFrom(this.store.select(EventSelectors.filters), this.store.select(EventSelectors.sort)),\n mergeMap(([url, filters, sort]) => {\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 const pageSize = 20;\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: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventDetails>(encodeURI(`${url}/events/id/${id}`));\n }),\n );\n }\n\n getProcedure(id: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedure>(encodeURI(`${url}/procedures/id/${id}`));\n }),\n );\n }\n\n save(event: HypEventDetails) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.post<void>(encodeURI(`${url}/events/${event.type.toLowerCase()}`), eventForWriteAPI(event));\n }),\n );\n }\n\n saveProcedure(procedure: HypProcedure) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.post<void>(encodeURI(`${url}/procedures`), procedureForWriteAPI(procedure));\n }),\n );\n }\n\n status(event: HypEventDetails, status: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(encodeURI(`${url}/events/id/${event.id}/close`), { status });\n }),\n );\n }\n\n statusProcedure(procedure: HypProcedure, status: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.put<void>(encodeURI(`${url}/procedures/id/${procedure.id}/close`), { status });\n }),\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 { EventActions } from './event.actions';\nimport { EventService } 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]) => !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 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: action.event })),\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 })),\n catchError((error) => [EventActions.saveFailure({ error: error })]),\n ),\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).pipe(\n map((event) => EventActions.statusSuccess()),\n catchError((error) => [EventActions.statusFailure({ error: error })]),\n );\n } else {\n return this.eventService.statusProcedure(action.procedure!, action.targetStatus).pipe(\n map((event) => EventActions.statusSuccess()),\n catchError((error) => [EventActions.statusFailure({ error: error })]),\n );\n }\n },\n ),\n ),\n );\n\n sort$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.sort, EventActions.filter),\n debounceTime(200),\n map(() => EventActions.load({})),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventService: EventService,\n private store: Store,\n ) {\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';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventSummaryService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {\n }\n\n list(): Observable<HypEventSummaries> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filters]) => {\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 { 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, NgForOf, NgStyle } from '@angular/common';\nimport {\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\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 } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\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/event-filters.component';\nimport { DateFilterComponent } from './event/filters/date/date-filter.component';\nimport { ChoiceFilterComponent } from './event/filters/choice/choice-filter.component';\n\nconst components = [\n EventDetailComponent,\n EventListComponent,\n IconDisplayComponent,\n EventSummaryItemComponent,\n EventSummaryListComponent,\n EventSummaryPageComponent,\n EventIconPipe,\n ForDatetimeLocalPipe,\n StatusDisplayComponent,\n ProgressDisplayComponent,\n ColumnOrderComponent,\n EventFiltersComponent,\n DateFilterComponent,\n ChoiceFilterComponent\n];\n\n@NgModule({\n declarations: [\n ...components,\n ],\n imports: [\n StoreModule.forFeature(hypFeatureKey, hypervisorReducer),\n StoreModule.forFeature(eventFeatureKey, eventReducer),\n StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),\n EffectsModule.forFeature([EventEffects, EventSummaryEffects, HypervisorEffects]),\n NgForOf,\n AsyncPipe,\n PryI18nModule,\n PryCoreModule,\n AsyncPipe,\n PryCoreModule,\n NgStyle,\n PryCheckboxModule,\n FormsModule,\n RouterLink,\n PrySinceDateModule,\n DatePipe,\n PryIconModule,\n KeyValuePipe,\n PrySelectModule,\n FormsModule,\n JsonPipe,\n PryDatePickerModule,\n PryI18nModule,\n PryIconModule,\n PryI18nModule,\n AsyncPipe,\n PryI18nModule,\n ],\n exports: [\n ...components,\n ],\n})\nexport class PvyHypervisorModule {\n static forRoot(options: { url?: string }): ModuleWithProviders<PvyHypervisorModule> {\n\n return {\n ngModule: PvyHypervisorModule,\n providers: [\n { provide: HYP_BASE_CONFIG, useValue: options },\n ],\n };\n }\n\n constructor(@Inject(HYP_BASE_CONFIG) private baseConfig: {\n url: string\n }, private store: Store<any>, private i18nService: PryI18nService) {\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/event/public-api';\nexport * from './src/lib/event-summary/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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["internalReducer","feature","i2","i1","i3.EventIconPipe","i1.EquipmentService","i3","i5","i6.IconDisplayComponent","i7.StatusDisplayComponent","i8.ProgressDisplayComponent","i9.ForDatetimeLocalPipe","loading","i4","i5.IconDisplayComponent","i6.StatusDisplayComponent","i7.ColumnOrderComponent","i8","i9","i3.IconDisplayComponent","i4.EventSummaryItemComponent","map","i4.EventSummaryListComponent","mergeMap","i2.EventService","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/model/event/hyp-event-category.type.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.actions.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/equipment/equipment.service.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/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/progress-display/progress-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.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/store/event/event.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.selectors.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-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.html","../../../../projects/provoly/hypervisor/src/lib/event/filters/event-filters.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/filters/event-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/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/model/event/hyp-event-detail.interface.ts","../../../../projects/provoly/hypervisor/src/lib/model/hyp-procedure.interface.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.service.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/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/model/event/hyp-event-type.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/hypervisor.module.ts","../../../../projects/provoly/hypervisor/public-api.ts","../../../../projects/provoly/hypervisor/provoly-hypervisor.ts"],"sourcesContent":["export const HypEventCriticality = {\n values: ['LOW', 'MEDIUM', 'HIGH'],\n};\n\n","export const DOMAINS: { values: string[] } = {\n values: ['DOMAIN1', 'DOMAIN2'],\n};\n","export const HypEventCategory = {\n values: ['ALERT_MALFUNCTION', 'REPORT', 'OPERATOR_EVENT', 'ALERT_LIMIT', 'MANIFESTATION'],\n};\n\nexport const CATEGORIES_BY_TYPE = {\n values: {\n 'OPERATOR': ['OPERATOR_EVENT', 'MANIFESTATION'],\n 'ALERT': ['ALERT_MALFUNCTION', 'ALERT_LIMIT'],\n 'REPORT': ['REPORT'],\n } as { [type: string]: string[] },\n};\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\nexport const EventActions = {\n load: createAction('[Event] Load Events', props<{ next?: boolean }>()),\n loadSuccess: createAction(\n '[Event Api] (bus) 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: string[] }>()),\n get: createAction('[Event] Load specific Event', props<{ id: string }>()),\n getForProcedure: createAction('[Event] Load specific Event for procedure', props<{ id: string }>()),\n getSuccess: createAction(\n '[Event Api] (bus) 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 save: createAction('[Event] Save Event', props<{ event: HypEventDetails }>()),\n saveProcedure: createAction('[Event] Save Procedure and linked Events', props<{ procedure: HypProcedure }>()),\n saveSuccess: createAction('[Event] Save success', props<{ event?: HypEventDetails; procedure?: HypProcedure }>()),\n saveFailure: createAction('[Event] Save failure', props<{ error: string }>()),\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'),\n statusFailure: createAction('[Event] Close failure', props<{ error: string }>()),\n sort: createAction('[Event] set log event sorting', props<{ field: string; order: string }>())\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 { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypEquipment } from '../../model/hyp-equipment.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\n findByName(name: string): Observable<HypEquipment> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEquipment>(encodeURI(`${url}/equipments/name/${name}`));\n }),\n );\n }\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';\n\n@Component({\n selector: 'hvy-icon-display',\n templateUrl: './icon-display.component.html'\n})\nexport class IconDisplayComponent {\n @Input() event!: HypEvent;\n}\n","<div class=\"\n m-hvy-event-summary-item__event-icon-container\n -hvy-{{ event.criticality.toString().toLowerCase()}}\n -hvy-{{event.type.toString().toLowerCase()}}\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, EventEmitter, Input, Output } from '@angular/core';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-status-display',\n templateUrl: './status-display.component.html',\n})\nexport class StatusDisplayComponent {\n\n @Output() modified = new EventEmitter<string>();\n private _event!: HypEventDetails;\n targetStatuses: string[] = [];\n targetsDisplayed: boolean = false;\n _modifiable = false;\n\n @Input() set event(event: HypEventDetails) {\n this._event = event;\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;\n }\n\n get event() {\n return this._event;\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.event.status !== 'DONE') ? ['DONE'] : [];\n }\n\n toggle() {\n this.targetsDisplayed = this.targetStatuses.length > 0 && !this.targetsDisplayed;\n }\n}\n","<span class=\"a-chip -{{event.status}} a-chip-status\" (click)=\"toggle()\">\n {{ '@hvy.event.status.' + event.status | i18n }}\n @if (targetStatuses.length > 0) {\n <pry-icon iconSvg=\"chevron_bottom\" [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)\">{{ '@hvy.event.status.' + status | i18n }}\n </div>\n }\n </div>\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\n @Input() progress: number = 50;\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 { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\n@Pipe({\n name: 'forDateTimeLocal',\n})\nexport class ForDatetimeLocalPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(completeDate: string | undefined, ...args: unknown[]): string {\n return completeDate ? completeDate.substring(0, completeDate.lastIndexOf(':')) : '';\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEquipment } from '../../model/hyp-equipment.interface';\nimport { EquipmentService } from '../../store/equipment/equipment.service';\nimport { DOMAINS } from '../../model/domains.constant';\nimport { CATEGORIES_BY_TYPE } from '../../model/event/hyp-event-category.type';\nimport { EventActions } from '../../store/event/event.actions';\nimport { Store } from '@ngrx/store';\nimport { HypAction } from '../../model/hyp-action.interface';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Component({\n selector: 'hvy-event-detail',\n templateUrl: './event-detail.component.html'\n})\nexport class EventDetailComponent extends SubscriptionnerDirective {\n static CARD_HEIGHT = 75;\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 errors: { field: string; code: string }[][] = [];\n canCloseSome = false;\n newComentContent = '';\n movingAction?: HypAction;\n moveStart = 0;\n moveInitialIndex = 0;\n initialActionList: HypAction[] = [];\n previousOffset = 0;\n dragTarget?: EventTarget | null;\n changeStatusContext: {\n comment: string;\n events: HypEventDetails[];\n status: string;\n all: boolean;\n } = {\n comment: '',\n events: [],\n status: 'DONE',\n all: false\n };\n overlayRef?: OverlayRef;\n @ViewChild('confirmDialog', { read: TemplateRef }) confirmDialog!: TemplateRef<any>;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events.filter((ev) => !!ev);\n this.eventModifications = new Array(this._events.length);\n this.opened = this._events.length === 1 ? [true] : [];\n this.canCloseSome = this._events.filter((ev) => ev.status !== 'DONE').length > 0;\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.eventModifications = new Array(this._events.length);\n this.procedureModifications = {};\n this._outputModifications();\n }\n\n constructor(\n private equipmentService: EquipmentService,\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n super();\n }\n\n get events() {\n return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));\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 toggle(i: number) {\n this.opened[i] = !this.opened[i];\n }\n\n modifyEvent(index: number, prop: string, $event: Event | string) {\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 : `${newValue}:00.000000Z`;\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 }\n }\n\n access(event: HypEventDetails) {\n if (event.status === 'DONE') {\n return {\n name: true,\n category: true,\n criticality: true,\n description: true,\n address: true,\n source: true,\n domain: true,\n eqName: true,\n eqEntity: true,\n startDate: true,\n endDate: true\n };\n }\n switch (event.type) {\n case 'ALERT':\n default:\n return {\n name: true,\n category: true,\n criticality: true,\n description: true,\n address: true,\n source: true,\n domain: true,\n eqName: true,\n eqEntity: true,\n startDate: true,\n endDate: true\n };\n case 'REPORT':\n return {\n name: false,\n category: true,\n criticality: false,\n description: true,\n address: false,\n source: true,\n domain: false,\n eqName: false,\n eqEntity: true,\n startDate: true,\n endDate: true\n };\n case 'OPERATOR':\n return {\n name: false,\n category: false,\n criticality: false,\n description: false,\n address: false,\n source: false,\n domain: false,\n eqName: false,\n eqEntity: false,\n startDate: false,\n endDate: false\n };\n }\n }\n\n changeEquipment(index: number, $event: any) {\n this.equipmentService.findByName($event.target.value).subscribe((equipment: HypEquipment) => {\n if (equipment && this._events[index].name !== equipment.name) {\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index].equipment = equipment;\n this._outputModifications();\n }\n });\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) => {\n const eventErrors = [];\n if (!event.name || event.name.length === 0) {\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) {\n eventErrors.push({ field: 'description', code: 'required' });\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?.localeCompare(event.endDate ?? '') ?? 0) > 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 CATEGORIES_BY_TYPE.values[event.type];\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 }\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 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 comment: this.changeStatusContext.comment\n })\n );\n }\n this.toggleConfirm();\n }\n\n toggleConfirm() {\n if (!this.overlayRef) {\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 }\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.procedure!.actions];\n } else {\n $event.preventDefault();\n }\n }\n\n move($event: MouseEvent) {\n $event.preventDefault();\n if (this.movingAction) {\n const offsetInCards = Math.round(($event.clientY - this.moveStart) / EventDetailComponent.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 newTab = [...this.initialActionList];\n const element = newTab.splice(this.moveInitialIndex, 1)[0];\n newTab.splice(newIndex, 0, element);\n this.procedureModifications.actions = newTab;\n }\n }\n }\n\n drop($event: MouseEvent) {\n $event.preventDefault();\n this.move($event);\n this.movingAction = undefined;\n this._outputModifications();\n }\n\n allowDrop($event: MouseEvent) {\n $event.preventDefault();\n }\n\n confirmDisabled() {\n return this.changeStatusContext.comment.length === 0;\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>{{ '@hvy.event.detail' | i18n }}</h1>\n @if (events.length > 1) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\"\n (click)=\"closeAll()\">{{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n @if (!canCloseSome) {\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'... TODO: get closing comment ...'\"\n data-tooltip-position=\"bottom\">\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 <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-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 [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"event.status !== 'DONE'\"\n (modified)=\"changeStatus($event, event)\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [class.-error]=\"hasError('equipment', idx)\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" 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 </tr>\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n </td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n </td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComentContent\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\"\n [disabled]=\"newComentContent.length === 0\">{{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n </div>\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>{{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}</h2>\n </div>\n @if (procedure) {\n <div>\n <p>{{ procedure.name }}</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]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\" (drag)=\"move($event)\" (drop)=\"drop($event)\"\n (dragover)=\"allowDrop($event)\">\n @for (action of procedure.actions; track action.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\" [draggable]=\"true\"\n (dragstart)=\"dragStart($event, action, idx)\" (mousedown)=\"onMouseDown($event)\">\n <pry-icon iconSvg=\"six_dot\" #handle></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n } @else {\n <button class=\"a-btn a-btn--secondary\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\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>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</h2>\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\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\"\n [disabled]=\"confirmDisabled()\">{{ '@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 { Action, createReducer, on } from '@ngrx/store';\nimport { EventActions } from './event.actions';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\nimport { HvyFilterParams } from '../../event/filters/hvy-unit-filter.class';\n\nexport const eventFeatureKey = '@hvy/event';\n\nexport interface EventState {\n events: HypEventDetails[];\n noMoreEvents: boolean;\n loading: boolean;\n filters: HvyFilterParams;\n selectedIds: string[];\n details: {\n event?: HypEventDetails;\n procedure?: HypProcedure;\n };\n sort?: {\n field: string;\n order: string;\n };\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 string[]\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);\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\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 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);\n\nexport const EventSelectors = {\n feature,\n events,\n selectedIds,\n loading,\n filters,\n details,\n noMoreEvents,\n sort\n};\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\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(private store: Store) {\n super();\n this.subscriptions.add(\n this.store.select(EventSelectors.sort).subscribe(sort => this.sortValue = sort),\n );\n }\n\n\n sort(order: string) {\n this.store.dispatch(EventActions.sort({ field: this.field, order }));\n }\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>\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 { AfterViewInit, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { auditTime, combineLatest, filter, fromEvent, map, Observable, withLatestFrom } 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';\n\nexport const EVENT_LINK = {\n fn: (event: HypEventDetails | HypEventSummary, store: Store<any>) => ['./', event.id]\n};\n\nexport const SCROLL_PX_TO_TRIGGER_FETCH_PAGE = { value: 200 };\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<string[]>;\n EVENT_LINK = EVENT_LINK;\n _store = this.store;\n allSelected$: Observable<boolean>;\n _inhibate = true;\n\n constructor(\n private store: Store<any>,\n private el: ElementRef\n ) {\n super();\n this.store.dispatch(EventActions.load({}));\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(([events, selectedIds]) => events.filter((ev) => !selectedIds.includes(ev.id)).length === 0)\n );\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n fromEvent(this.el.nativeElement, 'scroll')\n .pipe(\n // Are we close to end\n map((e: any) => {\n const target = e.currentTarget;\n return target.scrollHeight - target.offsetHeight - target.scrollTop;\n }),\n withLatestFrom(this.store.select(EventSelectors.noMoreEvents)),\n filter(([remaningScroll, noMore]) => !noMore && remaningScroll < SCROLL_PX_TO_TRIGGER_FETCH_PAGE.value),\n auditTime(200)\n )\n .subscribe(() => {\n this.store.dispatch(EventActions.load({ next: true }));\n })\n );\n }\n\n select(event: HypEventDetails, $event: MouseEvent) {\n this.inhibate();\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._inhibate) {\n this.inhibate();\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 inhibate() {\n this._inhibate = true;\n setTimeout(() => (this._inhibate = false), 100);\n }\n}\n","<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th>\n <pry-checkbox [ngModel]=\"allSelected$|async\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>\n <hvy-column-order field=\"creationDate\">{{ '@hvy.event.creationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"lastModificationDate\">{{ '@hvy.event.lastModificationDate' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"status\">{{ '@hvy.event.status.name' | i18n }}</hvy-column-order>\n </th>\n <th>\n <hvy-column-order field=\"procedureProgress\">{{ '@hvy.procedure.progress' | i18n }}</hvy-column-order>\n </th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (event of events$|async; track event.id) {\n <tr class=\"o-hvy-events-table__line\" (click)=\"select(event, $event)\">\n <td class=\"o-hvy-events-table__line__cell\">\n <pry-checkbox [ngModel]=\"(selectedIds$|async)!.includes(event.id)\"></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div\n class=\"o-hvy-events-table__line__cell__name__sub\">{{ event.equipment?.name ? event.equipment?.name : '' }}\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ '@hvy.event.category.' + event.category | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.address }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.creationDate| sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.lastModificationDate | sinceDate: { onlyLocale: true } }}\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-status-display [event]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n {{ event.procedureProgress }} %\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"EVENT_LINK.fn(event, _store)\">\n > {{ '@hvy.action.consult' | i18n }} @if (event.linkedEvents > 1) {\n ({{ event.linkedEvents }})\n }\n </a>\n </td>\n </tr>\n } @empty {\n <tr>\n <td class=\"o-hvy-events-table__empty\" colspan=\"50\">\n <div>{{ '@hvy.event.log.empty' | i18n }}</div>\n <div>\n <ng-content></ng-content>\n </div>\n </td>\n </tr>\n }\n </tbody>\n</table>\n","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 { EventActions } from '../../store/event/event.actions';\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\n constructor(private store: Store) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.filters.forEach((filter) => (filter.filterSet = this.filterSet));\n }\n\n filter() {\n const filters = this.filters.map((filter) => filter.getParams()).reduce((p, c) => ({ ...p, ...c }), {});\n this.store.dispatch(EventActions.filter({ filters, filterSet: this.filterSet }));\n }\n\n reset() {\n this.filters.forEach((filter) => filter.reset());\n this.store.dispatch(EventActions.filter({ filters: {}, filterSet: this.filterSet }));\n }\n}\n","<div class=\"o-hvy-event-filters\">\n <ng-content></ng-content>\n <div class=\"o-hvy-event-filters__buttons\">\n <button (click)=\"reset()\" class=\"a-btn a-btn--secondary\">\n <pry-icon iconSvg=\"reset_filter_event\"></pry-icon>\n </button>\n <button (click)=\"filter()\" class=\"a-btn a-btn--primary\">\n {{ '@hvy.event.filter.name' | i18n }}\n <pry-icon iconSvg=\"event_filter\"></pry-icon>\n </button>\n </div>\n</div>\n","import { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Directive, Input } 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\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 reset(): void {\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 })\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 override reset(): void {\n this.value = '';\n }\n\n triggerChange($event: Event) {\n // @ts-ignore\n this.value = $event instanceof Event ? $event.target?.value : $event;\n }\n}\n","<div class=\"o-hvy-date-filters\">\n <input type=\"date\" class=\"a-form-field\"\n [value]=\"value\"\n (change)=\"triggerChange($event)\">\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() label: string = 'no-label-defined';\n @Input() i18nPrefix: string = '';\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('@hvy.event.filter.choice.all');\n }\n if (this.value().length > 1) {\n return `(${this.value().length})`;\n }\n if (this.value().length === 1) {\n return this.i18nService.instant(this.i18nPrefix + this.value()[0]);\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 override reset(): void {\n this.assignValue([]);\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.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 return this.choices\n .map((choice) => (!choice.children ? [choice.key] : choice.children.map((child) => child.key)))\n .reduce((p, c) => [...p, ...c], []);\n }\n\n assignValue(value: string[]) {\n if (!this.inhibate || this.inhibate !== this.filterSet) {\n this.triggerInhibate();\n this.value.set(value);\n }\n }\n\n private triggerInhibate() {\n this.inhibate = this.filterSet;\n setTimeout(() => (this.inhibate = undefined), 50);\n }\n}\n","<button (click)=\"toggleModal()\" #button class=\"o-hvy-choice-filter -horizontal\"\n [class.-highlight]=\"displayValue() !== ('@hvy.event.filter.choice.all' | i18n)\" [class.-focus]=\"overlayRef\">\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>{{ '@hvy.event.filter.choice.all' | 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 [ngModel]=\"isSelected(child)\" (ngModelChange)=\"toggle(child)\"\n class=\"o-hvy-choice-filter__child\">\n <span>{{ i18nPrefix + child.key | i18n }}</span>\n </pry-checkbox>\n }\n }\n }\n </div>\n</ng-template>\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 { HypEvent } from './hyp-event.interface';\n\nexport interface HypEventDetails extends HypEvent {\n address: string;\n description: string;\n status: string;\n lastModificationDate: string;\n creationDate: string;\n equipment?: {\n id: string;\n name: string;\n type: string;\n entity: string;\n };\n externalSourceRef?: string;\n startDate?: string;\n endDate?: string;\n closeDate: string;\n procedureId?: string;\n linkedEvents: number;\n procedureProgress?: number;\n domain?: string;\n}\n\nexport const eventForWriteAPI = (event: HypEventDetails) => ({\n ...event,\n equipmentId: event.equipment?.id\n});\n","import { eventForWriteAPI, HypEventDetails } from './event/hyp-event-detail.interface';\nimport { HypAction } from './hyp-action.interface';\n\nexport interface HypProcedure {\n id: string;\n name: string;\n description: string,\n creationDate: string,\n actions: HypAction[],\n progress: number,\n events: HypEventDetails[]\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/hyp-procedure.interface';\n\nexport const PAGE_SIZE_FETCH = { value: 20 };\n\nexport const KNOWN_FILTER_SETS = {\n EVENTS: 'events'\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: string) {\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 getProcedure(id: string) {\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 return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.post<void>(\n encodeURI(`${url}/events/${event.type.toLowerCase()}`),\n eventForWriteAPI(event)\n );\n })\n );\n }\n\n saveProcedure(procedure: HypProcedure) {\n return this.store.select(HypSelectors.url).pipe(\n mergeMap((url) => {\n return this.httpClient.post<void>(encodeURI(`${url}/procedures`), procedureForWriteAPI(procedure));\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`), { status, comment });\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`), { status, comment });\n })\n );\n }\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 EVENT_LINK = EVENT_LINK;\n\n constructor(public store: Store) {\n }\n}\n","<div class=\"m-hvy-event-summary-item\" [routerLink]=\"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 <span>\n {{\n event.manifestation ?\n (event.manifestation.startDate | date : 'dd/MM HH:MM') + ' - ' + (event.manifestation.endDate | date : 'dd/MM HH:MM') :\n event.serviceTitle\n }}\n </span>\n </div>\n <div class=\"m-hvy-event-summary-item__footer\">\n <div class=\"m-hvy-event-summary-item__icons\">\n <span class=\"m-hvy-event-summary-item__intervention-counter\">{{ event.serviceCount }}</span>\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 | date : 'd MMMM . HH:MM' }}\n </span>\n </div>\n </div>\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\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\n [event]=\"event\"\n [linkBase]=\"itemLinkBase\">\n </hvy-event-summary-item>\n } @empty {\n <span class=\"o-hvy-event-summary-list__no-content\">\n {{ '@hvy.eventSummary.noContent' | 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 > {{ '@hvy.action.consult' | i18n }}\n <pry-icon iconSvg=\"arrow\"></pry-icon>\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 { Observable } from 'rxjs';\nimport { EventSummaryActions } from '../../store/event-summary/event-summary.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { map } from 'rxjs/operators';\nimport { EventSummarySelectors } from '../../store/event-summary/event-summary.selectors';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEventStatus } from '../../model/event/hyp-event-status.type';\nimport { KeyValue } from '@angular/common';\nimport { KNOWN_FILTER_SETS } from '../../store/event/event.service';\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 };\n selectedCriticality$: Observable<string | undefined>;\n criticalityList = [...HypEventStatus.values, 'ALL'];\n\n constructor(private store: Store<any>) {\n super();\n this.store.dispatch(EventSummaryActions.load());\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: { criticality: [] }, 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 criticalityOrder = (\n a: KeyValue<string, { events: HypEventSummary[]; count: number }>,\n b: KeyValue<\n string,\n {\n events: HypEventSummary[];\n count: number;\n }\n >\n ): number => {\n return this.criticalityList.indexOf(a.key) - this.criticalityList.indexOf(b.key);\n };\n}\n","<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }}\n : </label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n <div class=\"o-hvy-event-summary-page__content__sub\">\n @for (summaryList of summaries | keyvalue: criticalityOrder;track summaryList.key) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryList.key\"\n [totalEventCount]=\"summaryList.value.count\"\n [events]=\"summaryList.value.events\"\n [consultLink]=\"consultLink\">\n </hvy-event-summary-list>\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 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 },\n address: 'Address',\n source: 'External reference',\n equipment: 'Equipment reference',\n equipmentEntity: 'Equipment entity',\n domain: {\n name: 'Métier'\n },\n startDate: 'Start date',\n endDate: 'End date',\n creationDate: 'Creation date',\n lastModificationDate: 'Modification date',\n closeDate: 'Close date',\n detail: 'Events description',\n log: {\n name: 'Events log',\n event: {\n description: 'Description',\n address: 'Address',\n detail: 'Information',\n name: 'Name',\n category: 'Category',\n comments: {\n name: 'Event comments',\n placeholder: 'Write your comment'\n }\n },\n procedure: {\n delete: 'Delete procedure',\n progress: 'Progress',\n noAction: 'No actions',\n name: 'Common procedure',\n addAction: 'Add action'\n }\n },\n category: {\n name: 'Event category',\n ALERT_MALFUNCTION: 'Dysfunction alert',\n REPORT: 'GRC report',\n OPERATOR_EVENT: 'Operator event',\n ALERT_LIMIT: 'Limit alert',\n MANIFESTATION: 'Manifestation'\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 one: 'Close event',\n multi: 'Close events'\n }\n },\n eventSummary: {\n noContent: 'No event with given criticality',\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 name: 'Procedure',\n progress: 'Procedure progress %'\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 }\n }\n};\n","export const frTranslations = {\n '@hvy': {\n event: {\n name: 'Événements',\n type: {\n name: \"Type d'événement\",\n ALERT: 'Alerte',\n REPORT: 'Signalement',\n OPERATOR: 'Opérateur'\n },\n status: {\n name: 'Statut événement',\n NEW: 'Nouveau',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturé'\n },\n address: 'Adresse',\n source: 'Référence externe',\n equipment: 'Référence matériel',\n equipmentEntity: \"Entité de l'équipement\",\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 lastModificationDate: 'Date de dernière modification',\n closeDate: 'Date de clotûre',\n detail: 'Description des événements',\n log: {\n name: 'Journal des événements',\n empty: \"Aucun événement n'a été créé\",\n event: {\n description: 'Description',\n address: 'Adresse',\n detail: 'Informations',\n name: 'Nom',\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\",\n placeholder: 'Écrivez votre commentaire'\n }\n },\n procedure: {\n delete: 'Supprimer la procédure',\n progress: 'Progression',\n noAction: \"Pas d'action\",\n name: 'Procédure commune',\n name1: 'Procédure',\n addAction: 'Ajouter une action'\n }\n },\n category: {\n name: \"Catégorie d'événement\",\n ALERT_MALFUNCTION: 'Alerte Dysfonctionnement',\n REPORT: 'Signalement GRC',\n OPERATOR_EVENT: 'Evènement Opérateur',\n ALERT_LIMIT: 'Alerte Seuil',\n MANIFESTATION: 'Manifestation'\n },\n criticality: {\n name: 'Criticité',\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut'\n },\n filter: {\n name: 'Filtrer',\n choice: {\n all: 'Tous'\n },\n reset: 'Réinitialiser'\n },\n close: {\n one: 'Êtes-vous sûr de vouloir clôturer cet événement ?',\n multi: 'Êtes-vous sûr de vouloir clôturer ces événements ?',\n comment: 'Commentaire de clôture'\n }\n },\n eventSummary: {\n noContent: 'Aucun événement avec la criticité donnée',\n statusLabels: {\n NEW: 'Nouveaux',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturés'\n },\n criticalityLabels: {\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n ALL: 'Tous'\n }\n },\n procedure: {\n name: 'Procédure',\n progress: '% avancement procédure'\n },\n action: {\n consult: 'Consulter',\n close: 'Clotûrer',\n send: 'Envoyer',\n comment: 'Commenter',\n associate: 'Associer à une procédure',\n validate: 'Valider',\n cancel: 'Annuler'\n }\n }\n};\n","export const HypEventType = { values: ['ALERT', 'REPORT', 'OPERATOR'] };\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 './hyp-procedure.interface';\nexport * from './hyp-equipment.interface';\nexport * from './domains.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 } 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]) => !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 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: action.event })),\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 })),\n catchError((error) => [EventActions.saveFailure({ error: error })])\n )\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 map((event) => EventActions.statusSuccess()),\n catchError((error) => [EventActions.statusFailure({ error: error })])\n );\n } else {\n return this.eventService.statusProcedure(action.procedure!, action.targetStatus, action.comment).pipe(\n map((event) => EventActions.statusSuccess()),\n catchError((error) => [EventActions.statusFailure({ error: error })])\n );\n }\n })\n )\n );\n\n sort$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.sort, EventActions.filter),\n debounceTime(200),\n map(() => EventActions.load({}))\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 { 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, NgForOf, NgStyle } from '@angular/common';\nimport {\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\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 } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\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/event-filters.component';\nimport { DateFilterComponent } from './event/filters/date/date-filter.component';\nimport { ChoiceFilterComponent } from './event/filters/choice/choice-filter.component';\n\nconst components = [\n EventDetailComponent,\n EventListComponent,\n IconDisplayComponent,\n EventSummaryItemComponent,\n EventSummaryListComponent,\n EventSummaryPageComponent,\n EventIconPipe,\n ForDatetimeLocalPipe,\n StatusDisplayComponent,\n ProgressDisplayComponent,\n ColumnOrderComponent,\n EventFiltersComponent,\n DateFilterComponent,\n ChoiceFilterComponent\n];\n\n@NgModule({\n declarations: [\n ...components,\n ],\n imports: [\n StoreModule.forFeature(hypFeatureKey, hypervisorReducer),\n StoreModule.forFeature(eventFeatureKey, eventReducer),\n StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),\n EffectsModule.forFeature([EventEffects, EventSummaryEffects, HypervisorEffects]),\n NgForOf,\n AsyncPipe,\n PryI18nModule,\n PryCoreModule,\n AsyncPipe,\n PryCoreModule,\n NgStyle,\n PryCheckboxModule,\n FormsModule,\n RouterLink,\n PrySinceDateModule,\n DatePipe,\n PryIconModule,\n KeyValuePipe,\n PrySelectModule,\n FormsModule,\n JsonPipe,\n PryDatePickerModule,\n PryI18nModule,\n PryIconModule,\n PryI18nModule,\n AsyncPipe,\n PryI18nModule,\n ],\n exports: [\n ...components,\n ],\n})\nexport class PvyHypervisorModule {\n static forRoot(options: { url?: string }): ModuleWithProviders<PvyHypervisorModule> {\n\n return {\n ngModule: PvyHypervisorModule,\n providers: [\n { provide: HYP_BASE_CONFIG, useValue: options },\n ],\n };\n }\n\n constructor(@Inject(HYP_BASE_CONFIG) private baseConfig: {\n url: string\n }, private store: Store<any>, private i18nService: PryI18nService) {\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/event/public-api';\nexport * from './src/lib/event-summary/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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["internalReducer","feature","i2","i1","i3.EventIconPipe","i1.EquipmentService","i3","i6","i7.IconDisplayComponent","i8.StatusDisplayComponent","i9.ProgressDisplayComponent","i10.ForDatetimeLocalPipe","loading","i4","i5.IconDisplayComponent","i6.StatusDisplayComponent","i7.ColumnOrderComponent","i8","i9","i3.IconDisplayComponent","i4.EventSummaryItemComponent","map","i4.EventSummaryListComponent","i5","mergeMap","i2.EventService","i2.HypervisorService","i2.EventSummaryService"],"mappings":"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"}
|