@c8y/ngx-components 1018.503.133 → 1018.503.135

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.
@@ -152,11 +152,13 @@ export class OperationSchedulerComponent {
152
152
  this.minDelay = this.minDelay / 1000;
153
153
  this.isDelayInSeconds = true;
154
154
  }
155
- if (unit === 'milliseconds' && this.isDelayInSeconds) {
156
- this.maxDelay = this.maxDelay * 1000;
157
- this.minDelay = this.minDelay * 1000;
158
- this.isDelayInSeconds = false;
155
+ if (unit === 'milliseconds') {
159
156
  this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;
157
+ if (this.isDelayInSeconds) {
158
+ this.maxDelay = this.maxDelay * 1000;
159
+ this.minDelay = this.minDelay * 1000;
160
+ this.isDelayInSeconds = false;
161
+ }
160
162
  }
161
163
  }
162
164
  combineDateAndTime(date, time) {
@@ -232,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
232
234
  type: Input,
233
235
  args: ['minutesAhead']
234
236
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLXNjaGVkdWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLXNjaGVkdWxlci9vcGVyYXRpb24tc2NoZWR1bGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb24tc2NoZWR1bGVyL29wZXJhdGlvbi1zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBRUwsV0FBVyxFQUdYLGFBQWEsRUFDYixpQkFBaUIsRUFHakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBbUI5QyxNQUFNLE9BQU8sMkJBQTJCO0lBR3RDLElBQTJCLGFBQWEsQ0FBQyxPQUFlO1FBQ3RELElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBNEJELFlBQW9CLFdBQXdCLEVBQVUsT0FBdUI7UUFBekQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQTFCN0UsZ0JBQVcsR0FBVyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFLNUMsZ0JBQVcsR0FBcUIsSUFBSSxDQUFDO1FBQ3JDLGlCQUFZLEdBQXFCLElBQUksQ0FBQztRQUVyQiwwQkFB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Z0hBYjNCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztTQUMzRDtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1NBQzNEO0tBQ0YsMEJDaENILCttRUF1RUE7MkZEckNhLDJCQUEyQjtrQkFoQnZDLFNBQVM7K0JBQ0UseUJBQXlCLGFBRXhCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDO3lCQUMzRDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7eUJBQzNEO3FCQUNGOytIQUswQixhQUFhO3NCQUF2QyxLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQsIE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uU2NoZWR1bGUgfSBmcm9tICcuL29wZXJhdGlvbi1zY2hlZHVsZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9uLXNjaGVkdWxlcicsXG4gIHRlbXBsYXRlVXJsOiAnb3BlcmF0aW9uLXNjaGVkdWxlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcGVyYXRpb25TY2hlZHVsZXJDb21wb25lbnQpXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcGVyYXRpb25TY2hlZHVsZXJDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblNjaGVkdWxlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgnbWludXRlc0FoZWFkJykgc2V0IF9taW51dGVzQWhlYWQobWludXRlczogbnVtYmVyKSB7XG4gICAgaWYgKG1pbnV0ZXMgJiYgbWludXRlcyA+IHRoaXMuTUlOVVRFU19BSEVBRF9ERUZBVUxUKSB7XG4gICAgICB0aGlzLm1pbnV0ZXNBaGVhZCA9IG1pbnV0ZXM7XG4gICAgfVxuICB9XG5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9IGdldHRleHQoJ1N0YXJ0IGRhdGUnKTtcbiAgZmdPcGVyYXRpb25TY2hlZHVsZXI6IEZvcm1Hcm91cDtcbiAgbWluRGF0ZTogRGF0ZTtcbiAgbWluRGVsYXk6IG51bWJlcjtcbiAgbWF4RGVsYXk6IG51bWJlcjtcbiAgZGVsYXlFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPSBudWxsO1xuICBwaWNrZXJFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVMQVlfU0VDT05EU19ERUZBVUxUOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIHJlYWRvbmx5IE1JTl9ERUxBWV9TRUNPTkRTX0RFRkFVTFQ6IG51bWJlciA9IDAuMDAxO1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9ERUxBWV9TRUNPTkRTX0RFRkFVTFQ6IG51bWJlciA9IDM2MDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOVVRFU19BSEVBRF9ERUZBVUxUOiBudW1iZXIgPSA1O1xuICBwcml2YXRlIGlzRGVsYXlJblNlY29uZHMgPSB0cnVlO1xuICBwcml2YXRlIG1pbnV0ZXNBaGVhZDogbnVtYmVyID0gdGhpcy5NSU5VVEVTX0FIRUFEX0RFRkFVTFQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVMQVlfS0VZX0NBVEVHT1JZID0gJ2RldmljZS1jb250cm9sJztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfREVMQVlfS0VZX05BTUUgPSAnYnVsa29wZXJhdGlvbi5tYXhjcmVhdGlvbnJhbXAnO1xuICBwcml2YXRlIHJlYWRvbmx5IE1JTl9ERUxBWV9LRVlfTkFNRSA9ICdidWxrb3BlcmF0aW9uLmNyZWF0aW9ucmFtcCc7XG4gIHByaXZhdGUgY3VycmVudFVuaXQgPSAnc2Vjb25kcyc7XG4gIHByaXZhdGUgZGVsYXlJblNlY29uZHM6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbml0aWFsRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAobmFtZSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2VkOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWluRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5pbml0aWFsRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5taW5EYXRlLnNldE1pbnV0ZXModGhpcy5taW5EYXRlLmdldE1pbnV0ZXMoKSArIHRoaXMubWludXRlc0FoZWFkKVxuICAgICk7XG5cbiAgICB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBwaWNrZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuZGF0ZVZhbGlkYXRpb25dXSxcbiAgICAgIHRpbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMudGltZVZhbGlkYXRpb25dXSxcbiAgICAgIGRlbGF5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICB1bml0OiBbJ3NlY29uZHMnXVxuICAgIH0pO1xuXG4gICAgdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5wYXRjaFZhbHVlKHtcbiAgICAgIHBpY2tlcjogdGhpcy5pbml0aWFsRGF0ZSxcbiAgICAgIHRpbWU6IHRoaXMuaW5pdGlhbERhdGUsXG4gICAgICBkZWxheTogdGhpcy5ERUxBWV9TRUNPTkRTX0RFRkFVTFRcbiAgICB9KTtcblxuICAgIC8vIER1ZSB0byB0aGUgdmFsaWRhdGlvbiBvZiBwaWNrZXIgYW5kIHRpbWUgaXQgY291bGQgYmUgcG9zc2libGUgdGhhdCB2YWx1ZSBjaGFuZ2VzXG4gICAgLy8gYXJlIGVtaXR0ZWQgbW9yZSB0aGFuIG9uY2UuIFRoZXJlZm9yZSB3ZSB0aHJvdHRsZSB0aGUgZW1pdHMuXG4gICAgY29uc3QgdmFsdWVDaGFuZ2VzJCA9IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIudmFsdWVDaGFuZ2VzLnBpcGUodGhyb3R0bGVUaW1lKDEwMCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdmFsdWVDaGFuZ2VzJC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmRlbGF5RXJyb3JzID0gdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5jb250cm9scy5kZWxheS5lcnJvcnM7XG4gICAgICB0aGlzLnBpY2tlckVycm9ycyA9IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMucGlja2VyLmVycm9ycztcbiAgICAgIHRoaXMuY29udmVydERlbGF5SGFuZGxlcihkYXRhLnVuaXQpO1xuICAgICAgdGhpcy5lbWl0RGF0YShkYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlRGVsYXlWYWxpZGF0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24gJiYgIXRoaXMuc3Vic2NyaXB0aW9uLmNsb3NlZCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBPcGVyYXRpb25TY2hlZHVsZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5wYXRjaFZhbHVlKHtcbiAgICAgICAgcGlja2VyOiB2YWx1ZS5zY2hlZHVsZWREYXRlLFxuICAgICAgICB0aW1lOiB2YWx1ZS5zY2hlZHVsZWREYXRlLFxuICAgICAgICBkZWxheTogdmFsdWUuZGVsYXlJblNlY29uZHMgPiAxID8gdmFsdWUuZGVsYXlJblNlY29uZHMgOiB2YWx1ZS5kZWxheUluU2Vjb25kcyAqIDEwMDAsXG4gICAgICAgIHVuaXQ6IHZhbHVlLmRlbGF5SW5TZWNvbmRzID4gMSA/ICdzZWNvbmRzJyA6ICdtaWxsaXNlY29uZHMnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlcj8uZGlzYWJsZWQgPT09IGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuZGlzYWJsZSgpIDogdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5lbmFibGUoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmICh0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLmludmFsaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMucGlja2VyLmVycm9ycyxcbiAgICAgICAgLi4udGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5jb250cm9scy50aW1lLmVycm9ycyxcbiAgICAgICAgLi4udGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5jb250cm9scy5kZWxheS5lcnJvcnNcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZWQgPSBmbjtcbiAgfVxuXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnREZWxheUhhbmRsZXIodW5pdDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFVuaXQgPT09IHVuaXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRVbml0ID0gdW5pdDtcblxuICAgIHRoaXMuY29udmVydERlbGF5KHRoaXMuY3VycmVudFVuaXQpO1xuXG4gICAgLy8gdXBkYXRlIHZhbGlkYXRvciBvbiBkZWxheSBjb250cm9sIHRvIG1ha2Ugc3VyZSB0aGF0XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gbWludXRlcyB0byBzZWNvbmRzIG9yIHZpY2UgdmVyc2EgZG9lcyBub3QgaGFybSB2YWxpZGF0aW9uLlxuICAgIHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMuZGVsYXkuc2V0VmFsaWRhdG9ycyhbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgVmFsaWRhdG9ycy5taW4odGhpcy5taW5EZWxheSksXG4gICAgICBWYWxpZGF0b3JzLm1heCh0aGlzLm1heERlbGF5KVxuICAgIF0pO1xuICAgIHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMuZGVsYXkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgZW1pdERhdGEoZGF0YTogeyBkZWxheUluU2Vjb25kczogbnVtYmVyOyBwaWNrZXI6IERhdGU7IHRpbWU/OiBEYXRlOyBkZWxheT86IG51bWJlciB9KSB7XG4gICAgaWYgKHRoaXMub25WYWxpZGF0b3JDaGFuZ2VkKSB7XG4gICAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnBpY2tlciAmJiBkYXRhLnRpbWUpIHtcbiAgICAgIGRhdGEucGlja2VyID0gdGhpcy5jb21iaW5lRGF0ZUFuZFRpbWUoZGF0YS5waWNrZXIsIGRhdGEudGltZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb252ZXJ0RGVsYXkodGhpcy5jdXJyZW50VW5pdCk7XG4gICAgZGF0YS5kZWxheUluU2Vjb25kcyA9IHRoaXMuZGVsYXlJblNlY29uZHM7XG5cbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh7XG4gICAgICAgIGRlbGF5SW5TZWNvbmRzOiBkYXRhLmRlbGF5SW5TZWNvbmRzLFxuICAgICAgICBzY2hlZHVsZWREYXRlOiBkYXRhLnBpY2tlclxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEZWxheVZhbGlkYXRpb24oKSB7XG4gICAgY29uc3QgbWluU3lzdGVtID0gYXdhaXQgdGhpcy5vcHRpb25zLmdldFN5c3RlbU9wdGlvbihcbiAgICAgIHRoaXMuREVMQVlfS0VZX0NBVEVHT1JZLFxuICAgICAgdGhpcy5NSU5fREVMQVlfS0VZX05BTUVcbiAgICApO1xuICAgIGNvbnN0IG1heFN5c3RlbSA9IGF3YWl0IHRoaXMub3B0aW9ucy5nZXRTeXN0ZW1PcHRpb24oXG4gICAgICB0aGlzLkRFTEFZX0tFWV9DQVRFR09SWSxcbiAgICAgIHRoaXMuTUFYX0RFTEFZX0tFWV9OQU1FXG4gICAgKTtcblxuICAgIHRoaXMubWF4RGVsYXkgPSBtYXhTeXN0ZW0gPyBOdW1iZXIobWF4U3lzdGVtKSA6IHRoaXMuTUFYX0RFTEFZX1NFQ09ORFNfREVGQVVMVDtcbiAgICB0aGlzLm1pbkRlbGF5ID0gbWluU3lzdGVtID8gTnVtYmVyKG1pblN5c3RlbSkgOiB0aGlzLk1JTl9ERUxBWV9TRUNPTkRTX0RFRkFVTFQ7XG5cbiAgICB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyXG4gICAgICAuZ2V0KCdkZWxheScpXG4gICAgICAuc2V0VmFsaWRhdG9ycyhbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMubWluKHRoaXMubWluRGVsYXkpLFxuICAgICAgICBWYWxpZGF0b3JzLm1heCh0aGlzLm1heERlbGF5KVxuICAgICAgXSk7XG4gICAgdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnREZWxheSh1bml0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlbGF5SW5TZWNvbmRzID0gdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5jb250cm9scy5kZWxheS52YWx1ZTtcblxuICAgIGlmICh1bml0ID09PSAnc2Vjb25kcycgJiYgIXRoaXMuaXNEZWxheUluU2Vjb25kcykge1xuICAgICAgdGhpcy5tYXhEZWxheSA9IHRoaXMubWF4RGVsYXkgLyAxMDAwO1xuICAgICAgdGhpcy5taW5EZWxheSA9IHRoaXMubWluRGVsYXkgLyAxMDAwO1xuICAgICAgdGhpcy5pc0RlbGF5SW5TZWNvbmRzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodW5pdCA9PT0gJ21pbGxpc2Vjb25kcycgJiYgdGhpcy5pc0RlbGF5SW5TZWNvbmRzKSB7XG4gICAgICB0aGlzLm1heERlbGF5ID0gdGhpcy5tYXhEZWxheSAqIDEwMDA7XG4gICAgICB0aGlzLm1pbkRlbGF5ID0gdGhpcy5taW5EZWxheSAqIDEwMDA7XG4gICAgICB0aGlzLmlzRGVsYXlJblNlY29uZHMgPSBmYWxzZTtcblxuICAgICAgdGhpcy5kZWxheUluU2Vjb25kcyA9IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMuZGVsYXkudmFsdWUgLyAxMDAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tYmluZURhdGVBbmRUaW1lKGRhdGU6IERhdGUsIHRpbWU6IERhdGUpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgIHRpbWUuZ2V0SG91cnMoKSxcbiAgICAgIHRpbWUuZ2V0TWludXRlcygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0ZVZhbGlkYXRpb24oZkNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgaWYgKGZDb250cm9sLnZhbHVlKSB7XG4gICAgICBjb25zdCBkYXRlID0gZkNvbnRyb2wudmFsdWUgYXMgRGF0ZTtcbiAgICAgIGZDb250cm9sLnBhcmVudC5nZXQoJ3RpbWUnKS5zZXRWYWx1ZShkYXRlKTtcbiAgICAgIHJldHVybiBkYXRlID49IG5ldyBEYXRlKClcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDoge1xuICAgICAgICAgICAgZGF0ZVZhbGlkYXRpb246IHRydWVcbiAgICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyBkYXRlVmFsaWRhdGlvbjogdHJ1ZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0aW1lVmFsaWRhdGlvbihmQ29udHJvbDogRm9ybUNvbnRyb2wpIHtcbiAgICBpZiAoZkNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBmQ29udHJvbC52YWx1ZSBhcyBEYXRlO1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgZGF0ZSA+PSBuZXcgRGF0ZSgpXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGRhdGVWYWxpZGF0aW9uOiB0cnVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICBjb25zdCBwaWNrZXIgPSBmQ29udHJvbC5wYXJlbnQuZ2V0KCdwaWNrZXInKTtcblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBwaWNrZXIuc2V0RXJyb3JzKHJlc3VsdCk7XG4gICAgICAgIHBpY2tlci5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChwaWNrZXIgJiYgcGlja2VyLmVycm9ycyAmJiBwaWNrZXIuZXJyb3JzLmRhdGVWYWxpZGF0aW9uKSB7XG4gICAgICAgIGRlbGV0ZSBwaWNrZXIuZXJyb3JzLmRhdGVWYWxpZGF0aW9uO1xuXG4gICAgICAgIGlmIChpc0VtcHR5KHBpY2tlci5lcnJvcnMpKSB7XG4gICAgICAgICAgcGlja2VyLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcGlja2VyLnNldEVycm9ycyhwaWNrZXIuZXJyb3JzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB7IGRhdGVWYWxpZGF0aW9uOiB0cnVlIH07XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmZ09wZXJhdGlvblNjaGVkdWxlclwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCB0cmFuc2xhdGU+U3RhcnQgZGF0ZTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImRhdGV0aW1lLXBpY2tlclwiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZGF0ZXBpY2tlclwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaWNrZXJcIlxuICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScgfVwiXG4gICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGM4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgIFtuYW1lXT1cIidkYXRlVmFsaWRhdGlvbidcIlxuICAgICAgICAgICAgW3RleHRdPVwiJ1NlbGVjdCB0aW1lIGluIHRoZSBmdXR1cmUuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDx0aW1lcGlja2VyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgICAgIFtzaG93U3Bpbm5lcnNdPVwiZmFsc2VcIlxuICAgICAgICBbc2hvd01lcmlkaWFuXT1cImZhbHNlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGltZVwiXG4gICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXG4gICAgICA+PC90aW1lcGlja2VyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXAgW2hhc0Vycm9yXT1cImRlbGF5RXJyb3JzXCI+XG4gICAgICA8bGFiZWwgdHJhbnNsYXRlPkRlbGF5PC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gMTVcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVsYXlcIlxuICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG0tci1zbS0zMiBtLXIteHMtNTZcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEZWxheSB1bml0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1bml0XCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIHZhbHVlPVwic2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTZWNvbmRzXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJtaWxsaXNlY29uZHNcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRzXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLXNjaGVkdWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLXNjaGVkdWxlci9vcGVyYXRpb24tc2NoZWR1bGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb24tc2NoZWR1bGVyL29wZXJhdGlvbi1zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBRUwsV0FBVyxFQUdYLGFBQWEsRUFDYixpQkFBaUIsRUFHakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBbUI5QyxNQUFNLE9BQU8sMkJBQTJCO0lBR3RDLElBQTJCLGFBQWEsQ0FBQyxPQUFlO1FBQ3RELElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBNEJELFlBQ1UsV0FBd0IsRUFDeEIsT0FBdUI7UUFEdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUE1QmpDLGdCQUFXLEdBQVcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBSzVDLGdCQUFXLEdBQXFCLElBQUksQ0FBQztRQUNyQyxpQkFBWSxHQUFxQixJQUFJLENBQUM7UUFFckIsMEJB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QUEyQjs0R0FBM0IsMkJBQTJCLGdIQWIzQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7U0FDM0Q7UUFDRDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztTQUMzRDtLQUNGLDBCQ2hDSCwrbUVBdUVBOzJGRHJDYSwyQkFBMkI7a0JBaEJ2QyxTQUFTOytCQUNFLHlCQUF5QixhQUV4Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzt5QkFDM0Q7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDO3lCQUMzRDtxQkFDRjsrSEFLMEIsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBPcHRpb25zU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wZXJhdGlvblNjaGVkdWxlIH0gZnJvbSAnLi9vcGVyYXRpb24tc2NoZWR1bGUuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW9wZXJhdGlvbi1zY2hlZHVsZXInLFxuICB0ZW1wbGF0ZVVybDogJ29wZXJhdGlvbi1zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3BlcmF0aW9uU2NoZWR1bGVyQ29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3BlcmF0aW9uU2NoZWR1bGVyQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25TY2hlZHVsZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoJ21pbnV0ZXNBaGVhZCcpIHNldCBfbWludXRlc0FoZWFkKG1pbnV0ZXM6IG51bWJlcikge1xuICAgIGlmIChtaW51dGVzICYmIG1pbnV0ZXMgPiB0aGlzLk1JTlVURVNfQUhFQURfREVGQVVMVCkge1xuICAgICAgdGhpcy5taW51dGVzQWhlYWQgPSBtaW51dGVzO1xuICAgIH1cbiAgfVxuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBnZXR0ZXh0KCdTdGFydCBkYXRlJyk7XG4gIGZnT3BlcmF0aW9uU2NoZWR1bGVyOiBGb3JtR3JvdXA7XG4gIG1pbkRhdGU6IERhdGU7XG4gIG1pbkRlbGF5OiBudW1iZXI7XG4gIG1heERlbGF5OiBudW1iZXI7XG4gIGRlbGF5RXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gbnVsbDtcbiAgcGlja2VyRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFTEFZX1NFQ09ORFNfREVGQVVMVDogbnVtYmVyID0gMTtcbiAgcHJpdmF0ZSByZWFkb25seSBNSU5fREVMQVlfU0VDT05EU19ERUZBVUxUOiBudW1iZXIgPSAwLjAwMTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfREVMQVlfU0VDT05EU19ERUZBVUxUOiBudW1iZXIgPSAzNjAwO1xuICBwcml2YXRlIHJlYWRvbmx5IE1JTlVURVNfQUhFQURfREVGQVVMVDogbnVtYmVyID0gNTtcbiAgcHJpdmF0ZSBpc0RlbGF5SW5TZWNvbmRzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBtaW51dGVzQWhlYWQ6IG51bWJlciA9IHRoaXMuTUlOVVRFU19BSEVBRF9ERUZBVUxUO1xuICBwcml2YXRlIHJlYWRvbmx5IERFTEFZX0tFWV9DQVRFR09SWSA9ICdkZXZpY2UtY29udHJvbCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUFYX0RFTEFZX0tFWV9OQU1FID0gJ2J1bGtvcGVyYXRpb24ubWF4Y3JlYXRpb25yYW1wJztcbiAgcHJpdmF0ZSByZWFkb25seSBNSU5fREVMQVlfS0VZX05BTUUgPSAnYnVsa29wZXJhdGlvbi5jcmVhdGlvbnJhbXAnO1xuICBwcml2YXRlIGN1cnJlbnRVbml0ID0gJ3NlY29uZHMnO1xuICBwcml2YXRlIGRlbGF5SW5TZWNvbmRzOiBudW1iZXI7XG4gIHByaXZhdGUgaW5pdGlhbERhdGU6IERhdGU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKG5hbWUpID0+IHZvaWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIG9uVmFsaWRhdG9yQ2hhbmdlZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuaW5pdGlhbERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMubWluRGF0ZS5zZXRNaW51dGVzKHRoaXMubWluRGF0ZS5nZXRNaW51dGVzKCkgKyB0aGlzLm1pbnV0ZXNBaGVhZClcbiAgICApO1xuXG4gICAgdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlciA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcGlja2VyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLmRhdGVWYWxpZGF0aW9uXV0sXG4gICAgICB0aW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLnRpbWVWYWxpZGF0aW9uXV0sXG4gICAgICBkZWxheTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgdW5pdDogWydzZWNvbmRzJ11cbiAgICB9KTtcblxuICAgIHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIucGF0Y2hWYWx1ZSh7XG4gICAgICBwaWNrZXI6IHRoaXMuaW5pdGlhbERhdGUsXG4gICAgICB0aW1lOiB0aGlzLmluaXRpYWxEYXRlLFxuICAgICAgZGVsYXk6IHRoaXMuREVMQVlfU0VDT05EU19ERUZBVUxUXG4gICAgfSk7XG5cbiAgICAvLyBEdWUgdG8gdGhlIHZhbGlkYXRpb24gb2YgcGlja2VyIGFuZCB0aW1lIGl0IGNvdWxkIGJlIHBvc3NpYmxlIHRoYXQgdmFsdWUgY2hhbmdlc1xuICAgIC8vIGFyZSBlbWl0dGVkIG1vcmUgdGhhbiBvbmNlLiBUaGVyZWZvcmUgd2UgdGhyb3R0bGUgdGhlIGVtaXRzLlxuICAgIGNvbnN0IHZhbHVlQ2hhbmdlcyQgPSB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLnZhbHVlQ2hhbmdlcy5waXBlKHRocm90dGxlVGltZSgxMDApKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHZhbHVlQ2hhbmdlcyQuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5kZWxheUVycm9ycyA9IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMuZGVsYXkuZXJyb3JzO1xuICAgICAgdGhpcy5waWNrZXJFcnJvcnMgPSB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLmNvbnRyb2xzLnBpY2tlci5lcnJvcnM7XG4gICAgICB0aGlzLmNvbnZlcnREZWxheUhhbmRsZXIoZGF0YS51bml0KTtcbiAgICAgIHRoaXMuZW1pdERhdGEoZGF0YSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZURlbGF5VmFsaWRhdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uICYmICF0aGlzLnN1YnNjcmlwdGlvbi5jbG9zZWQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogT3BlcmF0aW9uU2NoZWR1bGUpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIucGF0Y2hWYWx1ZSh7XG4gICAgICAgIHBpY2tlcjogdmFsdWUuc2NoZWR1bGVkRGF0ZSxcbiAgICAgICAgdGltZTogdmFsdWUuc2NoZWR1bGVkRGF0ZSxcbiAgICAgICAgZGVsYXk6IHZhbHVlLmRlbGF5SW5TZWNvbmRzID4gMSA/IHZhbHVlLmRlbGF5SW5TZWNvbmRzIDogdmFsdWUuZGVsYXlJblNlY29uZHMgKiAxMDAwLFxuICAgICAgICB1bml0OiB2YWx1ZS5kZWxheUluU2Vjb25kcyA+IDEgPyAnc2Vjb25kcycgOiAnbWlsbGlzZWNvbmRzJ1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXI/LmRpc2FibGVkID09PSBpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLmRpc2FibGUoKSA6IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuZW5hYmxlKCk7XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5pbnZhbGlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi50aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLmNvbnRyb2xzLnBpY2tlci5lcnJvcnMsXG4gICAgICAgIC4uLnRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMudGltZS5lcnJvcnMsXG4gICAgICAgIC4uLnRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMuZGVsYXkuZXJyb3JzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2VkID0gZm47XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0RGVsYXlIYW5kbGVyKHVuaXQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmN1cnJlbnRVbml0ID09PSB1bml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50VW5pdCA9IHVuaXQ7XG5cbiAgICB0aGlzLmNvbnZlcnREZWxheSh0aGlzLmN1cnJlbnRVbml0KTtcblxuICAgIC8vIHVwZGF0ZSB2YWxpZGF0b3Igb24gZGVsYXkgY29udHJvbCB0byBtYWtlIHN1cmUgdGhhdFxuICAgIC8vIHN3aXRjaGluZyBmcm9tIG1pbnV0ZXMgdG8gc2Vjb25kcyBvciB2aWNlIHZlcnNhIGRvZXMgbm90IGhhcm0gdmFsaWRhdGlvbi5cbiAgICB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLmNvbnRyb2xzLmRlbGF5LnNldFZhbGlkYXRvcnMoW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWluKHRoaXMubWluRGVsYXkpLFxuICAgICAgVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhEZWxheSlcbiAgICBdKTtcbiAgICB0aGlzLmZnT3BlcmF0aW9uU2NoZWR1bGVyLmNvbnRyb2xzLmRlbGF5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIGVtaXREYXRhKGRhdGE6IHsgZGVsYXlJblNlY29uZHM6IG51bWJlcjsgcGlja2VyOiBEYXRlOyB0aW1lPzogRGF0ZTsgZGVsYXk/OiBudW1iZXIgfSkge1xuICAgIGlmICh0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlZCkge1xuICAgICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5waWNrZXIgJiYgZGF0YS50aW1lKSB7XG4gICAgICBkYXRhLnBpY2tlciA9IHRoaXMuY29tYmluZURhdGVBbmRUaW1lKGRhdGEucGlja2VyLCBkYXRhLnRpbWUpO1xuICAgIH1cblxuICAgIHRoaXMuY29udmVydERlbGF5KHRoaXMuY3VycmVudFVuaXQpO1xuICAgIGRhdGEuZGVsYXlJblNlY29uZHMgPSB0aGlzLmRlbGF5SW5TZWNvbmRzO1xuXG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgICBkZWxheUluU2Vjb25kczogZGF0YS5kZWxheUluU2Vjb25kcyxcbiAgICAgICAgc2NoZWR1bGVkRGF0ZTogZGF0YS5waWNrZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRGVsYXlWYWxpZGF0aW9uKCkge1xuICAgIGNvbnN0IG1pblN5c3RlbSA9IGF3YWl0IHRoaXMub3B0aW9ucy5nZXRTeXN0ZW1PcHRpb24oXG4gICAgICB0aGlzLkRFTEFZX0tFWV9DQVRFR09SWSxcbiAgICAgIHRoaXMuTUlOX0RFTEFZX0tFWV9OQU1FXG4gICAgKTtcbiAgICBjb25zdCBtYXhTeXN0ZW0gPSBhd2FpdCB0aGlzLm9wdGlvbnMuZ2V0U3lzdGVtT3B0aW9uKFxuICAgICAgdGhpcy5ERUxBWV9LRVlfQ0FURUdPUlksXG4gICAgICB0aGlzLk1BWF9ERUxBWV9LRVlfTkFNRVxuICAgICk7XG5cbiAgICB0aGlzLm1heERlbGF5ID0gbWF4U3lzdGVtID8gTnVtYmVyKG1heFN5c3RlbSkgOiB0aGlzLk1BWF9ERUxBWV9TRUNPTkRTX0RFRkFVTFQ7XG4gICAgdGhpcy5taW5EZWxheSA9IG1pblN5c3RlbSA/IE51bWJlcihtaW5TeXN0ZW0pIDogdGhpcy5NSU5fREVMQVlfU0VDT05EU19ERUZBVUxUO1xuXG4gICAgdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlclxuICAgICAgLmdldCgnZGVsYXknKVxuICAgICAgLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbih0aGlzLm1pbkRlbGF5KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhEZWxheSlcbiAgICAgIF0pO1xuICAgIHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGVsYXkodW5pdDogc3RyaW5nKSB7XG4gICAgdGhpcy5kZWxheUluU2Vjb25kcyA9IHRoaXMuZmdPcGVyYXRpb25TY2hlZHVsZXIuY29udHJvbHMuZGVsYXkudmFsdWU7XG5cbiAgICBpZiAodW5pdCA9PT0gJ3NlY29uZHMnICYmICF0aGlzLmlzRGVsYXlJblNlY29uZHMpIHtcbiAgICAgIHRoaXMubWF4RGVsYXkgPSB0aGlzLm1heERlbGF5IC8gMTAwMDtcbiAgICAgIHRoaXMubWluRGVsYXkgPSB0aGlzLm1pbkRlbGF5IC8gMTAwMDtcbiAgICAgIHRoaXMuaXNEZWxheUluU2Vjb25kcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHVuaXQgPT09ICdtaWxsaXNlY29uZHMnKSB7XG4gICAgICB0aGlzLmRlbGF5SW5TZWNvbmRzID0gdGhpcy5mZ09wZXJhdGlvblNjaGVkdWxlci5jb250cm9scy5kZWxheS52YWx1ZSAvIDEwMDA7XG4gICAgICBpZiAodGhpcy5pc0RlbGF5SW5TZWNvbmRzKSB7XG4gICAgICAgIHRoaXMubWF4RGVsYXkgPSB0aGlzLm1heERlbGF5ICogMTAwMDtcbiAgICAgICAgdGhpcy5taW5EZWxheSA9IHRoaXMubWluRGVsYXkgKiAxMDAwO1xuICAgICAgICB0aGlzLmlzRGVsYXlJblNlY29uZHMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbWJpbmVEYXRlQW5kVGltZShkYXRlOiBEYXRlLCB0aW1lOiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICB0aW1lLmdldEhvdXJzKCksXG4gICAgICB0aW1lLmdldE1pbnV0ZXMoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRhdGVWYWxpZGF0aW9uKGZDb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIGlmIChmQ29udHJvbC52YWx1ZSkge1xuICAgICAgY29uc3QgZGF0ZSA9IGZDb250cm9sLnZhbHVlIGFzIERhdGU7XG4gICAgICBmQ29udHJvbC5wYXJlbnQuZ2V0KCd0aW1lJykuc2V0VmFsdWUoZGF0ZSk7XG4gICAgICByZXR1cm4gZGF0ZSA+PSBuZXcgRGF0ZSgpXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGRhdGVWYWxpZGF0aW9uOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0ZVZhbGlkYXRpb246IHRydWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgdGltZVZhbGlkYXRpb24oZkNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgaWYgKGZDb250cm9sLnZhbHVlKSB7XG4gICAgICBjb25zdCBkYXRlID0gZkNvbnRyb2wudmFsdWUgYXMgRGF0ZTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIGRhdGUgPj0gbmV3IERhdGUoKVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBkYXRlVmFsaWRhdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgY29uc3QgcGlja2VyID0gZkNvbnRyb2wucGFyZW50LmdldCgncGlja2VyJyk7XG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcGlja2VyLnNldEVycm9ycyhyZXN1bHQpO1xuICAgICAgICBwaWNrZXIubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocGlja2VyICYmIHBpY2tlci5lcnJvcnMgJiYgcGlja2VyLmVycm9ycy5kYXRlVmFsaWRhdGlvbikge1xuICAgICAgICBkZWxldGUgcGlja2VyLmVycm9ycy5kYXRlVmFsaWRhdGlvbjtcblxuICAgICAgICBpZiAoaXNFbXB0eShwaWNrZXIuZXJyb3JzKSkge1xuICAgICAgICAgIHBpY2tlci5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHBpY2tlci5zZXRFcnJvcnMocGlja2VyLmVycm9ycyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4geyBkYXRlVmFsaWRhdGlvbjogdHJ1ZSB9O1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZmdPcGVyYXRpb25TY2hlZHVsZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgdHJhbnNsYXRlPlN0YXJ0IGRhdGU8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1waWNrZXJcIj5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImRhdGVwaWNrZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGlja2VyXCJcbiAgICAgICAgICBbYnNDb25maWddPVwieyBjdXN0b21Ub2RheUNsYXNzOiAndG9kYXknIH1cIlxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjOHktbWVzc2FnZXM+XG4gICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICBbbmFtZV09XCInZGF0ZVZhbGlkYXRpb24nXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIidTZWxlY3QgdGltZSBpbiB0aGUgZnV0dXJlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICA8L2M4eS1tZXNzYWdlcz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8dGltZXBpY2tlclxuICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgICAgICBbc2hvd1NwaW5uZXJzXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dNZXJpZGlhbl09XCJmYWxzZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpbWVcIlxuICAgICAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIlxuICAgICAgPjwvdGltZXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGM4eS1mb3JtLWdyb3VwIFtoYXNFcnJvcl09XCJkZWxheUVycm9yc1wiPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZWxheTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDE1XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlbGF5XCJcbiAgICAgICAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBtLXItc20tMzIgbS1yLXhzLTU2XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVsYXkgdW5pdHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidW5pdFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICB2YWx1ZT1cInNlY29uZHNcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgU2Vjb25kc1xuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIHZhbHVlPVwibWlsbGlzZWNvbmRzXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIE1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -155,11 +155,13 @@ class OperationSchedulerComponent {
155
155
  this.minDelay = this.minDelay / 1000;
156
156
  this.isDelayInSeconds = true;
157
157
  }
158
- if (unit === 'milliseconds' && this.isDelayInSeconds) {
159
- this.maxDelay = this.maxDelay * 1000;
160
- this.minDelay = this.minDelay * 1000;
161
- this.isDelayInSeconds = false;
158
+ if (unit === 'milliseconds') {
162
159
  this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;
160
+ if (this.isDelayInSeconds) {
161
+ this.maxDelay = this.maxDelay * 1000;
162
+ this.minDelay = this.minDelay * 1000;
163
+ this.isDelayInSeconds = false;
164
+ }
163
165
  }
164
166
  }
165
167
  combineDateAndTime(date, time) {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { gettext, OptionsService } from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(private formBuilder: FormBuilder, private options: OptionsService) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds' && this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot()\n ],\n providers: [],\n declarations: [OperationSchedulerComponent],\n entryComponents: [OperationSchedulerComponent],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAkCa,2BAA2B,CAAA;IAGtC,IAA2B,aAAa,CAAC,OAAe,EAAA;AACtD,QAAA,IAAI,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACnD,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC7B,SAAA;KACF;IA4BD,WAAoB,CAAA,WAAwB,EAAU,OAAuB,EAAA;AAAzD,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AA1B7E,QAAA,IAAA,CAAA,WAAW,GAAW,OAAO,CAAC,YAAY,CAAC,CAAC;AAK5C,QAAA,IAAW,CAAA,WAAA,GAAqB,IAAI,CAAC;AACrC,QAAA,IAAY,CAAA,YAAA,GAAqB,IAAI,CAAC;AAErB,QAAA,IAAqB,CAAA,qBAAA,GAAW,CAAC,CAAC;AAClC,QAAA,IAAyB,CAAA,yBAAA,GAAW,KAAK,CAAC;AAC1C,QAAA,IAAyB,CAAA,yBAAA,GAAW,IAAI,CAAC;AACzC,QAAA,IAAqB,CAAA,qBAAA,GAAW,CAAC,CAAC;AAC3C,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,YAAY,GAAW,IAAI,CAAC,qBAAqB,CAAC;AACzC,QAAA,IAAkB,CAAA,kBAAA,GAAG,gBAAgB,CAAC;AACtC,QAAA,IAAkB,CAAA,kBAAA,GAAG,+BAA+B,CAAC;AACrD,QAAA,IAAkB,CAAA,kBAAA,GAAG,4BAA4B,CAAC;AAC3D,QAAA,IAAW,CAAA,WAAA,GAAG,SAAS,CAAC;KASiD;IAEjF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CACzB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CACvE,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxD,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACtD,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,KAAK,EAAE,IAAI,CAAC,qBAAqB;AAClC,SAAA,CAAC,CAAC;;;AAIH,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,IAAG;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACnE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;AACrE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAwB,EAAA;AACjC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;gBACnC,MAAM,EAAE,KAAK,CAAC,aAAa;gBAC3B,IAAI,EAAE,KAAK,CAAC,aAAa;AACzB,gBAAA,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,IAAI;AACpF,gBAAA,IAAI,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,SAAS,GAAG,cAAc;AAC5D,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;QACnC,IAAI,CAAA,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAK,UAAU,EAAE;YACtD,OAAO;AACR,SAAA;AACD,QAAA,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;KACvF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;AACrC,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAA,EAChD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA,EAC9C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAClD,CAAA;AACH,SAAA;KACF;AAED,IAAA,yBAAyB,CAAC,EAAO,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;KAC9B;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC7B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;QAIpC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;AACrD,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;KACnE;AAED,IAAA,QAAQ,CAAC,IAA2E,EAAA;QAClF,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC;gBACZ,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,aAAa,EAAE,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;IAEa,qBAAqB,GAAA;;AACjC,YAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAClD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,kBAAkB,CACxB,CAAC;AACF,YAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAClD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,kBAAkB,CACxB,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;AAC/E,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;AAE/E,YAAA,IAAI,CAAC,oBAAoB;iBACtB,GAAG,CAAC,OAAO,CAAC;AACZ,iBAAA,aAAa,CAAC;AACb,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,aAAA,CAAC,CAAC;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;SACpD,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAErE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAE9B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7E,SAAA;KACF;IAEO,kBAAkB,CAAC,IAAU,EAAE,IAAU,EAAA;AAC/C,QAAA,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,CAClB,CAAC;KACH;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;QAC1C,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAa,CAAC;AACpC,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAA,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE;AACvB,kBAAE,IAAI;AACN,kBAAE;AACE,oBAAA,cAAc,EAAE,IAAI;iBACrB,CAAC;AACP,SAAA;AACD,QAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACjC;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;QAC1C,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAa,CAAC;AACpC,YAAA,MAAM,MAAM,GACV,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,kBAAE,IAAI;AACN,kBAAE;AACE,oBAAA,cAAc,EAAE,IAAI;iBACrB,CAAC;YAER,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE7C,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM,CAAC,aAAa,EAAE,CAAC;AACvB,gBAAA,OAAO,MAAM,CAAC;AACf,aAAA;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AAC3D,gBAAA,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AAEpC,gBAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC1B,oBAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvB,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;AAED,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AACD,QAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACjC;;wHA/PU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAb3B,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC3D,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC3D,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCH,+mEAuEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhBvC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAExB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC3D,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC3D,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+mEAAA,EAAA,CAAA;+HAK0B,aAAa,EAAA,CAAA;sBAAvC,KAAK;uBAAC,cAAc,CAAA;;;AE9BvB;;AAEG;MAaU,4BAA4B,CAAA;;yHAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0HAA5B,4BAA4B,EAAA,YAAA,EAAA,CAJxB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CANxC,UAAU;AACV,QAAA,mBAAmB,yDAOX,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE1B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAVrC,UAAU;QACV,mBAAmB;QACnB,kBAAkB,CAAC,OAAO,EAAE;AAC5B,QAAA,gBAAgB,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA,CAAA;2FAOjB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,mBAAmB;wBACnB,kBAAkB,CAAC,OAAO,EAAE;wBAC5B,gBAAgB,CAAC,OAAO,EAAE;AAC3B,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;oBACb,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,eAAe,EAAE,CAAC,2BAA2B,CAAC;oBAC9C,OAAO,EAAE,CAAC,2BAA2B,CAAC;iBACvC,CAAA;;;ACrBD;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { gettext, OptionsService } from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private options: OptionsService\n ) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds') {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n if (this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n }\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot()\n ],\n providers: [],\n declarations: [OperationSchedulerComponent],\n entryComponents: [OperationSchedulerComponent],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -155,11 +155,13 @@ class OperationSchedulerComponent {
155
155
  this.minDelay = this.minDelay / 1000;
156
156
  this.isDelayInSeconds = true;
157
157
  }
158
- if (unit === 'milliseconds' && this.isDelayInSeconds) {
159
- this.maxDelay = this.maxDelay * 1000;
160
- this.minDelay = this.minDelay * 1000;
161
- this.isDelayInSeconds = false;
158
+ if (unit === 'milliseconds') {
162
159
  this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;
160
+ if (this.isDelayInSeconds) {
161
+ this.maxDelay = this.maxDelay * 1000;
162
+ this.minDelay = this.minDelay * 1000;
163
+ this.isDelayInSeconds = false;
164
+ }
163
165
  }
164
166
  }
165
167
  combineDateAndTime(date, time) {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { gettext, OptionsService } from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(private formBuilder: FormBuilder, private options: OptionsService) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds' && this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot()\n ],\n providers: [],\n declarations: [OperationSchedulerComponent],\n entryComponents: [OperationSchedulerComponent],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;MAkCa,2BAA2B,CAAA;IAGtC,IAA2B,aAAa,CAAC,OAAe,EAAA;AACtD,QAAA,IAAI,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACnD,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC7B,SAAA;KACF;IA4BD,WAAoB,CAAA,WAAwB,EAAU,OAAuB,EAAA;QAAzD,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AA1B7E,QAAA,IAAA,CAAA,WAAW,GAAW,OAAO,CAAC,YAAY,CAAC,CAAC;QAK5C,IAAW,CAAA,WAAA,GAAqB,IAAI,CAAC;QACrC,IAAY,CAAA,YAAA,GAAqB,IAAI,CAAC;QAErB,IAAqB,CAAA,qBAAA,GAAW,CAAC,CAAC;QAClC,IAAyB,CAAA,yBAAA,GAAW,KAAK,CAAC;QAC1C,IAAyB,CAAA,yBAAA,GAAW,IAAI,CAAC;QACzC,IAAqB,CAAA,qBAAA,GAAW,CAAC,CAAC;QAC3C,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,YAAY,GAAW,IAAI,CAAC,qBAAqB,CAAC;QACzC,IAAkB,CAAA,kBAAA,GAAG,gBAAgB,CAAC;QACtC,IAAkB,CAAA,kBAAA,GAAG,+BAA+B,CAAC;QACrD,IAAkB,CAAA,kBAAA,GAAG,4BAA4B,CAAC;QAC3D,IAAW,CAAA,WAAA,GAAG,SAAS,CAAC;KASiD;IAEjF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CACzB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CACvE,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxD,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACtD,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,KAAK,EAAE,IAAI,CAAC,qBAAqB;AAClC,SAAA,CAAC,CAAC;;;AAIH,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,IAAG;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACnE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;AACrE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAwB,EAAA;AACjC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;gBACnC,MAAM,EAAE,KAAK,CAAC,aAAa;gBAC3B,IAAI,EAAE,KAAK,CAAC,aAAa;AACzB,gBAAA,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,IAAI;AACpF,gBAAA,IAAI,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,SAAS,GAAG,cAAc;AAC5D,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,QAAQ,KAAK,UAAU,EAAE;YACtD,OAAO;AACR,SAAA;AACD,QAAA,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;KACvF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACrC,OAAO;gBACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;gBACnD,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;gBACjD,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;aACnD,CAAC;AACH,SAAA;KACF;AAED,IAAA,yBAAyB,CAAC,EAAO,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;KAC9B;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC7B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;QAIpC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;AACrD,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;KACnE;AAED,IAAA,QAAQ,CAAC,IAA2E,EAAA;QAClF,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC;gBACZ,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,aAAa,EAAE,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,MAAM,qBAAqB,GAAA;AACjC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAClD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,kBAAkB,CACxB,CAAC;AACF,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAClD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,kBAAkB,CACxB,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;AAC/E,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;AAE/E,QAAA,IAAI,CAAC,oBAAoB;aACtB,GAAG,CAAC,OAAO,CAAC;AACZ,aAAA,aAAa,CAAC;AACb,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,SAAA,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;KACpD;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAErE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAE9B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7E,SAAA;KACF;IAEO,kBAAkB,CAAC,IAAU,EAAE,IAAU,EAAA;AAC/C,QAAA,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,CAClB,CAAC;KACH;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;QAC1C,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAa,CAAC;AACpC,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAA,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE;AACvB,kBAAE,IAAI;AACN,kBAAE;AACE,oBAAA,cAAc,EAAE,IAAI;iBACrB,CAAC;AACP,SAAA;AACD,QAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACjC;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;QAC1C,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAa,CAAC;AACpC,YAAA,MAAM,MAAM,GACV,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,kBAAE,IAAI;AACN,kBAAE;AACE,oBAAA,cAAc,EAAE,IAAI;iBACrB,CAAC;YAER,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE7C,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM,CAAC,aAAa,EAAE,CAAC;AACvB,gBAAA,OAAO,MAAM,CAAC;AACf,aAAA;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AAC3D,gBAAA,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AAEpC,gBAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC1B,oBAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvB,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;AAED,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AACD,QAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACjC;;wHA/PU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAb3B,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC3D,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC3D,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCH,+mEAuEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhBvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAExB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC3D,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC3D,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+mEAAA,EAAA,CAAA;+HAK0B,aAAa,EAAA,CAAA;sBAAvC,KAAK;uBAAC,cAAc,CAAA;;;AE9BvB;;AAEG;MAaU,4BAA4B,CAAA;;yHAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0HAA5B,4BAA4B,EAAA,YAAA,EAAA,CAJxB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CANxC,UAAU;AACV,QAAA,mBAAmB,yDAOX,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE1B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAVrC,UAAU;QACV,mBAAmB;QACnB,kBAAkB,CAAC,OAAO,EAAE;QAC5B,gBAAgB,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA,CAAA;2FAOjB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,mBAAmB;wBACnB,kBAAkB,CAAC,OAAO,EAAE;wBAC5B,gBAAgB,CAAC,OAAO,EAAE;AAC3B,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;oBACb,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,eAAe,EAAE,CAAC,2BAA2B,CAAC;oBAC9C,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;ACrBD;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { gettext, OptionsService } from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private options: OptionsService\n ) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds') {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n if (this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n }\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot()\n ],\n providers: [],\n declarations: [OperationSchedulerComponent],\n entryComponents: [OperationSchedulerComponent],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/locales/de.po CHANGED
@@ -16563,6 +16563,9 @@ msgstr "Klicken Sie auf \"OK\", um zu bestätigen, dass Sie keine weitere Unters
16563
16563
  msgid "When enabled, a verification code sent by SMS is required to complete authentication"
16564
16564
  msgstr "Bei Aktivierung ist ein Bestätigungscode, der per SMS versendet wurde, erforderlich, um die Authentifizierung abzuschließen."
16565
16565
 
16566
+ msgid "When enabled, the LWM2M service automatically sets the interval to registration lifetime plus 2 minutes."
16567
+ msgstr "Bei Aktivierung setzt der LWM2M-Dienst das Intervall automatisch auf das maximale Registrierungsinervall plus 2 Minuten."
16568
+
16566
16569
  msgid "Who"
16567
16570
  msgstr "Wer"
16568
16571