@esfaenza/parameters 15.2.3 → 15.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/es_parameters.component.mjs +17 -2
- package/esm2020/lib/models/GenericParameter.mjs +2 -2
- package/fesm2015/esfaenza-parameters.mjs +17 -2
- package/fesm2015/esfaenza-parameters.mjs.map +1 -1
- package/fesm2020/esfaenza-parameters.mjs +17 -2
- package/fesm2020/esfaenza-parameters.mjs.map +1 -1
- package/lib/es_parameters.component.d.ts +3 -1
- package/lib/models/GenericParameter.d.ts +1 -1
- package/package.json +1 -2
|
@@ -51,6 +51,8 @@ export class EsParametersComponent {
|
|
|
51
51
|
this.Removal = false;
|
|
52
52
|
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
53
53
|
this.Readonly = false;
|
|
54
|
+
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
55
|
+
this.ListFormat = 'Array';
|
|
54
56
|
/** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */
|
|
55
57
|
this.Form = null;
|
|
56
58
|
/** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */
|
|
@@ -78,6 +80,9 @@ export class EsParametersComponent {
|
|
|
78
80
|
t.value = t.value.toString().toLowerCase() === "true";
|
|
79
81
|
if (t.enumtype || t.dicttype)
|
|
80
82
|
t.type = 'enum';
|
|
83
|
+
// Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori
|
|
84
|
+
if (t.type == 'enum' && this.ListFormat == 'CommaSeparated' && t.value && !Array.isArray(t.value))
|
|
85
|
+
t.value = t.value.split(',').map(t => t.trim());
|
|
81
86
|
});
|
|
82
87
|
this.reviewParametersBindings();
|
|
83
88
|
}
|
|
@@ -141,6 +146,14 @@ export class EsParametersComponent {
|
|
|
141
146
|
});
|
|
142
147
|
}
|
|
143
148
|
var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));
|
|
149
|
+
// Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori
|
|
150
|
+
if (this.Parameters && this.Parameters.length > 0) {
|
|
151
|
+
this.Parameters.forEach(t => {
|
|
152
|
+
this.ParametersCache[t.id] = t;
|
|
153
|
+
if (t.type == "enum" && this.ListFormat == 'CommaSeparated' && t.value && Array.isArray(t.value))
|
|
154
|
+
t.value = t.value.join(',');
|
|
155
|
+
});
|
|
156
|
+
}
|
|
144
157
|
this.propagateChange(thyCleanShaltNotBlankMe);
|
|
145
158
|
}
|
|
146
159
|
/**
|
|
@@ -255,7 +268,7 @@ export class EsParametersComponent {
|
|
|
255
268
|
}
|
|
256
269
|
}
|
|
257
270
|
EsParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
258
|
-
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
271
|
+
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", ListFormat: "ListFormat", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
259
272
|
{ provide: LocalizationService, useClass: EsParametersLoc },
|
|
260
273
|
{
|
|
261
274
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -297,6 +310,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
297
310
|
type: Input
|
|
298
311
|
}], Readonly: [{
|
|
299
312
|
type: Input
|
|
313
|
+
}], ListFormat: [{
|
|
314
|
+
type: Input
|
|
300
315
|
}], Form: [{
|
|
301
316
|
type: Input
|
|
302
317
|
}], AutocompleteHideChoicesOnSelection: [{
|
|
@@ -306,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
306
321
|
}], LabelInputRatio: [{
|
|
307
322
|
type: Input
|
|
308
323
|
}] } });
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNfcGFyYW1ldGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXJhbWV0ZXJzL3NyYy9saWIvZXNfcGFyYW1ldGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXJhbWV0ZXJzL3NyYy9saWIvZXNfcGFyYW1ldGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUE0QyxTQUFTLEVBQVUsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUksT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNOUQsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBRXRDLHVIQUF1SDtBQWlCdkgsTUFBTSxPQUFPLHFCQUFxQjtJQTZDOUIsbUlBQW1JO0lBQ25JLElBQWEsZUFBZSxDQUFDLEtBQWE7UUFDdEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQW9CLE9BQXVCLEVBQVMsRUFBdUIsRUFBUyxHQUFzQixFQUFVLEdBQWEsRUFBUyxLQUFrQjtRQUF4SSxZQUFPLEdBQVAs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ZDtxQkFBQzt3TkFtQkcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLGtDQUFrQztzQkFBMUMsS0FBSztnQkFHRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBR08sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTmdDb250cm9sLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0b3IsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgR2VuZXJpY1BhcmFtZXRlciB9IGZyb20gJy4vbW9kZWxzL0dlbmVyaWNQYXJhbWV0ZXInO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEVzUGFyYW1ldGVyc0xvYyB9IGZyb20gXCIuL2VzX3BhcmFtZXRlcnMuY29tcG9uZW50LmxvY1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBjaGUgcGVybWV0dGUgZGkgZ3JhZmljYXJlIHVuYSBsaXN0YSBkaSAqKkdlbmVyaWNQYXJhbWV0ZXIqKiBjb21lIElucHV0IGluIGJhc2UgYWwgbG9ybyB0aXBvIHNwZWNpZmljbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImVzLXBhcmFtZXRlcnNcIixcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEVzUGFyYW1ldGVyc0xvYyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVzUGFyYW1ldGVyc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVzUGFyYW1ldGVyc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2VzX3BhcmFtZXRlcnMuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNQYXJhbWV0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XHJcblxyXG4gICAgLyoqIE1vZGVsbG8gZGVsIGNvbXBvbmVudGUgc3UgY3VpIHZlbmdvbm8gZWZmZXR0dWF0ZSBsZSBncmFmaWNhemlvbmkgKi9cclxuICAgIHB1YmxpYyBQYXJhbWV0ZXJzOiBHZW5lcmljUGFyYW1ldGVyW107XHJcblxyXG4gICAgLyoqIENhY2hlIHBlciBmYXJlIGxvb2t1cCByYXBpZGkgaW4gZmFzZSBkaSB2YWx1dGF6aW9uZSBlc3ByZXNzaW9uaSBkaSB2aXNpYmlsaXTDoCBlIG9iYmxpZ2F0b3JpZXTDoCAqL1xyXG4gICAgcHJpdmF0ZSBQYXJhbWV0ZXJzQ2FjaGU6IHtbaWQ6IHN0cmluZ106IEdlbmVyaWNQYXJhbWV0ZXJ9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGlwZWxpbmUgZGkgQW5ndWxhciBcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG4gICAgLyoqIEluZGljYSBjaGUgbCd1bHRpbW8gcGFyYW1ldHJvIG5vbiBkZXZlIGF2ZXJlIG1hcmdpbmUgaW4gZm9uZG8gKi9cclxuICAgIEBJbnB1dCgpIExhc3RQYXJhbWV0ZXJOb01hcmdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBjb2wtbWQtWCBwZXIgbGEgbGFiZWwgKi9cclxuICAgIEBJbnB1dCgpIExhYmVsQ29sV2lkdGg6IG51bWJlciA9IDQ7XHJcblxyXG4gICAgLyoqIGNvbC1tZC1YIHBlciBsJ2lucHV0ICovXHJcbiAgICBASW5wdXQoKSBJbnB1dENvbFdpZHRoOiBudW1iZXIgPSA4O1xyXG5cclxuICAgIC8qKiBJbnB1dCBhIGN1aSBjb2xsZWdhcmUgbGEgdmFyaWFiaWxlICoqc3VibWl0dGVkKiogZGVsIGZvcm0gYWxsJ2ludGVybm8gZGVsIHF1YWxlIHZpZW5lIHV0aWxpenphdG8gcXVlc3RvIGNvbXBvbmVudGUgKi9cclxuICAgIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBWYWxvcmUgZGEgbW9zdHJhcmUgcXVhbG9yYSBub24gZm9zc2VybyBhbmNvcmEgcmljZXZ1dGkgaSAqKlBhcmFtZXRlcnMqKiBkYSBtb3N0cmFyZSAqL1xyXG4gICAgQElucHV0KCkgRW1wdHlNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBkaSByaW11b3ZlcmUgaSBwYXJhbWV0cmkgZGFsbGEgbGlzdGEgY2xpY2NhbmRvIHN1bGxhIFggZGF2YW50aSBhbGxhIExhYmVsICovXHJcbiAgICBASW5wdXQoKSBSZW1vdmFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBpIGNvbXBvbmVudGkgZGkgSW5wdXQgZ2VuZXJhdGkgc29ubyBSZWFkb25seSBvIG5vICovXHJcbiAgICBASW5wdXQoKSBSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBGb3JtIGNoZSB1dGlsaXp6YSBpbCBjb21wb25lbnRlLiBGb25kYW1lbnRhbGUgY29sbGVnYXJsbyBzZSBzaSB2b2dsaW9ubyBsZSB2YWxpZGF6aW9uaSBzdWwgc3VibWl0ICovXHJcbiAgICBASW5wdXQoKSBGb3JtIDogTmdGb3JtID0gbnVsbDtcclxuXHJcbiAgICAvKiogUXVhbmRvIHV0aWxpenphIHVuIHNvdHRvY29tcG9uZW50ZSBhdXRvY29tcGxldGUgYWJpbGl0YSBvIGRpc2FiaWxpdGEgaWwgcmVzZXQgZGVsbCdpbnB1dCBwZXIgb2duaSBzZWxlemlvbmUgKi9cclxuICAgIEBJbnB1dCgpIEF1dG9jb21wbGV0ZUhpZGVDaG9pY2VzT25TZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogRnVuemlvbmUgZGEgdXRpbGl6emFyZSBwZXIgdGlyYXJlIGZ1b3JpIGkgZGF0aSBkaSB1biBhdXRvY29tcGxldGUgKi9cclxuICAgIEBJbnB1dCgpIEF1dG9Db21wbGV0ZURhdGFSZXRyaWV2ZTogKHBhcmFtZXRlcjogR2VuZXJpY1BhcmFtZXRlciwgc2VhcmNoOiBzdHJpbmcsIGJ5aWQ6IGJvb2xlYW4pID0+IE9ic2VydmFibGU8eyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXT5cclxuXHJcbiAgICAvKiogUGVybWV0dGUgZGkgc2V0dGFyZSBpbiB1bmEgdm9sdGEgc29sbyBnbGkgaW5wdXQgKipMYWJlbENvbFdpZHRoKiogZSAqKklucHV0Q29sV2lkdGgqKiwgYmFzdGEgc2NyaXZlcmxvIGNvbiBsYSBzaW50YXNzaSBcIlggWVwiICovXHJcbiAgICBASW5wdXQoKSBzZXQgTGFiZWxJbnB1dFJhdGlvKGlucHV0OiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgcmF0aW8gPSBpbnB1dC5zcGxpdCgvXFxzLyk7XHJcbiAgICAgICAgdGhpcy5MYWJlbENvbFdpZHRoID0gcGFyc2VJbnQocmF0aW9bMF0pO1xyXG4gICAgICAgIHRoaXMuSW5wdXRDb2xXaWR0aCA9IHBhcnNlSW50KHJhdGlvWzFdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBpbmo6IEluamVjdG9yLCBwdWJsaWMgZGF0ZXM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBpcGVsaW5lIGRpIEFuZ3VsYXJcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmopOiB2b2lkIHtcclxuICAgICAgICB0aGlzLlBhcmFtZXRlcnMgPSBvYmo7XHJcbiAgICAgICAgdGhpcy5QYXJhbWV0ZXJzQ2FjaGUgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMuUGFyYW1ldGVycylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLlBhcmFtZXRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5QYXJhbWV0ZXJzQ2FjaGVbdC5pZF0gPSB0O1xyXG5cclxuICAgICAgICAgICAgaWYoIXQudHlwZWNvZGUgJiYgIXQudHlwZSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIk5vbiDDqCBzdGF0byBzcGVjaWZpY2F0byBuw6kgdW4gdHlwZSBuw6kgdW4gdHlwZWNvZGVcIik7XHJcblxyXG4gICAgICAgICAgICBpZiAodC50eXBlY29kZSAmJiAhdC50eXBlKVxyXG4gICAgICAgICAgICAgICAgdC50eXBlID0gdGhpcy51dGlFeHRzLmdldEpzVHlwZUZyb21UeXBlQ29kZSh0LnR5cGVjb2RlKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0LnR5cGVjb2RlICYmIHQudHlwZSAhPSB0aGlzLnV0aUV4dHMuZ2V0SnNUeXBlRnJvbVR5cGVDb2RlKHQudHlwZWNvZGUpKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiUmlsZXZhdGUgaW5jb25zaXN0ZW56ZSBmcmEgaWwgdGlwbyBcIiArIHQudHlwZSArIFwiIGUgaWwgdGlwbyBcIiArIHRoaXMudXRpRXh0cy5nZXRKc1R5cGVGcm9tVHlwZUNvZGUodC50eXBlY29kZSkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHQudHlwZSA9PSBcImJvb2xlYW5cIilcclxuICAgICAgICAgICAgICAgIHQudmFsdWUgPSAoPHN0cmluZz50LnZhbHVlLnRvU3RyaW5nKCkpLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiO1xyXG5cclxuICAgICAgICAgICAgaWYgKHQuZW51bXR5cGUgfHwgdC5kaWN0dHlwZSlcclxuICAgICAgICAgICAgICAgIHQudHlwZSA9ICdlbnVtJztcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXZpZXdQYXJhbWV0ZXJzQmluZGluZ3MoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBpcGVsaW5lIGRpIEFuZ3VsYXJcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBhbnkge1xyXG4gICAgICAgIC8vIFNlIGxhIHZhbGlkYXppb25lIMOoIHJpY2hpYW1hdGEgZGEgdW4gY29tcG9uZW50ZSBub24gbWUgc3Rlc3NvIHZ1b2wgZGlyZSBjaGUgaSBjb21wb25lbnRpIGRpIHZhbGlkYXppb25lIGludGVybmkgc3Rhbm5vIHJpY2hpYW1hbmRvXHJcbiAgICAgICAgLy8gcXVlc3RvIHZhbGlkYXRvciwgbWEgZGFsIGxvcm8gcHVudG8gZGkgdmlzdGEgbm9uIHNlIG5lIGRldm9ubyBwcmVvY2N1cGFyZSBxdWluZGkgZmFjY2lvIGZpbnRhIG5vbiBjaSBzaWFubyBlcnJvcmkuXHJcbiAgICAgICAgLy8gU2UgaW52ZWNlIHZlbmdvIHJpY2hpYW1hdG8gZGlyZXR0YW1lbnRlIHNpZ25pZmljYSBjaGUgw6ggaWwgZm9ybSBpbiBjdWkgdml2ZSBlcy1wYXJhbWV0ZXJzIGUgbMOsIGRldm8gZWZmZXR0dWFyZSBsYSB2YWxpZGF6aW9uZVxyXG4gICAgICAgIGxldCBjb250cm9sID0gdGhpcy5pbmouZ2V0KE5nQ29udHJvbCwgbnVsbCk/LmNvbnRyb2w7XHJcbiAgICAgICAgaWYgKGMgIT0gY29udHJvbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMuUGFyYW1ldGVycyAmJiB0aGlzLlBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLlBhcmFtZXRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKCF0LnZpc2libGUpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGVtcHR5TnVtYmVyID0gdC50eXBlID09ICdudW1iZXInICYmICh0LnZhbHVlID09IG51bGwgfHwgdC52YWx1ZSA9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVtcHR5Tm9uTnVtYmVyID0gdC50eXBlICE9ICdudW1iZXInICYmICF0LnZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHQucmVxdWlyZWQgJiYgKGVtcHR5TnVtYmVyIHx8IGVtcHR5Tm9uTnVtYmVyKSlcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodC52YWx1ZSAmJiB0LnR5cGUgPT0gJ251bWJlcicpXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBuZXcgUmVnRXhwKHQucGF0dGVybiB8fCAvXlsrLV0/WzAtOV0qWyxdP1swLTldKyQvKS50ZXN0KHQudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0LnZhbHVlICYmIHQucGF0dGVybilcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IG5ldyBSZWdFeHAodC5wYXR0ZXJuKS50ZXN0KHQudmFsdWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWxpZClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHsgXCJlcy1wYXJhbWV0ZXJzXCI6IHZhbGlkIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQaXBlbGluZSBkaSBBbmd1bGFyXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm4pOiB2b2lkIHsgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGlwZWxpbmUgZGkgQW5ndWxhclxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbik6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSBnZXN0aXJlIGlsIG1vZGVsbG8gaW4gdXNjaXRhIGUgcHJvcGFnYXJsbyBzdWwgYmluZGluZyBuZ01vZGVsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5QYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIC8vIFNlIGNpIHNvbm8gZGVsbGUgbW9kaWZpY2hlIGFpIGJpbmRpbmcgcG90cmViYmVybyBlc3NlcmUgY2FtYmlhdGkgaSByZXF1aXJlZC4gUmljcmVvIHR1dHRpIGkgY29tcG9uZW50aSBlIHJpLWlkcmF0byBsYSBjYWNoZSBkZWkgcGFyYW1ldHJpXHJcbiAgICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLnJldmlld1BhcmFtZXRlcnNCaW5kaW5ncygpO1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoKGNoID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuUGFyYW1ldGVycy5maW5kSW5kZXgodCA9PiB0LmlkID09IGNoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUGFyYW1ldGVyc1tpbmRleF0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuUGFyYW1ldGVyc1tpbmRleF0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUGFyYW1ldGVyc0NhY2hlW2NoXSA9IHRoaXMuUGFyYW1ldGVyc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdGh5Q2xlYW5TaGFsdE5vdEJsYW5rTWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuUGFyYW1ldGVycykpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoeUNsZWFuU2hhbHROb3RCbGFua01lKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpbXVvdmUgaWwgcGFyYW1ldHJvIHNlbGV6aW9uYXRvIGUgcHJvcGFnYSBpbCBtb2RlbGxvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7R2VuZXJpY1BhcmFtZXRlcn0gcGFyIFBhcmFtZXRybyBkYSByaW11b3ZlcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZVBhcmFtZXRlcihwYXI6IEdlbmVyaWNQYXJhbWV0ZXIpIHtcclxuICAgICAgICB0aGlzLlBhcmFtZXRlcnMuc3BsaWNlKHRoaXMuUGFyYW1ldGVycy5pbmRleE9mKHBhciksIDEpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUml2ZWRlIGkgYmluZGluZ3MgZGVpIHBhcmFtZXRyaSBpbiBiYXNlIGEgbG9ybyBldmVudHVhbGkgZXNwcmVzc2lvbmkgZGkgY29udHJvbGxvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gbGlzdGEgY29uIGdsaSBpZCBkZWkgcGFyYW1ldHJpIGNoZSBzb25vIHN0YXRpIG1vZGlmaWNhdGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZXZpZXdQYXJhbWV0ZXJzQmluZGluZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIGxldCBjaGFuZ2VzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLlBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHAgPSB0aGlzLlBhcmFtZXRlcnNbaV07XHJcblxyXG4gICAgICAgICAgICBpZiAocC5yZXF1aXJlZGV4cCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHByZXZSZXEgPSBwLnJlcXVpcmVkO1xyXG4gICAgICAgICAgICAgICAgcC5yZXF1aXJlZCA9IHRoaXMuZXZhbHVhdGUocC5yZXF1aXJlZGV4cCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldlJlcSAhPSBwLnJlcXVpcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMucHVzaChwLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocC52aXNpYmxlZXhwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHJldlZpc2kgPSBwLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICBwLnZpc2libGUgPSB0aGlzLmV2YWx1YXRlKHAudmlzaWJsZWV4cCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldlZpc2kgIT0gcC52aXNpYmxlKVxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMucHVzaChwLmlkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjaGFuZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsdXRhIHVuJ2VzcHJlc3Npb25lIGluIGJhc2UgYWkgcGFyYW1ldHJpIHByZXNlbnRpIG5lbCBtb2RlbGxvIGF0dHVhbGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGV4cHIgRXNwcmVzc2lvbmUgZGEgdmFsdXRhcmUgc2NyaXR0YSBuZWwgZm9ybWF0byAocmlwZXRpYmlsZSkgXCJJRCAoPT18IT18PHw+fD49fDw9KSAoYHZhbG9yZWAgfCBudWxsIHwgdHJ1ZSB8IGZhbHNlIHwgWFhYLFhYWClcIiBzZXBhcmF0byBldmVudHVhbG1lbnRlIGRhICYmIGVkIHx8XHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zICoqdHJ1ZSoqIHNlIGxhIGNvbmRpemlvbmUgw6ggdmVyaWZpY2F0YSwgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBldmFsdWF0ZShleHByOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICB2YXIgcmVnZXggPSAvXFxzPyhbYS16QS1aMC05Xy1dKylcXHM/KCE9fD09fDx8Pnw8PXw+PSlcXHM/KGBbXmBdK2B8YGB8bnVsbHxbMC05LF0rfHRydWV8ZmFsc2UpL2dtO1xyXG5cclxuICAgICAgICB2YXIgbWF0Y2hlczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICB2YXIgZmluYWxFeHByID0gZXhwcjtcclxuICAgICAgICB3aGlsZSAobWF0Y2hlcyA9IHJlZ2V4LmV4ZWMoZXhwcikpIHtcclxuICAgICAgICAgICAgdmFyIGZ1bGxNYXRjaCA9IG1hdGNoZXNbMF0udHJpbSgpO1xyXG4gICAgICAgICAgICB2YXIgaWQgPSBtYXRjaGVzWzFdLnRyaW0oKTtcclxuICAgICAgICAgICAgdmFyIG9wZXJhdGlvbiA9IG1hdGNoZXNbMl0udHJpbSgpO1xyXG4gICAgICAgICAgICBsZXQgYlZhbHVlID0gbWF0Y2hlc1szXS50cmltKCkudHJpbSgpO1xyXG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBtYXRjaGVzWzNdLnRyaW0oKS50cmltKCkucmVwbGFjZSgnYCcsICcnKS5yZXBsYWNlKCdgJywgJycpO1xyXG5cclxuICAgICAgICAgICAgZmluYWxFeHByID0gZmluYWxFeHByLnJlcGxhY2UoZnVsbE1hdGNoLCBgdGhpcy5jaGVja1ZhbHVlKCcke2lkfScsICcke29wZXJhdGlvbn0nLCAke2JWYWx1ZSA9PSAnbnVsbCcgPyAnbnVsbCcgOiBgJyR7dmFsdWV9J2B9KWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGV2YWwoZmluYWxFeHByKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3RpdHVpc2NlIGwnb3BlcmF6aW9uZSBkaSBjb21wYXJhemlvbmUgZnJhIHVuIHNpbmdvbG8gdmFsb3JlIGRpIHVuIHBhcmFtZXRybyBlIHVuIHN1byB2YWxvcmUgZGkgY29uZnJvbnRvIGluIGJhc2UgYWQgdW4gb3BlcmF0b3JlXHJcbiAgICAgKiBSaWNoaWFtYXRhIGRhIEVWQUxcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGVsIHBhcmFtZXRybyBkaSBjdWkgdmVyaWZpY2FyZSBpbCB2YWxvcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvciBPcGVyYXRvcmUgY29uIGN1aSB2ZXJpZmljYXJlIGlsIHZhbG9yZTogPT0sICE9LCA+LCA8LCA+PSwgPD1cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBWYWxvcmUgZGkgY29uZnJvbnRvIGRhIHV0aWxpenphcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgKip0cnVlKiogc2UgbGEgY29uZGl6aW9uZSDDqCB2ZXJpZmljYXRhLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hlY2tWYWx1ZShrZXk6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHZhciByUGFyID0gdGhpcy5QYXJhbWV0ZXJzQ2FjaGVba2V5XTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHJQYXIudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBcImVudW1cIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZhbChgXCIke3RoaXMuZGVmYXVsdElmbnVsbE9yVW5kZWZpbmVkKHJQYXIudmFsdWUsIGBgKX1cIiAke29wZXJhdG9yfSBcIiR7dGhpcy5kZWZhdWx0SWZudWxsT3JVbmRlZmluZWQodmFsdWUsIGBgKX1cImApO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZhbChgJHt0aGlzLmRlZmF1bHRJZm51bGxPclVuZGVmaW5lZChyUGFyLnZhbHVlLCBgYCkudG9TdHJpbmcoKX0gJHtvcGVyYXRvcn0gJHt0aGlzLmRlZmF1bHRJZm51bGxPclVuZGVmaW5lZCh2YWx1ZSwgYGApfWApO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmFsKGAke3RoaXMuZGVmYXVsdElmbnVsbE9yVW5kZWZpbmVkKHJQYXIudmFsdWUsICdcIlwiJywgdHJ1ZSkucmVwbGFjZSgnLCcsICcuJyl9ICR7b3BlcmF0b3J9ICR7dGhpcy5kZWZhdWx0SWZudWxsT3JVbmRlZmluZWQodmFsdWUsICdcIlwiJywgdHJ1ZSkucmVwbGFjZSgnLCcsICcuJyl9YCk7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJEYXRlQ29udiA9IGB0aGlzLmRhdGVzLmdldERhdGVDb252ZXJ0aW9uKFwiJHtyUGFyLnZhbHVlfVwiKWA7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbERhdGVDb252ID0gYHRoaXMuZGF0ZXMuZ2V0RGF0ZUNvbnZlcnRpb24oXCIke3ZhbHVlfVwiKWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCI9PVwiOiByZXR1cm4gZXZhbChgJHtwYXJEYXRlQ29udn0gPT0gJHt2YWxEYXRlQ29udn0gfHwgKCR7cGFyRGF0ZUNvbnZ9ICE9IG51bGwgJiYgJHtwYXJEYXRlQ29udn0uaXNTYW1lKCR7dmFsRGF0ZUNvbnZ9KSlgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIiE9XCI6IHJldHVybiBldmFsKGAke3BhckRhdGVDb252fSAhPSAke3ZhbERhdGVDb252fSAmJiAke3BhckRhdGVDb252fSAhPSBudWxsICYmICEke3BhckRhdGVDb252fS5pc1NhbWUoJHt2YWxEYXRlQ29udn0pYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCI+XCI6IHJldHVybiBldmFsKGAke3BhckRhdGVDb252fSAhPSBudWxsICYmICR7dmFsRGF0ZUNvbnZ9ICE9IG51bGwgJiYgJHtwYXJEYXRlQ29udn0uaXNBZnRlcigke3ZhbERhdGVDb252fSlgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIjxcIjogcmV0dXJuIGV2YWwoYCR7cGFyRGF0ZUNvbnZ9ICE9IG51bGwgJiYgJHt2YWxEYXRlQ29udn0gIT0gbnVsbCAmJiAke3BhckRhdGVDb252fS5pc0JlZm9yZSgke3ZhbERhdGVDb252fSlgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIj49XCI6IHJldHVybiBldmFsKGAke3BhckRhdGVDb252fSAhPSBudWxsICYmICR7dmFsRGF0ZUNvbnZ9ICE9IG51bGwgJiYgKCR7cGFyRGF0ZUNvbnZ9LmlzQWZ0ZXIoJHt2YWxEYXRlQ29udn0pIHx8ICR7cGFyRGF0ZUNvbnZ9Py5pc1NhbWUoJHt2YWxEYXRlQ29udn0pKWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiPD1cIjogcmV0dXJuIGV2YWwoYCR7cGFyRGF0ZUNvbnZ9ICE9IG51bGwgJiYgJHt2YWxEYXRlQ29udn0gIT0gbnVsbCAmJiAoJHtwYXJEYXRlQ29udn0uaXNCZWZvcmUoJHt2YWxEYXRlQ29udn0pIHx8ICR7cGFyRGF0ZUNvbnZ9Py5pc1NhbWUoJHt2YWxEYXRlQ29udn0pKWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJFcnJvcmkgbmVsbGEgdmFsdXRhemlvbmUgZGVsbCdlc3ByZXNzaW9uZS4gRmFsbGJhY2sgYSBmYWxzZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhyb3cgYEBlc2ZhZW56YS9wYXJhbWV0ZXJzOiBUaXBvIHBhcmFtZXRybyAke2tleX0gbm9uIHJpY29ub3NjaXV0bzogJHtyUGFyLnR5cGV9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBkZWZhdWx0SWZudWxsT3JVbmRlZmluZWQ8VD4oaXRlbTogVCwgZGZsdDogVCwgZW1wdHlTdHJpbmdJc051bGw6IGJvb2xlYW4gPSBmYWxzZSk6IFQge1xyXG4gICAgICAgIGlmIChpdGVtID09IG51bGwgfHwgaXRlbSA9PSB1bmRlZmluZWQgfHwgaXRlbS50b1N0cmluZygpID09ICdudWxsJyB8fCAoZW1wdHlTdHJpbmdJc051bGwgJiYgaXRlbS50b1N0cmluZygpID09IFwiXCIpKVxyXG4gICAgICAgICAgICByZXR1cm4gZGZsdDtcclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGdldFNvdXJjZShwYXJhbWV0ZXI6IEdlbmVyaWNQYXJhbWV0ZXIsIHNlYXJjaDogc3RyaW5nLCBieWlkOiBib29sZWFuKTogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLkF1dG9Db21wbGV0ZURhdGFSZXRyaWV2ZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQGZvcm1zLWFuZC12YWxpZGF0aW9uczogZnVuemlvbmUgZGkgZGF0YXJldHJpZXZlIG5vbiBpbXBvc3RhdGEgcGVyIHVuIHBhcmFtZXRybyBhdXRvY29tcGxldGVcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihbXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5BdXRvQ29tcGxldGVEYXRhUmV0cmlldmUocGFyYW1ldGVyLCBzZWFyY2gsIGJ5aWQpO1xyXG4gICAgfVxyXG59IiwiPGRpdiAqbmdJZj1cIighUGFyYW1ldGVycyB8fCBQYXJhbWV0ZXJzLmxlbmd0aCA9PSAwKSAmJiBFbXB0eU1lc3NhZ2VcIj5cclxuICAgIDxlbT57e0VtcHR5TWVzc2FnZX19PC9lbT5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwiUGFyYW1ldGVycyAmJiBQYXJhbWV0ZXJzLmxlbmd0aCA+IDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCBwYXIgb2YgUGFyYW1ldGVyczsgbGV0IGk9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3Q7XCIgW2NsYXNzLmFwcC1tYXJnaW4tYm90dG9tLTBdPVwiTGFzdFBhcmFtZXRlck5vTWFyZ2luICYmIGxhc3RcIiBbaGlkZGVuXT1cIiFwYXIudmlzaWJsZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17e0xhYmVsQ29sV2lkdGh9fSBtLXQtNVwiPjxzcGFuICpuZ0lmPVwiUmVtb3ZhbFwiIGNsYXNzPVwiZmEgZmEtcmVtb3ZlIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cInJlbW92ZVBhcmFtZXRlcihwYXIpXCI+Jm5ic3A7PC9zcGFuPnt7cGFyLmRlc2NyaXB0aW9ufX17e3Bhci5yZXF1aXJlZCA/ICcqJyA6ICcnfX06PC9sYWJlbD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxmb3JtLWRhdGUgW0Zvcm1dPVwiRm9ybVwiIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5IHx8IHBhci5pc3JlYWRvbmx5XCIgW3JlcXVpcmVkXT1cInBhci5yZXF1aXJlZFwiIFsobmdNb2RlbCldPVwicGFyLnZhbHVlXCIgbmFtZT1cInBhcnt7aX19XCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yPjwvZm9ybS1kYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TZSBzdHJpbmdhLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ3N0cmluZydcIj5cclxuICAgICAgICAgICAgPGZvcm0taW5wdXQgW0Zvcm1dPVwiRm9ybVwiIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5IHx8IHBhci5pc3JlYWRvbmx5XCIgW3JlcXVpcmVkXT1cInBhci5yZXF1aXJlZFwiIFsobmdNb2RlbCldPVwicGFyLnZhbHVlXCIgbmFtZT1cInBhcnt7aX19XCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yPjwvZm9ybS1pbnB1dD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU2UgbnVtZXJvLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ251bWJlcidcIj5cclxuICAgICAgICAgICAgPGZvcm0taW5wdXQgW0Zvcm1dPVwiRm9ybVwiIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5IHx8IHBhci5pc3JlYWRvbmx5XCIgW3JlcXVpcmVkXT1cInBhci5yZXF1aXJlZFwiIFsobmdNb2RlbCldPVwicGFyLnZhbHVlXCIgbmFtZT1cInBhcnt7aX19XCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yIHBhdHRlcm49XCJ7e3Bhci5wYXR0ZXJuIHx8ICdeWystXT9bMC05XSpbLF0/WzAtOV0rJCd9fVwiPjwvZm9ybS1pbnB1dD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU2UgYm9vbGVhbi0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tJbnB1dENvbFdpZHRofX0gbS10LTVcIiAqbmdJZj1cInBhci50eXBlID09ICdib29sZWFuJ1wiPlxyXG4gICAgICAgICAgICA8Zm9ybS1jaGVja2JveCBbRm9ybV09XCJGb3JtXCIgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbKG5nTW9kZWwpXT1cInBhci52YWx1ZVwiIG5hbWU9XCJwYXJ7e2l9fVwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCk7XCIgI3ZhbGlkYXRvcj48L2Zvcm0tY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLVNlIGVudW0gc2luZ2xlIHNlbGVjdC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tJbnB1dENvbFdpZHRofX1cIiAqbmdJZj1cInBhci50eXBlID09ICdlbnVtJyAmJiAhcGFyLm11bHRpZW51bSAmJiAhcGFyLnNvdXJjZWFwaVwiPlxyXG4gICAgICAgICAgICA8Zm9ybS1zZWxlY3QgW0Zvcm1dPVwiRm9ybVwiIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5IHx8IHBhci5pc3JlYWRvbmx5XCIgW3JlcXVpcmVkXT1cInBhci5yZXF1aXJlZFwiIFsobmdNb2RlbCldPVwicGFyLnZhbHVlXCIgbmFtZT1cInBhcnt7aX19XCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yIFtTb3VyY2VdPVwicGFyLmVudW12YWx1ZXNcIj48L2Zvcm0tc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TZSBlbnVtIG11bHRpIHNlbGVjdC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tJbnB1dENvbFdpZHRofX1cIiAqbmdJZj1cInBhci50eXBlID09ICdlbnVtJyAmJiBwYXIubXVsdGllbnVtICYmICFwYXIuc291cmNlYXBpXCI+XHJcbiAgICAgICAgICAgIDxmb3JtLW11bHRpc2VsZWN0IFtGb3JtXT1cIkZvcm1cIiBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtVc2VDb21tYVNlcGFyYXRlZExpc3RdPVwidHJ1ZVwiIFtTZWxlY3RMYWJlbF09XCIoJ1NlbGVjdCcgfCBsb2NhbGl6ZSA6IGxjKSArICcuLi4nXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbU291cmNlXT1cInBhci5lbnVtdmFsdWVzXCIgW3JlcXVpcmVkXT1cInBhci5yZXF1aXJlZFwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCk7XCIgI3ZhbGlkYXRvcj48L2Zvcm0tbXVsdGlzZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLVNlIGVudW0gYXV0b2NvbXBsZXRlLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ2VudW0nICYmICFwYXIubXVsdGllbnVtICYmIHBhci5zb3VyY2VhcGlcIj5cclxuICAgICAgICAgICAgPGZvcm0tYXV0b2NvbXBsZXRlIFtGb3JtXT1cIkZvcm1cIiBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtQbGFjZWhvbGRlcl09XCIoJ1NlbGVjdCcgfCBsb2NhbGl6ZSA6IGxjKSArICcuLi4nXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbU2VhcmNoRnVuY3Rpb25dPVwiZ2V0U291cmNlLmJpbmQodGhpcywgcGFyKVwiIFtyZXF1aXJlZF09XCJwYXIucmVxdWlyZWRcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiICN2YWxpZGF0b3I+PC9mb3JtLWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU2UgZW51bSBtdWx0aXNlbGVjdCBhdXRvY29tcGxldGUtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCIgKm5nSWY9XCJwYXIudHlwZSA9PSAnZW51bScgJiYgcGFyLm11bHRpZW51bSAmJiBwYXIuc291cmNlYXBpXCI+XHJcbiAgICAgICAgICAgIDxmb3JtLWF1dG9jb21wbGV0ZSBbRm9ybV09XCJGb3JtXCIgW0hpZGVDaG9pY2VzT25TZWxlY3Rpb25dPVwiQXV0b2NvbXBsZXRlSGlkZUNob2ljZXNPblNlbGVjdGlvblwiIFtNdWx0aV09XCJ0cnVlXCIgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbUGxhY2Vob2xkZXJdPVwiKCdTZWxlY3QnIHwgbG9jYWxpemUgOiBsYykgKyAnLi4uJ1wiIFsobmdNb2RlbCldPVwicGFyLnZhbHVlXCIgbmFtZT1cInBhcnt7aX19XCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5IHx8IHBhci5pc3JlYWRvbmx5XCIgW1NlYXJjaEZ1bmN0aW9uXT1cImdldFNvdXJjZS5iaW5kKHRoaXMsIHBhcilcIiBbcmVxdWlyZWRdPVwicGFyLnJlcXVpcmVkXCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yPjwvZm9ybS1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNfcGFyYW1ldGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXJhbWV0ZXJzL3NyYy9saWIvZXNfcGFyYW1ldGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXJhbWV0ZXJzL3NyYy9saWIvZXNfcGFyYW1ldGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUE0QyxTQUFTLEVBQVUsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUksT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNOUQsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBRXRDLHVIQUF1SDtBQWlCdkgsTUFBTSxPQUFPLHFCQUFxQjtJQWdEOUIsbUlBQW1JO0lBQ25JLElBQWEsZUFBZSxDQUFDLEtBQWE7UUFDdEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQW9CLE9BQXVCLEVBQVMsRUFBdUIsRUFBUyxHQUFzQixFQUFVLEdBQWEsRUFBUyxLQUFrQjtRQUF4SSxZQUFPLEdBQVAs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QkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLGtDQUFrQztzQkFBMUMsS0FBSztnQkFHRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBR08sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTmdDb250cm9sLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0b3IsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgR2VuZXJpY1BhcmFtZXRlciB9IGZyb20gJy4vbW9kZWxzL0dlbmVyaWNQYXJhbWV0ZXInO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEVzUGFyYW1ldGVyc0xvYyB9IGZyb20gXCIuL2VzX3BhcmFtZXRlcnMuY29tcG9uZW50LmxvY1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBjaGUgcGVybWV0dGUgZGkgZ3JhZmljYXJlIHVuYSBsaXN0YSBkaSAqKkdlbmVyaWNQYXJhbWV0ZXIqKiBjb21lIElucHV0IGluIGJhc2UgYWwgbG9ybyB0aXBvIHNwZWNpZmljbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImVzLXBhcmFtZXRlcnNcIixcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEVzUGFyYW1ldGVyc0xvYyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVzUGFyYW1ldGVyc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVzUGFyYW1ldGVyc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2VzX3BhcmFtZXRlcnMuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNQYXJhbWV0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XHJcblxyXG4gICAgLyoqIE1vZGVsbG8gZGVsIGNvbXBvbmVudGUgc3UgY3VpIHZlbmdvbm8gZWZmZXR0dWF0ZSBsZSBncmFmaWNhemlvbmkgKi9cclxuICAgIHB1YmxpYyBQYXJhbWV0ZXJzOiBHZW5lcmljUGFyYW1ldGVyW107XHJcblxyXG4gICAgLyoqIENhY2hlIHBlciBmYXJlIGxvb2t1cCByYXBpZGkgaW4gZmFzZSBkaSB2YWx1dGF6aW9uZSBlc3ByZXNzaW9uaSBkaSB2aXNpYmlsaXTDoCBlIG9iYmxpZ2F0b3JpZXTDoCAqL1xyXG4gICAgcHJpdmF0ZSBQYXJhbWV0ZXJzQ2FjaGU6IHtbaWQ6IHN0cmluZ106IEdlbmVyaWNQYXJhbWV0ZXJ9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGlwZWxpbmUgZGkgQW5ndWxhciBcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG4gICAgLyoqIEluZGljYSBjaGUgbCd1bHRpbW8gcGFyYW1ldHJvIG5vbiBkZXZlIGF2ZXJlIG1hcmdpbmUgaW4gZm9uZG8gKi9cclxuICAgIEBJbnB1dCgpIExhc3RQYXJhbWV0ZXJOb01hcmdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBjb2wtbWQtWCBwZXIgbGEgbGFiZWwgKi9cclxuICAgIEBJbnB1dCgpIExhYmVsQ29sV2lkdGg6IG51bWJlciA9IDQ7XHJcblxyXG4gICAgLyoqIGNvbC1tZC1YIHBlciBsJ2lucHV0ICovXHJcbiAgICBASW5wdXQoKSBJbnB1dENvbFdpZHRoOiBudW1iZXIgPSA4O1xyXG5cclxuICAgIC8qKiBJbnB1dCBhIGN1aSBjb2xsZWdhcmUgbGEgdmFyaWFiaWxlICoqc3VibWl0dGVkKiogZGVsIGZvcm0gYWxsJ2ludGVybm8gZGVsIHF1YWxlIHZpZW5lIHV0aWxpenphdG8gcXVlc3RvIGNvbXBvbmVudGUgKi9cclxuICAgIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBWYWxvcmUgZGEgbW9zdHJhcmUgcXVhbG9yYSBub24gZm9zc2VybyBhbmNvcmEgcmljZXZ1dGkgaSAqKlBhcmFtZXRlcnMqKiBkYSBtb3N0cmFyZSAqL1xyXG4gICAgQElucHV0KCkgRW1wdHlNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBkaSByaW11b3ZlcmUgaSBwYXJhbWV0cmkgZGFsbGEgbGlzdGEgY2xpY2NhbmRvIHN1bGxhIFggZGF2YW50aSBhbGxhIExhYmVsICovXHJcbiAgICBASW5wdXQoKSBSZW1vdmFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBpIGNvbXBvbmVudGkgZGkgSW5wdXQgZ2VuZXJhdGkgc29ubyBSZWFkb25seSBvIG5vICovXHJcbiAgICBASW5wdXQoKSBSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgaSBjb21wb25lbnRpIGRpIElucHV0IGdlbmVyYXRpIHNvbm8gUmVhZG9ubHkgbyBubyAqL1xyXG4gICAgQElucHV0KCkgTGlzdEZvcm1hdDogJ0NvbW1hU2VwYXJhdGVkJyB8ICdBcnJheScgPSAnQXJyYXknO1xyXG5cclxuICAgIC8qKiBGb3JtIGNoZSB1dGlsaXp6YSBpbCBjb21wb25lbnRlLiBGb25kYW1lbnRhbGUgY29sbGVnYXJsbyBzZSBzaSB2b2dsaW9ubyBsZSB2YWxpZGF6aW9uaSBzdWwgc3VibWl0ICovXHJcbiAgICBASW5wdXQoKSBGb3JtIDogTmdGb3JtID0gbnVsbDtcclxuXHJcbiAgICAvKiogUXVhbmRvIHV0aWxpenphIHVuIHNvdHRvY29tcG9uZW50ZSBhdXRvY29tcGxldGUgYWJpbGl0YSBvIGRpc2FiaWxpdGEgaWwgcmVzZXQgZGVsbCdpbnB1dCBwZXIgb2duaSBzZWxlemlvbmUgKi9cclxuICAgIEBJbnB1dCgpIEF1dG9jb21wbGV0ZUhpZGVDaG9pY2VzT25TZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogRnVuemlvbmUgZGEgdXRpbGl6emFyZSBwZXIgdGlyYXJlIGZ1b3JpIGkgZGF0aSBkaSB1biBhdXRvY29tcGxldGUgKi9cclxuICAgIEBJbnB1dCgpIEF1dG9Db21wbGV0ZURhdGFSZXRyaWV2ZTogKHBhcmFtZXRlcjogR2VuZXJpY1BhcmFtZXRlciwgc2VhcmNoOiBzdHJpbmcsIGJ5aWQ6IGJvb2xlYW4pID0+IE9ic2VydmFibGU8eyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXT5cclxuXHJcbiAgICAvKiogUGVybWV0dGUgZGkgc2V0dGFyZSBpbiB1bmEgdm9sdGEgc29sbyBnbGkgaW5wdXQgKipMYWJlbENvbFdpZHRoKiogZSAqKklucHV0Q29sV2lkdGgqKiwgYmFzdGEgc2NyaXZlcmxvIGNvbiBsYSBzaW50YXNzaSBcIlggWVwiICovXHJcbiAgICBASW5wdXQoKSBzZXQgTGFiZWxJbnB1dFJhdGlvKGlucHV0OiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgcmF0aW8gPSBpbnB1dC5zcGxpdCgvXFxzLyk7XHJcbiAgICAgICAgdGhpcy5MYWJlbENvbFdpZHRoID0gcGFyc2VJbnQocmF0aW9bMF0pO1xyXG4gICAgICAgIHRoaXMuSW5wdXRDb2xXaWR0aCA9IHBhcnNlSW50KHJhdGlvWzFdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBpbmo6IEluamVjdG9yLCBwdWJsaWMgZGF0ZXM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBpcGVsaW5lIGRpIEFuZ3VsYXJcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmopOiB2b2lkIHtcclxuICAgICAgICB0aGlzLlBhcmFtZXRlcnMgPSBvYmo7XHJcbiAgICAgICAgdGhpcy5QYXJhbWV0ZXJzQ2FjaGUgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMuUGFyYW1ldGVycylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLlBhcmFtZXRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5QYXJhbWV0ZXJzQ2FjaGVbdC5pZF0gPSB0O1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0LnR5cGVjb2RlICYmICF0LnR5cGUpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJOb24gw6ggc3RhdG8gc3BlY2lmaWNhdG8gbsOpIHVuIHR5cGUgbsOpIHVuIHR5cGVjb2RlXCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHQudHlwZWNvZGUgJiYgIXQudHlwZSlcclxuICAgICAgICAgICAgICAgIHQudHlwZSA9IHRoaXMudXRpRXh0cy5nZXRKc1R5cGVGcm9tVHlwZUNvZGUodC50eXBlY29kZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodC50eXBlY29kZSAmJiB0LnR5cGUgIT0gdGhpcy51dGlFeHRzLmdldEpzVHlwZUZyb21UeXBlQ29kZSh0LnR5cGVjb2RlKSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlJpbGV2YXRlIGluY29uc2lzdGVuemUgZnJhIGlsIHRpcG8gXCIgKyB0LnR5cGUgKyBcIiBlIGlsIHRpcG8gXCIgKyB0aGlzLnV0aUV4dHMuZ2V0SnNUeXBlRnJvbVR5cGVDb2RlKHQudHlwZWNvZGUpKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0LnR5cGUgPT0gXCJib29sZWFuXCIpXHJcbiAgICAgICAgICAgICAgICB0LnZhbHVlID0gKDxzdHJpbmc+dC52YWx1ZS50b1N0cmluZygpKS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0LmVudW10eXBlIHx8IHQuZGljdHR5cGUpXHJcbiAgICAgICAgICAgICAgICB0LnR5cGUgPSAnZW51bSc7XHJcblxyXG4gICAgICAgICAgICAvLyBBZ2dpdXN0byBsZSBtb2RhbGl0w6AgZGkgZnVuemlvbmFtZW50byBkZWkgcGFyYW1ldHJpIGxpc3RhLiBDaGUgaW50ZXJuYW1lbnRlIGZ1bnppb25hbm8gc2VtcHJlIGNvbiB1bmEgbGlzdGEgZGkgdmFsb3JpXHJcbiAgICAgICAgICAgIGlmICh0LnR5cGUgPT0gJ2VudW0nICYmIHRoaXMuTGlzdEZvcm1hdCA9PSAnQ29tbWFTZXBhcmF0ZWQnICYmIHQudmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodC52YWx1ZSkpXHJcbiAgICAgICAgICAgICAgICB0LnZhbHVlID0gdC52YWx1ZS5zcGxpdCgnLCcpLm1hcCh0ID0+IHQudHJpbSgpKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXZpZXdQYXJhbWV0ZXJzQmluZGluZ3MoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBpcGVsaW5lIGRpIEFuZ3VsYXJcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBhbnkge1xyXG4gICAgICAgIC8vIFNlIGxhIHZhbGlkYXppb25lIMOoIHJpY2hpYW1hdGEgZGEgdW4gY29tcG9uZW50ZSBub24gbWUgc3Rlc3NvIHZ1b2wgZGlyZSBjaGUgaSBjb21wb25lbnRpIGRpIHZhbGlkYXppb25lIGludGVybmkgc3Rhbm5vIHJpY2hpYW1hbmRvXHJcbiAgICAgICAgLy8gcXVlc3RvIHZhbGlkYXRvciwgbWEgZGFsIGxvcm8gcHVudG8gZGkgdmlzdGEgbm9uIHNlIG5lIGRldm9ubyBwcmVvY2N1cGFyZSBxdWluZGkgZmFjY2lvIGZpbnRhIG5vbiBjaSBzaWFubyBlcnJvcmkuXHJcbiAgICAgICAgLy8gU2UgaW52ZWNlIHZlbmdvIHJpY2hpYW1hdG8gZGlyZXR0YW1lbnRlIHNpZ25pZmljYSBjaGUgw6ggaWwgZm9ybSBpbiBjdWkgdml2ZSBlcy1wYXJhbWV0ZXJzIGUgbMOsIGRldm8gZWZmZXR0dWFyZSBsYSB2YWxpZGF6aW9uZVxyXG4gICAgICAgIGxldCBjb250cm9sID0gdGhpcy5pbmouZ2V0KE5nQ29udHJvbCwgbnVsbCk/LmNvbnRyb2w7XHJcbiAgICAgICAgaWYgKGMgIT0gY29udHJvbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMuUGFyYW1ldGVycyAmJiB0aGlzLlBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLlBhcmFtZXRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKCF0LnZpc2libGUpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGVtcHR5TnVtYmVyID0gdC50eXBlID09ICdudW1iZXInICYmICh0LnZhbHVlID09IG51bGwgfHwgdC52YWx1ZSA9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVtcHR5Tm9uTnVtYmVyID0gdC50eXBlICE9ICdudW1iZXInICYmICF0LnZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHQucmVxdWlyZWQgJiYgKGVtcHR5TnVtYmVyIHx8IGVtcHR5Tm9uTnVtYmVyKSlcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodC52YWx1ZSAmJiB0LnR5cGUgPT0gJ251bWJlcicpXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBuZXcgUmVnRXhwKHQucGF0dGVybiB8fCAvXlsrLV0/WzAtOV0qWyxdP1swLTldKyQvKS50ZXN0KHQudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0LnZhbHVlICYmIHQucGF0dGVybilcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IG5ldyBSZWdFeHAodC5wYXR0ZXJuKS50ZXN0KHQudmFsdWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWxpZClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHsgXCJlcy1wYXJhbWV0ZXJzXCI6IHZhbGlkIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQaXBlbGluZSBkaSBBbmd1bGFyXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm4pOiB2b2lkIHsgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGlwZWxpbmUgZGkgQW5ndWxhclxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbik6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSBnZXN0aXJlIGlsIG1vZGVsbG8gaW4gdXNjaXRhIGUgcHJvcGFnYXJsbyBzdWwgYmluZGluZyBuZ01vZGVsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5QYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIC8vIFNlIGNpIHNvbm8gZGVsbGUgbW9kaWZpY2hlIGFpIGJpbmRpbmcgcG90cmViYmVybyBlc3NlcmUgY2FtYmlhdGkgaSByZXF1aXJlZC4gUmljcmVvIHR1dHRpIGkgY29tcG9uZW50aSBlIHJpLWlkcmF0byBsYSBjYWNoZSBkZWkgcGFyYW1ldHJpXHJcbiAgICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLnJldmlld1BhcmFtZXRlcnNCaW5kaW5ncygpO1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoKGNoID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuUGFyYW1ldGVycy5maW5kSW5kZXgodCA9PiB0LmlkID09IGNoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUGFyYW1ldGVyc1tpbmRleF0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuUGFyYW1ldGVyc1tpbmRleF0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUGFyYW1ldGVyc0NhY2hlW2NoXSA9IHRoaXMuUGFyYW1ldGVyc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdGh5Q2xlYW5TaGFsdE5vdEJsYW5rTWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuUGFyYW1ldGVycykpO1xyXG5cclxuICAgICAgICAvLyBBZ2dpdXN0byBsZSBtb2RhbGl0w6AgZGkgZnVuemlvbmFtZW50byBkZWkgcGFyYW1ldHJpIGxpc3RhLiBDaGUgaW50ZXJuYW1lbnRlIGZ1bnppb25hbm8gc2VtcHJlIGNvbiB1bmEgbGlzdGEgZGkgdmFsb3JpXHJcbiAgICAgICAgaWYgKHRoaXMuUGFyYW1ldGVycyAmJiB0aGlzLlBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLlBhcmFtZXRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuUGFyYW1ldGVyc0NhY2hlW3QuaWRdID0gdDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodC50eXBlID09IFwiZW51bVwiICYmIHRoaXMuTGlzdEZvcm1hdCA9PSAnQ29tbWFTZXBhcmF0ZWQnICYmIHQudmFsdWUgJiYgQXJyYXkuaXNBcnJheSh0LnZhbHVlKSlcclxuICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdC52YWx1ZS5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGh5Q2xlYW5TaGFsdE5vdEJsYW5rTWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmltdW92ZSBpbCBwYXJhbWV0cm8gc2VsZXppb25hdG8gZSBwcm9wYWdhIGlsIG1vZGVsbG9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtHZW5lcmljUGFyYW1ldGVyfSBwYXIgUGFyYW1ldHJvIGRhIHJpbXVvdmVyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlUGFyYW1ldGVyKHBhcjogR2VuZXJpY1BhcmFtZXRlcikge1xyXG4gICAgICAgIHRoaXMuUGFyYW1ldGVycy5zcGxpY2UodGhpcy5QYXJhbWV0ZXJzLmluZGV4T2YocGFyKSwgMSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSaXZlZGUgaSBiaW5kaW5ncyBkZWkgcGFyYW1ldHJpIGluIGJhc2UgYSBsb3JvIGV2ZW50dWFsaSBlc3ByZXNzaW9uaSBkaSBjb250cm9sbG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ1tdfSBsaXN0YSBjb24gZ2xpIGlkIGRlaSBwYXJhbWV0cmkgY2hlIHNvbm8gc3RhdGkgbW9kaWZpY2F0aVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJldmlld1BhcmFtZXRlcnNCaW5kaW5ncygpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgbGV0IGNoYW5nZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuUGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuUGFyYW1ldGVyc1tpXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwLnJlcXVpcmVkZXhwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHJldlJlcSA9IHAucmVxdWlyZWQ7XHJcbiAgICAgICAgICAgICAgICBwLnJlcXVpcmVkID0gdGhpcy5ldmFsdWF0ZShwLnJlcXVpcmVkZXhwKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2UmVxICE9IHAucmVxdWlyZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHAuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwLnZpc2libGVleHApIHtcclxuICAgICAgICAgICAgICAgIGxldCBwcmV2VmlzaSA9IHAudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgIHAudmlzaWJsZSA9IHRoaXMuZXZhbHVhdGUocC52aXNpYmxlZXhwKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2VmlzaSAhPSBwLnZpc2libGUpXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHAuaWQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWx1dGEgdW4nZXNwcmVzc2lvbmUgaW4gYmFzZSBhaSBwYXJhbWV0cmkgcHJlc2VudGkgbmVsIG1vZGVsbG8gYXR0dWFsZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gZXhwciBFc3ByZXNzaW9uZSBkYSB2YWx1dGFyZSBzY3JpdHRhIG5lbCBmb3JtYXRvIChyaXBldGliaWxlKSBcIklEICg9PXwhPXw8fD58Pj18PD0pIChgdmFsb3JlYCB8IG51bGwgfCB0cnVlIHwgZmFsc2UgfCBYWFgsWFhYKVwiIHNlcGFyYXRvIGV2ZW50dWFsbWVudGUgZGEgJiYgZWQgfHxcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgKip0cnVlKiogc2UgbGEgY29uZGl6aW9uZSDDqCB2ZXJpZmljYXRhLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV2YWx1YXRlKGV4cHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHZhciByZWdleCA9IC9cXHM/KFthLXpBLVowLTlfLV0rKVxccz8oIT18PT18PHw+fDw9fD49KVxccz8oYFteYF0rYHxgYHxudWxsfFswLTksXSt8dHJ1ZXxmYWxzZSkvZ207XHJcblxyXG4gICAgICAgIHZhciBtYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIHZhciBmaW5hbEV4cHIgPSBleHByO1xyXG4gICAgICAgIHdoaWxlIChtYXRjaGVzID0gcmVnZXguZXhlYyhleHByKSkge1xyXG4gICAgICAgICAgICB2YXIgZnVsbE1hdGNoID0gbWF0Y2hlc1swXS50cmltKCk7XHJcbiAgICAgICAgICAgIHZhciBpZCA9IG1hdGNoZXNbMV0udHJpbSgpO1xyXG4gICAgICAgICAgICB2YXIgb3BlcmF0aW9uID0gbWF0Y2hlc1syXS50cmltKCk7XHJcbiAgICAgICAgICAgIGxldCBiVmFsdWUgPSBtYXRjaGVzWzNdLnRyaW0oKS50cmltKCk7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IG1hdGNoZXNbM10udHJpbSgpLnRyaW0oKS5yZXBsYWNlKCdgJywgJycpLnJlcGxhY2UoJ2AnLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBmaW5hbEV4cHIgPSBmaW5hbEV4cHIucmVwbGFjZShmdWxsTWF0Y2gsIGB0aGlzLmNoZWNrVmFsdWUoJyR7aWR9JywgJyR7b3BlcmF0aW9ufScsICR7YlZhbHVlID09ICdudWxsJyA/ICdudWxsJyA6IGAnJHt2YWx1ZX0nYH0pYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZXZhbChmaW5hbEV4cHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdGl0dWlzY2UgbCdvcGVyYXppb25lIGRpIGNvbXBhcmF6aW9uZSBmcmEgdW4gc2luZ29sbyB2YWxvcmUgZGkgdW4gcGFyYW1ldHJvIGUgdW4gc3VvIHZhbG9yZSBkaSBjb25mcm9udG8gaW4gYmFzZSBhZCB1biBvcGVyYXRvcmVcclxuICAgICAqIFJpY2hpYW1hdGEgZGEgRVZBTFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IENoaWF2ZSBkZWwgcGFyYW1ldHJvIGRpIGN1aSB2ZXJpZmljYXJlIGlsIHZhbG9yZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yIE9wZXJhdG9yZSBjb24gY3VpIHZlcmlmaWNhcmUgaWwgdmFsb3JlOiA9PSwgIT0sID4sIDwsID49LCA8PVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFZhbG9yZSBkaSBjb25mcm9udG8gZGEgdXRpbGl6emFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyAqKnRydWUqKiBzZSBsYSBjb25kaXppb25lIMOoIHZlcmlmaWNhdGEsICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGVja1ZhbHVlKGtleTogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgdmFyIHJQYXIgPSB0aGlzLlBhcmFtZXRlcnNDYWNoZVtrZXldO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoclBhci50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiZW51bVwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmFsKGBcIiR7dGhpcy5kZWZhdWx0SWZudWxsT3JVbmRlZmluZWQoclBhci52YWx1ZSwgYGApfVwiICR7b3BlcmF0b3J9IFwiJHt0aGlzLmRlZmF1bHRJZm51bGxPclVuZGVmaW5lZCh2YWx1ZSwgYGApfVwiYCk7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmFsKGAke3RoaXMuZGVmYXVsdElmbnVsbE9yVW5kZWZpbmVkKHJQYXIudmFsdWUsIGBgKS50b1N0cmluZygpfSAke29wZXJhdG9yfSAke3RoaXMuZGVmYXVsdElmbnVsbE9yVW5kZWZpbmVkKHZhbHVlLCBgYCl9YCk7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2YWwoYCR7dGhpcy5kZWZhdWx0SWZudWxsT3JVbmRlZmluZWQoclBhci52YWx1ZSwgJ1wiXCInLCB0cnVlKS5yZXBsYWNlKCcsJywgJy4nKX0gJHtvcGVyYXRvcn0gJHt0aGlzLmRlZmF1bHRJZm51bGxPclVuZGVmaW5lZCh2YWx1ZSwgJ1wiXCInLCB0cnVlKS5yZXBsYWNlKCcsJywgJy4nKX1gKTtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhckRhdGVDb252ID0gYHRoaXMuZGF0ZXMuZ2V0RGF0ZUNvbnZlcnRpb24oXCIke3JQYXIudmFsdWV9XCIpYDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsRGF0ZUNvbnYgPSBgdGhpcy5kYXRlcy5nZXREYXRlQ29udmVydGlvbihcIiR7dmFsdWV9XCIpYDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIj09XCI6IHJldHVybiBldmFsKGAke3BhckRhdGVDb252fSA9PSAke3ZhbERhdGVDb252fSB8fCAoJHtwYXJEYXRlQ29udn0gIT0gbnVsbCAmJiAke3BhckRhdGVDb252fS5pc1NhbWUoJHt2YWxEYXRlQ29udn0pKWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiIT1cIjogcmV0dXJuIGV2YWwoYCR7cGFyRGF0ZUNvbnZ9ICE9ICR7dmFsRGF0ZUNvbnZ9ICYmICR7cGFyRGF0ZUNvbnZ9ICE9IG51bGwgJiYgISR7cGFyRGF0ZUNvbnZ9LmlzU2FtZSgke3ZhbERhdGVDb252fSlgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIj5cIjogcmV0dXJuIGV2YWwoYCR7cGFyRGF0ZUNvbnZ9ICE9IG51bGwgJiYgJHt2YWxEYXRlQ29udn0gIT0gbnVsbCAmJiAke3BhckRhdGVDb252fS5pc0FmdGVyKCR7dmFsRGF0ZUNvbnZ9KWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiPFwiOiByZXR1cm4gZXZhbChgJHtwYXJEYXRlQ29udn0gIT0gbnVsbCAmJiAke3ZhbERhdGVDb252fSAhPSBudWxsICYmICR7cGFyRGF0ZUNvbnZ9LmlzQmVmb3JlKCR7dmFsRGF0ZUNvbnZ9KWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiPj1cIjogcmV0dXJuIGV2YWwoYCR7cGFyRGF0ZUNvbnZ9ICE9IG51bGwgJiYgJHt2YWxEYXRlQ29udn0gIT0gbnVsbCAmJiAoJHtwYXJEYXRlQ29udn0uaXNBZnRlcigke3ZhbERhdGVDb252fSkgfHwgJHtwYXJEYXRlQ29udn0/LmlzU2FtZSgke3ZhbERhdGVDb252fSkpYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCI8PVwiOiByZXR1cm4gZXZhbChgJHtwYXJEYXRlQ29udn0gIT0gbnVsbCAmJiAke3ZhbERhdGVDb252fSAhPSBudWxsICYmICgke3BhckRhdGVDb252fS5pc0JlZm9yZSgke3ZhbERhdGVDb252fSkgfHwgJHtwYXJEYXRlQ29udn0/LmlzU2FtZSgke3ZhbERhdGVDb252fSkpYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkVycm9yaSBuZWxsYSB2YWx1dGF6aW9uZSBkZWxsJ2VzcHJlc3Npb25lLiBGYWxsYmFjayBhIGZhbHNlXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBgQGVzZmFlbnphL3BhcmFtZXRlcnM6IFRpcG8gcGFyYW1ldHJvICR7a2V5fSBub24gcmljb25vc2NpdXRvOiAke3JQYXIudHlwZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGRlZmF1bHRJZm51bGxPclVuZGVmaW5lZDxUPihpdGVtOiBULCBkZmx0OiBULCBlbXB0eVN0cmluZ0lzTnVsbDogYm9vbGVhbiA9IGZhbHNlKTogVCB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCB8fCBpdGVtID09IHVuZGVmaW5lZCB8fCBpdGVtLnRvU3RyaW5nKCkgPT0gJ251bGwnIHx8IChlbXB0eVN0cmluZ0lzTnVsbCAmJiBpdGVtLnRvU3RyaW5nKCkgPT0gXCJcIikpXHJcbiAgICAgICAgICAgIHJldHVybiBkZmx0O1xyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgZ2V0U291cmNlKHBhcmFtZXRlcjogR2VuZXJpY1BhcmFtZXRlciwgc2VhcmNoOiBzdHJpbmcsIGJ5aWQ6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHsgaWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyB9W10+IHtcclxuICAgICAgICBpZiAoIXRoaXMuQXV0b0NvbXBsZXRlRGF0YVJldHJpZXZlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJAZm9ybXMtYW5kLXZhbGlkYXRpb25zOiBmdW56aW9uZSBkaSBkYXRhcmV0cmlldmUgbm9uIGltcG9zdGF0YSBwZXIgdW4gcGFyYW1ldHJvIGF1dG9jb21wbGV0ZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkF1dG9Db21wbGV0ZURhdGFSZXRyaWV2ZShwYXJhbWV0ZXIsIHNlYXJjaCwgYnlpZCk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiKCFQYXJhbWV0ZXJzIHx8IFBhcmFtZXRlcnMubGVuZ3RoID09IDApICYmIEVtcHR5TWVzc2FnZVwiPlxyXG4gICAgPGVtPnt7RW1wdHlNZXNzYWdlfX08L2VtPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJQYXJhbWV0ZXJzICYmIFBhcmFtZXRlcnMubGVuZ3RoID4gMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgKm5nRm9yPVwibGV0IHBhciBvZiBQYXJhbWV0ZXJzOyBsZXQgaT0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdDtcIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tMF09XCJMYXN0UGFyYW1ldGVyTm9NYXJnaW4gJiYgbGFzdFwiIFtoaWRkZW5dPVwiIXBhci52aXNpYmxlXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLXt7TGFiZWxDb2xXaWR0aH19IG0tdC01XCI+PHNwYW4gKm5nSWY9XCJSZW1vdmFsXCIgY2xhc3M9XCJmYSBmYS1yZW1vdmUgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwicmVtb3ZlUGFyYW1ldGVyKHBhcilcIj4mbmJzcDs8L3NwYW4+e3twYXIuZGVzY3JpcHRpb259fXt7cGFyLnJlcXVpcmVkID8gJyonIDogJyd9fTo8L2xhYmVsPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCIgKm5nSWY9XCJwYXIudHlwZSA9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgPGZvcm0tZGF0ZSBbRm9ybV09XCJGb3JtXCIgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbcmVxdWlyZWRdPVwicGFyLnJlcXVpcmVkXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiICN2YWxpZGF0b3I+PC9mb3JtLWRhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLVNlIHN0cmluZ2EtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCIgKm5nSWY9XCJwYXIudHlwZSA9PSAnc3RyaW5nJ1wiPlxyXG4gICAgICAgICAgICA8Zm9ybS1pbnB1dCBbRm9ybV09XCJGb3JtXCIgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbcmVxdWlyZWRdPVwicGFyLnJlcXVpcmVkXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiICN2YWxpZGF0b3I+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TZSBudW1lcm8tLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCIgKm5nSWY9XCJwYXIudHlwZSA9PSAnbnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICA8Zm9ybS1pbnB1dCBbRm9ybV09XCJGb3JtXCIgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbcmVxdWlyZWRdPVwicGFyLnJlcXVpcmVkXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiICN2YWxpZGF0b3IgcGF0dGVybj1cInt7cGFyLnBhdHRlcm4gfHwgJ15bKy1dP1swLTldKlssXT9bMC05XSskJ319XCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TZSBib29sZWFuLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fSBtLXQtNVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ2Jvb2xlYW4nXCI+XHJcbiAgICAgICAgICAgIDxmb3JtLWNoZWNrYm94IFtGb3JtXT1cIkZvcm1cIiBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtSZWFkb25seV09XCJSZWFkb25seSB8fCBwYXIuaXNyZWFkb25seVwiIFsobmdNb2RlbCldPVwicGFyLnZhbHVlXCIgbmFtZT1cInBhcnt7aX19XCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yPjwvZm9ybS1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU2UgZW51bSBzaW5nbGUgc2VsZWN0LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ2VudW0nICYmICFwYXIubXVsdGllbnVtICYmICFwYXIuc291cmNlYXBpXCI+XHJcbiAgICAgICAgICAgIDxmb3JtLXNlbGVjdCBbRm9ybV09XCJGb3JtXCIgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbcmVxdWlyZWRdPVwicGFyLnJlcXVpcmVkXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiICN2YWxpZGF0b3IgW1NvdXJjZV09XCJwYXIuZW51bXZhbHVlc1wiPjwvZm9ybS1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLVNlIGVudW0gbXVsdGkgc2VsZWN0LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiICpuZ0lmPVwicGFyLnR5cGUgPT0gJ2VudW0nICYmIHBhci5tdWx0aWVudW0gJiYgIXBhci5zb3VyY2VhcGlcIj5cclxuICAgICAgICAgICAgPGZvcm0tbXVsdGlzZWxlY3QgW0Zvcm1dPVwiRm9ybVwiIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1VzZUNvbW1hU2VwYXJhdGVkTGlzdF09XCJ0cnVlXCIgW1NlbGVjdExhYmVsXT1cIignU2VsZWN0JyB8IGxvY2FsaXplIDogbGMpICsgJy4uLidcIiBbKG5nTW9kZWwpXT1cInBhci52YWx1ZVwiIG5hbWU9XCJwYXJ7e2l9fVwiIFtSZWFkb25seV09XCJSZWFkb25seSB8fCBwYXIuaXNyZWFkb25seVwiIFtTb3VyY2VdPVwicGFyLmVudW12YWx1ZXNcIiBbcmVxdWlyZWRdPVwicGFyLnJlcXVpcmVkXCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIiAjdmFsaWRhdG9yPjwvZm9ybS1tdWx0aXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU2UgZW51bSBhdXRvY29tcGxldGUtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCIgKm5nSWY9XCJwYXIudHlwZSA9PSAnZW51bScgJiYgIXBhci5tdWx0aWVudW0gJiYgcGFyLnNvdXJjZWFwaVwiPlxyXG4gICAgICAgICAgICA8Zm9ybS1hdXRvY29tcGxldGUgW0Zvcm1dPVwiRm9ybVwiIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1BsYWNlaG9sZGVyXT1cIignU2VsZWN0JyB8IGxvY2FsaXplIDogbGMpICsgJy4uLidcIiBbKG5nTW9kZWwpXT1cInBhci52YWx1ZVwiIG5hbWU9XCJwYXJ7e2l9fVwiIFtSZWFkb25seV09XCJSZWFkb25seSB8fCBwYXIuaXNyZWFkb25seVwiIFtTZWFyY2hGdW5jdGlvbl09XCJnZXRTb3VyY2UuYmluZCh0aGlzLCBwYXIpXCIgW3JlcXVpcmVkXT1cInBhci5yZXF1aXJlZFwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCk7XCIgI3ZhbGlkYXRvcj48L2Zvcm0tYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TZSBlbnVtIG11bHRpc2VsZWN0IGF1dG9jb21wbGV0ZS0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tJbnB1dENvbFdpZHRofX1cIiAqbmdJZj1cInBhci50eXBlID09ICdlbnVtJyAmJiBwYXIubXVsdGllbnVtICYmIHBhci5zb3VyY2VhcGlcIj5cclxuICAgICAgICAgICAgPGZvcm0tYXV0b2NvbXBsZXRlIFtGb3JtXT1cIkZvcm1cIiBbSGlkZUNob2ljZXNPblNlbGVjdGlvbl09XCJBdXRvY29tcGxldGVIaWRlQ2hvaWNlc09uU2VsZWN0aW9uXCIgW011bHRpXT1cInRydWVcIiBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtQbGFjZWhvbGRlcl09XCIoJ1NlbGVjdCcgfCBsb2NhbGl6ZSA6IGxjKSArICcuLi4nXCIgWyhuZ01vZGVsKV09XCJwYXIudmFsdWVcIiBuYW1lPVwicGFye3tpfX1cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHkgfHwgcGFyLmlzcmVhZG9ubHlcIiBbU2VhcmNoRnVuY3Rpb25dPVwiZ2V0U291cmNlLmJpbmQodGhpcywgcGFyKVwiIFtyZXF1aXJlZF09XCJwYXIucmVxdWlyZWRcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiICN2YWxpZGF0b3I+PC9mb3JtLWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -25,7 +25,7 @@ export class GenericParameter {
|
|
|
25
25
|
this.multienum = multienum;
|
|
26
26
|
this.sourceapi = sourceapi;
|
|
27
27
|
this.pageddata = pageddata;
|
|
28
|
-
this.type = type == 'enum' ?
|
|
28
|
+
this.type = type == 'enum' ? null : type;
|
|
29
29
|
this.visible = true;
|
|
30
30
|
this.enumtype = type == 'enum' ? type : "";
|
|
31
31
|
this.isreadonly = false;
|
|
@@ -35,4 +35,4 @@ export class GenericParameter {
|
|
|
35
35
|
this.value = v_default;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJpY1BhcmFtZXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhcmFtZXRlcnMvc3JjL2xpYi9tb2RlbHMvR2VuZXJpY1BhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFFekI7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFlBQ1csRUFBVSxFQUNWLFdBQW1CLEVBQ25CLE9BQWUsRUFDdEIsSUFBdUQsRUFDaEQsUUFBaUIsRUFDeEIsWUFBaUIsSUFBSSxFQUNkLGFBQW9ELEVBQUUsRUFDdEQsU0FBbUIsRUFDbkIsU0FBa0IsRUFDbEIsU0FBbUI7UUFUbkIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFFZixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBRWpCLGVBQVUsR0FBVixVQUFVLENBQTRDO1FBQ3RELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBRTFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1FBRWhHLElBQUksU0FBUyxJQUFJLElBQUk7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztDQTRCSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDbGFzc2UgY2hlIHJhcHByZXNlbnRhIHVuIHBhcmFtZXRybyBnZW5lcmljb1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNQYXJhbWV0ZXIge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIENvZGljZSBkZWwgcGFyYW1ldHJvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRGVzY3JpemlvbmUgZGVsIHBhcmFtZXRyb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdHRlcm4gUGF0dGVybiBkaSB2YWxpZGF6aW9uZVxyXG4gICAgICogQHBhcmFtIHsnZGF0ZScgfCAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2xlYW4nIHwgJ2VudW0nfSB0eXBlIFRpcG8gZGkgaW5wdXQgXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlcXVpcmVkIEluZGljYSBzZSBpbCB2YWxvcmUgw6ggb2JibGlnYXRvcmlvIG8gbWVub1xyXG4gICAgICogQHBhcmFtIHthbnl9IHZfZGVmYXVsdCBWYWxvcmUgZGkgZGVmYXVsdCBwZXIgcXVlc3RvIFBhcmFtZXRyb1xyXG4gICAgICogQHBhcmFtIHt7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdfSBlbnVtdmFsdWVzIFF1YWxvcmEgaWwgKip0eXBlKiogZm9zc2UgZGkgdGlwbyAqKmVudW0qKiwgcXVpIGRldm9ubyBlc3NlcmNpIHR1dHRpIGkgdmFsb3JpIGNoZSBwdcOyIGFzc3VtZXJlIFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBtdWx0aWVudW0gUXVhbG9yYSBpbCAqKnR5cGUqKiBmb3NzZSBkaSB0aXBvICoqZW51bSoqLCBpbmRpY2Egc2Ugw6ggcG9zc2liaWxlIHNlbGV6aW9uYXJlIHBpw7kgdmFsb3JpIChtdWx0aXNlbGVjdClcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VhcGkgTmVpIGNhc2kgaW4gY3VpIGlsICoqdHlwZSoqIMOoICoqZW51bSoqIGluZGljYSBsJ2FwaSBkYSBjdWkgcmVjdXBlcmFyZSBpIHZhbG9yaSBkYSBiaW5kYXJlIGFsbGEgc2VsZWN0IG8gYWxsYSBtdWx0aXNlbGVjdFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBwYWdlZGRhdGEgTmVpIGNhc2kgaW4gY3VpIGlsICoqdHlwZSoqIMOoICoqZW51bSoqIGluZGljYSBjaGUgbCdhcGkgc3BlY2lmaWNhdGEgZXZlbnR1YWxtZXRuZSBkYSAqKnNvdXJjZWFwaSoqIMOoIHBhZ2luYXRhXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBpZDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBwYXR0ZXJuOiBzdHJpbmcsXHJcbiAgICAgICAgdHlwZTogJ2RhdGUnIHwgJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdib29sZWFuJyB8ICdlbnVtJyxcclxuICAgICAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4sXHJcbiAgICAgICAgdl9kZWZhdWx0OiBhbnkgPSBudWxsLFxyXG4gICAgICAgIHB1YmxpYyBlbnVtdmFsdWVzOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW10sXHJcbiAgICAgICAgcHVibGljIG11bHRpZW51bT86IGJvb2xlYW4sXHJcbiAgICAgICAgcHVibGljIHNvdXJjZWFwaT86IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgcGFnZWRkYXRhPzogYm9vbGVhbikge1xyXG5cclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlID09ICdlbnVtJyA/IG51bGwgOiB0eXBlO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbnVtdHlwZSA9IHR5cGUgPT0gJ2VudW0nID8gdHlwZSA6IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pc3JlYWRvbmx5ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5lbnVtdHlwZSAmJiBlbnVtdmFsdWVzLmxlbmd0aCAhPSAwKVxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiaW1wb3NzaWJpbGUgZ2VzdGlyZSB2YWxvcmkgZGkgZGl6aW9uYXJpbyBwZXIgdW4gcGFyYW1ldHJvIG5vbiBkaSB0aXBvIGVudW1cIik7XHJcblxyXG4gICAgICAgIGlmICh2X2RlZmF1bHQgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZfZGVmYXVsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGlwbyBkaSBkYXRvIHJhcHByZXNlbnRhdG8gZGEgcXVlc3RvIHBhcmFtZXRybyAqL1xyXG4gICAgcHVibGljIHR5cGU/OiAnZGF0ZScgfCAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2xlYW4nIHwgJ2VudW0nO1xyXG5cclxuICAgIC8qKiBUeXBlY29kZSBsYXRvIEMjIGNoZSByYXBwcmVzZW50YSBpbCB0aXBvIGRpIGRhdG8gKi9cclxuICAgIHB1YmxpYyB0eXBlY29kZTogbnVtYmVyO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgaWwgY2FtcG8gc3BlY2lmaWNhdG8gZGV2J2Vzc2VyZSBkaSBzb2xhIGxldHR1cmEgbyBtZW5vICovXHJcbiAgICBwdWJsaWMgaXNyZWFkb25seTogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogVmFsb3JlIGRlbCBwYXJhbWV0cm8gKi9cclxuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgcXVlc3RvIHBhcmFtZXRybyBkZXYnZXNzZXJlIGluc2VyaXRvIG8gbm8uIEluIGNhc28gY29udHJhcmlvIHZpZW5lIHNlbXBsaWNlbWVudGUgbmFzY29zdG8gKi9cclxuICAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKiBUaXBvIEVudW0sIHZhbG9yaXp6YXRvIGRhbCBCYWNrZW5kICovXHJcbiAgICBwdWJsaWMgZW51bXR5cGU6IHN0cmluZztcclxuXHJcbiAgICAvKiogVGlwbyBEaXppb25hcmlvLCB2YWxvcml6emF0byBkYWwgQmFja2VuZCAqL1xyXG4gICAgcHVibGljIGRpY3R0eXBlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEVzcHJlc3Npb25lIGRpIG9iYmxpZ2F0b3JpZXTDoCAqL1xyXG4gICAgcHVibGljIHJlcXVpcmVkZXhwPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBFc3ByZXNzaW9uZSBkaSB2aXNpYmlsaXTDoCAqL1xyXG4gICAgcHVibGljIHZpc2libGVleHA/OiBzdHJpbmc7XHJcbn0iXX0=
|
|
@@ -70,6 +70,8 @@ class EsParametersComponent {
|
|
|
70
70
|
this.Removal = false;
|
|
71
71
|
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
72
72
|
this.Readonly = false;
|
|
73
|
+
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
74
|
+
this.ListFormat = 'Array';
|
|
73
75
|
/** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */
|
|
74
76
|
this.Form = null;
|
|
75
77
|
/** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */
|
|
@@ -97,6 +99,9 @@ class EsParametersComponent {
|
|
|
97
99
|
t.value = t.value.toString().toLowerCase() === "true";
|
|
98
100
|
if (t.enumtype || t.dicttype)
|
|
99
101
|
t.type = 'enum';
|
|
102
|
+
// Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori
|
|
103
|
+
if (t.type == 'enum' && this.ListFormat == 'CommaSeparated' && t.value && !Array.isArray(t.value))
|
|
104
|
+
t.value = t.value.split(',').map(t => t.trim());
|
|
100
105
|
});
|
|
101
106
|
this.reviewParametersBindings();
|
|
102
107
|
}
|
|
@@ -161,6 +166,14 @@ class EsParametersComponent {
|
|
|
161
166
|
});
|
|
162
167
|
}
|
|
163
168
|
var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));
|
|
169
|
+
// Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori
|
|
170
|
+
if (this.Parameters && this.Parameters.length > 0) {
|
|
171
|
+
this.Parameters.forEach(t => {
|
|
172
|
+
this.ParametersCache[t.id] = t;
|
|
173
|
+
if (t.type == "enum" && this.ListFormat == 'CommaSeparated' && t.value && Array.isArray(t.value))
|
|
174
|
+
t.value = t.value.join(',');
|
|
175
|
+
});
|
|
176
|
+
}
|
|
164
177
|
this.propagateChange(thyCleanShaltNotBlankMe);
|
|
165
178
|
}
|
|
166
179
|
/**
|
|
@@ -275,7 +288,7 @@ class EsParametersComponent {
|
|
|
275
288
|
}
|
|
276
289
|
}
|
|
277
290
|
EsParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
278
|
-
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
291
|
+
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", ListFormat: "ListFormat", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
279
292
|
{ provide: LocalizationService, useClass: EsParametersLoc },
|
|
280
293
|
{
|
|
281
294
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -317,6 +330,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
317
330
|
type: Input
|
|
318
331
|
}], Readonly: [{
|
|
319
332
|
type: Input
|
|
333
|
+
}], ListFormat: [{
|
|
334
|
+
type: Input
|
|
320
335
|
}], Form: [{
|
|
321
336
|
type: Input
|
|
322
337
|
}], AutocompleteHideChoicesOnSelection: [{
|
|
@@ -379,7 +394,7 @@ class GenericParameter {
|
|
|
379
394
|
this.multienum = multienum;
|
|
380
395
|
this.sourceapi = sourceapi;
|
|
381
396
|
this.pageddata = pageddata;
|
|
382
|
-
this.type = type == 'enum' ?
|
|
397
|
+
this.type = type == 'enum' ? null : type;
|
|
383
398
|
this.visible = true;
|
|
384
399
|
this.enumtype = type == 'enum' ? type : "";
|
|
385
400
|
this.isreadonly = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-parameters.mjs","sources":["../../../projects/parameters/src/lib/es_parameters.component.loc.ts","../../../projects/parameters/src/lib/es_parameters.component.ts","../../../projects/parameters/src/lib/es_parameters.component.html","../../../projects/parameters/src/lib/es_parameters.module.ts","../../../projects/parameters/src/lib/models/GenericParameter.ts","../../../projects/parameters/src/public-api.ts","../../../projects/parameters/src/esfaenza-parameters.ts"],"sourcesContent":["import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n/**\r\n * Classe di localizzazione per il componente **EsParametersComponent**\r\n */\r\n@Injectable()\r\nexport class EsParametersLoc extends LocalizationService {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}","// Angular\r\nimport { ControlValueAccessor, UntypedFormControl, NgControl, NgForm, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { ChangeDetectorRef, Component, forwardRef, Injector, Input } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { DateService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Classi\r\nimport { GenericParameter } from './models/GenericParameter';\r\n\r\n// Applicazione\r\nimport { EsParametersLoc } from \"./es_parameters.component.loc\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n/** Componente che permette di graficare una lista di **GenericParameter** come Input in base al loro tipo specifico */\r\n@Component({\r\n selector: \"es-parameters\",\r\n providers: [\r\n { provide: LocalizationService, useClass: EsParametersLoc },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n }],\r\n templateUrl: \"./es_parameters.component.html\"\r\n})\r\nexport class EsParametersComponent implements ControlValueAccessor, Validator {\r\n\r\n /** Modello del componente su cui vengono effettuate le graficazioni */\r\n public Parameters: GenericParameter[];\r\n\r\n /** Cache per fare lookup rapidi in fase di valutazione espressioni di visibilità e obbligatorietà */\r\n private ParametersCache: {[id: string]: GenericParameter};\r\n\r\n /**\r\n * Pipeline di Angular \r\n * \r\n * @ignore\r\n */\r\n propagateChange = (_: any) => { };\r\n\r\n /** Indica che l'ultimo parametro non deve avere margine in fondo */\r\n @Input() LastParameterNoMargin: boolean = false;\r\n\r\n /** col-md-X per la label */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Input a cui collegare la variabile **submitted** del form all'interno del quale viene utilizzato questo componente */\r\n @Input() submitted: boolean = false;\r\n\r\n /** Valore da mostrare qualora non fossero ancora ricevuti i **Parameters** da mostrare */\r\n @Input() EmptyMessage: string = \"\";\r\n\r\n /** Permette di rimuovere i parametri dalla lista cliccando sulla X davanti alla Label */\r\n @Input() Removal: boolean = false;\r\n\r\n /** Indica se i componenti di Input generati sono Readonly o no */\r\n @Input() Readonly: boolean = false;\r\n\r\n /** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */\r\n @Input() Form : NgForm = null;\r\n\r\n /** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */\r\n @Input() AutocompleteHideChoicesOnSelection: boolean = false;\r\n\r\n /** Funzione da utilizzare per tirare fuori i dati di un autocomplete */\r\n @Input() AutoCompleteDataRetrieve: (parameter: GenericParameter, search: string, byid: boolean) => Observable<{ id: string, description: string }[]>\r\n\r\n /** Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private utiExts: UtilityService, public lc: LocalizationService, public cdr: ChangeDetectorRef, private inj: Injector, public dates: DateService) { }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public writeValue(obj): void {\r\n this.Parameters = obj;\r\n this.ParametersCache = {};\r\n if (!this.Parameters)\r\n return;\r\n\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if(!t.typecode && !t.type)\r\n console.warn(\"Non è stato specificato né un type né un typecode\");\r\n\r\n if (t.typecode && !t.type)\r\n t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.typecode && t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))\r\n console.warn(\"Rilevate inconsistenze fra il tipo \" + t.type + \" e il tipo \" + this.utiExts.getJsTypeFromTypeCode(t.typecode));\r\n\r\n if (t.type == \"boolean\")\r\n t.value = (<string>t.value.toString()).toLowerCase() === \"true\";\r\n\r\n if (t.enumtype || t.dicttype)\r\n t.type = 'enum';\r\n });\r\n\r\n this.reviewParametersBindings();\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n validate(c: UntypedFormControl): any {\r\n // Se la validazione è richiamata da un componente non me stesso vuol dire che i componenti di validazione interni stanno richiamando\r\n // questo validator, ma dal loro punto di vista non se ne devono preoccupare quindi faccio finta non ci siano errori.\r\n // Se invece vengo richiamato direttamente significa che è il form in cui vive es-parameters e lì devo effettuare la validazione\r\n let control = this.inj.get(NgControl, null)?.control;\r\n if (c != control)\r\n return null;\r\n\r\n let valid = true;\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n if(!t.visible)\r\n return;\r\n \r\n let emptyNumber = t.type == 'number' && (t.value == null || t.value == undefined);\r\n let emptyNonNumber = t.type != 'number' && !t.value\r\n\r\n if (t.required && (emptyNumber || emptyNonNumber))\r\n valid = false;\r\n else if (t.value && t.type == 'number')\r\n valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value.toString());\r\n else if (t.value && t.pattern)\r\n valid = new RegExp(t.pattern).test(t.value);\r\n });\r\n }\r\n\r\n if (valid)\r\n return null;\r\n return { \"es-parameters\": valid };\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnTouched(fn): void { }\r\n\r\n /**\r\n * Metodo che si occupa di gestire il modello in uscita e propagarlo sul binding ngModel\r\n */\r\n public changed() {\r\n if (!this.Parameters)\r\n return;\r\n\r\n // Se ci sono delle modifiche ai binding potrebbero essere cambiati i required. Ricreo tutti i componenti e ri-idrato la cache dei parametri\r\n var changes = this.reviewParametersBindings();\r\n if (changes.length > 0) {\r\n changes.forEach(ch => {\r\n let index = this.Parameters.findIndex(t => t.id == ch);\r\n this.Parameters[index] = JSON.parse(JSON.stringify(this.Parameters[index]));\r\n this.ParametersCache[ch] = this.Parameters[index];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));\r\n this.propagateChange(thyCleanShaltNotBlankMe);\r\n }\r\n\r\n /**\r\n * Rimuove il parametro selezionato e propaga il modello\r\n * \r\n * @param {GenericParameter} par Parametro da rimuovere\r\n */\r\n public removeParameter(par: GenericParameter) {\r\n this.Parameters.splice(this.Parameters.indexOf(par), 1);\r\n this.changed();\r\n }\r\n\r\n /**\r\n * Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo\r\n * \r\n * @returns {string[]} lista con gli id dei parametri che sono stati modificati\r\n */\r\n private reviewParametersBindings(): string[] {\r\n let changes = [];\r\n for (let i = 0; i < this.Parameters.length; i++) {\r\n var p = this.Parameters[i];\r\n\r\n if (p.requiredexp) {\r\n let prevReq = p.required;\r\n p.required = this.evaluate(p.requiredexp);\r\n if (prevReq != p.required)\r\n changes.push(p.id);\r\n }\r\n if (p.visibleexp) {\r\n let prevVisi = p.visible;\r\n p.visible = this.evaluate(p.visibleexp);\r\n if (prevVisi != p.visible)\r\n changes.push(p.id)\r\n }\r\n }\r\n return changes;\r\n }\r\n\r\n /**\r\n * Valuta un'espressione in base ai parametri presenti nel modello attuale\r\n * \r\n * @param expr Espressione da valutare scritta nel formato (ripetibile) \"ID (==|!=|<|>|>=|<=) (`valore` | null | true | false | XXX,XXX)\" separato eventualmente da && ed ||\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n private evaluate(expr: string): boolean {\r\n var regex = /\\s?([a-zA-Z0-9_-]+)\\s?(!=|==|<|>|<=|>=)\\s?(`[^`]+`|``|null|[0-9,]+|true|false)/gm;\r\n\r\n var matches: string[] = [];\r\n var finalExpr = expr;\r\n while (matches = regex.exec(expr)) {\r\n var fullMatch = matches[0].trim();\r\n var id = matches[1].trim();\r\n var operation = matches[2].trim();\r\n let bValue = matches[3].trim().trim();\r\n var value = matches[3].trim().trim().replace('`', '').replace('`', '');\r\n\r\n finalExpr = finalExpr.replace(fullMatch, `this.checkValue('${id}', '${operation}', ${bValue == 'null' ? 'null' : `'${value}'`})`);\r\n }\r\n\r\n return eval(finalExpr);\r\n }\r\n\r\n /**\r\n * Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore\r\n * Richiamata da EVAL\r\n * \r\n * @param {string} key Chiave del parametro di cui verificare il valore\r\n * @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=\r\n * @param {string} value Valore di confronto da utilizzare\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n public checkValue(key: string, operator: string, value: string): boolean {\r\n var rPar = this.ParametersCache[key];\r\n try {\r\n switch (rPar.type) {\r\n case \"string\":\r\n case \"enum\":\r\n return eval(`\"${this.defaultIfnullOrUndefined(rPar.value, ``)}\" ${operator} \"${this.defaultIfnullOrUndefined(value, ``)}\"`);\r\n case \"boolean\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, ``).toString()} ${operator} ${this.defaultIfnullOrUndefined(value, ``)}`);\r\n case \"number\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, '\"\"', true).replace(',', '.')} ${operator} ${this.defaultIfnullOrUndefined(value, '\"\"', true).replace(',', '.')}`);\r\n case \"date\":\r\n let parDateConv = `this.dates.getDateConvertion(\"${rPar.value}\")`;\r\n let valDateConv = `this.dates.getDateConvertion(\"${value}\")`;\r\n\r\n switch (operator) {\r\n\r\n case \"==\": return eval(`${parDateConv} == ${valDateConv} || (${parDateConv} != null && ${parDateConv}.isSame(${valDateConv}))`);\r\n case \"!=\": return eval(`${parDateConv} != ${valDateConv} && ${parDateConv} != null && !${parDateConv}.isSame(${valDateConv})`);\r\n case \">\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isAfter(${valDateConv})`);\r\n case \"<\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isBefore(${valDateConv})`);\r\n case \">=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isAfter(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n case \"<=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isBefore(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n console.warn(\"Errori nella valutazione dell'espressione. Fallback a false\");\r\n return false;\r\n }\r\n\r\n throw `@esfaenza/parameters: Tipo parametro ${key} non riconosciuto: ${rPar.type}`;\r\n }\r\n\r\n /** @ignore */\r\n private defaultIfnullOrUndefined<T>(item: T, dflt: T, emptyStringIsNull: boolean = false): T {\r\n if (item == null || item == undefined || item.toString() == 'null' || (emptyStringIsNull && item.toString() == \"\"))\r\n return dflt;\r\n return item;\r\n }\r\n\r\n /** @ignore */\r\n public getSource(parameter: GenericParameter, search: string, byid: boolean): Observable<{ id: string, description: string }[]> {\r\n if (!this.AutoCompleteDataRetrieve) {\r\n console.error(\"@forms-and-validations: funzione di dataretrieve non impostata per un parametro autocomplete\");\r\n return of([])\r\n }\r\n else\r\n return this.AutoCompleteDataRetrieve(parameter, search, byid);\r\n }\r\n}","<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"> </span>{{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && !par.sourceapi\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && !par.sourceapi\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [UseCommaSeparatedList]=\"true\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n <!--Se enum autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n <!--Se enum multiselect autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [HideChoicesOnSelection]=\"AutocompleteHideChoicesOnSelection\" [Multi]=\"true\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { LocalizationModule } from '@esfaenza/localizations';\r\nimport { EsParametersComponent } from './es_parameters.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [EsParametersComponent],\r\n imports: [\r\n CommonModule,\r\n LocalizationModule,\r\n FormsModule,\r\n FormsAndValidationsModule,\r\n ],\r\n exports: [EsParametersComponent]\r\n})\r\nexport class EsParametersModule {\r\n }\r\n","/**\r\n * Classe che rappresenta un parametro generico\r\n */\r\nexport class GenericParameter {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @param {string} id Codice del parametro\r\n * @param {string} description Descrizione del parametro\r\n * @param {string} pattern Pattern di validazione\r\n * @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input \r\n * @param {boolean} required Indica se il valore è obbligatorio o meno\r\n * @param {any} v_default Valore di default per questo Parametro\r\n * @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere \r\n * @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)\r\n * @param {string} sourceapi Nei casi in cui il **type** è **enum** indica l'api da cui recuperare i valori da bindare alla select o alla multiselect\r\n * @param {boolean} pageddata Nei casi in cui il **type** è **enum** indica che l'api specificata eventualmetne da **sourceapi** è paginata\r\n */\r\n constructor(\r\n public id: string,\r\n public description: string,\r\n public pattern: string,\r\n type: 'date' | 'string' | 'number' | 'boolean' | 'enum',\r\n public required: boolean,\r\n v_default: any = null,\r\n public enumvalues: { id: string, description: string }[] = [],\r\n public multienum?: boolean,\r\n public sourceapi?: string,\r\n public pageddata?: boolean) {\r\n\r\n this.type = type == 'enum' ? \"\" : type;\r\n this.visible = true;\r\n this.enumtype = type == 'enum' ? type : \"\";\r\n this.isreadonly = false;\r\n\r\n if (!this.enumtype && enumvalues.length != 0)\r\n console.error(\"impossibile gestire valori di dizionario per un parametro non di tipo enum\");\r\n\r\n if (v_default != null)\r\n this.value = v_default;\r\n }\r\n\r\n /** Tipo di dato rappresentato da questo parametro */\r\n public type: string;\r\n\r\n /** Typecode lato C# che rappresenta il tipo di dato */\r\n public typecode: number;\r\n\r\n /** Indica se il campo specificato dev'essere di sola lettura o meno */\r\n public isreadonly: boolean;\r\n\r\n /** Valore del parametro */\r\n public value: any;\r\n\r\n /** Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto */\r\n public visible: boolean;\r\n\r\n /** Tipo Enum, valorizzato dal Backend */\r\n public enumtype: string;\r\n\r\n /** Tipo Dizionario, valorizzato dal Backend */\r\n public dicttype: string;\r\n\r\n /** Espressione di obbligatorietà */\r\n public requiredexp?: string;\r\n\r\n /** Espressione di visibilità */\r\n public visibleexp?: string;\r\n}","/*\r\n * Public API Surface of parameters\r\n */\r\nexport * from './lib/es_parameters.module';\r\nexport * from './lib/models/GenericParameter';\r\nexport * from './lib/es_parameters.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-parameters.mjs","sources":["../../../projects/parameters/src/lib/es_parameters.component.loc.ts","../../../projects/parameters/src/lib/es_parameters.component.ts","../../../projects/parameters/src/lib/es_parameters.component.html","../../../projects/parameters/src/lib/es_parameters.module.ts","../../../projects/parameters/src/lib/models/GenericParameter.ts","../../../projects/parameters/src/public-api.ts","../../../projects/parameters/src/esfaenza-parameters.ts"],"sourcesContent":["import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n/**\r\n * Classe di localizzazione per il componente **EsParametersComponent**\r\n */\r\n@Injectable()\r\nexport class EsParametersLoc extends LocalizationService {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}","// Angular\r\nimport { ControlValueAccessor, UntypedFormControl, NgControl, NgForm, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { ChangeDetectorRef, Component, forwardRef, Injector, Input } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { DateService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Classi\r\nimport { GenericParameter } from './models/GenericParameter';\r\n\r\n// Applicazione\r\nimport { EsParametersLoc } from \"./es_parameters.component.loc\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n/** Componente che permette di graficare una lista di **GenericParameter** come Input in base al loro tipo specifico */\r\n@Component({\r\n selector: \"es-parameters\",\r\n providers: [\r\n { provide: LocalizationService, useClass: EsParametersLoc },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n }],\r\n templateUrl: \"./es_parameters.component.html\"\r\n})\r\nexport class EsParametersComponent implements ControlValueAccessor, Validator {\r\n\r\n /** Modello del componente su cui vengono effettuate le graficazioni */\r\n public Parameters: GenericParameter[];\r\n\r\n /** Cache per fare lookup rapidi in fase di valutazione espressioni di visibilità e obbligatorietà */\r\n private ParametersCache: {[id: string]: GenericParameter};\r\n\r\n /**\r\n * Pipeline di Angular \r\n * \r\n * @ignore\r\n */\r\n propagateChange = (_: any) => { };\r\n\r\n /** Indica che l'ultimo parametro non deve avere margine in fondo */\r\n @Input() LastParameterNoMargin: boolean = false;\r\n\r\n /** col-md-X per la label */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Input a cui collegare la variabile **submitted** del form all'interno del quale viene utilizzato questo componente */\r\n @Input() submitted: boolean = false;\r\n\r\n /** Valore da mostrare qualora non fossero ancora ricevuti i **Parameters** da mostrare */\r\n @Input() EmptyMessage: string = \"\";\r\n\r\n /** Permette di rimuovere i parametri dalla lista cliccando sulla X davanti alla Label */\r\n @Input() Removal: boolean = false;\r\n\r\n /** Indica se i componenti di Input generati sono Readonly o no */\r\n @Input() Readonly: boolean = false;\r\n\r\n /** Indica se i componenti di Input generati sono Readonly o no */\r\n @Input() ListFormat: 'CommaSeparated' | 'Array' = 'Array';\r\n\r\n /** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */\r\n @Input() Form : NgForm = null;\r\n\r\n /** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */\r\n @Input() AutocompleteHideChoicesOnSelection: boolean = false;\r\n\r\n /** Funzione da utilizzare per tirare fuori i dati di un autocomplete */\r\n @Input() AutoCompleteDataRetrieve: (parameter: GenericParameter, search: string, byid: boolean) => Observable<{ id: string, description: string }[]>\r\n\r\n /** Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private utiExts: UtilityService, public lc: LocalizationService, public cdr: ChangeDetectorRef, private inj: Injector, public dates: DateService) { }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public writeValue(obj): void {\r\n this.Parameters = obj;\r\n this.ParametersCache = {};\r\n if (!this.Parameters)\r\n return;\r\n\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if (!t.typecode && !t.type)\r\n console.warn(\"Non è stato specificato né un type né un typecode\");\r\n\r\n if (t.typecode && !t.type)\r\n t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.typecode && t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))\r\n console.warn(\"Rilevate inconsistenze fra il tipo \" + t.type + \" e il tipo \" + this.utiExts.getJsTypeFromTypeCode(t.typecode));\r\n\r\n if (t.type == \"boolean\")\r\n t.value = (<string>t.value.toString()).toLowerCase() === \"true\";\r\n\r\n if (t.enumtype || t.dicttype)\r\n t.type = 'enum';\r\n\r\n // Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori\r\n if (t.type == 'enum' && this.ListFormat == 'CommaSeparated' && t.value && !Array.isArray(t.value))\r\n t.value = t.value.split(',').map(t => t.trim());\r\n });\r\n\r\n this.reviewParametersBindings();\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n validate(c: UntypedFormControl): any {\r\n // Se la validazione è richiamata da un componente non me stesso vuol dire che i componenti di validazione interni stanno richiamando\r\n // questo validator, ma dal loro punto di vista non se ne devono preoccupare quindi faccio finta non ci siano errori.\r\n // Se invece vengo richiamato direttamente significa che è il form in cui vive es-parameters e lì devo effettuare la validazione\r\n let control = this.inj.get(NgControl, null)?.control;\r\n if (c != control)\r\n return null;\r\n\r\n let valid = true;\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n if(!t.visible)\r\n return;\r\n \r\n let emptyNumber = t.type == 'number' && (t.value == null || t.value == undefined);\r\n let emptyNonNumber = t.type != 'number' && !t.value\r\n\r\n if (t.required && (emptyNumber || emptyNonNumber))\r\n valid = false;\r\n else if (t.value && t.type == 'number')\r\n valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value.toString());\r\n else if (t.value && t.pattern)\r\n valid = new RegExp(t.pattern).test(t.value);\r\n });\r\n }\r\n\r\n if (valid)\r\n return null;\r\n return { \"es-parameters\": valid };\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnTouched(fn): void { }\r\n\r\n /**\r\n * Metodo che si occupa di gestire il modello in uscita e propagarlo sul binding ngModel\r\n */\r\n public changed() {\r\n if (!this.Parameters)\r\n return;\r\n\r\n // Se ci sono delle modifiche ai binding potrebbero essere cambiati i required. Ricreo tutti i componenti e ri-idrato la cache dei parametri\r\n var changes = this.reviewParametersBindings();\r\n if (changes.length > 0) {\r\n changes.forEach(ch => {\r\n let index = this.Parameters.findIndex(t => t.id == ch);\r\n this.Parameters[index] = JSON.parse(JSON.stringify(this.Parameters[index]));\r\n this.ParametersCache[ch] = this.Parameters[index];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));\r\n\r\n // Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if (t.type == \"enum\" && this.ListFormat == 'CommaSeparated' && t.value && Array.isArray(t.value))\r\n t.value = t.value.join(',');\r\n });\r\n }\r\n\r\n this.propagateChange(thyCleanShaltNotBlankMe);\r\n }\r\n\r\n /**\r\n * Rimuove il parametro selezionato e propaga il modello\r\n * \r\n * @param {GenericParameter} par Parametro da rimuovere\r\n */\r\n public removeParameter(par: GenericParameter) {\r\n this.Parameters.splice(this.Parameters.indexOf(par), 1);\r\n this.changed();\r\n }\r\n\r\n /**\r\n * Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo\r\n * \r\n * @returns {string[]} lista con gli id dei parametri che sono stati modificati\r\n */\r\n private reviewParametersBindings(): string[] {\r\n let changes = [];\r\n for (let i = 0; i < this.Parameters.length; i++) {\r\n var p = this.Parameters[i];\r\n\r\n if (p.requiredexp) {\r\n let prevReq = p.required;\r\n p.required = this.evaluate(p.requiredexp);\r\n if (prevReq != p.required)\r\n changes.push(p.id);\r\n }\r\n if (p.visibleexp) {\r\n let prevVisi = p.visible;\r\n p.visible = this.evaluate(p.visibleexp);\r\n if (prevVisi != p.visible)\r\n changes.push(p.id)\r\n }\r\n }\r\n return changes;\r\n }\r\n\r\n /**\r\n * Valuta un'espressione in base ai parametri presenti nel modello attuale\r\n * \r\n * @param expr Espressione da valutare scritta nel formato (ripetibile) \"ID (==|!=|<|>|>=|<=) (`valore` | null | true | false | XXX,XXX)\" separato eventualmente da && ed ||\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n private evaluate(expr: string): boolean {\r\n var regex = /\\s?([a-zA-Z0-9_-]+)\\s?(!=|==|<|>|<=|>=)\\s?(`[^`]+`|``|null|[0-9,]+|true|false)/gm;\r\n\r\n var matches: string[] = [];\r\n var finalExpr = expr;\r\n while (matches = regex.exec(expr)) {\r\n var fullMatch = matches[0].trim();\r\n var id = matches[1].trim();\r\n var operation = matches[2].trim();\r\n let bValue = matches[3].trim().trim();\r\n var value = matches[3].trim().trim().replace('`', '').replace('`', '');\r\n\r\n finalExpr = finalExpr.replace(fullMatch, `this.checkValue('${id}', '${operation}', ${bValue == 'null' ? 'null' : `'${value}'`})`);\r\n }\r\n\r\n return eval(finalExpr);\r\n }\r\n\r\n /**\r\n * Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore\r\n * Richiamata da EVAL\r\n * \r\n * @param {string} key Chiave del parametro di cui verificare il valore\r\n * @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=\r\n * @param {string} value Valore di confronto da utilizzare\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n public checkValue(key: string, operator: string, value: string): boolean {\r\n var rPar = this.ParametersCache[key];\r\n try {\r\n switch (rPar.type) {\r\n case \"string\":\r\n case \"enum\":\r\n return eval(`\"${this.defaultIfnullOrUndefined(rPar.value, ``)}\" ${operator} \"${this.defaultIfnullOrUndefined(value, ``)}\"`);\r\n case \"boolean\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, ``).toString()} ${operator} ${this.defaultIfnullOrUndefined(value, ``)}`);\r\n case \"number\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, '\"\"', true).replace(',', '.')} ${operator} ${this.defaultIfnullOrUndefined(value, '\"\"', true).replace(',', '.')}`);\r\n case \"date\":\r\n let parDateConv = `this.dates.getDateConvertion(\"${rPar.value}\")`;\r\n let valDateConv = `this.dates.getDateConvertion(\"${value}\")`;\r\n\r\n switch (operator) {\r\n\r\n case \"==\": return eval(`${parDateConv} == ${valDateConv} || (${parDateConv} != null && ${parDateConv}.isSame(${valDateConv}))`);\r\n case \"!=\": return eval(`${parDateConv} != ${valDateConv} && ${parDateConv} != null && !${parDateConv}.isSame(${valDateConv})`);\r\n case \">\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isAfter(${valDateConv})`);\r\n case \"<\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isBefore(${valDateConv})`);\r\n case \">=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isAfter(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n case \"<=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isBefore(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n console.warn(\"Errori nella valutazione dell'espressione. Fallback a false\");\r\n return false;\r\n }\r\n\r\n throw `@esfaenza/parameters: Tipo parametro ${key} non riconosciuto: ${rPar.type}`;\r\n }\r\n\r\n /** @ignore */\r\n private defaultIfnullOrUndefined<T>(item: T, dflt: T, emptyStringIsNull: boolean = false): T {\r\n if (item == null || item == undefined || item.toString() == 'null' || (emptyStringIsNull && item.toString() == \"\"))\r\n return dflt;\r\n return item;\r\n }\r\n\r\n /** @ignore */\r\n public getSource(parameter: GenericParameter, search: string, byid: boolean): Observable<{ id: string, description: string }[]> {\r\n if (!this.AutoCompleteDataRetrieve) {\r\n console.error(\"@forms-and-validations: funzione di dataretrieve non impostata per un parametro autocomplete\");\r\n return of([])\r\n }\r\n else\r\n return this.AutoCompleteDataRetrieve(parameter, search, byid);\r\n }\r\n}","<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"> </span>{{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && !par.sourceapi\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && !par.sourceapi\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [UseCommaSeparatedList]=\"true\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n <!--Se enum autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n <!--Se enum multiselect autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [HideChoicesOnSelection]=\"AutocompleteHideChoicesOnSelection\" [Multi]=\"true\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { LocalizationModule } from '@esfaenza/localizations';\r\nimport { EsParametersComponent } from './es_parameters.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [EsParametersComponent],\r\n imports: [\r\n CommonModule,\r\n LocalizationModule,\r\n FormsModule,\r\n FormsAndValidationsModule,\r\n ],\r\n exports: [EsParametersComponent]\r\n})\r\nexport class EsParametersModule {\r\n }\r\n","/**\r\n * Classe che rappresenta un parametro generico\r\n */\r\nexport class GenericParameter {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @param {string} id Codice del parametro\r\n * @param {string} description Descrizione del parametro\r\n * @param {string} pattern Pattern di validazione\r\n * @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input \r\n * @param {boolean} required Indica se il valore è obbligatorio o meno\r\n * @param {any} v_default Valore di default per questo Parametro\r\n * @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere \r\n * @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)\r\n * @param {string} sourceapi Nei casi in cui il **type** è **enum** indica l'api da cui recuperare i valori da bindare alla select o alla multiselect\r\n * @param {boolean} pageddata Nei casi in cui il **type** è **enum** indica che l'api specificata eventualmetne da **sourceapi** è paginata\r\n */\r\n constructor(\r\n public id: string,\r\n public description: string,\r\n public pattern: string,\r\n type: 'date' | 'string' | 'number' | 'boolean' | 'enum',\r\n public required: boolean,\r\n v_default: any = null,\r\n public enumvalues: { id: string, description: string }[] = [],\r\n public multienum?: boolean,\r\n public sourceapi?: string,\r\n public pageddata?: boolean) {\r\n\r\n this.type = type == 'enum' ? null : type;\r\n this.visible = true;\r\n this.enumtype = type == 'enum' ? type : \"\";\r\n this.isreadonly = false;\r\n\r\n if (!this.enumtype && enumvalues.length != 0)\r\n console.error(\"impossibile gestire valori di dizionario per un parametro non di tipo enum\");\r\n\r\n if (v_default != null)\r\n this.value = v_default;\r\n }\r\n\r\n /** Tipo di dato rappresentato da questo parametro */\r\n public type?: 'date' | 'string' | 'number' | 'boolean' | 'enum';\r\n\r\n /** Typecode lato C# che rappresenta il tipo di dato */\r\n public typecode: number;\r\n\r\n /** Indica se il campo specificato dev'essere di sola lettura o meno */\r\n public isreadonly: boolean;\r\n\r\n /** Valore del parametro */\r\n public value: any;\r\n\r\n /** Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto */\r\n public visible: boolean;\r\n\r\n /** Tipo Enum, valorizzato dal Backend */\r\n public enumtype: string;\r\n\r\n /** Tipo Dizionario, valorizzato dal Backend */\r\n public dicttype: string;\r\n\r\n /** Espressione di obbligatorietà */\r\n public requiredexp?: string;\r\n\r\n /** Espressione di visibilità */\r\n public visibleexp?: string;\r\n}","/*\r\n * Public API Surface of parameters\r\n */\r\nexport * from './lib/es_parameters.module';\r\nexport * from './lib/models/GenericParameter';\r\nexport * from './lib/es_parameters.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,8 @@ class EsParametersComponent {
|
|
|
70
70
|
this.Removal = false;
|
|
71
71
|
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
72
72
|
this.Readonly = false;
|
|
73
|
+
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
74
|
+
this.ListFormat = 'Array';
|
|
73
75
|
/** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */
|
|
74
76
|
this.Form = null;
|
|
75
77
|
/** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */
|
|
@@ -97,6 +99,9 @@ class EsParametersComponent {
|
|
|
97
99
|
t.value = t.value.toString().toLowerCase() === "true";
|
|
98
100
|
if (t.enumtype || t.dicttype)
|
|
99
101
|
t.type = 'enum';
|
|
102
|
+
// Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori
|
|
103
|
+
if (t.type == 'enum' && this.ListFormat == 'CommaSeparated' && t.value && !Array.isArray(t.value))
|
|
104
|
+
t.value = t.value.split(',').map(t => t.trim());
|
|
100
105
|
});
|
|
101
106
|
this.reviewParametersBindings();
|
|
102
107
|
}
|
|
@@ -160,6 +165,14 @@ class EsParametersComponent {
|
|
|
160
165
|
});
|
|
161
166
|
}
|
|
162
167
|
var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));
|
|
168
|
+
// Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori
|
|
169
|
+
if (this.Parameters && this.Parameters.length > 0) {
|
|
170
|
+
this.Parameters.forEach(t => {
|
|
171
|
+
this.ParametersCache[t.id] = t;
|
|
172
|
+
if (t.type == "enum" && this.ListFormat == 'CommaSeparated' && t.value && Array.isArray(t.value))
|
|
173
|
+
t.value = t.value.join(',');
|
|
174
|
+
});
|
|
175
|
+
}
|
|
163
176
|
this.propagateChange(thyCleanShaltNotBlankMe);
|
|
164
177
|
}
|
|
165
178
|
/**
|
|
@@ -274,7 +287,7 @@ class EsParametersComponent {
|
|
|
274
287
|
}
|
|
275
288
|
}
|
|
276
289
|
EsParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
277
|
-
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
290
|
+
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", ListFormat: "ListFormat", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
278
291
|
{ provide: LocalizationService, useClass: EsParametersLoc },
|
|
279
292
|
{
|
|
280
293
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -316,6 +329,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
316
329
|
type: Input
|
|
317
330
|
}], Readonly: [{
|
|
318
331
|
type: Input
|
|
332
|
+
}], ListFormat: [{
|
|
333
|
+
type: Input
|
|
319
334
|
}], Form: [{
|
|
320
335
|
type: Input
|
|
321
336
|
}], AutocompleteHideChoicesOnSelection: [{
|
|
@@ -378,7 +393,7 @@ class GenericParameter {
|
|
|
378
393
|
this.multienum = multienum;
|
|
379
394
|
this.sourceapi = sourceapi;
|
|
380
395
|
this.pageddata = pageddata;
|
|
381
|
-
this.type = type == 'enum' ?
|
|
396
|
+
this.type = type == 'enum' ? null : type;
|
|
382
397
|
this.visible = true;
|
|
383
398
|
this.enumtype = type == 'enum' ? type : "";
|
|
384
399
|
this.isreadonly = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-parameters.mjs","sources":["../../../projects/parameters/src/lib/es_parameters.component.loc.ts","../../../projects/parameters/src/lib/es_parameters.component.ts","../../../projects/parameters/src/lib/es_parameters.component.html","../../../projects/parameters/src/lib/es_parameters.module.ts","../../../projects/parameters/src/lib/models/GenericParameter.ts","../../../projects/parameters/src/public-api.ts","../../../projects/parameters/src/esfaenza-parameters.ts"],"sourcesContent":["import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n/**\r\n * Classe di localizzazione per il componente **EsParametersComponent**\r\n */\r\n@Injectable()\r\nexport class EsParametersLoc extends LocalizationService {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}","// Angular\r\nimport { ControlValueAccessor, UntypedFormControl, NgControl, NgForm, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { ChangeDetectorRef, Component, forwardRef, Injector, Input } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { DateService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Classi\r\nimport { GenericParameter } from './models/GenericParameter';\r\n\r\n// Applicazione\r\nimport { EsParametersLoc } from \"./es_parameters.component.loc\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n/** Componente che permette di graficare una lista di **GenericParameter** come Input in base al loro tipo specifico */\r\n@Component({\r\n selector: \"es-parameters\",\r\n providers: [\r\n { provide: LocalizationService, useClass: EsParametersLoc },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n }],\r\n templateUrl: \"./es_parameters.component.html\"\r\n})\r\nexport class EsParametersComponent implements ControlValueAccessor, Validator {\r\n\r\n /** Modello del componente su cui vengono effettuate le graficazioni */\r\n public Parameters: GenericParameter[];\r\n\r\n /** Cache per fare lookup rapidi in fase di valutazione espressioni di visibilità e obbligatorietà */\r\n private ParametersCache: {[id: string]: GenericParameter};\r\n\r\n /**\r\n * Pipeline di Angular \r\n * \r\n * @ignore\r\n */\r\n propagateChange = (_: any) => { };\r\n\r\n /** Indica che l'ultimo parametro non deve avere margine in fondo */\r\n @Input() LastParameterNoMargin: boolean = false;\r\n\r\n /** col-md-X per la label */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Input a cui collegare la variabile **submitted** del form all'interno del quale viene utilizzato questo componente */\r\n @Input() submitted: boolean = false;\r\n\r\n /** Valore da mostrare qualora non fossero ancora ricevuti i **Parameters** da mostrare */\r\n @Input() EmptyMessage: string = \"\";\r\n\r\n /** Permette di rimuovere i parametri dalla lista cliccando sulla X davanti alla Label */\r\n @Input() Removal: boolean = false;\r\n\r\n /** Indica se i componenti di Input generati sono Readonly o no */\r\n @Input() Readonly: boolean = false;\r\n\r\n /** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */\r\n @Input() Form : NgForm = null;\r\n\r\n /** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */\r\n @Input() AutocompleteHideChoicesOnSelection: boolean = false;\r\n\r\n /** Funzione da utilizzare per tirare fuori i dati di un autocomplete */\r\n @Input() AutoCompleteDataRetrieve: (parameter: GenericParameter, search: string, byid: boolean) => Observable<{ id: string, description: string }[]>\r\n\r\n /** Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private utiExts: UtilityService, public lc: LocalizationService, public cdr: ChangeDetectorRef, private inj: Injector, public dates: DateService) { }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public writeValue(obj): void {\r\n this.Parameters = obj;\r\n this.ParametersCache = {};\r\n if (!this.Parameters)\r\n return;\r\n\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if(!t.typecode && !t.type)\r\n console.warn(\"Non è stato specificato né un type né un typecode\");\r\n\r\n if (t.typecode && !t.type)\r\n t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.typecode && t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))\r\n console.warn(\"Rilevate inconsistenze fra il tipo \" + t.type + \" e il tipo \" + this.utiExts.getJsTypeFromTypeCode(t.typecode));\r\n\r\n if (t.type == \"boolean\")\r\n t.value = (<string>t.value.toString()).toLowerCase() === \"true\";\r\n\r\n if (t.enumtype || t.dicttype)\r\n t.type = 'enum';\r\n });\r\n\r\n this.reviewParametersBindings();\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n validate(c: UntypedFormControl): any {\r\n // Se la validazione è richiamata da un componente non me stesso vuol dire che i componenti di validazione interni stanno richiamando\r\n // questo validator, ma dal loro punto di vista non se ne devono preoccupare quindi faccio finta non ci siano errori.\r\n // Se invece vengo richiamato direttamente significa che è il form in cui vive es-parameters e lì devo effettuare la validazione\r\n let control = this.inj.get(NgControl, null)?.control;\r\n if (c != control)\r\n return null;\r\n\r\n let valid = true;\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n if(!t.visible)\r\n return;\r\n \r\n let emptyNumber = t.type == 'number' && (t.value == null || t.value == undefined);\r\n let emptyNonNumber = t.type != 'number' && !t.value\r\n\r\n if (t.required && (emptyNumber || emptyNonNumber))\r\n valid = false;\r\n else if (t.value && t.type == 'number')\r\n valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value.toString());\r\n else if (t.value && t.pattern)\r\n valid = new RegExp(t.pattern).test(t.value);\r\n });\r\n }\r\n\r\n if (valid)\r\n return null;\r\n return { \"es-parameters\": valid };\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnTouched(fn): void { }\r\n\r\n /**\r\n * Metodo che si occupa di gestire il modello in uscita e propagarlo sul binding ngModel\r\n */\r\n public changed() {\r\n if (!this.Parameters)\r\n return;\r\n\r\n // Se ci sono delle modifiche ai binding potrebbero essere cambiati i required. Ricreo tutti i componenti e ri-idrato la cache dei parametri\r\n var changes = this.reviewParametersBindings();\r\n if (changes.length > 0) {\r\n changes.forEach(ch => {\r\n let index = this.Parameters.findIndex(t => t.id == ch);\r\n this.Parameters[index] = JSON.parse(JSON.stringify(this.Parameters[index]));\r\n this.ParametersCache[ch] = this.Parameters[index];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));\r\n this.propagateChange(thyCleanShaltNotBlankMe);\r\n }\r\n\r\n /**\r\n * Rimuove il parametro selezionato e propaga il modello\r\n * \r\n * @param {GenericParameter} par Parametro da rimuovere\r\n */\r\n public removeParameter(par: GenericParameter) {\r\n this.Parameters.splice(this.Parameters.indexOf(par), 1);\r\n this.changed();\r\n }\r\n\r\n /**\r\n * Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo\r\n * \r\n * @returns {string[]} lista con gli id dei parametri che sono stati modificati\r\n */\r\n private reviewParametersBindings(): string[] {\r\n let changes = [];\r\n for (let i = 0; i < this.Parameters.length; i++) {\r\n var p = this.Parameters[i];\r\n\r\n if (p.requiredexp) {\r\n let prevReq = p.required;\r\n p.required = this.evaluate(p.requiredexp);\r\n if (prevReq != p.required)\r\n changes.push(p.id);\r\n }\r\n if (p.visibleexp) {\r\n let prevVisi = p.visible;\r\n p.visible = this.evaluate(p.visibleexp);\r\n if (prevVisi != p.visible)\r\n changes.push(p.id)\r\n }\r\n }\r\n return changes;\r\n }\r\n\r\n /**\r\n * Valuta un'espressione in base ai parametri presenti nel modello attuale\r\n * \r\n * @param expr Espressione da valutare scritta nel formato (ripetibile) \"ID (==|!=|<|>|>=|<=) (`valore` | null | true | false | XXX,XXX)\" separato eventualmente da && ed ||\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n private evaluate(expr: string): boolean {\r\n var regex = /\\s?([a-zA-Z0-9_-]+)\\s?(!=|==|<|>|<=|>=)\\s?(`[^`]+`|``|null|[0-9,]+|true|false)/gm;\r\n\r\n var matches: string[] = [];\r\n var finalExpr = expr;\r\n while (matches = regex.exec(expr)) {\r\n var fullMatch = matches[0].trim();\r\n var id = matches[1].trim();\r\n var operation = matches[2].trim();\r\n let bValue = matches[3].trim().trim();\r\n var value = matches[3].trim().trim().replace('`', '').replace('`', '');\r\n\r\n finalExpr = finalExpr.replace(fullMatch, `this.checkValue('${id}', '${operation}', ${bValue == 'null' ? 'null' : `'${value}'`})`);\r\n }\r\n\r\n return eval(finalExpr);\r\n }\r\n\r\n /**\r\n * Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore\r\n * Richiamata da EVAL\r\n * \r\n * @param {string} key Chiave del parametro di cui verificare il valore\r\n * @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=\r\n * @param {string} value Valore di confronto da utilizzare\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n public checkValue(key: string, operator: string, value: string): boolean {\r\n var rPar = this.ParametersCache[key];\r\n try {\r\n switch (rPar.type) {\r\n case \"string\":\r\n case \"enum\":\r\n return eval(`\"${this.defaultIfnullOrUndefined(rPar.value, ``)}\" ${operator} \"${this.defaultIfnullOrUndefined(value, ``)}\"`);\r\n case \"boolean\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, ``).toString()} ${operator} ${this.defaultIfnullOrUndefined(value, ``)}`);\r\n case \"number\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, '\"\"', true).replace(',', '.')} ${operator} ${this.defaultIfnullOrUndefined(value, '\"\"', true).replace(',', '.')}`);\r\n case \"date\":\r\n let parDateConv = `this.dates.getDateConvertion(\"${rPar.value}\")`;\r\n let valDateConv = `this.dates.getDateConvertion(\"${value}\")`;\r\n\r\n switch (operator) {\r\n\r\n case \"==\": return eval(`${parDateConv} == ${valDateConv} || (${parDateConv} != null && ${parDateConv}.isSame(${valDateConv}))`);\r\n case \"!=\": return eval(`${parDateConv} != ${valDateConv} && ${parDateConv} != null && !${parDateConv}.isSame(${valDateConv})`);\r\n case \">\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isAfter(${valDateConv})`);\r\n case \"<\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isBefore(${valDateConv})`);\r\n case \">=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isAfter(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n case \"<=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isBefore(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n console.warn(\"Errori nella valutazione dell'espressione. Fallback a false\");\r\n return false;\r\n }\r\n\r\n throw `@esfaenza/parameters: Tipo parametro ${key} non riconosciuto: ${rPar.type}`;\r\n }\r\n\r\n /** @ignore */\r\n private defaultIfnullOrUndefined<T>(item: T, dflt: T, emptyStringIsNull: boolean = false): T {\r\n if (item == null || item == undefined || item.toString() == 'null' || (emptyStringIsNull && item.toString() == \"\"))\r\n return dflt;\r\n return item;\r\n }\r\n\r\n /** @ignore */\r\n public getSource(parameter: GenericParameter, search: string, byid: boolean): Observable<{ id: string, description: string }[]> {\r\n if (!this.AutoCompleteDataRetrieve) {\r\n console.error(\"@forms-and-validations: funzione di dataretrieve non impostata per un parametro autocomplete\");\r\n return of([])\r\n }\r\n else\r\n return this.AutoCompleteDataRetrieve(parameter, search, byid);\r\n }\r\n}","<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"> </span>{{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && !par.sourceapi\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && !par.sourceapi\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [UseCommaSeparatedList]=\"true\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n <!--Se enum autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n <!--Se enum multiselect autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [HideChoicesOnSelection]=\"AutocompleteHideChoicesOnSelection\" [Multi]=\"true\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { LocalizationModule } from '@esfaenza/localizations';\r\nimport { EsParametersComponent } from './es_parameters.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [EsParametersComponent],\r\n imports: [\r\n CommonModule,\r\n LocalizationModule,\r\n FormsModule,\r\n FormsAndValidationsModule,\r\n ],\r\n exports: [EsParametersComponent]\r\n})\r\nexport class EsParametersModule {\r\n }\r\n","/**\r\n * Classe che rappresenta un parametro generico\r\n */\r\nexport class GenericParameter {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @param {string} id Codice del parametro\r\n * @param {string} description Descrizione del parametro\r\n * @param {string} pattern Pattern di validazione\r\n * @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input \r\n * @param {boolean} required Indica se il valore è obbligatorio o meno\r\n * @param {any} v_default Valore di default per questo Parametro\r\n * @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere \r\n * @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)\r\n * @param {string} sourceapi Nei casi in cui il **type** è **enum** indica l'api da cui recuperare i valori da bindare alla select o alla multiselect\r\n * @param {boolean} pageddata Nei casi in cui il **type** è **enum** indica che l'api specificata eventualmetne da **sourceapi** è paginata\r\n */\r\n constructor(\r\n public id: string,\r\n public description: string,\r\n public pattern: string,\r\n type: 'date' | 'string' | 'number' | 'boolean' | 'enum',\r\n public required: boolean,\r\n v_default: any = null,\r\n public enumvalues: { id: string, description: string }[] = [],\r\n public multienum?: boolean,\r\n public sourceapi?: string,\r\n public pageddata?: boolean) {\r\n\r\n this.type = type == 'enum' ? \"\" : type;\r\n this.visible = true;\r\n this.enumtype = type == 'enum' ? type : \"\";\r\n this.isreadonly = false;\r\n\r\n if (!this.enumtype && enumvalues.length != 0)\r\n console.error(\"impossibile gestire valori di dizionario per un parametro non di tipo enum\");\r\n\r\n if (v_default != null)\r\n this.value = v_default;\r\n }\r\n\r\n /** Tipo di dato rappresentato da questo parametro */\r\n public type: string;\r\n\r\n /** Typecode lato C# che rappresenta il tipo di dato */\r\n public typecode: number;\r\n\r\n /** Indica se il campo specificato dev'essere di sola lettura o meno */\r\n public isreadonly: boolean;\r\n\r\n /** Valore del parametro */\r\n public value: any;\r\n\r\n /** Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto */\r\n public visible: boolean;\r\n\r\n /** Tipo Enum, valorizzato dal Backend */\r\n public enumtype: string;\r\n\r\n /** Tipo Dizionario, valorizzato dal Backend */\r\n public dicttype: string;\r\n\r\n /** Espressione di obbligatorietà */\r\n public requiredexp?: string;\r\n\r\n /** Espressione di visibilità */\r\n public visibleexp?: string;\r\n}","/*\r\n * Public API Surface of parameters\r\n */\r\nexport * from './lib/es_parameters.module';\r\nexport * from './lib/models/GenericParameter';\r\nexport * from './lib/es_parameters.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-parameters.mjs","sources":["../../../projects/parameters/src/lib/es_parameters.component.loc.ts","../../../projects/parameters/src/lib/es_parameters.component.ts","../../../projects/parameters/src/lib/es_parameters.component.html","../../../projects/parameters/src/lib/es_parameters.module.ts","../../../projects/parameters/src/lib/models/GenericParameter.ts","../../../projects/parameters/src/public-api.ts","../../../projects/parameters/src/esfaenza-parameters.ts"],"sourcesContent":["import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n/**\r\n * Classe di localizzazione per il componente **EsParametersComponent**\r\n */\r\n@Injectable()\r\nexport class EsParametersLoc extends LocalizationService {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}","// Angular\r\nimport { ControlValueAccessor, UntypedFormControl, NgControl, NgForm, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { ChangeDetectorRef, Component, forwardRef, Injector, Input } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { DateService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Classi\r\nimport { GenericParameter } from './models/GenericParameter';\r\n\r\n// Applicazione\r\nimport { EsParametersLoc } from \"./es_parameters.component.loc\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n/** Componente che permette di graficare una lista di **GenericParameter** come Input in base al loro tipo specifico */\r\n@Component({\r\n selector: \"es-parameters\",\r\n providers: [\r\n { provide: LocalizationService, useClass: EsParametersLoc },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n }],\r\n templateUrl: \"./es_parameters.component.html\"\r\n})\r\nexport class EsParametersComponent implements ControlValueAccessor, Validator {\r\n\r\n /** Modello del componente su cui vengono effettuate le graficazioni */\r\n public Parameters: GenericParameter[];\r\n\r\n /** Cache per fare lookup rapidi in fase di valutazione espressioni di visibilità e obbligatorietà */\r\n private ParametersCache: {[id: string]: GenericParameter};\r\n\r\n /**\r\n * Pipeline di Angular \r\n * \r\n * @ignore\r\n */\r\n propagateChange = (_: any) => { };\r\n\r\n /** Indica che l'ultimo parametro non deve avere margine in fondo */\r\n @Input() LastParameterNoMargin: boolean = false;\r\n\r\n /** col-md-X per la label */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Input a cui collegare la variabile **submitted** del form all'interno del quale viene utilizzato questo componente */\r\n @Input() submitted: boolean = false;\r\n\r\n /** Valore da mostrare qualora non fossero ancora ricevuti i **Parameters** da mostrare */\r\n @Input() EmptyMessage: string = \"\";\r\n\r\n /** Permette di rimuovere i parametri dalla lista cliccando sulla X davanti alla Label */\r\n @Input() Removal: boolean = false;\r\n\r\n /** Indica se i componenti di Input generati sono Readonly o no */\r\n @Input() Readonly: boolean = false;\r\n\r\n /** Indica se i componenti di Input generati sono Readonly o no */\r\n @Input() ListFormat: 'CommaSeparated' | 'Array' = 'Array';\r\n\r\n /** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */\r\n @Input() Form : NgForm = null;\r\n\r\n /** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */\r\n @Input() AutocompleteHideChoicesOnSelection: boolean = false;\r\n\r\n /** Funzione da utilizzare per tirare fuori i dati di un autocomplete */\r\n @Input() AutoCompleteDataRetrieve: (parameter: GenericParameter, search: string, byid: boolean) => Observable<{ id: string, description: string }[]>\r\n\r\n /** Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private utiExts: UtilityService, public lc: LocalizationService, public cdr: ChangeDetectorRef, private inj: Injector, public dates: DateService) { }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public writeValue(obj): void {\r\n this.Parameters = obj;\r\n this.ParametersCache = {};\r\n if (!this.Parameters)\r\n return;\r\n\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if (!t.typecode && !t.type)\r\n console.warn(\"Non è stato specificato né un type né un typecode\");\r\n\r\n if (t.typecode && !t.type)\r\n t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.typecode && t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))\r\n console.warn(\"Rilevate inconsistenze fra il tipo \" + t.type + \" e il tipo \" + this.utiExts.getJsTypeFromTypeCode(t.typecode));\r\n\r\n if (t.type == \"boolean\")\r\n t.value = (<string>t.value.toString()).toLowerCase() === \"true\";\r\n\r\n if (t.enumtype || t.dicttype)\r\n t.type = 'enum';\r\n\r\n // Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori\r\n if (t.type == 'enum' && this.ListFormat == 'CommaSeparated' && t.value && !Array.isArray(t.value))\r\n t.value = t.value.split(',').map(t => t.trim());\r\n });\r\n\r\n this.reviewParametersBindings();\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n validate(c: UntypedFormControl): any {\r\n // Se la validazione è richiamata da un componente non me stesso vuol dire che i componenti di validazione interni stanno richiamando\r\n // questo validator, ma dal loro punto di vista non se ne devono preoccupare quindi faccio finta non ci siano errori.\r\n // Se invece vengo richiamato direttamente significa che è il form in cui vive es-parameters e lì devo effettuare la validazione\r\n let control = this.inj.get(NgControl, null)?.control;\r\n if (c != control)\r\n return null;\r\n\r\n let valid = true;\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n if(!t.visible)\r\n return;\r\n \r\n let emptyNumber = t.type == 'number' && (t.value == null || t.value == undefined);\r\n let emptyNonNumber = t.type != 'number' && !t.value\r\n\r\n if (t.required && (emptyNumber || emptyNonNumber))\r\n valid = false;\r\n else if (t.value && t.type == 'number')\r\n valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value.toString());\r\n else if (t.value && t.pattern)\r\n valid = new RegExp(t.pattern).test(t.value);\r\n });\r\n }\r\n\r\n if (valid)\r\n return null;\r\n return { \"es-parameters\": valid };\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnTouched(fn): void { }\r\n\r\n /**\r\n * Metodo che si occupa di gestire il modello in uscita e propagarlo sul binding ngModel\r\n */\r\n public changed() {\r\n if (!this.Parameters)\r\n return;\r\n\r\n // Se ci sono delle modifiche ai binding potrebbero essere cambiati i required. Ricreo tutti i componenti e ri-idrato la cache dei parametri\r\n var changes = this.reviewParametersBindings();\r\n if (changes.length > 0) {\r\n changes.forEach(ch => {\r\n let index = this.Parameters.findIndex(t => t.id == ch);\r\n this.Parameters[index] = JSON.parse(JSON.stringify(this.Parameters[index]));\r\n this.ParametersCache[ch] = this.Parameters[index];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));\r\n\r\n // Aggiusto le modalità di funzionamento dei parametri lista. Che internamente funzionano sempre con una lista di valori\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if (t.type == \"enum\" && this.ListFormat == 'CommaSeparated' && t.value && Array.isArray(t.value))\r\n t.value = t.value.join(',');\r\n });\r\n }\r\n\r\n this.propagateChange(thyCleanShaltNotBlankMe);\r\n }\r\n\r\n /**\r\n * Rimuove il parametro selezionato e propaga il modello\r\n * \r\n * @param {GenericParameter} par Parametro da rimuovere\r\n */\r\n public removeParameter(par: GenericParameter) {\r\n this.Parameters.splice(this.Parameters.indexOf(par), 1);\r\n this.changed();\r\n }\r\n\r\n /**\r\n * Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo\r\n * \r\n * @returns {string[]} lista con gli id dei parametri che sono stati modificati\r\n */\r\n private reviewParametersBindings(): string[] {\r\n let changes = [];\r\n for (let i = 0; i < this.Parameters.length; i++) {\r\n var p = this.Parameters[i];\r\n\r\n if (p.requiredexp) {\r\n let prevReq = p.required;\r\n p.required = this.evaluate(p.requiredexp);\r\n if (prevReq != p.required)\r\n changes.push(p.id);\r\n }\r\n if (p.visibleexp) {\r\n let prevVisi = p.visible;\r\n p.visible = this.evaluate(p.visibleexp);\r\n if (prevVisi != p.visible)\r\n changes.push(p.id)\r\n }\r\n }\r\n return changes;\r\n }\r\n\r\n /**\r\n * Valuta un'espressione in base ai parametri presenti nel modello attuale\r\n * \r\n * @param expr Espressione da valutare scritta nel formato (ripetibile) \"ID (==|!=|<|>|>=|<=) (`valore` | null | true | false | XXX,XXX)\" separato eventualmente da && ed ||\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n private evaluate(expr: string): boolean {\r\n var regex = /\\s?([a-zA-Z0-9_-]+)\\s?(!=|==|<|>|<=|>=)\\s?(`[^`]+`|``|null|[0-9,]+|true|false)/gm;\r\n\r\n var matches: string[] = [];\r\n var finalExpr = expr;\r\n while (matches = regex.exec(expr)) {\r\n var fullMatch = matches[0].trim();\r\n var id = matches[1].trim();\r\n var operation = matches[2].trim();\r\n let bValue = matches[3].trim().trim();\r\n var value = matches[3].trim().trim().replace('`', '').replace('`', '');\r\n\r\n finalExpr = finalExpr.replace(fullMatch, `this.checkValue('${id}', '${operation}', ${bValue == 'null' ? 'null' : `'${value}'`})`);\r\n }\r\n\r\n return eval(finalExpr);\r\n }\r\n\r\n /**\r\n * Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore\r\n * Richiamata da EVAL\r\n * \r\n * @param {string} key Chiave del parametro di cui verificare il valore\r\n * @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=\r\n * @param {string} value Valore di confronto da utilizzare\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n public checkValue(key: string, operator: string, value: string): boolean {\r\n var rPar = this.ParametersCache[key];\r\n try {\r\n switch (rPar.type) {\r\n case \"string\":\r\n case \"enum\":\r\n return eval(`\"${this.defaultIfnullOrUndefined(rPar.value, ``)}\" ${operator} \"${this.defaultIfnullOrUndefined(value, ``)}\"`);\r\n case \"boolean\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, ``).toString()} ${operator} ${this.defaultIfnullOrUndefined(value, ``)}`);\r\n case \"number\":\r\n return eval(`${this.defaultIfnullOrUndefined(rPar.value, '\"\"', true).replace(',', '.')} ${operator} ${this.defaultIfnullOrUndefined(value, '\"\"', true).replace(',', '.')}`);\r\n case \"date\":\r\n let parDateConv = `this.dates.getDateConvertion(\"${rPar.value}\")`;\r\n let valDateConv = `this.dates.getDateConvertion(\"${value}\")`;\r\n\r\n switch (operator) {\r\n\r\n case \"==\": return eval(`${parDateConv} == ${valDateConv} || (${parDateConv} != null && ${parDateConv}.isSame(${valDateConv}))`);\r\n case \"!=\": return eval(`${parDateConv} != ${valDateConv} && ${parDateConv} != null && !${parDateConv}.isSame(${valDateConv})`);\r\n case \">\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isAfter(${valDateConv})`);\r\n case \"<\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isBefore(${valDateConv})`);\r\n case \">=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isAfter(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n case \"<=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isBefore(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n console.warn(\"Errori nella valutazione dell'espressione. Fallback a false\");\r\n return false;\r\n }\r\n\r\n throw `@esfaenza/parameters: Tipo parametro ${key} non riconosciuto: ${rPar.type}`;\r\n }\r\n\r\n /** @ignore */\r\n private defaultIfnullOrUndefined<T>(item: T, dflt: T, emptyStringIsNull: boolean = false): T {\r\n if (item == null || item == undefined || item.toString() == 'null' || (emptyStringIsNull && item.toString() == \"\"))\r\n return dflt;\r\n return item;\r\n }\r\n\r\n /** @ignore */\r\n public getSource(parameter: GenericParameter, search: string, byid: boolean): Observable<{ id: string, description: string }[]> {\r\n if (!this.AutoCompleteDataRetrieve) {\r\n console.error(\"@forms-and-validations: funzione di dataretrieve non impostata per un parametro autocomplete\");\r\n return of([])\r\n }\r\n else\r\n return this.AutoCompleteDataRetrieve(parameter, search, byid);\r\n }\r\n}","<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"> </span>{{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && !par.sourceapi\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && !par.sourceapi\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [UseCommaSeparatedList]=\"true\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n <!--Se enum autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n <!--Se enum multiselect autocomplete-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum && par.sourceapi\">\r\n <form-autocomplete [Form]=\"Form\" [HideChoicesOnSelection]=\"AutocompleteHideChoicesOnSelection\" [Multi]=\"true\" [FormLayout]=\"false\" [Placeholder]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" [Readonly]=\"Readonly || par.isreadonly\" [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-autocomplete>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { LocalizationModule } from '@esfaenza/localizations';\r\nimport { EsParametersComponent } from './es_parameters.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [EsParametersComponent],\r\n imports: [\r\n CommonModule,\r\n LocalizationModule,\r\n FormsModule,\r\n FormsAndValidationsModule,\r\n ],\r\n exports: [EsParametersComponent]\r\n})\r\nexport class EsParametersModule {\r\n }\r\n","/**\r\n * Classe che rappresenta un parametro generico\r\n */\r\nexport class GenericParameter {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @param {string} id Codice del parametro\r\n * @param {string} description Descrizione del parametro\r\n * @param {string} pattern Pattern di validazione\r\n * @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input \r\n * @param {boolean} required Indica se il valore è obbligatorio o meno\r\n * @param {any} v_default Valore di default per questo Parametro\r\n * @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere \r\n * @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)\r\n * @param {string} sourceapi Nei casi in cui il **type** è **enum** indica l'api da cui recuperare i valori da bindare alla select o alla multiselect\r\n * @param {boolean} pageddata Nei casi in cui il **type** è **enum** indica che l'api specificata eventualmetne da **sourceapi** è paginata\r\n */\r\n constructor(\r\n public id: string,\r\n public description: string,\r\n public pattern: string,\r\n type: 'date' | 'string' | 'number' | 'boolean' | 'enum',\r\n public required: boolean,\r\n v_default: any = null,\r\n public enumvalues: { id: string, description: string }[] = [],\r\n public multienum?: boolean,\r\n public sourceapi?: string,\r\n public pageddata?: boolean) {\r\n\r\n this.type = type == 'enum' ? null : type;\r\n this.visible = true;\r\n this.enumtype = type == 'enum' ? type : \"\";\r\n this.isreadonly = false;\r\n\r\n if (!this.enumtype && enumvalues.length != 0)\r\n console.error(\"impossibile gestire valori di dizionario per un parametro non di tipo enum\");\r\n\r\n if (v_default != null)\r\n this.value = v_default;\r\n }\r\n\r\n /** Tipo di dato rappresentato da questo parametro */\r\n public type?: 'date' | 'string' | 'number' | 'boolean' | 'enum';\r\n\r\n /** Typecode lato C# che rappresenta il tipo di dato */\r\n public typecode: number;\r\n\r\n /** Indica se il campo specificato dev'essere di sola lettura o meno */\r\n public isreadonly: boolean;\r\n\r\n /** Valore del parametro */\r\n public value: any;\r\n\r\n /** Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto */\r\n public visible: boolean;\r\n\r\n /** Tipo Enum, valorizzato dal Backend */\r\n public enumtype: string;\r\n\r\n /** Tipo Dizionario, valorizzato dal Backend */\r\n public dicttype: string;\r\n\r\n /** Espressione di obbligatorietà */\r\n public requiredexp?: string;\r\n\r\n /** Espressione di visibilità */\r\n public visibleexp?: string;\r\n}","/*\r\n * Public API Surface of parameters\r\n */\r\nexport * from './lib/es_parameters.module';\r\nexport * from './lib/models/GenericParameter';\r\nexport * from './lib/es_parameters.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ export declare class EsParametersComponent implements ControlValueAccessor, Vali
|
|
|
36
36
|
Removal: boolean;
|
|
37
37
|
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
38
38
|
Readonly: boolean;
|
|
39
|
+
/** Indica se i componenti di Input generati sono Readonly o no */
|
|
40
|
+
ListFormat: 'CommaSeparated' | 'Array';
|
|
39
41
|
/** Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit */
|
|
40
42
|
Form: NgForm;
|
|
41
43
|
/** Quando utilizza un sottocomponente autocomplete abilita o disabilita il reset dell'input per ogni selezione */
|
|
@@ -120,5 +122,5 @@ export declare class EsParametersComponent implements ControlValueAccessor, Vali
|
|
|
120
122
|
description: string;
|
|
121
123
|
}[]>;
|
|
122
124
|
static ɵfac: i0.ɵɵFactoryDeclaration<EsParametersComponent, never>;
|
|
123
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EsParametersComponent, "es-parameters", never, { "LastParameterNoMargin": "LastParameterNoMargin"; "LabelColWidth": "LabelColWidth"; "InputColWidth": "InputColWidth"; "submitted": "submitted"; "EmptyMessage": "EmptyMessage"; "Removal": "Removal"; "Readonly": "Readonly"; "Form": "Form"; "AutocompleteHideChoicesOnSelection": "AutocompleteHideChoicesOnSelection"; "AutoCompleteDataRetrieve": "AutoCompleteDataRetrieve"; "LabelInputRatio": "LabelInputRatio"; }, {}, never, never, false, never>;
|
|
125
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EsParametersComponent, "es-parameters", never, { "LastParameterNoMargin": "LastParameterNoMargin"; "LabelColWidth": "LabelColWidth"; "InputColWidth": "InputColWidth"; "submitted": "submitted"; "EmptyMessage": "EmptyMessage"; "Removal": "Removal"; "Readonly": "Readonly"; "ListFormat": "ListFormat"; "Form": "Form"; "AutocompleteHideChoicesOnSelection": "AutocompleteHideChoicesOnSelection"; "AutoCompleteDataRetrieve": "AutoCompleteDataRetrieve"; "LabelInputRatio": "LabelInputRatio"; }, {}, never, never, false, never>;
|
|
124
126
|
}
|
|
@@ -32,7 +32,7 @@ export declare class GenericParameter {
|
|
|
32
32
|
description: string;
|
|
33
33
|
}[], multienum?: boolean, sourceapi?: string, pageddata?: boolean);
|
|
34
34
|
/** Tipo di dato rappresentato da questo parametro */
|
|
35
|
-
type
|
|
35
|
+
type?: 'date' | 'string' | 'number' | 'boolean' | 'enum';
|
|
36
36
|
/** Typecode lato C# che rappresenta il tipo di dato */
|
|
37
37
|
typecode: number;
|
|
38
38
|
/** Indica se il campo specificato dev'essere di sola lettura o meno */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esfaenza/parameters",
|
|
3
|
-
"version": "15.2.
|
|
3
|
+
"version": "15.2.5",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.0.0"
|
|
6
6
|
},
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
"ngx-toastr": "16.2.0",
|
|
21
21
|
"ngx-bootstrap": "10.2.0",
|
|
22
22
|
"dayjs": "1.11.8",
|
|
23
|
-
"cerialize": "0.1.18",
|
|
24
23
|
"sweetalert2": "11.7.12"
|
|
25
24
|
},
|
|
26
25
|
"module": "fesm2015/esfaenza-parameters.mjs",
|