@eqproject/eqp-dynamic-module 2.4.41 → 2.4.42
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/components/private/dbgetter/dbgetter.component.mjs +7 -3
- package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +7 -6
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +12 -7
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +12 -7
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/dbgetter/dbgetter.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -75,15 +75,19 @@ export class DbgetterComponent {
|
|
|
75
75
|
this.selectedValue.emit([row[this.field.DataGetter.DataGetterColumnForce.key], false]);
|
|
76
76
|
}
|
|
77
77
|
close() {
|
|
78
|
+
this.selectedValue.emit(["****CLOSE****", true]);
|
|
79
|
+
this.loaded = false;
|
|
80
|
+
}
|
|
81
|
+
delete() {
|
|
78
82
|
this.selectedValue.emit([null, true]);
|
|
79
83
|
this.loaded = false;
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
DbgetterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DbgetterComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
-
DbgetterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DbgetterComponent, selector: "dbgetter", inputs: { field: "field", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent", data: "data" }, outputs: { out: "out", selectedValue: "selectedValue" }, ngImport: i0, template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><
|
|
87
|
+
DbgetterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DbgetterComponent, selector: "dbgetter", inputs: { field: "field", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent", data: "data" }, outputs: { out: "out", selectedValue: "selectedValue" }, ngImport: i0, template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"close()\">Chiudi finestra <mat-icon>close</mat-icon></button></div>\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"delete()\">Cancella valore <mat-icon>delete</mat-icon></button></div>\r\n <div class=\"right\"><mat-icon>drag_indicator</mat-icon> Seleziona il valore da registrare. Clicca su questa barra per trascinare.</div>\r\n </div>\r\n <table class=\"table table-notforced\" *ngIf=\"field.DataGetter.DataGetterColumnForce == null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\">\r\n <td *ngFor=\"let key of keys\" (click)=\"selectValueNotForced(row[key])\">{{row[key]}}</td>\r\n </tr>\r\n </table>\r\n <table class=\"table table-forced\" *ngIf=\"field.DataGetter.DataGetterColumnForce != null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\" (click)=\"selectValueForced(row)\">\r\n <td *ngFor=\"let key of keys\">{{row[key]}}</td>\r\n </tr>\r\n </table> \r\n</div>\r\n\r\n<span *ngIf=\"value != null\">{{value}}</span>", styles: [".floatingtable{position:fixed;bottom:10%;left:30%;width:50%;background-color:#fff;border:1px solid black;border-radius:10px;margin:0;z-index:9000000000;padding:2px}.floatingtable .header{cursor:move;display:flex;justify-content:flex-start;height:40px;background-color:#4fa2c0;color:#fff;align-items:center;font-size:19px;padding-right:15px;margin-bottom:10px}.floatingtable .header>*{margin-right:10px}.floatingtable .header .left mat-icon{position:relative;top:5px;left:10px;cursor:pointer!important;background-color:red!important;color:#fff}.floatingtable .header .right mat-icon{position:relative;top:5px}.floatingtable .table.table-notforced{width:99%;margin:0 5px}.floatingtable .table.table-notforced td,.floatingtable .table.table-notforced th{padding:2px 2px 2px 0}.floatingtable .table.table-notforced td span,.floatingtable .table.table-notforced th span{padding:0!important}.floatingtable .table.table-notforced td:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.floatingtable .table.table-forced{width:99%;margin:0 5px}.floatingtable .table.table-forced td,.floatingtable .table.table-forced th{padding:2px 2px 2px 0}.floatingtable .table.table-forced td span,.floatingtable .table.table-forced th span{padding:0!important}.floatingtable .table.table-forced tr.rows:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.btn-small{margin:0;padding:0 16px}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }] });
|
|
84
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DbgetterComponent, decorators: [{
|
|
85
89
|
type: Component,
|
|
86
|
-
args: [{ selector: 'dbgetter', template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><
|
|
90
|
+
args: [{ selector: 'dbgetter', template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"close()\">Chiudi finestra <mat-icon>close</mat-icon></button></div>\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"delete()\">Cancella valore <mat-icon>delete</mat-icon></button></div>\r\n <div class=\"right\"><mat-icon>drag_indicator</mat-icon> Seleziona il valore da registrare. Clicca su questa barra per trascinare.</div>\r\n </div>\r\n <table class=\"table table-notforced\" *ngIf=\"field.DataGetter.DataGetterColumnForce == null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\">\r\n <td *ngFor=\"let key of keys\" (click)=\"selectValueNotForced(row[key])\">{{row[key]}}</td>\r\n </tr>\r\n </table>\r\n <table class=\"table table-forced\" *ngIf=\"field.DataGetter.DataGetterColumnForce != null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\" (click)=\"selectValueForced(row)\">\r\n <td *ngFor=\"let key of keys\">{{row[key]}}</td>\r\n </tr>\r\n </table> \r\n</div>\r\n\r\n<span *ngIf=\"value != null\">{{value}}</span>", styles: [".floatingtable{position:fixed;bottom:10%;left:30%;width:50%;background-color:#fff;border:1px solid black;border-radius:10px;margin:0;z-index:9000000000;padding:2px}.floatingtable .header{cursor:move;display:flex;justify-content:flex-start;height:40px;background-color:#4fa2c0;color:#fff;align-items:center;font-size:19px;padding-right:15px;margin-bottom:10px}.floatingtable .header>*{margin-right:10px}.floatingtable .header .left mat-icon{position:relative;top:5px;left:10px;cursor:pointer!important;background-color:red!important;color:#fff}.floatingtable .header .right mat-icon{position:relative;top:5px}.floatingtable .table.table-notforced{width:99%;margin:0 5px}.floatingtable .table.table-notforced td,.floatingtable .table.table-notforced th{padding:2px 2px 2px 0}.floatingtable .table.table-notforced td span,.floatingtable .table.table-notforced th span{padding:0!important}.floatingtable .table.table-notforced td:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.floatingtable .table.table-forced{width:99%;margin:0 5px}.floatingtable .table.table-forced td,.floatingtable .table.table-forced th{padding:2px 2px 2px 0}.floatingtable .table.table-forced td span,.floatingtable .table.table-forced th span{padding:0!important}.floatingtable .table.table-forced tr.rows:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.btn-small{margin:0;padding:0 16px}\n"] }]
|
|
87
91
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; }, propDecorators: { field: [{
|
|
88
92
|
type: Input
|
|
89
93
|
}], record: [{
|
|
@@ -106,4 +110,4 @@ export var QueryEditorModeEnum;
|
|
|
106
110
|
QueryEditorModeEnum[QueryEditorModeEnum["COMPOSER"] = 2] = "COMPOSER";
|
|
107
111
|
QueryEditorModeEnum[QueryEditorModeEnum["RESULT"] = 3] = "RESULT";
|
|
108
112
|
})(QueryEditorModeEnum || (QueryEditorModeEnum = {}));
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBYXZFLE1BQU0sT0FBTyxpQkFBaUI7SUFlNUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVhqQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHlCQUFvQixHQUErQixJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7UUFDNUYsU0FBSSxHQUFRLElBQUksQ0FBQyxDQUFDLHdDQUF3QztRQUV6RCxRQUFHLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDM0Qsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyRSxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUMzQixXQUFNLEdBQVksS0FBSyxDQUFDO0lBR3FCLENBQUM7SUFFOUMsUUFBUTtRQUVOLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLENB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QUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7OytHQTFGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix5T0NiOUIsc2tEQTJCNEM7NEZEZC9CLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxVQUFVO2lHQU1YLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLEdBQUc7c0JBQVosTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNOztBQXFGVCw2QkFBNkI7QUFDN0IsTUFBTSxDQUFOLElBQVksbUJBSVg7QUFKRCxXQUFZLG1CQUFtQjtJQUM3Qiw2RUFBa0IsQ0FBQTtJQUNsQixxRUFBYyxDQUFBO0lBQ2QsaUVBQVksQ0FBQTtBQUNkLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWxvYWRlci9keW5hbWljLWxvYWRlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYmdldHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RiZ2V0dGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYmdldHRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYmdldHRlckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEgPSBudWxsOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IG51bGw7IC8vIExvIGZhY2NpYW1vIGZ1bnppb25hcmUgdGlwbyBFUVAtVEFCTEVcclxuXHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGtleXM6IEFycmF5PHN0cmluZz4gPSBudWxsO1xyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJXZWxjb21lIHRvIERCR0VUVEVSIENvdW50cnlcIik7XHJcbiAgICBjb25zb2xlLmxvZyhcImZpZWxkXCIsIHRoaXMuZmllbGQpO1xyXG4gICAgY29uc29sZS5sb2coXCJyZWNvcmRcIiwgdGhpcy5yZWNvcmQpO1xyXG4gICAgY29uc29sZS5sb2coXCJpbkNvbmZpZ1wiLCB0aGlzLmluQ29uZmlnKTtcclxuICAgIGNvbnNvbGUubG9nKFwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiwgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwpe1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5tb2RlID0gUXVlcnlFZGl0b3JNb2RlRW51bS5SRVNVTFQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmZpZWxkID0gdGhpcy5maWVsZDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkID0gdGhpcy5yZWNvcmQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmluQ29uZmlnID0gdGhpcy5pbkNvbmZpZztcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpe1xyXG5cclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCgnLi9hc3NldHMvbW9ja3Vwcy9tb2NrZWRGcm9tUXVlcnlFZGl0b3JfUkVTVUxUX01BTlkudHh0Jywge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSlcclxuICAgICAgLnN1YnNjcmliZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YS5yZXN1bHQpO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEpO1xyXG4gICAgICAgfSk7ICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoZXY6IGV2ZW50T3V0KXtcclxuICAgIGNvbnNvbGUubG9nKFwiTGEgcXVlcnkgZGVsIFF1ZXJ5IEVkaXRvciDDqCBzdGF0YSBlc2VndWl0YSwgZWQgaGEgcmVzdGl0dWl0byBpbCBzZWd1ZW50ZSByaXN1bHRhdG86IFwiLGV2KTtcclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJzZW5kLW91dFwiKSAhPSAtMSl7IHRoaXMub3V0LmVtaXQoZXYpOyB9XHJcblxyXG4gICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShldi5QYXJhbXMucmVzdWx0KTtcclxuICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEpO1xyXG5cclxuICB9XHJcblxyXG4gIHByb2Nlc3NSZXN1bHQoZGF0YSl7XHJcbiAgICBcclxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLmtleXMgPSBPYmplY3Qua2V5cyhkYXRhWzBdKTtcclxuICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPT0gMiAmJiBkYXRhLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAvLyBTZSBobyB1biBzb2xvIG9jY2hpZXR0byBzZWxlemlvbmF0byBlIGxhIHF1ZXJ5IHJlc3RpdHVpc2NlIHVuIHNvbG8gdmFsb3JlLCBsbyBidXR0byBmdW9yaSBhdXRvbWF0aWNhbWVudGVcclxuICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZGF0YVswXVt0aGlzLmtleXNbMV1dO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXV0sdHJ1ZV0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGRhdGEubGVuZ3RoID09IDEgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKXtcclxuICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW2RhdGFbMF1bdGhpcy5rZXlzWzFdXSx0cnVlXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlOyAgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgc2VsZWN0VmFsdWVOb3RGb3JjZWQodmFsdWUpe1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt2YWx1ZSxmYWxzZV0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VmFsdWVGb3JjZWQocm93KXtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSByb3dbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtyb3dbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldLGZhbHNlXSk7XHJcbiAgfSAgXHJcblxyXG4gIGNsb3NlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbbnVsbCx0cnVlXSk7XHJcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8vIE8gY29zw6wgbyBzY2hpYW50YXRvIGEgbWFub1xyXG5leHBvcnQgZW51bSBRdWVyeUVkaXRvck1vZGVFbnVtIHtcclxuICBcIkNPTkZJR1VSQVRPUlwiID0gMSxcclxuICBcIkNPTVBPU0VSXCIgPSAyLFxyXG4gIFwiUkVTVUxUXCIgPSAzXHJcbn0iLCI8bmctdGVtcGxhdGUgW2FwcER5bmFtaWNMb2FkZXJdIFtkYXRhXT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgKG91dCk9XCJvbkV4dGVybmFsU1FMUmVzdWx0T3V0KCRldmVudCk7XCIgKm5nSWY9XCJRdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJmbG9hdGluZ3RhYmxlIGRyYWdnYWJsZVwiIGNka0RyYWcgKm5nSWY9XCJkYXRhICE9IG51bGwgJiYgbG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj48bWF0LWljb24gKGNsaWNrKT1cImNsb3NlKClcIj5jbG9zZTwvbWF0LWljb24+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+PG1hdC1pY29uPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj4gU2VsZXppb25hIGlsIHZhbG9yZSBkYSByZWdpc3RyYXJlLiBDbGljY2Egc3UgcXVlc3RhIGJhcnJhIHBlciB0cmFzY2luYXJlLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ub3Rmb3JjZWRcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGxcIj5cclxuICAgICAgICA8dHI+PHRoICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5czsgbGV0IGZpcnN0ID0gZmlyc3RcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaXJzdFwiPnt7a2V5fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpcnN0XCI+e3trZXkuc3BsaXQoXCJfX1wiKVsxXX19PC9zcGFuPlxyXG4gICAgICAgIDwvdGg+PC90cj5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhXCIgY2xhc3M9XCJyb3dzXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIiAoY2xpY2spPVwic2VsZWN0VmFsdWVOb3RGb3JjZWQocm93W2tleV0pXCI+e3tyb3dba2V5XX19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWZvcmNlZFwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbFwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIiAoY2xpY2spPVwic2VsZWN0VmFsdWVGb3JjZWQocm93KVwiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCI+e3tyb3dba2V5XX19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT4gICAgXHJcbjwvZGl2PlxyXG5cclxuPHNwYW4gKm5nSWY9XCJ2YWx1ZSAhPSBudWxsXCI+e3t2YWx1ZX19PC9zcGFuPiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBYXZFLE1BQU0sT0FBTyxpQkFBaUI7SUFlNUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVhqQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHlCQUFvQixHQUErQixJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7UUFDNUYsU0FBSSxHQUFRLElBQUksQ0FBQyxDQUFDLHdDQUF3QztRQUV6RCxRQUFHLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDM0Qsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyRSxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUMzQixXQUFNLEdBQVksS0FBSyxDQUFDO0lBR3FCLENBQUM7SUFFOUMsUUFBUTtRQUVOLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLENB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QUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzsrR0EvRlUsaUJBQWlCO21HQUFqQixpQkFBaUIseU9DYjlCLG95REE0QjRDOzRGRGYvQixpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsVUFBVTtpR0FNWCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFSSxHQUFHO3NCQUFaLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTs7QUF5RlQsNkJBQTZCO0FBQzdCLE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0IsNkVBQWtCLENBQUE7SUFDbEIscUVBQWMsQ0FBQTtJQUNkLGlFQUFZLENBQUE7QUFDZCxDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhLCBldmVudE91dCB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGJnZXR0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYmdldHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGJnZXR0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGJnZXR0ZXJDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhID0gbnVsbDsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSBudWxsOyAvLyBMbyBmYWNjaWFtbyBmdW56aW9uYXJlIHRpcG8gRVFQLVRBQkxFXHJcblxyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBrZXlzOiBBcnJheTxzdHJpbmc+ID0gbnVsbDtcclxuICBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWx1ZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiV2VsY29tZSB0byBEQkdFVFRFUiBDb3VudHJ5XCIpO1xyXG4gICAgY29uc29sZS5sb2coXCJmaWVsZFwiLCB0aGlzLmZpZWxkKTtcclxuICAgIGNvbnNvbGUubG9nKFwicmVjb3JkXCIsIHRoaXMucmVjb3JkKTtcclxuICAgIGNvbnNvbGUubG9nKFwiaW5Db25maWdcIiwgdGhpcy5pbkNvbmZpZyk7XHJcbiAgICBjb25zb2xlLmxvZyhcIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIsIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQpO1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsKXtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubW9kZSA9IFF1ZXJ5RWRpdG9yTW9kZUVudW0uUkVTVUxUO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5maWVsZCA9IHRoaXMuZmllbGQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLnJlY29yZCA9IHRoaXMucmVjb3JkO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5pbkNvbmZpZyA9IHRoaXMuaW5Db25maWc7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKXtcclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJy4vYXNzZXRzL21vY2t1cHMvbW9ja2VkRnJvbVF1ZXJ5RWRpdG9yX1JFU1VMVF9NQU5ZLnR4dCcsIHtyZXNwb25zZVR5cGU6ICd0ZXh0J30pXHJcbiAgICAgIC5zdWJzY3JpYmUobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKG1vY2tlZEZyb21RdWVyeUVkaXRvcik7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZSh0aGlzLmRhdGEucmVzdWx0KTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NSZXN1bHQodGhpcy5kYXRhKTtcclxuICAgICAgIH0pOyAgICAgIFxyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbkV4dGVybmFsU1FMUmVzdWx0T3V0KGV2OiBldmVudE91dCl7XHJcbiAgICBjb25zb2xlLmxvZyhcIkxhIHF1ZXJ5IGRlbCBRdWVyeSBFZGl0b3Igw6ggc3RhdGEgZXNlZ3VpdGEsIGVkIGhhIHJlc3RpdHVpdG8gaWwgc2VndWVudGUgcmlzdWx0YXRvOiBcIixldik7XHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwic2VuZC1vdXRcIikgIT0gLTEpeyB0aGlzLm91dC5lbWl0KGV2KTsgfVxyXG5cclxuICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UoZXYuUGFyYW1zLnJlc3VsdCk7XHJcbiAgICB0aGlzLnByb2Nlc3NSZXN1bHQodGhpcy5kYXRhKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzUmVzdWx0KGRhdGEpe1xyXG4gICAgXHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5rZXlzID0gT2JqZWN0LmtleXMoZGF0YVswXSk7XHJcbiAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID09IDIgJiYgZGF0YS5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgLy8gU2UgaG8gdW4gc29sbyBvY2NoaWV0dG8gc2VsZXppb25hdG8gZSBsYSBxdWVyeSByZXN0aXR1aXNjZSB1biBzb2xvIHZhbG9yZSwgbG8gYnV0dG8gZnVvcmkgYXV0b21hdGljYW1lbnRlXHJcbiAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGRhdGFbMF1bdGhpcy5rZXlzWzFdXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbZGF0YVswXVt0aGlzLmtleXNbMV1dLHRydWVdKTtcclxuICAgICAgfSBlbHNlIGlmIChkYXRhLmxlbmd0aCA9PSAxICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGRhdGFbMF1bdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXV0sdHJ1ZV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTsgIFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHNlbGVjdFZhbHVlTm90Rm9yY2VkKHZhbHVlKXtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZTtcclxuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdmFsdWUsZmFsc2VdKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFZhbHVlRm9yY2VkKHJvdyl7XHJcbiAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gcm93W3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbcm93W3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XSxmYWxzZV0pO1xyXG4gIH0gIFxyXG5cclxuICBjbG9zZSgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW1wiKioqKkNMT1NFKioqKlwiLHRydWVdKTtcclxuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XHJcbiAgfVxyXG4gIFxyXG4gIGRlbGV0ZSgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW251bGwsdHJ1ZV0pO1xyXG4gICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcclxuICB9ICBcclxufVxyXG5cclxuLy8gTyBjb3PDrCBvIHNjaGlhbnRhdG8gYSBtYW5vXHJcbmV4cG9ydCBlbnVtIFF1ZXJ5RWRpdG9yTW9kZUVudW0ge1xyXG4gIFwiQ09ORklHVVJBVE9SXCIgPSAxLFxyXG4gIFwiQ09NUE9TRVJcIiA9IDIsXHJcbiAgXCJSRVNVTFRcIiA9IDNcclxufSIsIjxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoJGV2ZW50KTtcIiAqbmdJZj1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGxcIj48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdiBjbGFzcz1cImZsb2F0aW5ndGFibGUgZHJhZ2dhYmxlXCIgY2RrRHJhZyAqbmdJZj1cImRhdGEgIT0gbnVsbCAmJiBsb2FkZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtYWxsIGJ0bi1kYW5nZXJcIiAoY2xpY2spPVwiY2xvc2UoKVwiPkNoaXVkaSBmaW5lc3RyYSA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPjwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21hbGwgYnRuLWRhbmdlclwiIChjbGljayk9XCJkZWxldGUoKVwiPkNhbmNlbGxhIHZhbG9yZSA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj48bWF0LWljb24+ZHJhZ19pbmRpY2F0b3I8L21hdC1pY29uPiBTZWxlemlvbmEgaWwgdmFsb3JlIGRhIHJlZ2lzdHJhcmUuIENsaWNjYSBzdSBxdWVzdGEgYmFycmEgcGVyIHRyYXNjaW5hcmUuPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLW5vdGZvcmNlZFwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbFwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZU5vdEZvcmNlZChyb3dba2V5XSlcIj57e3Jvd1trZXldfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtZm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZUZvcmNlZChyb3cpXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIj57e3Jvd1trZXldfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPiAgICBcclxuPC9kaXY+XHJcblxyXG48c3BhbiAqbmdJZj1cInZhbHVlICE9IG51bGxcIj57e3ZhbHVlfX08L3NwYW4+Il19
|
package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs
CHANGED
|
@@ -134,15 +134,16 @@ export class DynamicModuleFieldFixComponent {
|
|
|
134
134
|
this.out.emit(ev);
|
|
135
135
|
}
|
|
136
136
|
onSelectedValue(value) {
|
|
137
|
+
this.DBGetterLoaded = false;
|
|
138
|
+
if (value[0] == "****CLOSE****") {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
137
141
|
this.record[this.field.Name] = value[0];
|
|
138
142
|
this.DBGetterValue = value[0];
|
|
139
143
|
this.DBGetterExact = value[1];
|
|
140
144
|
if (this.field.DataGetter.DataGetterValue.openedFields.find(x => x.QueryPropertyValue == '?') != null) {
|
|
141
145
|
this.DBGetterHaveQuestions = true;
|
|
142
146
|
}
|
|
143
|
-
if (value[0] == null) {
|
|
144
|
-
this.DBGetterLoaded = false;
|
|
145
|
-
}
|
|
146
147
|
}
|
|
147
148
|
DBGetterChange() {
|
|
148
149
|
this.DBGetterValue = null;
|
|
@@ -152,10 +153,10 @@ export class DynamicModuleFieldFixComponent {
|
|
|
152
153
|
}
|
|
153
154
|
}
|
|
154
155
|
DynamicModuleFieldFixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldFixComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
155
|
-
DynamicModuleFieldFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldFixComponent, selector: "dynamic-module-field-fix", inputs: { endPointConfiguration: "endPointConfiguration", field: "field", form: "form", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent" }, outputs: { recordChange: "recordChange", out: "out" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\"
|
|
156
|
+
DynamicModuleFieldFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldFixComponent, selector: "dynamic-module-field-fix", inputs: { endPointConfiguration: "endPointConfiguration", field: "field", form: "form", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent" }, outputs: { recordChange: "recordChange", out: "out" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded && record[field.Name] == null\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\" *ngIf=\"field.FieldValue == null\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null || record[field.Name] != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions || record[field.Name] != null || DBGetterValue != null\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\">Modifica</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #fieldsTemplate>\r\n\r\n <text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </text-field-template>\r\n\r\n <textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </textarea-field-template>\r\n\r\n <boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </boolean-field-template>\r\n\r\n <date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </date-field-template>\r\n\r\n <numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </numeric-field-template>\r\n\r\n <list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </list-value-field-template>\r\n\r\n <attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </attachment-field-template>\r\n\r\n <image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageDraw)=\"onImageDraw($event)\">\r\n </image-field-template> \r\n\r\n <image-with-markers-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine con markers']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageMark)=\"onImageMark($event)\">\r\n </image-with-markers-field-template> \r\n\r\n <image-field-selector-template #imageSelectorTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco immagini']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\"\r\n >\r\n </image-field-selector-template>\r\n\r\n <list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\r\n [form]=\"getInnerFormFromField(field)\" [configurations]=\"configList\"\r\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\r\n </list-form-record>\r\n\r\n <label-field-template #labelTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Etichetta']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </label-field-template>\r\n\r\n</ng-template>", styles: [".dbgetterfield{align-items:center;justify-content:flex-start;height:80px}.dbgetterfield span{margin-right:15px}\n"], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.TextFieldTemplateComponent, selector: "text-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i5.BooleanFieldTemplateComponent, selector: "boolean-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i6.DateFieldTemplateComponent, selector: "date-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i7.TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i8.NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i9.ListValueFieldTemplateComponent, selector: "list-value-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i10.AttachmentFieldTemplateComponent, selector: "attachment-field-template", inputs: ["onlyImages", "field", "record"], outputs: ["recordChange", "onAttachmentsChange"] }, { kind: "component", type: i11.ImageFieldTemplateComponent, selector: "image-field-template", inputs: ["endPointConfiguration", "record", "field", "inConfig"], outputs: ["recordChange", "imageDraw"] }, { kind: "component", type: i12.ListFormRecordComponent, selector: "list-form-record", inputs: ["configurations", "endPointConfiguration", "formID", "form", "externalButtons"], outputs: ["onViewRecord", "onAddViewEditRecord", "onDeleteRecord", "onAfterDeleteRecord"] }, { kind: "component", type: i13.ImageFieldSelectorTemplateComponent, selector: "image-field-selector-template", inputs: ["record", "field"], outputs: ["recordChange"] }, { kind: "component", type: i14.LabelFieldTemplateComponent, selector: "label-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i15.ImageWithMarkersFieldTemplateComponent, selector: "image-with-markers-field-template", inputs: ["endPointConfiguration", "record", "field", "inConfig"], outputs: ["recordChange", "imageMark"] }, { kind: "component", type: i16.DbgetterComponent, selector: "dbgetter", inputs: ["field", "record", "inConfig", "QueryEditorComponent", "data"], outputs: ["out", "selectedValue"] }] });
|
|
156
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldFixComponent, decorators: [{
|
|
157
158
|
type: Component,
|
|
158
|
-
args: [{ selector: 'dynamic-module-field-fix', template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\"
|
|
159
|
+
args: [{ selector: 'dynamic-module-field-fix', template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded && record[field.Name] == null\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\" *ngIf=\"field.FieldValue == null\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null || record[field.Name] != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions || record[field.Name] != null || DBGetterValue != null\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\">Modifica</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #fieldsTemplate>\r\n\r\n <text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </text-field-template>\r\n\r\n <textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </textarea-field-template>\r\n\r\n <boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </boolean-field-template>\r\n\r\n <date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </date-field-template>\r\n\r\n <numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </numeric-field-template>\r\n\r\n <list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </list-value-field-template>\r\n\r\n <attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </attachment-field-template>\r\n\r\n <image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageDraw)=\"onImageDraw($event)\">\r\n </image-field-template> \r\n\r\n <image-with-markers-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine con markers']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageMark)=\"onImageMark($event)\">\r\n </image-with-markers-field-template> \r\n\r\n <image-field-selector-template #imageSelectorTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco immagini']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\"\r\n >\r\n </image-field-selector-template>\r\n\r\n <list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\r\n [form]=\"getInnerFormFromField(field)\" [configurations]=\"configList\"\r\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\r\n </list-form-record>\r\n\r\n <label-field-template #labelTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Etichetta']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </label-field-template>\r\n\r\n</ng-template>", styles: [".dbgetterfield{align-items:center;justify-content:flex-start;height:80px}.dbgetterfield span{margin-right:15px}\n"] }]
|
|
159
160
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { endPointConfiguration: [{
|
|
160
161
|
type: Input
|
|
161
162
|
}], field: [{
|
|
@@ -182,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
182
183
|
type: ViewChildren,
|
|
183
184
|
args: ['listInnerFormRecords']
|
|
184
185
|
}] } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWZpeC9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZHluYW1pYy1tb2R1bGUtZmllbGQtZml4L2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTBCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEksT0FBTyxFQUFhLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3RILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3RELE1BQU0sT0FBTyw4QkFBOEI7SUFpQ3pDLFlBQ1UsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQTVCbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUd6QixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2hFLFFBQUcsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUdyRSxlQUFVLEdBQTRCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUNwRSxrQkFBYSxH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QUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7NEhBL0pRLDhCQUE4QjtnSEFBOUIsOEJBQThCLDJtQkNsQjNDLHEzSkEyRWM7NEZEekRELDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSwwQkFBMEI7Z0dBTTNCLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLEdBQUc7c0JBQVosTUFBTTtnQkFpQitDLHFCQUFxQjtzQkFBMUUsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3JCLGFBQWE7c0JBQTNDLFlBQVk7dUJBQUMsZUFBZTtnQkFDUyxvQkFBb0I7c0JBQXpELFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJQmFzZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9pQmFzZUZpZWxkQ29tcG9uZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRmllbGRUeXBlRW51bSwgRGF0YUdldHRlclR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Q29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgTGlzdEZvcm1SZWNvcmRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXJlY29yZHMvbGlzdC1mb3JtLXJlY29yZC9saXN0LWZvcm0tcmVjb3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBEeW5BdHRhY2htZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2R5bkF0dGFjaG1lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2R5bmFtaWMtbW9kdWxlLWZpZWxkLWZpeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljTW9kdWxlRmllbGRGaXhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIElCYXNlRmllbGRDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGE7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcblxyXG4gIEBPdXRwdXQoKSByZWNvcmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcblxyXG5cclxuICBjb25maWdMaXN0OiBEeW5hbWljTW9kdWxlTGlzdENvbmZpZyA9IG5ldyBEeW5hbWljTW9kdWxlTGlzdENvbmZpZygpO1xyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIERhdGFHZXR0ZXJUeXBlRW51bSA9IERhdGFHZXR0ZXJUeXBlRW51bTtcclxuICBEQkdldHRlclZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIERCR2V0dGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgREJHZXR0ZXJFeGFjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIERCR2V0dGVySGF2ZVF1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgYWdnaXVuZ2VyZS9tb2RpZmljYXJlIGkgcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpb1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtOiBGb3JtO1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkOiBSZWNvcmQ7XHJcbiAgaW5kZXhJbm5lckZvcm1SZWNvcmQ6IG51bWJlcjtcclxuICBvbmx5Vmlld0lubmVyRm9ybVJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpYWxvZ0lubmVyRm9ybVJlY29yZFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0lubmVyRm9ybVJlY29yZCcsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0lubmVyRm9ybVJlY29yZDogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcImZpZWxkVGVtcGxhdGVcIikgZmllbGRUZW1wbGF0ZTogUXVlcnlMaXN0PER5bmFtaWNNb2R1bGVGaWVsZEZpeENvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZHJlbignbGlzdElubmVyRm9ybVJlY29yZHMnKSBsaXN0SW5uZXJGb3JtUmVjb3JkczogUXVlcnlMaXN0PExpc3RGb3JtUmVjb3JkQ29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gIHVwZGF0ZUZpZWxkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmllbGRUZW1wbGF0ZSAmJiB0aGlzLmZpZWxkVGVtcGxhdGUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpZWxkVGVtcGxhdGUuZm9yRWFjaChmID0+IGYudXBkYXRlRmllbGQoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcImR5bmFtaWMtbW9kdWxlLWZpZWxkXCIsdGhpcy5maWVsZCk7XHJcblxyXG4gICAgdGhpcy5jb25maWdMaXN0LnZhbHVlcyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV1cclxuICAgIHRoaXMuY29uZmlnTGlzdC5zaG93VGl0bGUgPSB0cnVlO1xyXG4gICAgdGhpcy5jb25maWdMaXN0LmRlZmF1bHRMaXN0QWN0aW9ucyA9IG5ldyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgY2FtYmlvIGRlbCB2YWxvcmUgZGkgb2duaSBwcm9wcmlldMOgIGRlbGwnb2dnZXR0byByZWNvcmQuXHJcbiAgICogU2VydmUgYWQgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZGkgdHV0dGkgaSBjYW1waSBjaGUgaGFubm8gdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgb25SZWNvcmRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmVjdXBlcmFyZSB1bmEgSW5uZXJGb3JtIGEgcGFydGlyZSBkYWwgRmllbGQgY2hlIGxhIHJhcHByZXNlbnRhLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBhIHBhcnRpcmUgZGFsIHF1YWxlIHNpIHZ1b2xlIHJlY3VwZXJhcmUgbGEgSW5uZXJGb3JtLlxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIG9nZ2V0dG8gZGkgdGlwbyBGb3JtLlxyXG4gICAqL1xyXG4gIGdldElubmVyRm9ybUZyb21GaWVsZChmaWVsZDogQmFzZUZpZWxkKTogRm9ybSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLklubmVyRm9ybXMgJiYgdGhpcy5mb3JtLklubmVyRm9ybXMuZmluZChmID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoZiA9PiBmLk5hbWUgPT0gZmllbGQuTGFiZWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogTWV0b2RvIHBlciBhcHJpcmUgdW4gZGlhbG9nIGluIGN1aSBhZ2dpdW5nZXJlL21vZGlmaWNhcmUvdmlzdWFsaXp6YXJlIHVuIHJlY29yZCBhcHBhcnRlbmVudGVcclxuICogYSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAqIEBwYXJhbSByZWNvcmQgRXZlbnRvIGRpIG91dHB1dCBkZWwgY29tcG9uZW50ZSBsaXN0LWZvcm0tcmVjb3JkLCBjb250aWVuZSBpbCByZWNvcmQgc2VsZXppb25hdG8gZSB1biBib29sZW5vIGNoZSBpbmRpY2EgXHJcbiAqIHNlIGwndXRlbnRlIHZ1b2xlIG1vZGlmaWNhcmUgbyB2aXN1YWxpenphcmUgbCdlbGVtZW50byBzZWxlemlvbmF0by5cclxuICogQHBhcmFtIGlubmVyRm9ybSBDb250aWVuZSBsYSBGb3JtIGRpIGRldHRhZ2xpbyBkYWxsYSBxdWFsZSDDqCBzdGF0byByaWNoaWVzdG8gaWwgcmVjb3JkLlxyXG4gKi9cclxuICBvbkFkZFZpZXdFZGl0SW5uZXJGb3JtUmVjb3JkKHJlY29yZDogeyByZWNvcmQ6IFJlY29yZCwgb25seVZpZXc6IGJvb2xlYW4gfSwgZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybSA9IHRoaXMuZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkKTtcclxuICAgIGlmIChyZWNvcmQgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG4gICAgICB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID0gbnVsbDtcclxuICAgICAgdGhpcy5vbmx5Vmlld0lubmVyRm9ybVJlY29yZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybVJlY29yZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVjb3JkLnJlY29yZCkpO1xyXG4gICAgICB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID0gdGhpcy5yZWNvcmRbZmllbGQuTmFtZV0uaW5kZXhPZihyZWNvcmQpO1xyXG4gICAgICB0aGlzLm9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkID0gcmVjb3JkLm9ubHlWaWV3O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVjb3JkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0lubmVyRm9ybVJlY29yZCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzc1JSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIHNhbHZhdGFnZ2lvIG8gYWxsYSBjaGl1c3VyYSBkZWwgZGlhbG9nIGRpIGFnZ2l1bnRhL21vZGlmaWNhL3Zpc3VhbGl6emF6aW9uZVxyXG4gICAqIGRpIHVuIHJlY29yZCBkaSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAgICogQHBhcmFtIHJlY29yZCBPZ2dldHRvIHJlc3RpdHVpdG8gZGFsIGNvbXBvbmVudGUgYWRkLWZvcm0tZmllbGQgKHF1ZXN0byBxdWkpIGNvbnRlbmVudGUgaWwgUmVjb3JkIFxyXG4gICAqIGFnZ2lvcm5hdG8gZGFsbCd1dGVudGUuIFNlIG51bGwgYWxsb3JhIGwndXRlbnRlIG5vbiBoYSBtb2RpZmljYXRvIG51bGxhIGUgaGEgY2hpdXNvIGlsIGRpYWxvZy5cclxuICAgKi9cclxuICBvblNhdmVJbm5lckZvcm1SZWNvcmQocmVjb3JkOiBSZWNvcmQpIHtcclxuICAgIGlmIChyZWNvcmQgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBhcnJheU5hbWU6IHN0cmluZyA9IHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0uTmFtZS5zcGxpdCgnICcpLmpvaW4oJ18nKTtcclxuICAgICAgaWYgKHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgIT0gbnVsbCAmJiB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID49IDApIHtcclxuICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdW3RoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmRdID0gcmVjb3JkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5yZWNvcmRbYXJyYXlOYW1lXSkge1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbYXJyYXlOYW1lXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdLnB1c2gocmVjb3JkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmRSZWYuY2xvc2UoKTtcclxuXHJcbiAgICAvLyBSaWNhcmljbyBsYSB0YWJlbGxhIGRlaSByZWNvcmQgcGVyIHZpc3VhbGl6emFyZSBsZSBtb2RpZmljaGUgZmF0dGUgZGFsbCd1dGVudGUuXHJcbiAgICBpZiAodGhpcy5saXN0SW5uZXJGb3JtUmVjb3JkcyAmJiB0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5saXN0SW5uZXJGb3JtUmVjb3Jkcy5mb3JFYWNoKGxpc3QgPT4ge1xyXG4gICAgICAgIGlmIChsaXN0ICYmIGxpc3QudGFibGVSZWNvcmRzKSB7XHJcbiAgICAgICAgICBsaXN0LnRhYmxlUmVjb3Jkcy5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUGFzc28gbCdpbW1hZ2luZSBkaXNlZ25hdGEgYWwgbGl2ZWxsbyBzdXBlcmlvcmVcclxuICBvbkltYWdlRHJhdyhldmVudDogRHluQXR0YWNobWVudCl7XHJcbiAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZXZlbnQ7XHJcbiAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICB9XHJcblxyXG4gICAgLy8gUGFzc28gbCdpbW1hZ2luZSBkaXNlZ25hdGEgYWwgbGl2ZWxsbyBzdXBlcmlvcmVcclxuICAgIG9uSW1hZ2VNYXJrKGV2ZW50OiBEeW5BdHRhY2htZW50KXtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGV2ZW50O1xyXG4gICAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkV4dGVybmFsQ29tcG9uZW50T3V0KGV2OiBldmVudE91dCl7XHJcbiAgICAgIHRoaXMub3V0LmVtaXQoZXYpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0ZWRWYWx1ZSh2YWx1ZTogYW55KXtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHZhbHVlWzBdO1xyXG4gICAgICB0aGlzLkRCR2V0dGVyVmFsdWUgPSB2YWx1ZVswXTtcclxuICAgICAgdGhpcy5EQkdldHRlckV4YWN0ID0gdmFsdWVbMV07XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maW5kKHggPT4geC5RdWVyeVByb3BlcnR5VmFsdWUgPT0gJz8nKSAhPSBudWxsKXsgdGhpcy5EQkdldHRlckhhdmVRdWVzdGlvbnMgPSB0cnVlOyB9XHJcbiAgICAgIGlmICh2YWx1ZVswXSA9PSBudWxsKXsgdGhpcy5EQkdldHRlckxvYWRlZCA9IGZhbHNlOyB9XHJcbiAgICB9XHJcblxyXG4gICAgREJHZXR0ZXJDaGFuZ2UoKXtcclxuICAgICAgdGhpcy5EQkdldHRlclZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5EQkdldHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkRCR2V0dGVyRXhhY3QgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5EQkdldHRlckxvYWRlZCA9IHRydWU7IH0sMTAwKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW1bJ01hbnVhbGUnXSB8fCBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnRm9ybXVsYSddXCI+IFxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZHNUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgcmVjb3JkOiByZWNvcmQgfVwiPjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnRGEgZGF0YWJhc2UnXVwiPiBcclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBkYmdldHRlcmZpZWxkXCIgKm5nSWY9XCJEQkdldHRlclZhbHVlID09IG51bGwgJiYgIURCR2V0dGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPHNwYW4+e3tmaWVsZC5OYW1lfX06IDwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIkRCR2V0dGVyQ2hhbmdlKClcIj5SaXNwb25kaTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRiZ2V0dGVyIGNsYXNzPVwiZmxleFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiBbaGlkZGVuXT1cIkRCR2V0dGVyVmFsdWUgIT0gbnVsbFwiIFtRdWVyeUVkaXRvckNvbXBvbmVudF09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiIChvdXQpPVwib25FeHRlcm5hbENvbXBvbmVudE91dCgkZXZlbnQpXCIgKHNlbGVjdGVkVmFsdWUpPVwib25TZWxlY3RlZFZhbHVlKCRldmVudClcIiAqbmdJZj1cIkRCR2V0dGVyTG9hZGVkXCI+PC9kYmdldHRlcj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTFcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZHNUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgcmVjb3JkOiByZWNvcmQgfVwiICpuZ0lmPVwiREJHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGZsZXhcIiAqbmdJZj1cIiFEQkdldHRlckV4YWN0IHx8IERCR2V0dGVySGF2ZVF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCIgKGNsaWNrKT1cIkRCR2V0dGVyQ2hhbmdlKClcIiAqbmdJZj1cIkRCR2V0dGVyVmFsdWUgIT0gbnVsbFwiPk1vZGlmaWNhPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpZWxkc1RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvdGV4dC1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGV4dGFyZWEtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQXJlYSBkaSB0ZXN0byddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC90ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8Ym9vbGVhbi1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydCb29sZWFubyddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9ib29sZWFuLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkYXRlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0RhdGEgZS9vIG9yYSddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9kYXRlLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxudW1lcmljLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIG51bWVyaWNvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L251bWVyaWMtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGxpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGF0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2F0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGltYWdlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lJ11cIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGltYWdlRHJhdyk9XCJvbkltYWdlRHJhdygkZXZlbnQpXCI+XHJcbiAgICA8L2ltYWdlLWZpZWxkLXRlbXBsYXRlPiBcclxuXHJcbiAgICA8aW1hZ2Utd2l0aC1tYXJrZXJzLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lIGNvbiBtYXJrZXJzJ11cIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGltYWdlTWFyayk9XCJvbkltYWdlTWFyaygkZXZlbnQpXCI+XHJcbiAgICA8L2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZT4gXHJcblxyXG4gICAgPGltYWdlLWZpZWxkLXNlbGVjdG9yLXRlbXBsYXRlICNpbWFnZVNlbGVjdG9yVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGltbWFnaW5pJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCJcclxuICAgID5cclxuICAgIDwvaW1hZ2UtZmllbGQtc2VsZWN0b3ItdGVtcGxhdGU+XHJcblxyXG4gICAgPGxpc3QtZm9ybS1yZWNvcmQgI2xpc3RJbm5lckZvcm1SZWNvcmRzICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Zvcm0gZGkgZGV0dGFnbGlvJ11cIlxyXG4gICAgICAgIFtmb3JtXT1cImdldElubmVyRm9ybUZyb21GaWVsZChmaWVsZClcIiBbY29uZmlndXJhdGlvbnNdPVwiY29uZmlnTGlzdFwiXHJcbiAgICAgICAgKG9uQWRkVmlld0VkaXRSZWNvcmQpPVwib25BZGRWaWV3RWRpdElubmVyRm9ybVJlY29yZCgkZXZlbnQsIGZpZWxkKVwiPlxyXG4gICAgPC9saXN0LWZvcm0tcmVjb3JkPlxyXG5cclxuICAgIDxsYWJlbC1maWVsZC10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFdGljaGV0dGEnXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvbGFiZWwtZmllbGQtdGVtcGxhdGU+XHJcblxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWZpeC9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZHluYW1pYy1tb2R1bGUtZmllbGQtZml4L2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTBCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEksT0FBTyxFQUFhLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3RILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3RELE1BQU0sT0FBTyw4QkFBOEI7SUFpQ3pDLFlBQ1UsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQTVCbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUd6QixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2hFLFFBQUcsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUdyRSxlQUFVLEdBQTRCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUNwRSxrQkFBYSxH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QzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs0SEFuS1EsOEJBQThCO2dIQUE5Qiw4QkFBOEIsMm1CQ2xCM0MsMitKQTJFYzs0RkR6REQsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLDBCQUEwQjtnR0FNM0IscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csR0FBRztzQkFBWixNQUFNO2dCQWlCK0MscUJBQXFCO3NCQUExRSxTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHckIsYUFBYTtzQkFBM0MsWUFBWTt1QkFBQyxlQUFlO2dCQUNTLG9CQUFvQjtzQkFBekQsWUFBWTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IElCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2lCYXNlRmllbGRDb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtLCBEYXRhR2V0dGVyVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUxpc3RDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBMaXN0Rm9ybVJlY29yZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tcmVjb3Jkcy9saXN0LWZvcm0tcmVjb3JkL2xpc3QtZm9ybS1yZWNvcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IER5bkF0dGFjaG1lbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluQXR0YWNobWVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhLCBldmVudE91dCB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1tb2R1bGUtZmllbGQtZml4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2R1bGVGaWVsZEZpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBASW5wdXQoKSBpbkNvbmZpZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YTsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuXHJcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuXHJcblxyXG4gIGNvbmZpZ0xpc3Q6IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnID0gbmV3IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnKCk7XHJcbiAgRmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcbiAgRGF0YUdldHRlclR5cGVFbnVtID0gRGF0YUdldHRlclR5cGVFbnVtO1xyXG4gIERCR2V0dGVyVmFsdWU6IGFueSA9IG51bGw7XHJcbiAgREJHZXR0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBEQkdldHRlckV4YWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgREJHZXR0ZXJIYXZlUXVlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBhZ2dpdW5nZXJlL21vZGlmaWNhcmUgaSByZWNvcmQgZGkgdW5hIGZvcm0gZGkgZGV0dGFnbGlvXHJcbiAgc2VsZWN0ZWRJbm5lckZvcm06IEZvcm07XHJcbiAgc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQ6IFJlY29yZDtcclxuICBpbmRleElubmVyRm9ybVJlY29yZDogbnVtYmVyO1xyXG4gIG9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlhbG9nSW5uZXJGb3JtUmVjb3JkUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nSW5uZXJGb3JtUmVjb3JkJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nSW5uZXJGb3JtUmVjb3JkOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwiZmllbGRUZW1wbGF0ZVwiKSBmaWVsZFRlbXBsYXRlOiBRdWVyeUxpc3Q8RHluYW1pY01vZHVsZUZpZWxkRml4Q29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKCdsaXN0SW5uZXJGb3JtUmVjb3JkcycpIGxpc3RJbm5lckZvcm1SZWNvcmRzOiBRdWVyeUxpc3Q8TGlzdEZvcm1SZWNvcmRDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dcclxuICApIHsgfVxyXG5cclxuXHJcbiAgdXBkYXRlRmllbGQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWVsZFRlbXBsYXRlICYmIHRoaXMuZmllbGRUZW1wbGF0ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZmllbGRUZW1wbGF0ZS5mb3JFYWNoKGYgPT4gZi51cGRhdGVGaWVsZCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiZHluYW1pYy1tb2R1bGUtZmllbGRcIix0aGlzLmZpZWxkKTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ0xpc3QudmFsdWVzID0gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVxyXG4gICAgdGhpcy5jb25maWdMaXN0LnNob3dUaXRsZSA9IHRydWU7XHJcbiAgICB0aGlzLmNvbmZpZ0xpc3QuZGVmYXVsdExpc3RBY3Rpb25zID0gbmV3IER5bmFtaWNNb2R1bGVMaXN0Rm9ybVJlY29yZEFjdGlvbnNEZWZhdWx0KClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBjYW1iaW8gZGVsIHZhbG9yZSBkaSBvZ25pIHByb3ByaWV0w6AgZGVsbCdvZ2dldHRvIHJlY29yZC5cclxuICAgKiBTZXJ2ZSBhZCBhZ2dpb3JuYXJlIGlsIHZhbG9yZSBkaSB0dXR0aSBpIGNhbXBpIGNoZSBoYW5ubyB1bmEgZm9ybXVsYS5cclxuICAgKi9cclxuICBvblJlY29yZENoYW5nZSgpIHtcclxuICAgIHRoaXMucmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5yZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByZWN1cGVyYXJlIHVuYSBJbm5lckZvcm0gYSBwYXJ0aXJlIGRhbCBGaWVsZCBjaGUgbGEgcmFwcHJlc2VudGEuXHJcbiAgICogQHBhcmFtIGZpZWxkIENhbXBvIGEgcGFydGlyZSBkYWwgcXVhbGUgc2kgdnVvbGUgcmVjdXBlcmFyZSBsYSBJbm5lckZvcm0uXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgdW4gb2dnZXR0byBkaSB0aXBvIEZvcm0uXHJcbiAgICovXHJcbiAgZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkOiBCYXNlRmllbGQpOiBGb3JtIHtcclxuICAgIGlmICh0aGlzLmZvcm0uSW5uZXJGb3JtcyAmJiB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKGYgPT4gZi5OYW1lID09IGZpZWxkLkxhYmVsKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtLklubmVyRm9ybXMuZmluZChmID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBNZXRvZG8gcGVyIGFwcmlyZSB1biBkaWFsb2cgaW4gY3VpIGFnZ2l1bmdlcmUvbW9kaWZpY2FyZS92aXN1YWxpenphcmUgdW4gcmVjb3JkIGFwcGFydGVuZW50ZVxyXG4gKiBhIHVuYSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICogQHBhcmFtIHJlY29yZCBFdmVudG8gZGkgb3V0cHV0IGRlbCBjb21wb25lbnRlIGxpc3QtZm9ybS1yZWNvcmQsIGNvbnRpZW5lIGlsIHJlY29yZCBzZWxlemlvbmF0byBlIHVuIGJvb2xlbm8gY2hlIGluZGljYSBcclxuICogc2UgbCd1dGVudGUgdnVvbGUgbW9kaWZpY2FyZSBvIHZpc3VhbGl6emFyZSBsJ2VsZW1lbnRvIHNlbGV6aW9uYXRvLlxyXG4gKiBAcGFyYW0gaW5uZXJGb3JtIENvbnRpZW5lIGxhIEZvcm0gZGkgZGV0dGFnbGlvIGRhbGxhIHF1YWxlIMOoIHN0YXRvIHJpY2hpZXN0byBpbCByZWNvcmQuXHJcbiAqL1xyXG4gIG9uQWRkVmlld0VkaXRJbm5lckZvcm1SZWNvcmQocmVjb3JkOiB7IHJlY29yZDogUmVjb3JkLCBvbmx5VmlldzogYm9vbGVhbiB9LCBmaWVsZDogQmFzZUZpZWxkKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtID0gdGhpcy5nZXRJbm5lckZvcm1Gcm9tRmllbGQoZmllbGQpO1xyXG4gICAgaWYgKHJlY29yZCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQgPSBuZXcgUmVjb3JkKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgPSBudWxsO1xyXG4gICAgICB0aGlzLm9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZWNvcmQucmVjb3JkKSk7XHJcbiAgICAgIHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgPSB0aGlzLnJlY29yZFtmaWVsZC5OYW1lXS5pbmRleE9mKHJlY29yZCk7XHJcbiAgICAgIHRoaXMub25seVZpZXdJbm5lckZvcm1SZWNvcmQgPSByZWNvcmQub25seVZpZXc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVjb3JkLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnNzUlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgc2FsdmF0YWdnaW8gbyBhbGxhIGNoaXVzdXJhIGRlbCBkaWFsb2cgZGkgYWdnaXVudGEvbW9kaWZpY2EvdmlzdWFsaXp6YXppb25lXHJcbiAgICogZGkgdW4gcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICAgKiBAcGFyYW0gcmVjb3JkIE9nZ2V0dG8gcmVzdGl0dWl0byBkYWwgY29tcG9uZW50ZSBhZGQtZm9ybS1maWVsZCAocXVlc3RvIHF1aSkgY29udGVuZW50ZSBpbCBSZWNvcmQgXHJcbiAgICogYWdnaW9ybmF0byBkYWxsJ3V0ZW50ZS4gU2UgbnVsbCBhbGxvcmEgbCd1dGVudGUgbm9uIGhhIG1vZGlmaWNhdG8gbnVsbGEgZSBoYSBjaGl1c28gaWwgZGlhbG9nLlxyXG4gICAqL1xyXG4gIG9uU2F2ZUlubmVyRm9ybVJlY29yZChyZWNvcmQ6IFJlY29yZCkge1xyXG4gICAgaWYgKHJlY29yZCAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGFycmF5TmFtZTogc3RyaW5nID0gdGhpcy5zZWxlY3RlZElubmVyRm9ybS5OYW1lLnNwbGl0KCcgJykuam9pbignXycpO1xyXG4gICAgICBpZiAodGhpcy5pbmRleElubmVyRm9ybVJlY29yZCAhPSBudWxsICYmIHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMucmVjb3JkW2FycmF5TmFtZV1bdGhpcy5pbmRleElubmVyRm9ybVJlY29yZF0gPSByZWNvcmQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlY29yZFthcnJheU5hbWVdKSB7XHJcbiAgICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVjb3JkW2FycmF5TmFtZV0ucHVzaChyZWNvcmQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ0lubmVyRm9ybVJlY29yZFJlZi5jbG9zZSgpO1xyXG5cclxuICAgIC8vIFJpY2FyaWNvIGxhIHRhYmVsbGEgZGVpIHJlY29yZCBwZXIgdmlzdWFsaXp6YXJlIGxlIG1vZGlmaWNoZSBmYXR0ZSBkYWxsJ3V0ZW50ZS5cclxuICAgIGlmICh0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzICYmIHRoaXMubGlzdElubmVyRm9ybVJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzLmZvckVhY2gobGlzdCA9PiB7XHJcbiAgICAgICAgaWYgKGxpc3QgJiYgbGlzdC50YWJsZVJlY29yZHMpIHtcclxuICAgICAgICAgIGxpc3QudGFibGVSZWNvcmRzLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQYXNzbyBsJ2ltbWFnaW5lIGRpc2VnbmF0YSBhbCBsaXZlbGxvIHN1cGVyaW9yZVxyXG4gIG9uSW1hZ2VEcmF3KGV2ZW50OiBEeW5BdHRhY2htZW50KXtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBldmVudDtcclxuICAgIHRoaXMucmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5yZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgICAvLyBQYXNzbyBsJ2ltbWFnaW5lIGRpc2VnbmF0YSBhbCBsaXZlbGxvIHN1cGVyaW9yZVxyXG4gICAgb25JbWFnZU1hcmsoZXZlbnQ6IER5bkF0dGFjaG1lbnQpe1xyXG4gICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMucmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5yZWNvcmQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRXh0ZXJuYWxDb21wb25lbnRPdXQoZXY6IGV2ZW50T3V0KXtcclxuICAgICAgdGhpcy5vdXQuZW1pdChldik7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RlZFZhbHVlKHZhbHVlOiBhbnkpe1xyXG4gICAgICBcclxuICAgICAgdGhpcy5EQkdldHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICBpZiAodmFsdWVbMF0gPT0gXCIqKioqQ0xPU0UqKioqXCIpeyByZXR1cm47IH1cclxuXHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZVswXTtcclxuICAgICAgdGhpcy5EQkdldHRlclZhbHVlID0gdmFsdWVbMF07XHJcbiAgICAgIHRoaXMuREJHZXR0ZXJFeGFjdCA9IHZhbHVlWzFdO1xyXG4gICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmluZCh4ID0+IHguUXVlcnlQcm9wZXJ0eVZhbHVlID09ICc/JykgIT0gbnVsbCl7IHRoaXMuREJHZXR0ZXJIYXZlUXVlc3Rpb25zID0gdHJ1ZTsgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBEQkdldHRlckNoYW5nZSgpe1xyXG4gICAgICB0aGlzLkRCR2V0dGVyVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkRCR2V0dGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuREJHZXR0ZXJFeGFjdCA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLkRCR2V0dGVyTG9hZGVkID0gdHJ1ZTsgfSwxMDApO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnTWFudWFsZSddIHx8IGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydGb3JtdWxhJ11cIj4gXHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpZWxkc1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCByZWNvcmQ6IHJlY29yZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydEYSBkYXRhYmFzZSddXCI+IFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGRiZ2V0dGVyZmllbGRcIiAqbmdJZj1cIkRCR2V0dGVyVmFsdWUgPT0gbnVsbCAmJiAhREJHZXR0ZXJMb2FkZWQgJiYgcmVjb3JkW2ZpZWxkLk5hbWVdID09IG51bGxcIj5cclxuICAgICAgICA8c3Bhbj57e2ZpZWxkLk5hbWV9fTogPC9zcGFuPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiREJHZXR0ZXJDaGFuZ2UoKVwiICpuZ0lmPVwiZmllbGQuRmllbGRWYWx1ZSA9PSBudWxsXCI+UmlzcG9uZGk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkYmdldHRlciBjbGFzcz1cImZsZXhcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2hpZGRlbl09XCJEQkdldHRlclZhbHVlICE9IG51bGxcIiBbUXVlcnlFZGl0b3JDb21wb25lbnRdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiBbaW5Db25maWddPVwiaW5Db25maWdcIiAob3V0KT1cIm9uRXh0ZXJuYWxDb21wb25lbnRPdXQoJGV2ZW50KVwiIChzZWxlY3RlZFZhbHVlKT1cIm9uU2VsZWN0ZWRWYWx1ZSgkZXZlbnQpXCIgKm5nSWY9XCJEQkdldHRlckxvYWRlZFwiPjwvZGJnZXR0ZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTExXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGRzVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIHJlY29yZDogcmVjb3JkIH1cIiAqbmdJZj1cIkRCR2V0dGVyVmFsdWUgIT0gbnVsbCB8fCByZWNvcmRbZmllbGQuTmFtZV0gIT0gbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBmbGV4XCIgKm5nSWY9XCIhREJHZXR0ZXJFeGFjdCB8fCBEQkdldHRlckhhdmVRdWVzdGlvbnMgfHwgcmVjb3JkW2ZpZWxkLk5hbWVdICE9IG51bGwgfHwgREJHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiAoY2xpY2spPVwiREJHZXR0ZXJDaGFuZ2UoKVwiPk1vZGlmaWNhPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpZWxkc1RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvdGV4dC1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGV4dGFyZWEtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQXJlYSBkaSB0ZXN0byddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC90ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8Ym9vbGVhbi1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydCb29sZWFubyddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9ib29sZWFuLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkYXRlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0RhdGEgZS9vIG9yYSddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9kYXRlLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxudW1lcmljLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIG51bWVyaWNvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L251bWVyaWMtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGxpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGF0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2F0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGltYWdlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lJ11cIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGltYWdlRHJhdyk9XCJvbkltYWdlRHJhdygkZXZlbnQpXCI+XHJcbiAgICA8L2ltYWdlLWZpZWxkLXRlbXBsYXRlPiBcclxuXHJcbiAgICA8aW1hZ2Utd2l0aC1tYXJrZXJzLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lIGNvbiBtYXJrZXJzJ11cIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGltYWdlTWFyayk9XCJvbkltYWdlTWFyaygkZXZlbnQpXCI+XHJcbiAgICA8L2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZT4gXHJcblxyXG4gICAgPGltYWdlLWZpZWxkLXNlbGVjdG9yLXRlbXBsYXRlICNpbWFnZVNlbGVjdG9yVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGltbWFnaW5pJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCJcclxuICAgID5cclxuICAgIDwvaW1hZ2UtZmllbGQtc2VsZWN0b3ItdGVtcGxhdGU+XHJcblxyXG4gICAgPGxpc3QtZm9ybS1yZWNvcmQgI2xpc3RJbm5lckZvcm1SZWNvcmRzICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Zvcm0gZGkgZGV0dGFnbGlvJ11cIlxyXG4gICAgICAgIFtmb3JtXT1cImdldElubmVyRm9ybUZyb21GaWVsZChmaWVsZClcIiBbY29uZmlndXJhdGlvbnNdPVwiY29uZmlnTGlzdFwiXHJcbiAgICAgICAgKG9uQWRkVmlld0VkaXRSZWNvcmQpPVwib25BZGRWaWV3RWRpdElubmVyRm9ybVJlY29yZCgkZXZlbnQsIGZpZWxkKVwiPlxyXG4gICAgPC9saXN0LWZvcm0tcmVjb3JkPlxyXG5cclxuICAgIDxsYWJlbC1maWVsZC10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFdGljaGV0dGEnXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvbGFiZWwtZmllbGQtdGVtcGxhdGU+XHJcblxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -4054,15 +4054,19 @@ class DbgetterComponent {
|
|
|
4054
4054
|
this.selectedValue.emit([row[this.field.DataGetter.DataGetterColumnForce.key], false]);
|
|
4055
4055
|
}
|
|
4056
4056
|
close() {
|
|
4057
|
+
this.selectedValue.emit(["****CLOSE****", true]);
|
|
4058
|
+
this.loaded = false;
|
|
4059
|
+
}
|
|
4060
|
+
delete() {
|
|
4057
4061
|
this.selectedValue.emit([null, true]);
|
|
4058
4062
|
this.loaded = false;
|
|
4059
4063
|
}
|
|
4060
4064
|
}
|
|
4061
4065
|
DbgetterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DbgetterComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
4062
|
-
DbgetterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DbgetterComponent, selector: "dbgetter", inputs: { field: "field", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent", data: "data" }, outputs: { out: "out", selectedValue: "selectedValue" }, ngImport: i0, template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><
|
|
4066
|
+
DbgetterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DbgetterComponent, selector: "dbgetter", inputs: { field: "field", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent", data: "data" }, outputs: { out: "out", selectedValue: "selectedValue" }, ngImport: i0, template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"close()\">Chiudi finestra <mat-icon>close</mat-icon></button></div>\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"delete()\">Cancella valore <mat-icon>delete</mat-icon></button></div>\r\n <div class=\"right\"><mat-icon>drag_indicator</mat-icon> Seleziona il valore da registrare. Clicca su questa barra per trascinare.</div>\r\n </div>\r\n <table class=\"table table-notforced\" *ngIf=\"field.DataGetter.DataGetterColumnForce == null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\">\r\n <td *ngFor=\"let key of keys\" (click)=\"selectValueNotForced(row[key])\">{{row[key]}}</td>\r\n </tr>\r\n </table>\r\n <table class=\"table table-forced\" *ngIf=\"field.DataGetter.DataGetterColumnForce != null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\" (click)=\"selectValueForced(row)\">\r\n <td *ngFor=\"let key of keys\">{{row[key]}}</td>\r\n </tr>\r\n </table> \r\n</div>\r\n\r\n<span *ngIf=\"value != null\">{{value}}</span>", styles: [".floatingtable{position:fixed;bottom:10%;left:30%;width:50%;background-color:#fff;border:1px solid black;border-radius:10px;margin:0;z-index:9000000000;padding:2px}.floatingtable .header{cursor:move;display:flex;justify-content:flex-start;height:40px;background-color:#4fa2c0;color:#fff;align-items:center;font-size:19px;padding-right:15px;margin-bottom:10px}.floatingtable .header>*{margin-right:10px}.floatingtable .header .left mat-icon{position:relative;top:5px;left:10px;cursor:pointer!important;background-color:red!important;color:#fff}.floatingtable .header .right mat-icon{position:relative;top:5px}.floatingtable .table.table-notforced{width:99%;margin:0 5px}.floatingtable .table.table-notforced td,.floatingtable .table.table-notforced th{padding:2px 2px 2px 0}.floatingtable .table.table-notforced td span,.floatingtable .table.table-notforced th span{padding:0!important}.floatingtable .table.table-notforced td:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.floatingtable .table.table-forced{width:99%;margin:0 5px}.floatingtable .table.table-forced td,.floatingtable .table.table-forced th{padding:2px 2px 2px 0}.floatingtable .table.table-forced td span,.floatingtable .table.table-forced th span{padding:0!important}.floatingtable .table.table-forced tr.rows:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.btn-small{margin:0;padding:0 16px}\n"], dependencies: [{ kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }] });
|
|
4063
4067
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DbgetterComponent, decorators: [{
|
|
4064
4068
|
type: Component,
|
|
4065
|
-
args: [{ selector: 'dbgetter', template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><
|
|
4069
|
+
args: [{ selector: 'dbgetter', template: "<ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onExternalSQLResultOut($event);\" *ngIf=\"QueryEditorComponent != null\"></ng-template>\r\n\r\n<div class=\"floatingtable draggable\" cdkDrag *ngIf=\"data != null && loaded\">\r\n <div class=\"header\">\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"close()\">Chiudi finestra <mat-icon>close</mat-icon></button></div>\r\n <div class=\"left\"><button class=\"btn btn-small btn-danger\" (click)=\"delete()\">Cancella valore <mat-icon>delete</mat-icon></button></div>\r\n <div class=\"right\"><mat-icon>drag_indicator</mat-icon> Seleziona il valore da registrare. Clicca su questa barra per trascinare.</div>\r\n </div>\r\n <table class=\"table table-notforced\" *ngIf=\"field.DataGetter.DataGetterColumnForce == null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\">\r\n <td *ngFor=\"let key of keys\" (click)=\"selectValueNotForced(row[key])\">{{row[key]}}</td>\r\n </tr>\r\n </table>\r\n <table class=\"table table-forced\" *ngIf=\"field.DataGetter.DataGetterColumnForce != null\">\r\n <tr><th *ngFor=\"let key of keys; let first = first\">\r\n <span *ngIf=\"first\">{{key}}</span>\r\n <span *ngIf=\"!first\">{{key.split(\"__\")[1]}}</span>\r\n </th></tr>\r\n <tr *ngFor=\"let row of data\" class=\"rows\" (click)=\"selectValueForced(row)\">\r\n <td *ngFor=\"let key of keys\">{{row[key]}}</td>\r\n </tr>\r\n </table> \r\n</div>\r\n\r\n<span *ngIf=\"value != null\">{{value}}</span>", styles: [".floatingtable{position:fixed;bottom:10%;left:30%;width:50%;background-color:#fff;border:1px solid black;border-radius:10px;margin:0;z-index:9000000000;padding:2px}.floatingtable .header{cursor:move;display:flex;justify-content:flex-start;height:40px;background-color:#4fa2c0;color:#fff;align-items:center;font-size:19px;padding-right:15px;margin-bottom:10px}.floatingtable .header>*{margin-right:10px}.floatingtable .header .left mat-icon{position:relative;top:5px;left:10px;cursor:pointer!important;background-color:red!important;color:#fff}.floatingtable .header .right mat-icon{position:relative;top:5px}.floatingtable .table.table-notforced{width:99%;margin:0 5px}.floatingtable .table.table-notforced td,.floatingtable .table.table-notforced th{padding:2px 2px 2px 0}.floatingtable .table.table-notforced td span,.floatingtable .table.table-notforced th span{padding:0!important}.floatingtable .table.table-notforced td:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.floatingtable .table.table-forced{width:99%;margin:0 5px}.floatingtable .table.table-forced td,.floatingtable .table.table-forced th{padding:2px 2px 2px 0}.floatingtable .table.table-forced td span,.floatingtable .table.table-forced th span{padding:0!important}.floatingtable .table.table-forced tr.rows:hover{cursor:pointer;background-color:#d3d3d3;color:#000}.btn-small{margin:0;padding:0 16px}\n"] }]
|
|
4066
4070
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; }, propDecorators: { field: [{
|
|
4067
4071
|
type: Input
|
|
4068
4072
|
}], record: [{
|
|
@@ -4200,15 +4204,16 @@ class DynamicModuleFieldFixComponent {
|
|
|
4200
4204
|
this.out.emit(ev);
|
|
4201
4205
|
}
|
|
4202
4206
|
onSelectedValue(value) {
|
|
4207
|
+
this.DBGetterLoaded = false;
|
|
4208
|
+
if (value[0] == "****CLOSE****") {
|
|
4209
|
+
return;
|
|
4210
|
+
}
|
|
4203
4211
|
this.record[this.field.Name] = value[0];
|
|
4204
4212
|
this.DBGetterValue = value[0];
|
|
4205
4213
|
this.DBGetterExact = value[1];
|
|
4206
4214
|
if (this.field.DataGetter.DataGetterValue.openedFields.find(x => x.QueryPropertyValue == '?') != null) {
|
|
4207
4215
|
this.DBGetterHaveQuestions = true;
|
|
4208
4216
|
}
|
|
4209
|
-
if (value[0] == null) {
|
|
4210
|
-
this.DBGetterLoaded = false;
|
|
4211
|
-
}
|
|
4212
4217
|
}
|
|
4213
4218
|
DBGetterChange() {
|
|
4214
4219
|
this.DBGetterValue = null;
|
|
@@ -4218,10 +4223,10 @@ class DynamicModuleFieldFixComponent {
|
|
|
4218
4223
|
}
|
|
4219
4224
|
}
|
|
4220
4225
|
DynamicModuleFieldFixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldFixComponent, deps: [{ token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
4221
|
-
DynamicModuleFieldFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldFixComponent, selector: "dynamic-module-field-fix", inputs: { endPointConfiguration: "endPointConfiguration", field: "field", form: "form", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent" }, outputs: { recordChange: "recordChange", out: "out" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\"
|
|
4226
|
+
DynamicModuleFieldFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldFixComponent, selector: "dynamic-module-field-fix", inputs: { endPointConfiguration: "endPointConfiguration", field: "field", form: "form", record: "record", inConfig: "inConfig", QueryEditorComponent: "QueryEditorComponent" }, outputs: { recordChange: "recordChange", out: "out" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded && record[field.Name] == null\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\" *ngIf=\"field.FieldValue == null\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null || record[field.Name] != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions || record[field.Name] != null || DBGetterValue != null\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\">Modifica</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #fieldsTemplate>\r\n\r\n <text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </text-field-template>\r\n\r\n <textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </textarea-field-template>\r\n\r\n <boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </boolean-field-template>\r\n\r\n <date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </date-field-template>\r\n\r\n <numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </numeric-field-template>\r\n\r\n <list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </list-value-field-template>\r\n\r\n <attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </attachment-field-template>\r\n\r\n <image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageDraw)=\"onImageDraw($event)\">\r\n </image-field-template> \r\n\r\n <image-with-markers-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine con markers']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageMark)=\"onImageMark($event)\">\r\n </image-with-markers-field-template> \r\n\r\n <image-field-selector-template #imageSelectorTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco immagini']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\"\r\n >\r\n </image-field-selector-template>\r\n\r\n <list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\r\n [form]=\"getInnerFormFromField(field)\" [configurations]=\"configList\"\r\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\r\n </list-form-record>\r\n\r\n <label-field-template #labelTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Etichetta']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </label-field-template>\r\n\r\n</ng-template>", styles: [".dbgetterfield{align-items:center;justify-content:flex-start;height:80px}.dbgetterfield span{margin-right:15px}\n"], dependencies: [{ kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TextFieldTemplateComponent, selector: "text-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: BooleanFieldTemplateComponent, selector: "boolean-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: DateFieldTemplateComponent, selector: "date-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: ListValueFieldTemplateComponent, selector: "list-value-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: AttachmentFieldTemplateComponent, selector: "attachment-field-template", inputs: ["onlyImages", "field", "record"], outputs: ["recordChange", "onAttachmentsChange"] }, { kind: "component", type: ImageFieldTemplateComponent, selector: "image-field-template", inputs: ["endPointConfiguration", "record", "field", "inConfig"], outputs: ["recordChange", "imageDraw"] }, { kind: "component", type: ListFormRecordComponent, selector: "list-form-record", inputs: ["configurations", "endPointConfiguration", "formID", "form", "externalButtons"], outputs: ["onViewRecord", "onAddViewEditRecord", "onDeleteRecord", "onAfterDeleteRecord"] }, { kind: "component", type: ImageFieldSelectorTemplateComponent, selector: "image-field-selector-template", inputs: ["record", "field"], outputs: ["recordChange"] }, { kind: "component", type: LabelFieldTemplateComponent, selector: "label-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: ImageWithMarkersFieldTemplateComponent, selector: "image-with-markers-field-template", inputs: ["endPointConfiguration", "record", "field", "inConfig"], outputs: ["recordChange", "imageMark"] }, { kind: "component", type: DbgetterComponent, selector: "dbgetter", inputs: ["field", "record", "inConfig", "QueryEditorComponent", "data"], outputs: ["out", "selectedValue"] }] });
|
|
4222
4227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldFixComponent, decorators: [{
|
|
4223
4228
|
type: Component,
|
|
4224
|
-
args: [{ selector: 'dynamic-module-field-fix', template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\"
|
|
4229
|
+
args: [{ selector: 'dynamic-module-field-fix', template: "<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Manuale'] || field.DataGetter.DataGetterType == DataGetterTypeEnum['Formula']\"> \r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\"></ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"field.DataGetter.DataGetterType == DataGetterTypeEnum['Da database']\"> \r\n\r\n <div class=\"flex dbgetterfield\" *ngIf=\"DBGetterValue == null && !DBGetterLoaded && record[field.Name] == null\">\r\n <span>{{field.Name}}: </span>\r\n <button class=\"btn btn-primary\" (click)=\"DBGetterChange()\" *ngIf=\"field.FieldValue == null\">Rispondi</button>\r\n </div>\r\n\r\n <dbgetter class=\"flex\" [(record)]=\"record\" [field]=\"field\" [hidden]=\"DBGetterValue != null\" [QueryEditorComponent]=\"QueryEditorComponent\" [inConfig]=\"inConfig\" (out)=\"onExternalComponentOut($event)\" (selectedValue)=\"onSelectedValue($event)\" *ngIf=\"DBGetterLoaded\"></dbgetter>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-11\">\r\n <ng-container [ngTemplateOutlet]=\"fieldsTemplate\" [ngTemplateOutletContext]=\"{ field: field, record: record }\" *ngIf=\"DBGetterValue != null || record[field.Name] != null\"></ng-container>\r\n </div>\r\n <div class=\"col-1 flex\" *ngIf=\"!DBGetterExact || DBGetterHaveQuestions || record[field.Name] != null || DBGetterValue != null\">\r\n <button class=\"btn btn-warning\" (click)=\"DBGetterChange()\">Modifica</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #fieldsTemplate>\r\n\r\n <text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </text-field-template>\r\n\r\n <textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </textarea-field-template>\r\n\r\n <boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </boolean-field-template>\r\n\r\n <date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </date-field-template>\r\n\r\n <numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </numeric-field-template>\r\n\r\n <list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </list-value-field-template>\r\n\r\n <attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </attachment-field-template>\r\n\r\n <image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageDraw)=\"onImageDraw($event)\">\r\n </image-field-template> \r\n\r\n <image-with-markers-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine con markers']\" [endPointConfiguration]=\"endPointConfiguration\" [inConfig]=\"inConfig\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\" (imageMark)=\"onImageMark($event)\">\r\n </image-with-markers-field-template> \r\n\r\n <image-field-selector-template #imageSelectorTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco immagini']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\"\r\n >\r\n </image-field-selector-template>\r\n\r\n <list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\r\n [form]=\"getInnerFormFromField(field)\" [configurations]=\"configList\"\r\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\r\n </list-form-record>\r\n\r\n <label-field-template #labelTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Etichetta']\"\r\n [matTooltip]=\"field.Tooltip\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n </label-field-template>\r\n\r\n</ng-template>", styles: [".dbgetterfield{align-items:center;justify-content:flex-start;height:80px}.dbgetterfield span{margin-right:15px}\n"] }]
|
|
4225
4230
|
}], ctorParameters: function () { return [{ type: i1$3.MatDialog }]; }, propDecorators: { endPointConfiguration: [{
|
|
4226
4231
|
type: Input
|
|
4227
4232
|
}], field: [{
|