@provoly/hypervisor 2.4.2 → 2.4.3

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.
@@ -4,7 +4,9 @@ import { DOMAINS } from '../../../../model/domains.constant';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@provoly/dashboard";
6
6
  import * as i2 from "../../../../store/service/service.service";
7
- import * as i3 from "@angular/forms";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "@angular/material/autocomplete";
8
10
  export class HvyCreateServiceComponent extends SubscriptionnerDirective {
9
11
  constructor(dialog, data, serviceService, i18nService) {
10
12
  super();
@@ -27,6 +29,8 @@ export class HvyCreateServiceComponent extends SubscriptionnerDirective {
27
29
  this.domains = DOMAINS.values;
28
30
  this.equipments = [];
29
31
  this.allowedTypes = [];
32
+ this.filteredTypes = [];
33
+ this.typeSearch = '';
30
34
  this.result.name =
31
35
  this.data.events && this.data.events.length > 0 ? this.data.events[0].name : this.data.action.name;
32
36
  this.equipments = [
@@ -69,8 +73,21 @@ export class HvyCreateServiceComponent extends SubscriptionnerDirective {
69
73
  this.result.description = $event;
70
74
  this.check();
71
75
  }
76
+ onTypeSearchChange(value) {
77
+ if (value.length >= 3) {
78
+ this.filteredTypes = this.allowedTypes.filter((t) => t.name.toLowerCase().includes(value.toLowerCase()));
79
+ }
80
+ else {
81
+ this.filteredTypes = [];
82
+ }
83
+ if (this.result.type && this.result.type !== value) {
84
+ this.result.type = '';
85
+ this.check();
86
+ }
87
+ }
72
88
  onTypeChange($event) {
73
89
  this.result.type = $event;
90
+ this.typeSearch = $event;
74
91
  const typeValue = this.types.find((type) => type.name === $event) ?? {
75
92
  gti: '-',
76
93
  gtr: '-',
@@ -126,15 +143,23 @@ export class HvyCreateServiceComponent extends SubscriptionnerDirective {
126
143
  }
127
144
  updateAllowedTypes() {
128
145
  this.allowedTypes = this.types.filter((type) => !this.result.domain || this.result.domain.length === 0 || type.domain === this.result.domain);
146
+ if (this.result.type && !this.allowedTypes.find((t) => t.name === this.result.type)) {
147
+ this.result.type = '';
148
+ this.typeSearch = '';
149
+ this.filteredTypes = [];
150
+ }
151
+ else if (this.typeSearch.length >= 3) {
152
+ this.filteredTypes = this.allowedTypes.filter((t) => t.name.toLowerCase().includes(this.typeSearch.toLowerCase()));
153
+ }
129
154
  }
130
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: HvyCreateServiceComponent, deps: [{ token: i1.PryDialogRef }, { token: PRY_DIALOG_DATA }, { token: i2.ServiceService }, { token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: HvyCreateServiceComponent, selector: "pry-create-service", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"allowedTypes\"\n [ngModel]=\"result.type\"\n (ngModelChange)=\"onTypeChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('type')\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "forcePlaceHolder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: HvyCreateServiceComponent, selector: "pry-create-service", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <input\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"typeSearch\"\n (ngModelChange)=\"onTypeSearchChange($event)\"\n [matAutocomplete]=\"typeAuto\"\n [class.-error]=\"hasError('type')\"\n [placeholder]=\"'' | i18n\"\n />\n <mat-autocomplete #typeAuto=\"matAutocomplete\" (optionSelected)=\"onTypeChange($event.option.value)\">\n <mat-option *ngFor=\"let type of filteredTypes\" [value]=\"type.name\">{{ type.name }}</mat-option>\n </mat-autocomplete>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "forcePlaceHolder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
132
157
  }
133
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: HvyCreateServiceComponent, decorators: [{
134
159
  type: Component,
135
- args: [{ selector: 'pry-create-service', template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"allowedTypes\"\n [ngModel]=\"result.type\"\n (ngModelChange)=\"onTypeChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('type')\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
160
+ args: [{ selector: 'pry-create-service', template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <input\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"typeSearch\"\n (ngModelChange)=\"onTypeSearchChange($event)\"\n [matAutocomplete]=\"typeAuto\"\n [class.-error]=\"hasError('type')\"\n [placeholder]=\"'' | i18n\"\n />\n <mat-autocomplete #typeAuto=\"matAutocomplete\" (optionSelected)=\"onTypeChange($event.option.value)\">\n <mat-option *ngFor=\"let type of filteredTypes\" [value]=\"type.name\">{{ type.name }}</mat-option>\n </mat-autocomplete>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
136
161
  }], ctorParameters: () => [{ type: i1.PryDialogRef }, { type: undefined, decorators: [{
137
162
  type: Inject,
138
163
  args: [PRY_DIALOG_DATA]
139
164
  }] }, { type: i2.ServiceService }, { type: i1.PryI18nService }] });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXNlcnZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9wcm9jZWR1cmUtYWN0aW9ucy9hY3Rpb24tcGFyYW1ldGVycy9zZXJ2aWNlL2NyZWF0ZS1zZXJ2aWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2dlbmVyYWwvcHJvY2VkdXJlLWFjdGlvbnMvYWN0aW9uLXBhcmFtZXRlcnMvc2VydmljZS9jcmVhdGUtc2VydmljZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFnQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFvQjdELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFpQnJFLFlBQ1UsTUFBK0MsRUFDdkIsSUFBNkQsRUFDckYsY0FBOEIsRUFDOUIsV0FBMkI7UUFFbkMsS0FBSyxFQUFFLENBQUM7UUFMQSxXQUFNLEdBQU4sTUFBTSxDQUF5QztRQUN2QixTQUFJLEdBQUosSUFBSSxDQUF5RDtRQUNyRixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBcEJyQyxXQUFNLEdBQTJCO1lBQy9CLEtBQUssRUFBRSxRQUFRO1lBQ2YsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixJQUFJ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SSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ25DLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDdkcsQ0FBQztJQUNKLENBQUM7OEdBOUlVLHlCQUF5Qiw4Q0FtQjFCLGVBQWU7a0dBbkJkLHlCQUF5QixpRkN6QnRDLHU0SEF1RkE7OzJGRDlEYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usb0JBQW9COzswQkFzQjNCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQUllfRElBTE9HX0RBVEEsIFByeURpYWxvZ1JlZiwgUHJ5STE4blNlcnZpY2UsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBIeXBFcXVpcG1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbC9oeXAtZXF1aXBtZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBTZXJ2aWNlQWN0aW9uIH0gZnJvbSAnLi9zZXJ2aWNlLWFjdGlvbi1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIeXBTZXJ2aWNlVHlwZSwgU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZS9zZXJ2aWNlL3NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBET01BSU5TIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWwvZG9tYWlucy5jb25zdGFudCc7XG5pbXBvcnQgeyBIeXBFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIEh5cENyZWF0ZVNlcnZpY2VSZXN1bHQgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZXF1aXBtZW50OiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICBwcmlvcml0eTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGd0aT86IHN0cmluZztcbiAgZ3RyPzogc3RyaW5nO1xuICBndHJwPzogc3RyaW5nO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWNyZWF0ZS1zZXJ2aWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1zZXJ2aWNlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBIdnlDcmVhdGVTZXJ2aWNlQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgcmVzdWx0OiBIeXBDcmVhdGVTZXJ2aWNlUmVzdWx0ID0ge1xuICAgIHZhbHVlOiAnY2FuY2VsJyxcbiAgICBuYW1lOiAnJyxcbiAgICBkb21haW46ICcnLFxuICAgIHByaW9yaXR5OiAnJyxcbiAgICBlcXVpcG1lbnQ6ICcnLFxuICAgIHR5cGU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJ1xuICB9O1xuICBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIHR5cGVzOiBIeXBTZXJ2aWNlVHlwZVtdID0gW107XG4gIHByaW9yaXRpZXMgPSBbJzEtTUlORVVSJywgJzItTUFKRVVSJywgJzMtQkxPUVVBTlQnXTtcbiAgZG9tYWlucyA9IERPTUFJTlMudmFsdWVzO1xuICBlcXVpcG1lbnRzOiAoSHlwRXF1aXBtZW50IHwgeyBkaXNwbGF5TmFtZTogc3RyaW5nIH0pW10gPSBbXTtcbiAgYWxsb3dlZFR5cGVzOiBIeXBTZXJ2aWNlVHlwZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2c6IFByeURpYWxvZ1JlZjxIdnlDcmVhdGVTZXJ2aWNlQ29tcG9uZW50PixcbiAgICBASW5qZWN0KFBSWV9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHsgYWN0aW9uOiBIeXBTZXJ2aWNlQWN0aW9uOyBldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdIH0sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlU2VydmljZTogU2VydmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlc3VsdC5uYW1lID1cbiAgICAgIHRoaXMuZGF0YS5ldmVudHMgJiYgdGhpcy5kYXRhLmV2ZW50cy5sZW5ndGggPiAwID8gdGhpcy5kYXRhLmV2ZW50c1swXS5uYW1lIDogdGhpcy5kYXRhLmFjdGlvbi5uYW1lO1xuICAgIHRoaXMuZXF1aXBtZW50cyA9IFtcbiAgICAgIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQGh2eS5zZXJ2aWNlLm5vRXF1aXAnKSxcbiAgICAgICAgaWQ6ICdfX05PX0VRVUlQTUVOVF9fJ1xuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuZGF0YS5ldmVudHNcbiAgICAgICAgLmZpbHRlcigoZXYpID0+ICEhZXYuZXF1aXBtZW50KVxuICAgICAgICAubWFwKChldikgPT4gKHtcbiAgICAgICAgICAuLi5ldi5lcXVpcG1lbnQsXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGAke2V2LmVxdWlwbWVudD8ubmFtZX0gLSAke3RoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQGh2eS5ldmVudC5mYW1pbHkuJyArIGV2LmVxdWlwbWVudD8uZmFtaWx5KX1gXG4gICAgICAgIH0pKVxuICAgIF0uZmlsdGVyKChvYmosIGluZGV4LCBhcnIpID0+XG4gICAge1xuICAgICAgcmV0dXJuIGFyci5maW5kSW5kZXgobyA9PlxuICAgICAge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobykgPT09IEpTT04uc3RyaW5naWZ5KG9iailcbiAgICAgIH0pID09PSBpbmRleFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXJ2aWNlU2VydmljZS50eXBlcygpLnN1YnNjcmliZSgodHlwZXMpID0+IHtcbiAgICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICAgIHRoaXMudXBkYXRlQWxsb3dlZFR5cGVzKCk7XG4gICAgfSk7XG5cbiAgICBpZih0aGlzLmRhdGEuZXZlbnRzICYmIHRoaXMuZGF0YS5ldmVudHMubGVuZ3RoID09PSAxICYmICEhdGhpcy5kYXRhLmV2ZW50c1swXS5lcXVpcG1lbnQpIHtcbiAgICAgIHRoaXMub25FcXVpcG1lbnRDaGFuZ2UodGhpcy5kYXRhLmV2ZW50c1swXS5lcXVpcG1lbnQuaWQpO1xuICAgIH1cbiAgfVxuXG4gIGFjdGlvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXN1bHQudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSh0aGlzLnJlc3VsdCk7XG4gIH1cblxuICBvbkVxdWlwbWVudENoYW5nZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzdWx0LmVxdWlwbWVudCA9ICRldmVudDtcbiAgICBjb25zdCBlcXVpcG1lbnQgPSAoXG4gICAgICB0aGlzLmVxdWlwbWVudHMuZmlsdGVyKChlcXVpcG1lbnQpID0+IGVxdWlwbWVudC5oYXNPd25Qcm9wZXJ0eSgnZG9tYWluJykpIGFzIEh5cEVxdWlwbWVudFtdXG4gICAgKS5maW5kKChlcXVpcCkgPT4gZXF1aXAuaWQgPT09ICRldmVudCk7XG4gICAgaWYgKGVxdWlwbWVudCkge1xuICAgICAgdGhpcy5yZXN1bHQuZG9tYWluID0gKGVxdWlwbWVudCBhcyBIeXBFcXVpcG1lbnQpLmRvbWFpbjtcbiAgICB9XG4gICAgdGhpcy5jaGVjaygpO1xuICB9XG5cbiAgb25EZXNjcmlwdGlvbkNoYW5nZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzdWx0LmRlc2NyaXB0aW9uID0gJGV2ZW50O1xuICAgIHRoaXMuY2hlY2soKTtcbiAgfVxuXG4gIG9uVHlwZUNoYW5nZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzdWx0LnR5cGUgPSAkZXZlbnQ7XG4gICAgY29uc3QgdHlwZVZhbHVlID0gdGhpcy50eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLm5hbWUgPT09ICRldmVudCkgPz8ge1xuICAgICAgZ3RpOiAnLScsXG4gICAgICBndHI6ICctJyxcbiAgICAgIGd0cnA6ICctJ1xuICAgIH07XG4gICAgdGhpcy5yZXN1bHQuZ3RpID0gKHR5cGVWYWx1ZS5ndGkgPz8gJy0nKSArICcnO1xuICAgIHRoaXMucmVzdWx0Lmd0ciA9ICh0eXBlVmFsdWUuZ3RyID8/ICctJykgKyAnJztcbiAgICB0aGlzLnJlc3VsdC5ndHJwID0gKHR5cGVWYWx1ZS5ndHJwID8/ICctJykgKyAnJztcbiAgICB0aGlzLmNoZWNrKCk7XG4gIH1cblxuICBvblByaW9yaXR5Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXN1bHQucHJpb3JpdHkgPSAkZXZlbnQ7XG4gICAgdGhpcy5jaGVjaygpO1xuICB9XG5cbiAgb25Eb21haW5DaGFuZ2UoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc3VsdC5kb21haW4gPSAkZXZlbnQ7XG4gICAgdGhpcy51cGRhdGVBbGxvd2VkVHlwZXMoKTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gIH1cblxuICBoYXNFcnJvcih0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMuaW5jbHVkZXModHlwZSk7XG4gIH1cblxuICBjaGVjaygpIHtcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgIGlmICghdGhpcy5yZXN1bHQubmFtZSB8fCB0aGlzLnJlc3VsdC5uYW1lLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCgnbmFtZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucmVzdWx0LmVxdWlwbWVudCB8fCB0aGlzLnJlc3VsdC5lcXVpcG1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmVycm9ycy5wdXNoKCd0YXJnZXQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJlc3VsdC5kZXNjcmlwdGlvbiB8fCB0aGlzLnJlc3VsdC5kZXNjcmlwdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goJ2Rlc2NyaXB0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5yZXN1bHQudHlwZSB8fCB0aGlzLnJlc3VsdC50eXBlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCgndHlwZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucmVzdWx0LnByaW9yaXR5IHx8IHRoaXMucmVzdWx0LnByaW9yaXR5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCgncHJpb3JpdHknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJlc3VsdC5kb21haW4gfHwgdGhpcy5yZXN1bHQuZG9tYWluLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCgnZG9tYWluJyk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlREkoKSB7XG4gICAgdGhpcy5kaWFsb2cuY2xvc2Uoe1xuICAgICAgLi4udGhpcy5yZXN1bHQsXG4gICAgICBlcXVpcG1lbnQ6IHRoaXMucmVzdWx0LmVxdWlwbWVudCA9PT0gJ19fTk9fRVFVSVBNRU5UX18nID8gbnVsbCA6IHRoaXMucmVzdWx0LmVxdWlwbWVudCxcbiAgICAgIHZhbHVlOiAnb2snXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZU1vZGFsKCkge1xuICAgIHRoaXMuZGlhbG9nLmNsb3NlKHsgdmFsdWU6ICdjYW5jZWwnIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBbGxvd2VkVHlwZXMoKSB7XG4gICAgdGhpcy5hbGxvd2VkVHlwZXMgPSB0aGlzLnR5cGVzLmZpbHRlcihcbiAgICAgICh0eXBlKSA9PiAhdGhpcy5yZXN1bHQuZG9tYWluIHx8IHRoaXMucmVzdWx0LmRvbWFpbi5sZW5ndGggPT09IDAgfHwgdHlwZS5kb21haW4gPT09IHRoaXMucmVzdWx0LmRvbWFpblxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZVwiPlxuICA8aDM+e3sgJ0Bodnkuc2VydmljZS50aXRsZScgfCBpMThuIH19PC9oMz5cbiAgPHNwYW4+e3sgJ0Bodnkuc2VydmljZS5zdWJ0aXRsZScgfCBpMThuIH19PC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwiby1odnktY3JlYXRlLXNlcnZpY2VfX3JlYXNvbiBtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICA8bGFiZWw+e3sgJ0Bodnkuc2VydmljZS5yZWFzb24nIHwgaTE4biB9fSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvbGFiZWw+XG4gICAgPGlucHV0IGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInJlc3VsdC5uYW1lXCIgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignbmFtZScpXCIgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICA8bGFiZWw+e3sgJ0Bodnkuc2VydmljZS50YXJnZXQnIHwgaTE4biB9fSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvbGFiZWw+XG4gICAgPHByeS1zZWxlY3RcbiAgICAgIFtpdGVtc109XCJlcXVpcG1lbnRzXCJcbiAgICAgIFtuZ01vZGVsXT1cInJlc3VsdC5lcXVpcG1lbnRcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FcXVpcG1lbnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJycgfCBpMThuXCJcbiAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3RhcmdldCcpXCJcbiAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgIGJpbmRMYWJlbD1cImRpc3BsYXlOYW1lXCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCBvLWh2eS1jcmVhdGUtc2VydmljZV9fcHJpb3JpdHktbmF0dXJlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgPGxhYmVsPnt7ICdAaHZ5LnNlcnZpY2UuZG9tYWluJyB8IGkxOG4gfX0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L2xhYmVsPlxuICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgW2l0ZW1zXT1cImRvbWFpbnNcIlxuICAgICAgICBbbmdNb2RlbF09XCJyZXN1bHQuZG9tYWluXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Eb21haW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInJyB8IGkxOG5cIlxuICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkb21haW4nKVwiXG4gICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmRvbWFpbi5cIlxuICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICA8bGFiZWw+e3sgJ0Bodnkuc2VydmljZS5wcmlvcml0eScgfCBpMThuIH19IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC9sYWJlbD5cbiAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJwcmlvcml0aWVzXCJcbiAgICAgICAgW25nTW9kZWxdPVwicmVzdWx0LnByaW9yaXR5XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Qcmlvcml0eUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicnIHwgaTE4blwiXG4gICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3ByaW9yaXR5JylcIlxuICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5zZXJ2aWNlLnByaW9yaXRpZXMuXCJcbiAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgPGxhYmVsPnt7ICdAaHZ5LnNlcnZpY2UudHlwZScgfCBpMThuIH19IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC9sYWJlbD5cbiAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJhbGxvd2VkVHlwZXNcIlxuICAgICAgICBbbmdNb2RlbF09XCJyZXN1bHQudHlwZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicnIHwgaTE4blwiXG4gICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3R5cGUnKVwiXG4gICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICBiaW5kVmFsdWU9XCJuYW1lXCJcbiAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1odnktY3JlYXRlLXNlcnZpY2VfX2hvdXJzIG0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9faG91cnNfX2VsZW1lbnRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJndGlcIj57eyAnQGh2eS5zZXJ2aWNlLmd0aScgfCBpMThuIH19IDo8L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwiZ3RpXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cInJlc3VsdC5ndGkgPz8gJy0nXCIgcmVhZG9ubHkgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9faG91cnNfX2VsZW1lbnRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJndHJcIj57eyAnQGh2eS5zZXJ2aWNlLmd0cicgfCBpMThuIH19IDo8L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwiZ3RyXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cInJlc3VsdC5ndHIgPz8gJy0nXCIgcmVhZG9ubHkgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9faG91cnNfX2VsZW1lbnRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJndHJwXCI+e3sgJ0Bodnkuc2VydmljZS5ndHJwJyB8IGkxOG4gfX0gOjwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJndHJwXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFtuZ01vZGVsXT1cInJlc3VsdC5ndHJwID8/ICctJ1wiIHJlYWRvbmx5IFtkaXNhYmxlZF09XCJ0cnVlXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9fZGVzY3JpcHRpb24gbS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCI+e3sgJ0Bodnkuc2VydmljZS5kZXNjcmlwdGlvbicgfCBpMThuIH19IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC9sYWJlbD5cbiAgICA8dGV4dGFyZWFcbiAgICAgIFtuZ01vZGVsXT1cInJlc3VsdC5kZXNjcmlwdGlvblwiXG4gICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkZXNjcmlwdGlvbicpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4TGVuZ3RoXT1cIjI1NlwiXG4gICAgICBpZD1cImRlc2NyaXB0aW9uXCJcbiAgICA+PC90ZXh0YXJlYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1hc3NvY2lhdGlvbi1tb2RhbF9fYnV0dG9ucyB1LWRpc3BsYXktZmxleCAtanVzdGlmeS1jZW50ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiBbZGlzYWJsZWRdPVwidGhpcy5lcnJvcnMubGVuZ3RoICE9PSAwXCIgKGNsaWNrKT1cImNyZWF0ZURJKClcIj5cbiAgICAgIHt7ICdAaHZ5LmFjdGlvbi52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+e3sgJ0BodnkuYWN0aW9uLmNhbmNlbCcgfCBpMThuIH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXNlcnZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9wcm9jZWR1cmUtYWN0aW9ucy9hY3Rpb24tcGFyYW1ldGVycy9zZXJ2aWNlL2NyZWF0ZS1zZXJ2aWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2dlbmVyYWwvcHJvY2VkdXJlLWFjdGlvbnMvYWN0aW9uLXBhcmFtZXRlcnMvc2VydmljZS9jcmVhdGUtc2VydmljZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFnQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQW9CN0QsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHdCQUF3QjtJQW1CckUsWUFDVSxNQUErQyxFQUN2QixJQUE2RCxFQUNyRixjQUE4QixFQUM5QixXQUEyQjtRQUVuQyxLQUFLLEVBQUUsQ0FBQztRQUxBLFdBQU0sR0FBTixNQUFNLENBQXlDO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQXlEO1FBQ3JGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUF0QnJDLFdBQU0sR0FBMkI7WUFDL0IsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsRUFBRTtZQUNSLE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsRUFBRTtZQUNiLElB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QUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDMUIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckgsQ0FBQztJQUNILENBQUM7OEdBcEtVLHlCQUF5Qiw4Q0FxQjFCLGVBQWU7a0dBckJkLHlCQUF5QixpRkN6QnRDLHluSUEwRkE7OzJGRGpFYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usb0JBQW9COzswQkF3QjNCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQUllfRElBTE9HX0RBVEEsIFByeURpYWxvZ1JlZiwgUHJ5STE4blNlcnZpY2UsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBIeXBFcXVpcG1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbC9oeXAtZXF1aXBtZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBTZXJ2aWNlQWN0aW9uIH0gZnJvbSAnLi9zZXJ2aWNlLWFjdGlvbi1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIeXBTZXJ2aWNlVHlwZSwgU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZS9zZXJ2aWNlL3NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBET01BSU5TIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWwvZG9tYWlucy5jb25zdGFudCc7XG5pbXBvcnQgeyBIeXBFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIEh5cENyZWF0ZVNlcnZpY2VSZXN1bHQgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZXF1aXBtZW50OiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICBwcmlvcml0eTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGd0aT86IHN0cmluZztcbiAgZ3RyPzogc3RyaW5nO1xuICBndHJwPzogc3RyaW5nO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWNyZWF0ZS1zZXJ2aWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1zZXJ2aWNlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBIdnlDcmVhdGVTZXJ2aWNlQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgcmVzdWx0OiBIeXBDcmVhdGVTZXJ2aWNlUmVzdWx0ID0ge1xuICAgIHZhbHVlOiAnY2FuY2VsJyxcbiAgICBuYW1lOiAnJyxcbiAgICBkb21haW46ICcnLFxuICAgIHByaW9yaXR5OiAnJyxcbiAgICBlcXVpcG1lbnQ6ICcnLFxuICAgIHR5cGU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJ1xuICB9O1xuICBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIHR5cGVzOiBIeXBTZXJ2aWNlVHlwZVtdID0gW107XG4gIHByaW9yaXRpZXMgPSBbJzEtTUlORVVSJywgJzItTUFKRVVSJywgJzMtQkxPUVVBTlQnXTtcbiAgZG9tYWlucyA9IERPTUFJTlMudmFsdWVzO1xuICBlcXVpcG1lbnRzOiAoSHlwRXF1aXBtZW50IHwgeyBkaXNwbGF5TmFtZTogc3RyaW5nIH0pW10gPSBbXTtcbiAgYWxsb3dlZFR5cGVzOiBIeXBTZXJ2aWNlVHlwZVtdID0gW107XG4gIGZpbHRlcmVkVHlwZXM6IEh5cFNlcnZpY2VUeXBlW10gPSBbXTtcbiAgdHlwZVNlYXJjaCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGlhbG9nOiBQcnlEaWFsb2dSZWY8SHZ5Q3JlYXRlU2VydmljZUNvbXBvbmVudD4sXG4gICAgQEluamVjdChQUllfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7IGFjdGlvbjogSHlwU2VydmljZUFjdGlvbjsgZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSB9LFxuICAgIHByaXZhdGUgc2VydmljZVNlcnZpY2U6IFNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZXN1bHQubmFtZSA9XG4gICAgICB0aGlzLmRhdGEuZXZlbnRzICYmIHRoaXMuZGF0YS5ldmVudHMubGVuZ3RoID4gMCA/IHRoaXMuZGF0YS5ldmVudHNbMF0ubmFtZSA6IHRoaXMuZGF0YS5hY3Rpb24ubmFtZTtcbiAgICB0aGlzLmVxdWlwbWVudHMgPSBbXG4gICAgICB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0Bodnkuc2VydmljZS5ub0VxdWlwJyksXG4gICAgICAgIGlkOiAnX19OT19FUVVJUE1FTlRfXydcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLmRhdGEuZXZlbnRzXG4gICAgICAgIC5maWx0ZXIoKGV2KSA9PiAhIWV2LmVxdWlwbWVudClcbiAgICAgICAgLm1hcCgoZXYpID0+ICh7XG4gICAgICAgICAgLi4uZXYuZXF1aXBtZW50LFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHtldi5lcXVpcG1lbnQ/Lm5hbWV9IC0gJHt0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQuZmFtaWx5LicgKyBldi5lcXVpcG1lbnQ/LmZhbWlseSl9YFxuICAgICAgICB9KSlcbiAgICBdLmZpbHRlcigob2JqLCBpbmRleCwgYXJyKSA9PlxuICAgIHtcbiAgICAgIHJldHVybiBhcnIuZmluZEluZGV4KG8gPT5cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG8pID09PSBKU09OLnN0cmluZ2lmeShvYmopXG4gICAgICB9KSA9PT0gaW5kZXhcbiAgICB9KTtcblxuICAgIHRoaXMuc2VydmljZVNlcnZpY2UudHlwZXMoKS5zdWJzY3JpYmUoKHR5cGVzKSA9PiB7XG4gICAgICB0aGlzLnR5cGVzID0gdHlwZXM7XG4gICAgICB0aGlzLnVwZGF0ZUFsbG93ZWRUeXBlcygpO1xuICAgIH0pO1xuXG4gICAgaWYodGhpcy5kYXRhLmV2ZW50cyAmJiB0aGlzLmRhdGEuZXZlbnRzLmxlbmd0aCA9PT0gMSAmJiAhIXRoaXMuZGF0YS5ldmVudHNbMF0uZXF1aXBtZW50KSB7XG4gICAgICB0aGlzLm9uRXF1aXBtZW50Q2hhbmdlKHRoaXMuZGF0YS5ldmVudHNbMF0uZXF1aXBtZW50LmlkKTtcbiAgICB9XG4gIH1cblxuICBhY3Rpb24odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucmVzdWx0LnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5kaWFsb2cuY2xvc2UodGhpcy5yZXN1bHQpO1xuICB9XG5cbiAgb25FcXVpcG1lbnRDaGFuZ2UoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc3VsdC5lcXVpcG1lbnQgPSAkZXZlbnQ7XG4gICAgY29uc3QgZXF1aXBtZW50ID0gKFxuICAgICAgdGhpcy5lcXVpcG1lbnRzLmZpbHRlcigoZXF1aXBtZW50KSA9PiBlcXVpcG1lbnQuaGFzT3duUHJvcGVydHkoJ2RvbWFpbicpKSBhcyBIeXBFcXVpcG1lbnRbXVxuICAgICkuZmluZCgoZXF1aXApID0+IGVxdWlwLmlkID09PSAkZXZlbnQpO1xuICAgIGlmIChlcXVpcG1lbnQpIHtcbiAgICAgIHRoaXMucmVzdWx0LmRvbWFpbiA9IChlcXVpcG1lbnQgYXMgSHlwRXF1aXBtZW50KS5kb21haW47XG4gICAgfVxuICAgIHRoaXMuY2hlY2soKTtcbiAgfVxuXG4gIG9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc3VsdC5kZXNjcmlwdGlvbiA9ICRldmVudDtcbiAgICB0aGlzLmNoZWNrKCk7XG4gIH1cblxuICBvblR5cGVTZWFyY2hDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gMykge1xuICAgICAgdGhpcy5maWx0ZXJlZFR5cGVzID0gdGhpcy5hbGxvd2VkVHlwZXMuZmlsdGVyKCh0KSA9PiB0Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRUeXBlcyA9IFtdO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXN1bHQudHlwZSAmJiB0aGlzLnJlc3VsdC50eXBlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5yZXN1bHQudHlwZSA9ICcnO1xuICAgICAgdGhpcy5jaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uVHlwZUNoYW5nZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzdWx0LnR5cGUgPSAkZXZlbnQ7XG4gICAgdGhpcy50eXBlU2VhcmNoID0gJGV2ZW50O1xuICAgIGNvbnN0IHR5cGVWYWx1ZSA9IHRoaXMudHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5uYW1lID09PSAkZXZlbnQpID8/IHtcbiAgICAgIGd0aTogJy0nLFxuICAgICAgZ3RyOiAnLScsXG4gICAgICBndHJwOiAnLSdcbiAgICB9O1xuICAgIHRoaXMucmVzdWx0Lmd0aSA9ICh0eXBlVmFsdWUuZ3RpID8/ICctJykgKyAnJztcbiAgICB0aGlzLnJlc3VsdC5ndHIgPSAodHlwZVZhbHVlLmd0ciA/PyAnLScpICsgJyc7XG4gICAgdGhpcy5yZXN1bHQuZ3RycCA9ICh0eXBlVmFsdWUuZ3RycCA/PyAnLScpICsgJyc7XG4gICAgdGhpcy5jaGVjaygpO1xuICB9XG5cbiAgb25Qcmlvcml0eUNoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzdWx0LnByaW9yaXR5ID0gJGV2ZW50O1xuICAgIHRoaXMuY2hlY2soKTtcbiAgfVxuXG4gIG9uRG9tYWluQ2hhbmdlKCRldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXN1bHQuZG9tYWluID0gJGV2ZW50O1xuICAgIHRoaXMudXBkYXRlQWxsb3dlZFR5cGVzKCk7XG4gICAgdGhpcy5jaGVjaygpO1xuICB9XG5cbiAgaGFzRXJyb3IodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmluY2x1ZGVzKHR5cGUpO1xuICB9XG5cbiAgY2hlY2soKSB7XG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICBpZiAoIXRoaXMucmVzdWx0Lm5hbWUgfHwgdGhpcy5yZXN1bHQubmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goJ25hbWUnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJlc3VsdC5lcXVpcG1lbnQgfHwgdGhpcy5yZXN1bHQuZXF1aXBtZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCgndGFyZ2V0Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5yZXN1bHQuZGVzY3JpcHRpb24gfHwgdGhpcy5yZXN1bHQuZGVzY3JpcHRpb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmVycm9ycy5wdXNoKCdkZXNjcmlwdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucmVzdWx0LnR5cGUgfHwgdGhpcy5yZXN1bHQudHlwZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goJ3R5cGUnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJlc3VsdC5wcmlvcml0eSB8fCB0aGlzLnJlc3VsdC5wcmlvcml0eS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goJ3ByaW9yaXR5Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5yZXN1bHQuZG9tYWluIHx8IHRoaXMucmVzdWx0LmRvbWFpbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goJ2RvbWFpbicpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZURJKCkge1xuICAgIHRoaXMuZGlhbG9nLmNsb3NlKHtcbiAgICAgIC4uLnRoaXMucmVzdWx0LFxuICAgICAgZXF1aXBtZW50OiB0aGlzLnJlc3VsdC5lcXVpcG1lbnQgPT09ICdfX05PX0VRVUlQTUVOVF9fJyA/IG51bGwgOiB0aGlzLnJlc3VsdC5lcXVpcG1lbnQsXG4gICAgICB2YWx1ZTogJ29rJ1xuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSh7IHZhbHVlOiAnY2FuY2VsJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQWxsb3dlZFR5cGVzKCkge1xuICAgIHRoaXMuYWxsb3dlZFR5cGVzID0gdGhpcy50eXBlcy5maWx0ZXIoXG4gICAgICAodHlwZSkgPT4gIXRoaXMucmVzdWx0LmRvbWFpbiB8fCB0aGlzLnJlc3VsdC5kb21haW4ubGVuZ3RoID09PSAwIHx8IHR5cGUuZG9tYWluID09PSB0aGlzLnJlc3VsdC5kb21haW5cbiAgICApO1xuICAgIGlmICh0aGlzLnJlc3VsdC50eXBlICYmICF0aGlzLmFsbG93ZWRUeXBlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRoaXMucmVzdWx0LnR5cGUpKSB7XG4gICAgICB0aGlzLnJlc3VsdC50eXBlID0gJyc7XG4gICAgICB0aGlzLnR5cGVTZWFyY2ggPSAnJztcbiAgICAgIHRoaXMuZmlsdGVyZWRUeXBlcyA9IFtdO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlU2VhcmNoLmxlbmd0aCA+PSAzKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVHlwZXMgPSB0aGlzLmFsbG93ZWRUeXBlcy5maWx0ZXIoKHQpID0+IHQubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudHlwZVNlYXJjaC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1odnktY3JlYXRlLXNlcnZpY2VcIj5cbiAgPGgzPnt7ICdAaHZ5LnNlcnZpY2UudGl0bGUnIHwgaTE4biB9fTwvaDM+XG4gIDxzcGFuPnt7ICdAaHZ5LnNlcnZpY2Uuc3VidGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWNyZWF0ZS1zZXJ2aWNlX19yZWFzb24gbS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgPGxhYmVsPnt7ICdAaHZ5LnNlcnZpY2UucmVhc29uJyB8IGkxOG4gfX0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L2xhYmVsPlxuICAgIDxpbnB1dCBjbGFzcz1cImEtZm9ybS1maWVsZFwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJyZXN1bHQubmFtZVwiIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnKVwiIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgPGxhYmVsPnt7ICdAaHZ5LnNlcnZpY2UudGFyZ2V0JyB8IGkxOG4gfX0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBbaXRlbXNdPVwiZXF1aXBtZW50c1wiXG4gICAgICBbbmdNb2RlbF09XCJyZXN1bHQuZXF1aXBtZW50XCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRXF1aXBtZW50Q2hhbmdlKCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIicnIHwgaTE4blwiXG4gICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCd0YXJnZXQnKVwiXG4gICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICBiaW5kTGFiZWw9XCJkaXNwbGF5TmFtZVwiXG4gICAgPjwvcHJ5LXNlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgby1odnktY3JlYXRlLXNlcnZpY2VfX3ByaW9yaXR5LW5hdHVyZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgIDxsYWJlbD57eyAnQGh2eS5zZXJ2aWNlLmRvbWFpbicgfCBpMThuIH19IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC9sYWJlbD5cbiAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJkb21haW5zXCJcbiAgICAgICAgW25nTW9kZWxdPVwicmVzdWx0LmRvbWFpblwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRG9tYWluQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJycgfCBpMThuXCJcbiAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZG9tYWluJylcIlxuICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5kb21haW4uXCJcbiAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgPGxhYmVsPnt7ICdAaHZ5LnNlcnZpY2UucHJpb3JpdHknIHwgaTE4biB9fSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvbGFiZWw+XG4gICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICBbaXRlbXNdPVwicHJpb3JpdGllc1wiXG4gICAgICAgIFtuZ01vZGVsXT1cInJlc3VsdC5wcmlvcml0eVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uUHJpb3JpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInJyB8IGkxOG5cIlxuICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdwcmlvcml0eScpXCJcbiAgICAgICAgaTE4blByZWZpeD1cIkBodnkuc2VydmljZS5wcmlvcml0aWVzLlwiXG4gICAgICA+PC9wcnktc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgIDxsYWJlbD57eyAnQGh2eS5zZXJ2aWNlLnR5cGUnIHwgaTE4biB9fSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidHlwZVNlYXJjaFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHlwZVNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJ0eXBlQXV0b1wiXG4gICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3R5cGUnKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInJyB8IGkxOG5cIlxuICAgICAgLz5cbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICN0eXBlQXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJvblR5cGVDaGFuZ2UoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2YgZmlsdGVyZWRUeXBlc1wiIFt2YWx1ZV09XCJ0eXBlLm5hbWVcIj57eyB0eXBlLm5hbWUgfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1odnktY3JlYXRlLXNlcnZpY2VfX2hvdXJzIG0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9faG91cnNfX2VsZW1lbnRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJndGlcIj57eyAnQGh2eS5zZXJ2aWNlLmd0aScgfCBpMThuIH19IDo8L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwiZ3RpXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cInJlc3VsdC5ndGkgPz8gJy0nXCIgcmVhZG9ubHkgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9faG91cnNfX2VsZW1lbnRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJndHJcIj57eyAnQGh2eS5zZXJ2aWNlLmd0cicgfCBpMThuIH19IDo8L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwiZ3RyXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cInJlc3VsdC5ndHIgPz8gJy0nXCIgcmVhZG9ubHkgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9faG91cnNfX2VsZW1lbnRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJndHJwXCI+e3sgJ0Bodnkuc2VydmljZS5ndHJwJyB8IGkxOG4gfX0gOjwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJndHJwXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFtuZ01vZGVsXT1cInJlc3VsdC5ndHJwID8/ICctJ1wiIHJlYWRvbmx5IFtkaXNhYmxlZF09XCJ0cnVlXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1jcmVhdGUtc2VydmljZV9fZGVzY3JpcHRpb24gbS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCI+e3sgJ0Bodnkuc2VydmljZS5kZXNjcmlwdGlvbicgfCBpMThuIH19IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC9sYWJlbD5cbiAgICA8dGV4dGFyZWFcbiAgICAgIFtuZ01vZGVsXT1cInJlc3VsdC5kZXNjcmlwdGlvblwiXG4gICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkZXNjcmlwdGlvbicpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4TGVuZ3RoXT1cIjI1NlwiXG4gICAgICBpZD1cImRlc2NyaXB0aW9uXCJcbiAgICA+PC90ZXh0YXJlYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1hc3NvY2lhdGlvbi1tb2RhbF9fYnV0dG9ucyB1LWRpc3BsYXktZmxleCAtanVzdGlmeS1jZW50ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiBbZGlzYWJsZWRdPVwidGhpcy5lcnJvcnMubGVuZ3RoICE9PSAwXCIgKGNsaWNrKT1cImNyZWF0ZURJKClcIj5cbiAgICAgIHt7ICdAaHZ5LmFjdGlvbi52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+e3sgJ0BodnkuYWN0aW9uLmNhbmNlbCcgfCBpMThuIH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -24,7 +24,7 @@ import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
24
24
  import { v4 } from 'uuid';
25
25
  import * as i1$4 from '@ngrx/effects';
26
26
  import { act, ofType, createEffect, EffectsModule } from '@ngrx/effects';
27
- import * as i10 from '@angular/material/autocomplete';
27
+ import * as i5$2 from '@angular/material/autocomplete';
28
28
  import { MatAutocompleteTrigger, MatAutocomplete, MatOption } from '@angular/material/autocomplete';
29
29
 
30
30
  const HypEventCriticality = {
@@ -1522,6 +1522,8 @@ class HvyCreateServiceComponent extends SubscriptionnerDirective {
1522
1522
  this.domains = DOMAINS.values;
1523
1523
  this.equipments = [];
1524
1524
  this.allowedTypes = [];
1525
+ this.filteredTypes = [];
1526
+ this.typeSearch = '';
1525
1527
  this.result.name =
1526
1528
  this.data.events && this.data.events.length > 0 ? this.data.events[0].name : this.data.action.name;
1527
1529
  this.equipments = [
@@ -1564,8 +1566,21 @@ class HvyCreateServiceComponent extends SubscriptionnerDirective {
1564
1566
  this.result.description = $event;
1565
1567
  this.check();
1566
1568
  }
1569
+ onTypeSearchChange(value) {
1570
+ if (value.length >= 3) {
1571
+ this.filteredTypes = this.allowedTypes.filter((t) => t.name.toLowerCase().includes(value.toLowerCase()));
1572
+ }
1573
+ else {
1574
+ this.filteredTypes = [];
1575
+ }
1576
+ if (this.result.type && this.result.type !== value) {
1577
+ this.result.type = '';
1578
+ this.check();
1579
+ }
1580
+ }
1567
1581
  onTypeChange($event) {
1568
1582
  this.result.type = $event;
1583
+ this.typeSearch = $event;
1569
1584
  const typeValue = this.types.find((type) => type.name === $event) ?? {
1570
1585
  gti: '-',
1571
1586
  gtr: '-',
@@ -1621,13 +1636,21 @@ class HvyCreateServiceComponent extends SubscriptionnerDirective {
1621
1636
  }
1622
1637
  updateAllowedTypes() {
1623
1638
  this.allowedTypes = this.types.filter((type) => !this.result.domain || this.result.domain.length === 0 || type.domain === this.result.domain);
1639
+ if (this.result.type && !this.allowedTypes.find((t) => t.name === this.result.type)) {
1640
+ this.result.type = '';
1641
+ this.typeSearch = '';
1642
+ this.filteredTypes = [];
1643
+ }
1644
+ else if (this.typeSearch.length >= 3) {
1645
+ this.filteredTypes = this.allowedTypes.filter((t) => t.name.toLowerCase().includes(this.typeSearch.toLowerCase()));
1646
+ }
1624
1647
  }
1625
1648
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: HvyCreateServiceComponent, deps: [{ token: i1$2.PryDialogRef }, { token: PRY_DIALOG_DATA }, { token: ServiceService }, { token: i1$2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
1626
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: HvyCreateServiceComponent, selector: "pry-create-service", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"allowedTypes\"\n [ngModel]=\"result.type\"\n (ngModelChange)=\"onTypeChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('type')\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "forcePlaceHolder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }] }); }
1649
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: HvyCreateServiceComponent, selector: "pry-create-service", usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <input\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"typeSearch\"\n (ngModelChange)=\"onTypeSearchChange($event)\"\n [matAutocomplete]=\"typeAuto\"\n [class.-error]=\"hasError('type')\"\n [placeholder]=\"'' | i18n\"\n />\n <mat-autocomplete #typeAuto=\"matAutocomplete\" (optionSelected)=\"onTypeChange($event.option.value)\">\n <mat-option *ngFor=\"let type of filteredTypes\" [value]=\"type.name\">{{ type.name }}</mat-option>\n </mat-autocomplete>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "forcePlaceHolder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "directive", type: i5$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i5$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }] }); }
1627
1650
  }
1628
1651
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: HvyCreateServiceComponent, decorators: [{
1629
1652
  type: Component,
1630
- args: [{ selector: 'pry-create-service', template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"allowedTypes\"\n [ngModel]=\"result.type\"\n (ngModelChange)=\"onTypeChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('type')\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
1653
+ args: [{ selector: 'pry-create-service', template: "<div class=\"o-hvy-create-service\">\n <h3>{{ '@hvy.service.title' | i18n }}</h3>\n <span>{{ '@hvy.service.subtitle' | i18n }}</span>\n <div class=\"o-hvy-create-service__reason m-form-label-field\">\n <label>{{ '@hvy.service.reason' | i18n }} <span class=\"required\">*</span> :</label>\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"result.name\" [class.-error]=\"hasError('name')\" />\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.target' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"equipments\"\n [ngModel]=\"result.equipment\"\n (ngModelChange)=\"onEquipmentChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('target')\"\n bindValue=\"id\"\n bindLabel=\"displayName\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field o-hvy-create-service__priority-nature\">\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.domain' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"domains\"\n [ngModel]=\"result.domain\"\n (ngModelChange)=\"onDomainChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('domain')\"\n i18nPrefix=\"@hvy.event.domain.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.priority' | i18n }} <span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"priorities\"\n [ngModel]=\"result.priority\"\n (ngModelChange)=\"onPriorityChange($event)\"\n [placeholder]=\"'' | i18n\"\n [class.-error]=\"hasError('priority')\"\n i18nPrefix=\"@hvy.service.priorities.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label>{{ '@hvy.service.type' | i18n }} <span class=\"required\">*</span> :</label>\n <input\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"typeSearch\"\n (ngModelChange)=\"onTypeSearchChange($event)\"\n [matAutocomplete]=\"typeAuto\"\n [class.-error]=\"hasError('type')\"\n [placeholder]=\"'' | i18n\"\n />\n <mat-autocomplete #typeAuto=\"matAutocomplete\" (optionSelected)=\"onTypeChange($event.option.value)\">\n <mat-option *ngFor=\"let type of filteredTypes\" [value]=\"type.name\">{{ type.name }}</mat-option>\n </mat-autocomplete>\n </div>\n </div>\n <div class=\"o-hvy-create-service__hours m-form-label-field\">\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gti\">{{ '@hvy.service.gti' | i18n }} :</label>\n <input id=\"gti\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gti ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtr\">{{ '@hvy.service.gtr' | i18n }} :</label>\n <input id=\"gtr\" class=\"a-form-field\" type=\"text\" [ngModel]=\"result.gtr ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n <div class=\"o-hvy-create-service__hours__element\">\n <label for=\"gtrp\">{{ '@hvy.service.gtrp' | i18n }} :</label>\n <input id=\"gtrp\" type=\"text\" class=\"a-form-field\" [ngModel]=\"result.gtrp ?? '-'\" readonly [disabled]=\"true\" />\n </div>\n </div>\n <div class=\"o-hvy-create-service__description m-form-label-field\">\n <label for=\"description\">{{ '@hvy.service.description' | i18n }} <span class=\"required\">*</span> :</label>\n <textarea\n [ngModel]=\"result.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"onDescriptionChange($event)\"\n [maxLength]=\"256\"\n id=\"description\"\n ></textarea>\n </div>\n <div class=\"o-hvy-association-modal__buttons u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"this.errors.length !== 0\" (click)=\"createDI()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
1631
1654
  }], ctorParameters: () => [{ type: i1$2.PryDialogRef }, { type: undefined, decorators: [{
1632
1655
  type: Inject,
1633
1656
  args: [PRY_DIALOG_DATA]
@@ -2856,7 +2879,7 @@ class EventDetailComponent extends SubscriptionnerDirective {
2856
2879
  this.tooltipRef.dialog = null;
2857
2880
  }
2858
2881
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EventDetailComponent, deps: [{ token: EquipmentService }, { token: i1$1.Store }, { token: i4.Overlay }, { token: i0.ViewContainerRef }, { token: i1$2.PryI18nService }, { token: i1$2.PryDialogService }, { token: HypCommentsService }, { token: EventService }, { token: i1$4.Actions }, { token: i1$3.FormBuilder }, { token: ProcedureService }], target: i0.ɵɵFactoryTarget.Component }); }
2859
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { placesChoices: "placesChoices", title: "title", equipmentFromMap: "equipmentFromMap", readonly: "readonly", readonlyProcedure: "readonlyProcedure", enableEditActions: "enableEditActions", readOnlyComment: "readOnlyComment", me: "me", events: "events", procedure: "procedure", cancelModifications: "cancelModifications" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure", eventErrors: "eventErrors", addedEvent: "addedEvent", removedEvent: "removedEvent", comfirmDialogOpened: "comfirmDialogOpened", commented: "commented" }, viewQueries: [{ propertyName: "confirmDialog", first: true, predicate: ["confirmDialog"], descendants: true, read: TemplateRef }, { propertyName: "detailHoverIcon", predicate: ["detailHoverIcon"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }} {{events.length > 1 ? '('+events.length+')': ''}}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome || (!!procedure && calculatedProgress !== 100)\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split event-detail-buttons-left\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openChangeModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.modify' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\" id=\"provoly-event-detail-container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split detail-remove-eve\">\n @if (showRemoveEveButton(event)) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"removeOneEvent(event)\">\n <pry-icon iconSvg=\"remove\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"(!!procedure && calculatedProgress === 100) || !procedure\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>\n {{ '@hvy.event.log.event.category' | i18n }} : {{ '@hvy.event.category.' + event.category | i18n }}\n </div>\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <!--identifiant-->\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n }\n <!--nom-->\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n [maxLength]=\"50\"\n />\n </td>\n <td></td>\n </tr>\n <!--categorie-->\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--sous categorie-->\n @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.subCategory\"\n [items]=\"subCategories\"\n [class.-error]=\"hasError('subCategory', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'subCategory', $event)\"\n i18nPrefix=\"@hvy.event.subCategory.\"\n [disabled]=\"accessValue.subCategory\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n }\n <!--criticite-->\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--metier-->\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--equipement-->\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td class=\"td-autocomplete\">\n <input type=\"text\" class=\"input-autocomplete\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n [matAutocomplete]=\"auto\"\n [formControl]=\"getEquipControl(idx)\"\n [ngClass]=\"{'equipment-disabled': event.status === 'DONE' || event.status === 'ARCHIVED'}\"\n #trigger=\"matAutocompleteTrigger\"\n [class.-error]=\"hasError('equipment', idx)\"/>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayEquipment.bind(this)\"\n (opened)=\"openAutocomplete(idx)\"\n (closed)=\"closeAutocomplete(idx)\"\n >\n @for (equipment of equipments$[idx] | async; track equipment) {\n <mat-option [value]=\"equipment\">\n {{equipment.name}} - {{'@hvy.event.family.' + equipment.family | i18n}}\n </mat-option>\n }\n </mat-autocomplete>\n\n <pry-icon\n class=\"a-pry-select__toggle autocomplete-chevron\"\n [iconSvg]=\"openedAutocomplete[idx]? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"10\"\n [height]=\"16\"\n (click)=\"openOrCloseAutocomplete($event, trigger, idx)\"\n ></pry-icon>\n </td>\n\n <td>\n @if (selectedEquipment[idx]) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand anchor-tooltip\"\n [ngClass]=\"'anchor-tooltip-'+ idx\"\n [style.anchor-name]=\"'--my-anchor' + idx\"\n #detailHoverIcon\n (click)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\n <!--entite-->\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"\n (event.equipment?.entity ? '@hvy.event.entity.' + event.equipment?.entity : '') | i18n\n \"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--adresse-->\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n [maxLength]=\"256\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--ville-->\n <tr>\n <td>{{ '@hvy.event.district' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"placesChoices\"\n [ngModel]=\"event.district\"\n [bindValue]=\"'key'\"\n bindLabel=\"display\"\n i18nPrefix=\"@hvy.event.places.\"\n (ngModelChange)=\"modifyEvent(idx, 'district', $event)\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--evenement parent-->\n <tr>\n <td>{{ '@hvy.event.parentEvent.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventSelectValue[idx]\"\n (ngModelChange)=\"selectedParentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"parent\"\n [template]=\"templateParent\"\n [disabled]=\"accessValue.parent\"\n [class.-error]=\"hasError('parent', idx)\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateParent let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td></td>\n </tr>\n <!--description-->\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"1024\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--date debut-->\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--date fin-->\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n @if (hasError('endDate', idx) && event.endDate && event.startDate) {\n <span class=\"a-form-field -error\">{{ '@hvy.event.errorDate' | i18n }}</span>\n }\n </td>\n <td></td>\n </tr>\n <!--source-->\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ('@hvy.event.hypervisor' | i18n)\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--ref\u00E9rence externe-->\n @if (event.externalSourceRef !== 'Hyperviseur') {\n <tr>\n <td>{{ '@hvy.event.externalId' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalId ?? '-'\"\n [readonly]=\"true\"\n />\n </td>\n <td></td>\n </tr>\n }\n <!--createur-->\n <tr>\n <td>{{ '@hvy.event.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"event.creator\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n <!--date creation-->\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date modification-->\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date cloture-->\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n </tbody>\n </table>\n @if (event.id !== -1) {\n <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"event.status === 'DONE' || event.status === 'ARCHIVED'\"\n [type]=\"'events'\"\n [me]=\"me?.sub\"\n [objectId]=\"event.id\"\n ></hvy-comments>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>\n <span>{{ procedure.name }}&nbsp;:</span>\n {{ procedure.description }}\n </p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [procedureModificationsActions]=\"procedureModifications?.actions\"\n [initialActions] = this._procedure?.actions\n [readonly]=\"readonlyProcedure || readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n [disableSaveDIButton]=\"isEventModified()\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n (refreshActions)=\"refreshActions($event)\"\n [me]=\"me?.sub\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul class=\"list-eve-close-modal\">\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ padId.fn(event.id) }} - {{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i1$2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "forcePlaceHolder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: StatusDisplayComponent, selector: "hvy-status-display", inputs: ["type", "readonly", "item", "modifiable"], outputs: ["modified"] }, { kind: "component", type: ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "component", type: HvyCommentsComponent, selector: "hvy-comments", inputs: ["readonly", "me", "type", "objectId", "displayEmpty", "commentCount", "lastComment", "trigger"], outputs: ["commented"] }, { kind: "component", type: ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "me", "readonly", "readOnlyComment", "enableEditActions", "events", "disableSaveDIButton", "initialActions", "procedureModificationsActions", "actions"], outputs: ["modified", "commented", "refreshActions"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
2882
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { placesChoices: "placesChoices", title: "title", equipmentFromMap: "equipmentFromMap", readonly: "readonly", readonlyProcedure: "readonlyProcedure", enableEditActions: "enableEditActions", readOnlyComment: "readOnlyComment", me: "me", events: "events", procedure: "procedure", cancelModifications: "cancelModifications" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure", eventErrors: "eventErrors", addedEvent: "addedEvent", removedEvent: "removedEvent", comfirmDialogOpened: "comfirmDialogOpened", commented: "commented" }, viewQueries: [{ propertyName: "confirmDialog", first: true, predicate: ["confirmDialog"], descendants: true, read: TemplateRef }, { propertyName: "detailHoverIcon", predicate: ["detailHoverIcon"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }} {{events.length > 1 ? '('+events.length+')': ''}}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome || (!!procedure && calculatedProgress !== 100)\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split event-detail-buttons-left\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openChangeModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.modify' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\" id=\"provoly-event-detail-container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split detail-remove-eve\">\n @if (showRemoveEveButton(event)) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"removeOneEvent(event)\">\n <pry-icon iconSvg=\"remove\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"(!!procedure && calculatedProgress === 100) || !procedure\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>\n {{ '@hvy.event.log.event.category' | i18n }} : {{ '@hvy.event.category.' + event.category | i18n }}\n </div>\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <!--identifiant-->\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n }\n <!--nom-->\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n [maxLength]=\"50\"\n />\n </td>\n <td></td>\n </tr>\n <!--categorie-->\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--sous categorie-->\n @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.subCategory\"\n [items]=\"subCategories\"\n [class.-error]=\"hasError('subCategory', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'subCategory', $event)\"\n i18nPrefix=\"@hvy.event.subCategory.\"\n [disabled]=\"accessValue.subCategory\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n }\n <!--criticite-->\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--metier-->\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--equipement-->\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td class=\"td-autocomplete\">\n <input type=\"text\" class=\"input-autocomplete\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n [matAutocomplete]=\"auto\"\n [formControl]=\"getEquipControl(idx)\"\n [ngClass]=\"{'equipment-disabled': event.status === 'DONE' || event.status === 'ARCHIVED'}\"\n #trigger=\"matAutocompleteTrigger\"\n [class.-error]=\"hasError('equipment', idx)\"/>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayEquipment.bind(this)\"\n (opened)=\"openAutocomplete(idx)\"\n (closed)=\"closeAutocomplete(idx)\"\n >\n @for (equipment of equipments$[idx] | async; track equipment) {\n <mat-option [value]=\"equipment\">\n {{equipment.name}} - {{'@hvy.event.family.' + equipment.family | i18n}}\n </mat-option>\n }\n </mat-autocomplete>\n\n <pry-icon\n class=\"a-pry-select__toggle autocomplete-chevron\"\n [iconSvg]=\"openedAutocomplete[idx]? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"10\"\n [height]=\"16\"\n (click)=\"openOrCloseAutocomplete($event, trigger, idx)\"\n ></pry-icon>\n </td>\n\n <td>\n @if (selectedEquipment[idx]) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand anchor-tooltip\"\n [ngClass]=\"'anchor-tooltip-'+ idx\"\n [style.anchor-name]=\"'--my-anchor' + idx\"\n #detailHoverIcon\n (click)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\n <!--entite-->\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"\n (event.equipment?.entity ? '@hvy.event.entity.' + event.equipment?.entity : '') | i18n\n \"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--adresse-->\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n [maxLength]=\"256\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--ville-->\n <tr>\n <td>{{ '@hvy.event.district' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"placesChoices\"\n [ngModel]=\"event.district\"\n [bindValue]=\"'key'\"\n bindLabel=\"display\"\n i18nPrefix=\"@hvy.event.places.\"\n (ngModelChange)=\"modifyEvent(idx, 'district', $event)\"\n [disabled]=\"adressDisabled[idx] || event.status === 'DONE'\"\n ></pry-select>\n </td>\n <td></td>\n </tr>\n <!--evenement parent-->\n <tr>\n <td>{{ '@hvy.event.parentEvent.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventSelectValue[idx]\"\n (ngModelChange)=\"selectedParentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"parent\"\n [template]=\"templateParent\"\n [disabled]=\"accessValue.parent\"\n [class.-error]=\"hasError('parent', idx)\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateParent let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td></td>\n </tr>\n <!--description-->\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"1024\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <!--date debut-->\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--date fin-->\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n @if (hasError('endDate', idx) && event.endDate && event.startDate) {\n <span class=\"a-form-field -error\">{{ '@hvy.event.errorDate' | i18n }}</span>\n }\n </td>\n <td></td>\n </tr>\n <!--source-->\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ('@hvy.event.hypervisor' | i18n)\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n <td></td>\n </tr>\n <!--ref\u00E9rence externe-->\n @if (event.externalSourceRef !== 'Hyperviseur') {\n <tr>\n <td>{{ '@hvy.event.externalId' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalId ?? '-'\"\n [readonly]=\"true\"\n />\n </td>\n <td></td>\n </tr>\n }\n <!--createur-->\n <tr>\n <td>{{ '@hvy.event.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"event.creator\" [readonly]=\"true\" />\n </td>\n <td></td>\n </tr>\n <!--date creation-->\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date modification-->\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n <!--date cloture-->\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n <td></td>\n </tr>\n </tbody>\n </table>\n @if (event.id !== -1) {\n <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"event.status === 'DONE' || event.status === 'ARCHIVED'\"\n [type]=\"'events'\"\n [me]=\"me?.sub\"\n [objectId]=\"event.id\"\n ></hvy-comments>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>\n <span>{{ procedure.name }}&nbsp;:</span>\n {{ procedure.description }}\n </p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [procedureModificationsActions]=\"procedureModifications?.actions\"\n [initialActions] = this._procedure?.actions\n [readonly]=\"readonlyProcedure || readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n [disableSaveDIButton]=\"isEventModified()\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n (refreshActions)=\"refreshActions($event)\"\n [me]=\"me?.sub\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul class=\"list-eve-close-modal\">\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ padId.fn(event.id) }} - {{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i1$2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "forcePlaceHolder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "directive", type: i5$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i5$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: StatusDisplayComponent, selector: "hvy-status-display", inputs: ["type", "readonly", "item", "modifiable"], outputs: ["modified"] }, { kind: "component", type: ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "component", type: HvyCommentsComponent, selector: "hvy-comments", inputs: ["readonly", "me", "type", "objectId", "displayEmpty", "commentCount", "lastComment", "trigger"], outputs: ["commented"] }, { kind: "component", type: ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "me", "readonly", "readOnlyComment", "enableEditActions", "events", "disableSaveDIButton", "initialActions", "procedureModificationsActions", "actions"], outputs: ["modified", "commented", "refreshActions"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
2860
2883
  }
2861
2884
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EventDetailComponent, decorators: [{
2862
2885
  type: Component,