@provoly/hypervisor 0.0.126 → 0.0.127

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.
@@ -101,7 +101,7 @@ export class EventService {
101
101
  });
102
102
  }));
103
103
  }
104
- search(search, statuses = []) {
104
+ search(search, fields, statuses = []) {
105
105
  return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
106
106
  let params = new HttpParams();
107
107
  params = params.set('sort', 'name').set('order', 'DESC').set('pageSize', '10');
@@ -110,8 +110,11 @@ export class EventService {
110
110
  params = params.set('status', status);
111
111
  });
112
112
  }
113
- if (search)
114
- params = params.set('search', search);
113
+ if (search) {
114
+ fields.forEach((field) => {
115
+ params = params.set(field, search);
116
+ });
117
+ }
115
118
  return this.httpClient.get(encodeURI(`${url}/events`), { params });
116
119
  }));
117
120
  }
@@ -124,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
124
127
  providedIn: 'root'
125
128
  }]
126
129
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Store }] });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2V2ZW50L2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sOENBQThDLENBQUM7QUFDakcsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFFMUIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0NBQ25CLENBQUM7QUFLRixNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNVLFVBQXNCLEVBQ3RCLEtBQWlCO1FBRGpCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUN4QixDQUFDO0lBRUosSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLO1FBQ2xELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFB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TUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzFCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxNQUFNO2dCQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFvQixTQUFTLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0FwSlUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIE9ic2VydmFibGUsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEh5cFNlbGVjdG9ycyB9IGZyb20gJy4uL2h5cGVydmlzb3IvaHlwZXJ2aXNvci5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRXZlbnRTZWxlY3RvcnMgfSBmcm9tICcuL2V2ZW50LnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBldmVudEZvcldyaXRlQVBJLCBIeXBFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBQcm9jZWR1cmUsIHByb2NlZHVyZUZvcldyaXRlQVBJIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1wcm9jZWR1cmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50VG9vbHRpcCB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC10b29sdGlwLmludGVyZmFjZSc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5leHBvcnQgY29uc3QgUEFHRV9TSVpFX0ZFVENIID0geyB2YWx1ZTogMjAgfTtcblxuZXhwb3J0IGNvbnN0IEtOT1dOX0ZJTFRFUl9TRVRTID0ge1xuICBFVkVOVFM6ICdldmVudHMnLFxuICBTVU1NQVJZOiAnc3VtbWFyeSdcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+XG4gICkge31cblxuICBsaXN0KHN0YXJ0V2l0aCA9IDAsIHBhZ2VTaXplID0gUEFHRV9TSVpFX0ZFVENILnZhbHVlKTogT2JzZXJ2YWJsZTxBcnJheTxIeXBFdmVudERldGFpbHM+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChFdmVudFNlbGVjdG9ycy5maWx0ZXJzKSwgdGhpcy5zdG9yZS5zZWxlY3QoRXZlbnRTZWxlY3RvcnMuc29ydCkpLFxuICAgICAgbWVyZ2VNYXAoKFt1cmwsIGZpbHRlclNldHMsIHNvcnRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXJTZXRzW0tOT1dOX0ZJTFRFUl9TRVRTLkVWRU5UU10gPz8ge307XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICBmaWx0ZXJzW2ZpbHRlcl0uZm9yRWFjaCgoZmlsdGVyVmFsdWUpID0+IHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoZmlsdGVyLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgc3RhcnRXaXRoIC8gcGFnZVNpemUgKyAxKTtcbiAgICAgICAgaWYgKHNvcnQpIHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCkuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFycmF5PEh5cEV2ZW50RGV0YWlscz4+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50c2ApLCB7IHBhcmFtcyB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50RGV0YWlscz4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7aWR9YCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VG9vbHRpcEluZm8obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50VG9vbHRpcD4oZW5jb2RlVVJJKGAke3VybH0vZXF1aXBtZW50cy9uYW1lLyR7bmFtZX1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZWR1cmUoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxIeXBQcm9jZWR1cmU+KGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtpZH1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICBjb25zdCB0b1NlbmQgPSB7IC4uLmV2ZW50IH0gYXMgUGFydGlhbDxIeXBFdmVudERldGFpbHM+O1xuICAgIGlmIChldmVudC5pZCA8IDApIHtcbiAgICAgIGRlbGV0ZSB0b1NlbmQuaWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICBpZiAoISF0b1NlbmQuaWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDxIeXBFdmVudERldGFpbHM+KFxuICAgICAgICAgICAgZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7dG9TZW5kLmlkfWApLFxuICAgICAgICAgICAgZXZlbnRGb3JXcml0ZUFQSShldmVudClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxIeXBFdmVudERldGFpbHM+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50c2ApLCBldmVudEZvcldyaXRlQVBJKGV2ZW50KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlUHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KFxuICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtwcm9jZWR1cmUuaWR9YCksXG4gICAgICAgICAgcHJvY2VkdXJlRm9yV3JpdGVBUEkocHJvY2VkdXJlKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYWRkRXZlbnRUb1Byb2NlZHVyZShldmVudElkOiBudW1iZXIsIHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KFxuICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtwcm9jZWR1cmUuaWR9L2Fzc29jaWF0ZS9ldmVudC9pZC8ke2V2ZW50SWR9YCksXG4gICAgICAgICAge31cbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHN0YXR1cyhldmVudDogSHlwRXZlbnREZXRhaWxzLCBzdGF0dXM6IHN0cmluZywgY29tbWVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50cy9pZC8ke2V2ZW50LmlkfS9jbG9zZWApLCB7XG4gICAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgICAgbWVzc2FnZTogY29tbWVudFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHN0YXR1c1Byb2NlZHVyZShwcm9jZWR1cmU6IEh5cFByb2NlZHVyZSwgc3RhdHVzOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS9wcm9jZWR1cmVzL2lkLyR7cHJvY2VkdXJlLmlkfS9jbG9zZWApLCB7XG4gICAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgICAgbWVzc2FnZTogY29tbWVudFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzc29jaWF0ZVByb2NlZHVyZShwcm9jZWR1cmVJZDogbnVtYmVyLCBldmVudElkczogbnVtYmVyW10pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8SHlwUHJvY2VkdXJlPihcbiAgICAgICAgICBlbmNvZGVVUkkoYCR7dXJsfS9wcm9jZWR1cmVzL21vZGVsL2lkLyR7cHJvY2VkdXJlSWR9L2Fzc29jaWF0ZWApLFxuICAgICAgICAgIGV2ZW50SWRzXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBleHBvcnQoYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2V4cG9ydD9hcmNoaXZlZD0ke2FyY2hpdmVkfWApLCB7XG4gICAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZWFyY2goc2VhcmNoOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YXR1c2VzOiBzdHJpbmdbXSA9IFtdKTogT2JzZXJ2YWJsZTxIeXBFdmVudERldGFpbHNbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsICduYW1lJykuc2V0KCdvcmRlcicsICdERVNDJykuc2V0KCdwYWdlU2l6ZScsICcxMCcpO1xuICAgICAgICBpZiAoc3RhdHVzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHN0YXR1c2VzLmZvckVhY2goKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzJywgc3RhdHVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VhcmNoKSBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2gnLCBzZWFyY2gpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxIeXBFdmVudERldGFpbHNbXT4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzYCksIHsgcGFyYW1zIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2V2ZW50L2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sOENBQThDLENBQUM7QUFDakcsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFFMUIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0NBQ25CLENBQUM7QUFLRixNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNVLFVBQXNCLEVBQ3RCLEtBQWlCO1FBRGpCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUN4QixDQUFDO0lBRUosSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLO1FBQ2xELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFB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LFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFvQixTQUFTLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0F4SlUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIE9ic2VydmFibGUsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEh5cFNlbGVjdG9ycyB9IGZyb20gJy4uL2h5cGVydmlzb3IvaHlwZXJ2aXNvci5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRXZlbnRTZWxlY3RvcnMgfSBmcm9tICcuL2V2ZW50LnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBldmVudEZvcldyaXRlQVBJLCBIeXBFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBQcm9jZWR1cmUsIHByb2NlZHVyZUZvcldyaXRlQVBJIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1wcm9jZWR1cmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50VG9vbHRpcCB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC10b29sdGlwLmludGVyZmFjZSc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5leHBvcnQgY29uc3QgUEFHRV9TSVpFX0ZFVENIID0geyB2YWx1ZTogMjAgfTtcblxuZXhwb3J0IGNvbnN0IEtOT1dOX0ZJTFRFUl9TRVRTID0ge1xuICBFVkVOVFM6ICdldmVudHMnLFxuICBTVU1NQVJZOiAnc3VtbWFyeSdcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+XG4gICkge31cblxuICBsaXN0KHN0YXJ0V2l0aCA9IDAsIHBhZ2VTaXplID0gUEFHRV9TSVpFX0ZFVENILnZhbHVlKTogT2JzZXJ2YWJsZTxBcnJheTxIeXBFdmVudERldGFpbHM+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChFdmVudFNlbGVjdG9ycy5maWx0ZXJzKSwgdGhpcy5zdG9yZS5zZWxlY3QoRXZlbnRTZWxlY3RvcnMuc29ydCkpLFxuICAgICAgbWVyZ2VNYXAoKFt1cmwsIGZpbHRlclNldHMsIHNvcnRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXJTZXRzW0tOT1dOX0ZJTFRFUl9TRVRTLkVWRU5UU10gPz8ge307XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICBmaWx0ZXJzW2ZpbHRlcl0uZm9yRWFjaCgoZmlsdGVyVmFsdWUpID0+IHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoZmlsdGVyLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgc3RhcnRXaXRoIC8gcGFnZVNpemUgKyAxKTtcbiAgICAgICAgaWYgKHNvcnQpIHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCkuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFycmF5PEh5cEV2ZW50RGV0YWlscz4+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50c2ApLCB7IHBhcmFtcyB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50RGV0YWlscz4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7aWR9YCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VG9vbHRpcEluZm8obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50VG9vbHRpcD4oZW5jb2RlVVJJKGAke3VybH0vZXF1aXBtZW50cy9uYW1lLyR7bmFtZX1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZWR1cmUoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxIeXBQcm9jZWR1cmU+KGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtpZH1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICBjb25zdCB0b1NlbmQgPSB7IC4uLmV2ZW50IH0gYXMgUGFydGlhbDxIeXBFdmVudERldGFpbHM+O1xuICAgIGlmIChldmVudC5pZCA8IDApIHtcbiAgICAgIGRlbGV0ZSB0b1NlbmQuaWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICBpZiAoISF0b1NlbmQuaWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDxIeXBFdmVudERldGFpbHM+KFxuICAgICAgICAgICAgZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7dG9TZW5kLmlkfWApLFxuICAgICAgICAgICAgZXZlbnRGb3JXcml0ZUFQSShldmVudClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxIeXBFdmVudERldGFpbHM+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50c2ApLCBldmVudEZvcldyaXRlQVBJKGV2ZW50KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlUHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KFxuICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtwcm9jZWR1cmUuaWR9YCksXG4gICAgICAgICAgcHJvY2VkdXJlRm9yV3JpdGVBUEkocHJvY2VkdXJlKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYWRkRXZlbnRUb1Byb2NlZHVyZShldmVudElkOiBudW1iZXIsIHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KFxuICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtwcm9jZWR1cmUuaWR9L2Fzc29jaWF0ZS9ldmVudC9pZC8ke2V2ZW50SWR9YCksXG4gICAgICAgICAge31cbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHN0YXR1cyhldmVudDogSHlwRXZlbnREZXRhaWxzLCBzdGF0dXM6IHN0cmluZywgY29tbWVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50cy9pZC8ke2V2ZW50LmlkfS9jbG9zZWApLCB7XG4gICAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgICAgbWVzc2FnZTogY29tbWVudFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHN0YXR1c1Byb2NlZHVyZShwcm9jZWR1cmU6IEh5cFByb2NlZHVyZSwgc3RhdHVzOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS9wcm9jZWR1cmVzL2lkLyR7cHJvY2VkdXJlLmlkfS9jbG9zZWApLCB7XG4gICAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgICAgbWVzc2FnZTogY29tbWVudFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzc29jaWF0ZVByb2NlZHVyZShwcm9jZWR1cmVJZDogbnVtYmVyLCBldmVudElkczogbnVtYmVyW10pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8SHlwUHJvY2VkdXJlPihcbiAgICAgICAgICBlbmNvZGVVUkkoYCR7dXJsfS9wcm9jZWR1cmVzL21vZGVsL2lkLyR7cHJvY2VkdXJlSWR9L2Fzc29jaWF0ZWApLFxuICAgICAgICAgIGV2ZW50SWRzXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBleHBvcnQoYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2V4cG9ydD9hcmNoaXZlZD0ke2FyY2hpdmVkfWApLCB7XG4gICAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZWFyY2goc2VhcmNoOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZpZWxkczogc3RyaW5nW10sIHN0YXR1c2VzOiBzdHJpbmdbXSA9IFtdKTogT2JzZXJ2YWJsZTxIeXBFdmVudERldGFpbHNbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsICduYW1lJykuc2V0KCdvcmRlcicsICdERVNDJykuc2V0KCdwYWdlU2l6ZScsICcxMCcpO1xuICAgICAgICBpZiAoc3RhdHVzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHN0YXR1c2VzLmZvckVhY2goKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzJywgc3RhdHVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGZpZWxkLCBzZWFyY2gpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50RGV0YWlsc1tdPihlbmNvZGVVUkkoYCR7dXJsfS9ldmVudHNgKSwgeyBwYXJhbXMgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Pipe, Component, Input, EventEmitter, Output, Inject, ElementRef, ViewChild, ViewContainerRef, model as model$1, ViewChildren, TemplateRef, ContentChildren, Directive, forwardRef, signal, computed, InjectionToken, NgModule } from '@angular/core';
3
3
  import * as i1$3 from '@provoly/dashboard';
4
- import { FilterParamEncoder, DEFAULT_ICON_URL, SubscriptionnerDirective, PRY_DIALOG_DATA, PryDialogConfirmComponent, PryI18nModule, PryCoreModule, PrySinceDateModule, PryIconModule, PrySelectModule, PryDatePickerModule } from '@provoly/dashboard';
4
+ import { FilterParamEncoder, DEFAULT_ICON_URL, SubscriptionnerDirective, PRY_DIALOG_DATA, DashboardActions, PryDialogConfirmComponent, PryI18nModule, PryCoreModule, PrySinceDateModule, PryIconModule, PrySelectModule, PryDatePickerModule } from '@provoly/dashboard';
5
5
  import * as i1$1 from '@ngrx/store';
6
6
  import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
7
7
  import * as i2 from '@angular/cdk/overlay';
@@ -649,7 +649,7 @@ class EventService {
649
649
  });
650
650
  }));
651
651
  }
652
- search(search, statuses = []) {
652
+ search(search, fields, statuses = []) {
653
653
  return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
654
654
  let params = new HttpParams();
655
655
  params = params.set('sort', 'name').set('order', 'DESC').set('pageSize', '10');
@@ -658,8 +658,11 @@ class EventService {
658
658
  params = params.set('status', status);
659
659
  });
660
660
  }
661
- if (search)
662
- params = params.set('search', search);
661
+ if (search) {
662
+ fields.forEach((field) => {
663
+ params = params.set(field, search);
664
+ });
665
+ }
663
666
  return this.httpClient.get(encodeURI(`${url}/events`), { params });
664
667
  }));
665
668
  }
@@ -684,12 +687,13 @@ class HvyEventAddEventComponent {
684
687
  const search = typeof this.eventSelectValue === 'string' && this.eventSelectValue.length > 2
685
688
  ? this.eventSelectValue
686
689
  : undefined;
687
- return this.eventService.search(search, ['NEW']).pipe(map$1((events) => events.map((event) => {
690
+ return this.eventService.search(search, ['name', 'id'], ['NEW']).pipe(map$1((events) => events.map((event) => {
688
691
  const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');
689
692
  const html = `${padId.fn(event.id)} - ${event.name}`;
690
693
  return {
691
694
  ...event,
692
- html: html.replaceAll(regex, (matched, capture1) => `<b>${capture1}</b>`)
695
+ html: html.replaceAll(regex, (matched, capture1) => `<b>${capture1}</b>`),
696
+ displayName: html
693
697
  };
694
698
  })));
695
699
  }), catchError(() => {
@@ -697,6 +701,7 @@ class HvyEventAddEventComponent {
697
701
  }), shareReplay());
698
702
  }
699
703
  selectedEventChange($event) {
704
+ this.eventSelectValue = $event;
700
705
  this.onEventSearch$.next();
701
706
  if (typeof $event === 'object') {
702
707
  this.eventToAdd = $event;
@@ -712,11 +717,11 @@ class HvyEventAddEventComponent {
712
717
  this.dialog.close({ value: 'add', event: this.eventToAdd });
713
718
  }
714
719
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HvyEventAddEventComponent, deps: [{ token: i1$3.PryDialogRef }, { token: PRY_DIALOG_DATA }, { token: EventService }], target: i0.ɵɵFactoryTarget.Component }); }
715
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: HvyEventAddEventComponent, selector: "hvy-add-event", ngImport: i0, template: "<div class=\"o-hvy-event-detail-add\">\n <h3>{{ '@hvy.event.add.title' | i18n }}</h3>\n <p>{{ '@hvy.event.add.description' | i18n }}</p>\n\n <div class=\"o-hvy-event-detail-add__container\">\n <label for=\"event\">{{ '@hvy.event.add.search' | i18n }}<span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"eventSelectValue\"\n (ngModelChange)=\"selectedEventChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"event\"\n [template]=\"templateOption\"\n class=\"o-hvy-event-detail-add__event\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-hvy-event-detail-add__buttons\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!eventToAdd\" (click)=\"add()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }] }); }
720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: HvyEventAddEventComponent, selector: "hvy-add-event", ngImport: i0, template: "<div class=\"o-hvy-event-detail-add\">\n <h3>{{ '@hvy.event.add.title' | i18n }}</h3>\n <p>{{ '@hvy.event.add.description' | i18n }}</p>\n\n <div class=\"o-hvy-event-detail-add__container\">\n <label for=\"event\">{{ '@hvy.event.add.search' | i18n }}<span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventToAdd\"\n (ngModelChange)=\"selectedEventChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"event\"\n [template]=\"templateOption\"\n class=\"o-hvy-event-detail-add__event\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-hvy-event-detail-add__buttons\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!eventToAdd\" (click)=\"add()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }] }); }
716
721
  }
717
722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HvyEventAddEventComponent, decorators: [{
718
723
  type: Component,
719
- args: [{ selector: 'hvy-add-event', template: "<div class=\"o-hvy-event-detail-add\">\n <h3>{{ '@hvy.event.add.title' | i18n }}</h3>\n <p>{{ '@hvy.event.add.description' | i18n }}</p>\n\n <div class=\"o-hvy-event-detail-add__container\">\n <label for=\"event\">{{ '@hvy.event.add.search' | i18n }}<span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"eventSelectValue\"\n (ngModelChange)=\"selectedEventChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"event\"\n [template]=\"templateOption\"\n class=\"o-hvy-event-detail-add__event\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-hvy-event-detail-add__buttons\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!eventToAdd\" (click)=\"add()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
724
+ args: [{ selector: 'hvy-add-event', template: "<div class=\"o-hvy-event-detail-add\">\n <h3>{{ '@hvy.event.add.title' | i18n }}</h3>\n <p>{{ '@hvy.event.add.description' | i18n }}</p>\n\n <div class=\"o-hvy-event-detail-add__container\">\n <label for=\"event\">{{ '@hvy.event.add.search' | i18n }}<span class=\"required\">*</span> :</label>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"eventToAdd\"\n (ngModelChange)=\"selectedEventChange($event)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.parentEvent.placeholder' | i18n\"\n id=\"event\"\n [template]=\"templateOption\"\n class=\"o-hvy-event-detail-add__event\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-hvy-event-detail-add__buttons\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"!eventToAdd\" (click)=\"add()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n</div>\n" }]
720
725
  }], ctorParameters: () => [{ type: i1$3.PryDialogRef }, { type: undefined, decorators: [{
721
726
  type: Inject,
722
727
  args: [PRY_DIALOG_DATA]
@@ -1547,10 +1552,16 @@ class EventDetailComponent extends SubscriptionnerDirective {
1547
1552
  this._events.forEach((ev, idx) => {
1548
1553
  this.onEquipmentSearch$.next(idx);
1549
1554
  if (ev.equipment && ev.equipment.id && ev.equipment.id.length > 0) {
1550
- this.selectedEquipmentChange(ev.equipment, idx);
1555
+ this.selectedEquipmentChange({
1556
+ ...ev.equipment,
1557
+ displayName: `${ev.equipment.name} - ${this.i18nService.instant('@hvy.event.family.' + ev.equipment.family)}`
1558
+ }, idx);
1551
1559
  }
1552
1560
  if (ev.parent && ev.parent.id) {
1553
- this.selectedParentChange(ev.parent, idx);
1561
+ this.selectedParentChange({
1562
+ ...ev.parent,
1563
+ displayName: `${padId.fn(ev.parent.id)} - ${ev.parent.name}`
1564
+ }, idx);
1554
1565
  }
1555
1566
  });
1556
1567
  }
@@ -1605,23 +1616,24 @@ class EventDetailComponent extends SubscriptionnerDirective {
1605
1616
  this.equipmentSelectValue = [];
1606
1617
  this.onEventSearch$ = new Subject();
1607
1618
  this.eventSelectValue = [];
1608
- this.parentName = [];
1609
1619
  this.commented = new EventEmitter();
1610
1620
  this.padId = padId;
1611
1621
  this.subCategories = [undefined, ...HypEventSubCategory.values['ANOMALY']];
1612
- this.displayEquipment = [];
1613
1622
  this.equipmentsEvents = [];
1623
+ this.store.dispatch(DashboardActions.selectMany({ ids: [] }));
1614
1624
  this.equipments$ = this.onEquipmentSearch$.pipe(switchMap((index) => {
1615
1625
  const search = typeof this.equipmentSelectValue[index] === 'string' &&
1616
1626
  this.equipmentSelectValue[index].length > 2
1617
1627
  ? this.equipmentSelectValue[index]
1618
- : undefined;
1628
+ : //@ts-ignore
1629
+ this.equipmentSelectValue[index]?.name;
1619
1630
  return this.equipmentService.search(search).pipe(map$1((equipments) => equipments.map((equipment) => {
1620
1631
  const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');
1621
1632
  const html = `${equipment.name} - ${this.i18nService.instant('@hvy.event.family.' + equipment.family)}`;
1622
1633
  return {
1623
1634
  ...equipment,
1624
- html: html.replaceAll(regex, (matched, capture1) => `<b>${capture1}</b>`)
1635
+ html: html.replaceAll(regex, (matched, capture1) => `<b>${capture1}</b>`),
1636
+ displayName: html
1625
1637
  };
1626
1638
  })));
1627
1639
  }), catchError(() => {
@@ -1630,13 +1642,15 @@ class EventDetailComponent extends SubscriptionnerDirective {
1630
1642
  this.events$ = this.onEventSearch$.pipe(startWith(), debounceTime(500)).pipe(switchMap((index) => {
1631
1643
  const search = typeof this.eventSelectValue[index] === 'string' && this.eventSelectValue[index].length > 2
1632
1644
  ? this.eventSelectValue[index]
1633
- : undefined;
1634
- return this.eventService.search(search).pipe(map$1((events) => events.map((event) => {
1645
+ : // @ts-ignore
1646
+ padId.fn(this.eventSelectValue[index]?.id);
1647
+ return this.eventService.search(search, ['name', 'id']).pipe(map$1((events) => events.map((event) => {
1635
1648
  const regex = RegExp(`(${search})` ?? '(/-/-/)', 'gid');
1636
1649
  const html = `${padId.fn(event.id)} - ${event.name}`;
1637
1650
  return {
1638
1651
  ...event,
1639
- html: html.replaceAll(regex, (matched, capture1) => `<b>${capture1}</b>`)
1652
+ html: html.replaceAll(regex, (matched, capture1) => `<b>${capture1}</b>`),
1653
+ displayName: html
1640
1654
  };
1641
1655
  })));
1642
1656
  }), catchError(() => {
@@ -1733,13 +1747,20 @@ class EventDetailComponent extends SubscriptionnerDirective {
1733
1747
  const equipment = event.equipment;
1734
1748
  if (!!equipment) {
1735
1749
  const equipmentName = `${equipment.name} - ${this.i18nService.instant('@hvy.event.family.' + equipment.family)}`;
1736
- if (equipmentName !== this.equipmentSelectValue[idx]) {
1750
+ if (!!this.equipmentSelectValue[idx] &&
1751
+ // @ts-ignore
1752
+ equipmentName !== this.equipmentSelectValue[idx].displayName) {
1737
1753
  eventErrors.push({ field: 'equipment', code: 'not-found' });
1738
1754
  }
1739
1755
  }
1740
- const parentName = `${padId.fn(event.parent?.id ?? '')} - ${event.parent?.name}`;
1741
- if (!!event.parent && parentName !== this.eventSelectValue[idx]) {
1742
- eventErrors.push({ field: 'parent', code: 'not-found' });
1756
+ const parent = event.parent;
1757
+ if (parent) {
1758
+ const parentName = `${padId.fn(event.parent?.id ?? '')} - ${event.parent?.name}`;
1759
+ if (!!this.eventSelectValue[idx] &&
1760
+ // @ts-ignore
1761
+ parentName !== this.eventSelectValue[idx].displayName) {
1762
+ eventErrors.push({ field: 'parent', code: 'not-found' });
1763
+ }
1743
1764
  }
1744
1765
  if (event.category === 'MANIFESTATION') {
1745
1766
  if (!event.startDate || event.startDate.length === 0) {
@@ -1876,8 +1897,6 @@ class EventDetailComponent extends SubscriptionnerDirective {
1876
1897
  this.equipmentSelectValue[index] = $event;
1877
1898
  this.onEquipmentSearch$.next(index);
1878
1899
  if (typeof $event === 'object' || $event === '') {
1879
- this.displayEquipment[index] =
1880
- $event === '' ? '' : `${$event.name} - ${this.i18nService.instant('@hvy.event.family.' + $event.family)}`;
1881
1900
  const equipmentForEvent = $event !== '' ? $event : undefined;
1882
1901
  if (!equipmentForEvent || this._events[index].equipment?.name !== equipmentForEvent.name) {
1883
1902
  if (!this.eventModifications[index]) {
@@ -1901,7 +1920,6 @@ class EventDetailComponent extends SubscriptionnerDirective {
1901
1920
  }
1902
1921
  else {
1903
1922
  this.populateEquipment(undefined, index);
1904
- this.displayEquipment[index] = $event;
1905
1923
  this._outputModifications();
1906
1924
  }
1907
1925
  }
@@ -1948,7 +1966,6 @@ class EventDetailComponent extends SubscriptionnerDirective {
1948
1966
  this.eventSelectValue[index] = $event;
1949
1967
  this.onEventSearch$.next(index);
1950
1968
  if (typeof $event === 'object' || $event === '') {
1951
- this.parentName[index] = $event === '' ? '' : `${padId.fn($event.id)} - ${$event.name}`;
1952
1969
  const parentForEvent = $event !== '' ? { id: $event.id, name: $event.name } : undefined;
1953
1970
  if (!parentForEvent || this._events[index].parent?.id !== parentForEvent.id) {
1954
1971
  if (!this.eventModifications[index]) {
@@ -1969,7 +1986,6 @@ class EventDetailComponent extends SubscriptionnerDirective {
1969
1986
  }
1970
1987
  }
1971
1988
  else {
1972
- this.parentName[index] = $event;
1973
1989
  this._outputModifications();
1974
1990
  }
1975
1991
  }
@@ -1998,11 +2014,11 @@ class EventDetailComponent extends SubscriptionnerDirective {
1998
2014
  });
1999
2015
  }
2000
2016
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventDetailComponent, deps: [{ token: EquipmentService }, { token: i1$1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i1$3.PryI18nService }, { token: i1$3.PryDialogService }, { token: HypCommentsService }, { token: EventService }], target: i0.ɵɵFactoryTarget.Component }); }
2001
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { title: "title", me: "me", readonly: "readonly", readonlyProcedure: "readonlyProcedure", enableEditActions: "enableEditActions", events: "events", procedure: "procedure", cancelModifications: "cancelModifications", equipmentName: "equipmentName" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure", eventErrors: "eventErrors", addedEvent: "addedEvent", 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 }}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <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 <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 @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 <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 @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }} :</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 <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\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"256\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <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 ></textarea>\n </td>\n <td></td>\n </tr>\n @if (event.category !== 'MANIFESTATION') {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</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 }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"equipments$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"displayEquipment[idx]\"\n (ngModelChange)=\"selectedEquipmentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n id=\"procedure-filter\"\n [template]=\"templateOption\"\n [class.-error]=\"hasError('equipment', idx)\"\n [disabled]=\"accessValue.eqName\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td>\n @if (\n equipmentsEvents[idx] && (equipmentsEvents[idx].events || equipmentsEvents[idx].services)\n ) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand\"\n #detailHoverIcon\n (mouseenter)=\"toggleDetailsTooltip(idx)\"\n (mouseleave)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\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 <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 <tr>\n <td>{{ '@hvy.event.parentEvent.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"parentName[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 <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 <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 </td>\n <td></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</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 <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</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 <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 <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"readonly\"\n [type]=\"'events'\"\n [me]=\"me\"\n [objectId]=\"event.id\"\n ></hvy-comments>\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>{{ procedure.description }}</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 [readonly]=\"readonlyProcedure || readonly\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n [me]=\"me\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$4.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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i1$3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "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", "enableEditActions", "events", "actions"], outputs: ["modified", "commented"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
2017
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { title: "title", me: "me", readonly: "readonly", readonlyProcedure: "readonlyProcedure", enableEditActions: "enableEditActions", events: "events", procedure: "procedure", cancelModifications: "cancelModifications", equipmentName: "equipmentName" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure", eventErrors: "eventErrors", addedEvent: "addedEvent", 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 }}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <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 <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 @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 <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 @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }} :</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 <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\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"256\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <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 ></textarea>\n </td>\n <td></td>\n </tr>\n @if (event.category !== 'MANIFESTATION') {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</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 }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"equipments$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"equipmentSelectValue[idx]\"\n (ngModelChange)=\"selectedEquipmentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n id=\"procedure-filter\"\n [template]=\"templateOption\"\n [class.-error]=\"hasError('equipment', idx)\"\n [disabled]=\"accessValue.eqName\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td>\n @if (\n equipmentsEvents[idx] && (equipmentsEvents[idx].events || equipmentsEvents[idx].services)\n ) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand\"\n #detailHoverIcon\n (mouseenter)=\"toggleDetailsTooltip(idx)\"\n (mouseleave)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\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 <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 <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 <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 <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 </td>\n <td></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</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 <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</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 <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 <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"readonly\"\n [type]=\"'events'\"\n [me]=\"me\"\n [objectId]=\"event.id\"\n ></hvy-comments>\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>{{ procedure.description }}</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 [readonly]=\"readonlyProcedure || readonly\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n [me]=\"me\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$4.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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i1$3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "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", "enableEditActions", "events", "actions"], outputs: ["modified", "commented"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
2002
2018
  }
2003
2019
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventDetailComponent, decorators: [{
2004
2020
  type: Component,
2005
- args: [{ selector: 'hvy-event-detail', 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 }}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <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 <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 @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 <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 @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }} :</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 <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\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"256\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <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 ></textarea>\n </td>\n <td></td>\n </tr>\n @if (event.category !== 'MANIFESTATION') {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</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 }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"equipments$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"displayEquipment[idx]\"\n (ngModelChange)=\"selectedEquipmentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n id=\"procedure-filter\"\n [template]=\"templateOption\"\n [class.-error]=\"hasError('equipment', idx)\"\n [disabled]=\"accessValue.eqName\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td>\n @if (\n equipmentsEvents[idx] && (equipmentsEvents[idx].events || equipmentsEvents[idx].services)\n ) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand\"\n #detailHoverIcon\n (mouseenter)=\"toggleDetailsTooltip(idx)\"\n (mouseleave)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\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 <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 <tr>\n <td>{{ '@hvy.event.parentEvent.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"events$ | async\"\n bindLabel=\"name\"\n [(ngModel)]=\"parentName[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 <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 <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 </td>\n <td></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</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 <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</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 <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 <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"readonly\"\n [type]=\"'events'\"\n [me]=\"me\"\n [objectId]=\"event.id\"\n ></hvy-comments>\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>{{ procedure.description }}</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 [readonly]=\"readonlyProcedure || readonly\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n [me]=\"me\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n" }]
2021
+ args: [{ selector: 'hvy-event-detail', 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 }}</h1>\n @if (procedure && canCloseSome) {\n <button class=\"add-button\" [disabled]=\"readonly\" (click)=\"addOneEvent()\">\n <pry-icon iconSvg=\"add\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n @if (events.length > 1) {\n @if (canCloseSome && !readonly) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome && closeComment && closeComment.length > 0) {\n <div class=\"a-tooltip\" [attr.data-tooltip]=\"closeComment\" data-tooltip-position=\"right\">\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (procedure && !readonly) {\n <button class=\"a-btn a-btn--secondary\" (click)=\"openDeleteModal()\" [disabled]=\"readonlyProcedure\">\n {{ '@hvy.event.log.procedure.delete' | i18n }}\n </button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n class=\"-hand\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <div class=\"o-hvy-events-detail__events__event__header__comment\">\n @if (event.commentCount > 0) {\n <span>{{\n (event.commentCount > 1 ? '@hvy.event.comment.heads' : '@hvy.event.comment.head')\n | i18n: { nb: event.commentCount }\n }}</span>\n }\n </div>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n [readonly]=\"readonly\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <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 <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 @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 <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 @if (event.category === 'ANOMALY') {\n <tr>\n <td>{{ '@hvy.event.subCategory.name' | i18n }} :</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 <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\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n [maxLength]=\"256\"\n ></textarea>\n </td>\n <td></td>\n </tr>\n <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 ></textarea>\n </td>\n <td></td>\n </tr>\n @if (event.category !== 'MANIFESTATION') {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</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 }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"equipments$ | async\"\n bindLabel=\"displayName\"\n [ngModel]=\"equipmentSelectValue[idx]\"\n (ngModelChange)=\"selectedEquipmentChange($event, idx)\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n [placeholder]=\"'@hvy.event.equipmentPlaceholder' | i18n\"\n id=\"procedure-filter\"\n [template]=\"templateOption\"\n [class.-error]=\"hasError('equipment', idx)\"\n [disabled]=\"accessValue.eqName\"\n class=\"o-hvy-events-detail__events__event__content__equipment\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"u-display-flex -column\">\n <span [innerHTML]=\"item.html\"></span>\n </div>\n </ng-template>\n </td>\n <td>\n @if (\n equipmentsEvents[idx] && (equipmentsEvents[idx].events || equipmentsEvents[idx].services)\n ) {\n <pry-icon\n iconSvg=\"i\"\n class=\"-hand\"\n #detailHoverIcon\n (mouseenter)=\"toggleDetailsTooltip(idx)\"\n (mouseleave)=\"toggleDetailsTooltip(idx)\"\n [width]=\"18\"\n [height]=\"18\"\n ></pry-icon>\n }\n </td>\n </tr>\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 <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 <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 <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 <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 </td>\n <td></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</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 <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</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 <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 <hvy-comments\n [lastComment]=\"event.lastComment\"\n [commentCount]=\"event.commentCount\"\n (commented)=\"updateComment(event, $event)\"\n [readonly]=\"readonly\"\n [type]=\"'events'\"\n [me]=\"me\"\n [objectId]=\"event.id\"\n ></hvy-comments>\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>{{ procedure.description }}</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 [readonly]=\"readonlyProcedure || readonly\"\n [enableEditActions]=\"enableEditActions\"\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n [me]=\"me\"\n [events]=\"this.events\"\n (commented)=\"actionCommented($event)\"\n ></hvy-procedure-actions>\n } @else {\n @if (!readonly) {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\" (click)=\"openAssociationModal()\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n } @else {\n <span class=\"o-hvy-events-detail__procedure__empty\">{{ '@hvy.event.log.procedure.none' | i18n }}</span>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n" }]
2006
2022
  }], ctorParameters: () => [{ type: EquipmentService }, { type: i1$1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i1$3.PryI18nService }, { type: i1$3.PryDialogService }, { type: HypCommentsService }, { type: EventService }], propDecorators: { modifiedEvents: [{
2007
2023
  type: Output
2008
2024
  }], modifiedProcedure: [{