@eqproject/eqp-dynamic-module 2.3.25 → 2.3.27

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.
@@ -114,11 +114,12 @@ export class GraphsComponent {
114
114
  }
115
115
  generateGraph() {
116
116
  this.generated = false;
117
+ this.selectedGeneratedFields = JSON.parse(JSON.stringify(this.selectedFields));
117
118
  this.getEligibleAnswers();
118
119
  }
119
120
  getEligibleAnswers() {
120
121
  // Azzero le coordinate
121
- this.selectedFields.forEach((field) => { field.Coords = new Array(); });
122
+ this.selectedGeneratedFields.forEach((field) => { field.Coords = new Array(); });
122
123
  this.eligibleAnswers = JSON.parse(JSON.stringify(this.answers));
123
124
  this.minperiodS = this.datePipe.transform(this.minperiod, "YYYY-mm-dd");
124
125
  this.maxperiodS = this.datePipe.transform(this.maxperiod, "YYYY-mm-dd");
@@ -133,7 +134,7 @@ export class GraphsComponent {
133
134
  // Inserisco i dati trovati
134
135
  this.eligibleAnswers.forEach((answer) => {
135
136
  var answervalues = JSON.parse(answer.SerializedValues);
136
- this.selectedFields.forEach((field) => {
137
+ this.selectedGeneratedFields.forEach((field) => {
137
138
  if (answervalues[field.Name] != null) {
138
139
  var coords = new Coords();
139
140
  coords.x = new Date(answer.AnswerDate.split("T")[0]);
@@ -143,14 +144,14 @@ export class GraphsComponent {
143
144
  });
144
145
  });
145
146
  setTimeout(() => { this.generated = true; }, 1000);
146
- console.log("FINAL COORDS", this.selectedFields);
147
+ console.log("FINAL COORDS", this.selectedGeneratedFields);
147
148
  }
148
149
  }
149
150
  GraphsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphsComponent, deps: [{ token: i1.UtilityHelperService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
150
- GraphsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphsComponent, selector: "graphs", inputs: { debugMode: "debugMode", configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form" }, ngImport: i0, template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"], dependencies: [{ kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i8.EqpDateTimePickerComponent, selector: "eqp-datetimepicker", inputs: ["placeholder", "ngModelInput", "UTCDate", "timeType", "pickerMode", "formControlNameInput", "formGroupInput", "isRequired", "minDate", "maxDate", "readonlyInput", "disabled", "showSpinners", "showSeconds", "disableMinute", "defaultTime", "stepHour", "stepMinute", "stepSecond", "color", "enableMeridian", "touchUi", "customDateFormat"], outputs: ["ngModelInputChange", "onDateChange"] }, { kind: "component", type: i9.GraphComponent, selector: "graph", inputs: ["data", "title"] }] });
151
+ GraphsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphsComponent, selector: "graphs", inputs: { debugMode: "debugMode", configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form" }, ngImport: i0, template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"], dependencies: [{ kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i8.EqpDateTimePickerComponent, selector: "eqp-datetimepicker", inputs: ["placeholder", "ngModelInput", "UTCDate", "timeType", "pickerMode", "formControlNameInput", "formGroupInput", "isRequired", "minDate", "maxDate", "readonlyInput", "disabled", "showSpinners", "showSeconds", "disableMinute", "defaultTime", "stepHour", "stepMinute", "stepSecond", "color", "enableMeridian", "touchUi", "customDateFormat"], outputs: ["ngModelInputChange", "onDateChange"] }, { kind: "component", type: i9.GraphComponent, selector: "graph", inputs: ["data", "title"] }] });
151
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphsComponent, decorators: [{
152
153
  type: Component,
153
- args: [{ selector: 'graphs', template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"] }]
154
+ args: [{ selector: 'graphs', template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"] }]
154
155
  }], ctorParameters: function () { return [{ type: i1.UtilityHelperService }, { type: i2.DatePipe }]; }, propDecorators: { debugMode: [{
155
156
  type: Input
156
157
  }], configurations: [{
@@ -164,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
164
165
  }], form: [{
165
166
  type: Input
166
167
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9ncmFwaHMvZ3JhcGhzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9ncmFwaHMvZ3JhcGhzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBNkMsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQVFoRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixRQUFRLENBQUMsT0FBZSxFQUFFLE9BQWE7UUFDckMsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDO1lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQzlCO0lBQ0gsQ0FBQztJQXlCRCxZQUNVLG9CQUEwQyxFQUMxQyxRQUFrQjtRQURsQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFoQ25CLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFVM0IsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFDakMsU0FBSSxHQUFTLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtRQUU3QyxtQkFBYyxH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LENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNuQyxJQUFJLE1BQU0sR0FBVyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNsQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JELE1BQU0sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFbkQsQ0FBQzs7NkdBcExVLGVBQWU7aUdBQWYsZUFBZSxzTkNqQjVCLDZ2RkEwRGE7NEZEekNBLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsUUFBUTtrSUFNVCxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBQaWNrZXJNb2RlRW51bSB9IGZyb20gJ0BlcXByb2plY3QvZXFwLWRhdGV0aW1lcGlja2VyJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb29yZHMsIEdyYXBoRmllbGQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JhcGgubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEeW5SZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dyYXBocycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXBocy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JhcGhzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEdyYXBoc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGRlYnVnTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlYnVnTG9nKG1lc3NhZ2U6IHN0cmluZywgZWxlbWVudD86IGFueSl7XHJcbiAgICBpZih0aGlzLmRlYnVnTW9kZSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIGVsZW1lbnQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWc7XHJcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgdXNlcklEOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZm9ybUlEOiBzdHJpbmcgPSBudWxsOyAvLyBwcmV2aWV3XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybSA9IG51bGw7IC8vIHByZXZpZXcgY29uZmlnXHJcblxyXG4gIHBpY2tlck1vZGVFbnVtID0gUGlja2VyTW9kZUVudW07XHJcbiAgZmllbGRGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdlbmVyYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBtaW5wZXJpb2Q6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIG1heHBlcmlvZDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgbWlucGVyaW9kUzogc3RyaW5nO1xyXG4gIG1heHBlcmlvZFM6IHN0cmluZztcclxuXHJcbiAgZmllbGRzOiBBcnJheTxHcmFwaEZpZWxkPiA9IG5ldyBBcnJheTxHcmFwaEZpZWxkPigpO1xyXG4gIHNlbGVjdGVkRmllbGRzOiBBcnJheTxHcmFwaEZpZWxkPjtcclxuXHJcbiAgYW5zd2VyczogQXJyYXk8RHluUmVjb3JkPiA9IG51bGw7XHJcbiAgZWxpZ2libGVBbnN3ZXJzOiBBcnJheTxEeW5SZWNvcmQ+ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUlEICE9IG51bGwpe1xyXG4gICAgICB0aGlzLmdldEZvcm1CeUlEKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdHV0dGkgaSByZWNvcmQgc2FsdmF0aSBwZXIgdW5hIHBhcnRpY29sYXJlIEZvcm0uXHJcbiAgICogTGEgY2hpYW1hdGEgdmllbmUgZWZmZXR0dWF0YSBzb2xvIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIGwnZW5kUG9pbnQgZGEgdXNhcmUuXHJcbiAgICovXHJcbiAgZ2V0Rm9ybUJ5SUQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybUlEICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBGb3JtKSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG5cclxuICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKHggPT4geC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gbnVtZXJpY28nXSkuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgdmFyIGdyYXBoRmllbGQ6IEdyYXBoRmllbGQgPSBuZXcgR3JhcGhGaWVsZCgpO1xyXG4gICAgICAgICAgICBncmFwaEZpZWxkLk5hbWUgPSBmaWVsZC5MYWJlbDtcclxuICAgICAgICAgICAgdGhpcy5maWVsZHMucHVzaChncmFwaEZpZWxkKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFJlY29yZHNCeUZvcm1JRCgpIHtcclxuICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcIkVudElEXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLklELFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMudXNlcklEID09IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnRcclxuICAgICkge1xyXG4gICAgICAvLyBzZSBub24gY29ub3NjbyBsJ3V0ZW50ZVxyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBBcnJheTxEeW5SZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFuc3dlcnMgPSByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy51c2VySUQgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QWxsQnlFbnRBbmRVc2VySURFbmRQb2ludFxyXG4gICAgKSB7XHJcbiAgICAvLyBzZSBjb25vc2NvIGwndXRlbnRlXHJcbiAgICAgIGxldCBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxyXG4gICAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLklELFxyXG4gICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBQYXJhbU5hbWU6IFwiVXNlcklEXCIsXHJcbiAgICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmNvbmZpZ3VyYXRpb25zLnVzZXJJRCxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBBcnJheTxEeW5SZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFuc3dlcnMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImNvbnRyb2xsYXJlIGxlIGNvbmZpZ3VyYXppb25pIGRlbGwnZW5kcG9pbnRcIik7XHJcbiAgICB9XHJcbiAgfSAgXHJcblxyXG4gIGdlbmVyYXRlR3JhcGgoKXtcclxuICAgIHRoaXMuZ2VuZXJhdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldEVsaWdpYmxlQW5zd2VycygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxpZ2libGVBbnN3ZXJzKCl7XHJcbiAgICAvLyBBenplcm8gbGUgY29vcmRpbmF0ZVxyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4geyBmaWVsZC5Db29yZHMgPSBuZXcgQXJyYXk8Q29vcmRzPigpOyB9KTtcclxuICAgIHRoaXMuZWxpZ2libGVBbnN3ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFuc3dlcnMpKTtcclxuXHJcbiAgICB0aGlzLm1pbnBlcmlvZFMgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1pbnBlcmlvZCxcIllZWVktbW0tZGRcIik7XHJcbiAgICB0aGlzLm1heHBlcmlvZFMgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1heHBlcmlvZCxcIllZWVktbW0tZGRcIik7XHJcblxyXG4gICAgLy8gRmlsdHJvIG1pbmltbyBwZXJpb2RvXHJcbiAgICBpZiAodGhpcy5taW5wZXJpb2QgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuZWxpZ2libGVBbnN3ZXJzID0gdGhpcy5lbGlnaWJsZUFuc3dlcnMuZmlsdGVyKHggPT4geC5BbnN3ZXJEYXRlLnNwbGl0KFwiVFwiKVswXSA+PSB0aGlzLm1pbnBlcmlvZFMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZpbHRybyBtYXNzaW1vIHBlcmlvZG9cclxuICAgIGlmICh0aGlzLm1heHBlcmlvZCAhPSBudWxsKXtcclxuICAgICAgdGhpcy5lbGlnaWJsZUFuc3dlcnMgPSB0aGlzLmVsaWdpYmxlQW5zd2Vycy5maWx0ZXIoeCA9PiB4LkFuc3dlckRhdGUuc3BsaXQoXCJUXCIpWzBdIDw9IHRoaXMubWF4cGVyaW9kUyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5zZXJpc2NvIGkgZGF0aSB0cm92YXRpXHJcbiAgICB0aGlzLmVsaWdpYmxlQW5zd2Vycy5mb3JFYWNoKChhbnN3ZXIpID0+IHtcclxuICAgICAgdmFyIGFuc3dlcnZhbHVlcyA9IEpTT04ucGFyc2UoYW5zd2VyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGFuc3dlcnZhbHVlc1tmaWVsZC5OYW1lXSAhPSBudWxsKXtcclxuICAgICAgICAgIHZhciBjb29yZHM6IENvb3JkcyA9IG5ldyBDb29yZHMoKTtcclxuICAgICAgICAgIGNvb3Jkcy54ID0gbmV3IERhdGUoYW5zd2VyLkFuc3dlckRhdGUuc3BsaXQoXCJUXCIpWzBdKTtcclxuICAgICAgICAgIGNvb3Jkcy55ID0gcGFyc2VGbG9hdChhbnN3ZXJ2YWx1ZXNbZmllbGQuTmFtZV0pO1xyXG4gICAgICAgICAgZmllbGQuQ29vcmRzLnB1c2goY29vcmRzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZ2VuZXJhdGVkID0gdHJ1ZTsgfSwgMTAwMCk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkZJTkFMIENPT1JEU1wiLCB0aGlzLnNlbGVjdGVkRmllbGRzKTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJsaXN0LXZpZXctZm9ybS1yZWNvcmRcIiAqbmdJZj1cImxvYWRlZFwiPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIFxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1kYXRldGltZXBpY2tlciBjbGFzcz1cImRhdGVcIiBbcGxhY2Vob2xkZXJdPVwiJ1BlcmlvZG8gaW5pemlvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm1pbnBlcmlvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BpY2tlck1vZGVdPVwicGlja2VyTW9kZUVudW0uREFURVwiIFtVVENEYXRlXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLWRhdGV0aW1lcGlja2VyIGNsYXNzPVwiZGF0ZVwiIFtwbGFjZWhvbGRlcl09XCInUGVyaW9kbyBmaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm1heHBlcmlvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BpY2tlck1vZGVdPVwicGlja2VyTW9kZUVudW0uREFURVwiIFtVVENEYXRlXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmaWVsZHNcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRGaWVsZHNcIiBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uZSBkZWkgY2FtcGknXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCIgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkRmllbGRzID09IG51bGwgfHwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWdyYXBoLWdlbmVyYXRlIGJ1dHRvbi1uZXh0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2VuZXJhdGVHcmFwaCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIEdlbmVyYVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmF0aW9uX2JveFwiICpuZ0lmPVwiZ2VuZXJhdGVkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmF0aW9uX29wdGlvbnNcIiAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRGaWVsZCBvZiBzZWxlY3RlZEZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwibXItMlwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGaWVsZC5WaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWRGaWVsZC5OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhdGlvbl9ncmFwaFwiICpuZ0Zvcj1cImxldCBzZWxlY3RlZEZpZWxkIG9mIHNlbGVjdGVkRmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhdGlvbl9kaXZpZGVyXCIgW2hpZGRlbl09XCIhc2VsZWN0ZWRGaWVsZC5WaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyYXBoIFtkYXRhXT1cInNlbGVjdGVkRmllbGQuQ29vcmRzXCIgW3RpdGxlXT1cInNlbGVjdGVkRmllbGQuTmFtZVwiPjwvZ3JhcGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgXHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyPlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbiAgPC9tYXQtY2FyZD4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9ncmFwaHMvZ3JhcGhzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9ncmFwaHMvZ3JhcGhzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBNkMsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQVFoRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixRQUFRLENBQUMsT0FBZSxFQUFFLE9BQWE7UUFDckMsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDO1lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQzlCO0lBQ0gsQ0FBQztJQTBCRCxZQUNVLG9CQUEwQyxFQUMxQyxRQUFrQjtRQURsQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFqQ25CLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFVM0IsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFDakMsU0FBSSxHQUFTLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtRQUU3QyxtQkFBYyxH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LEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFBpY2tlck1vZGVFbnVtIH0gZnJvbSAnQGVxcHJvamVjdC9lcXAtZGF0ZXRpbWVwaWNrZXInO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvb3JkcywgR3JhcGhGaWVsZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmFwaC5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IER5blJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ3JhcGhzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JhcGhzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncmFwaHMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JhcGhzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGVidWdMb2cobWVzc2FnZTogc3RyaW5nLCBlbGVtZW50PzogYW55KXtcclxuICAgIGlmKHRoaXMuZGVidWdNb2RlKXtcclxuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgZWxlbWVudClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZztcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcclxuICBASW5wdXQoKSBmb3JtSUQ6IHN0cmluZyA9IG51bGw7IC8vIHByZXZpZXdcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtID0gbnVsbDsgLy8gcHJldmlldyBjb25maWdcclxuXHJcbiAgcGlja2VyTW9kZUVudW0gPSBQaWNrZXJNb2RlRW51bTtcclxuICBmaWVsZEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ2VuZXJhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIG1pbnBlcmlvZDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgbWF4cGVyaW9kOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICBtaW5wZXJpb2RTOiBzdHJpbmc7XHJcbiAgbWF4cGVyaW9kUzogc3RyaW5nO1xyXG5cclxuICBmaWVsZHM6IEFycmF5PEdyYXBoRmllbGQ+ID0gbmV3IEFycmF5PEdyYXBoRmllbGQ+KCk7XHJcbiAgc2VsZWN0ZWRGaWVsZHM6IEFycmF5PEdyYXBoRmllbGQ+O1xyXG4gIHNlbGVjdGVkR2VuZXJhdGVkRmllbGRzOiBBcnJheTxHcmFwaEZpZWxkPjtcclxuXHJcbiAgYW5zd2VyczogQXJyYXk8RHluUmVjb3JkPiA9IG51bGw7XHJcbiAgZWxpZ2libGVBbnN3ZXJzOiBBcnJheTxEeW5SZWNvcmQ+ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUlEICE9IG51bGwpe1xyXG4gICAgICB0aGlzLmdldEZvcm1CeUlEKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdHV0dGkgaSByZWNvcmQgc2FsdmF0aSBwZXIgdW5hIHBhcnRpY29sYXJlIEZvcm0uXHJcbiAgICogTGEgY2hpYW1hdGEgdmllbmUgZWZmZXR0dWF0YSBzb2xvIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIGwnZW5kUG9pbnQgZGEgdXNhcmUuXHJcbiAgICovXHJcbiAgZ2V0Rm9ybUJ5SUQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybUlEICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBGb3JtKSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG5cclxuICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKHggPT4geC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gbnVtZXJpY28nXSkuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgdmFyIGdyYXBoRmllbGQ6IEdyYXBoRmllbGQgPSBuZXcgR3JhcGhGaWVsZCgpO1xyXG4gICAgICAgICAgICBncmFwaEZpZWxkLk5hbWUgPSBmaWVsZC5MYWJlbDtcclxuICAgICAgICAgICAgdGhpcy5maWVsZHMucHVzaChncmFwaEZpZWxkKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFJlY29yZHNCeUZvcm1JRCgpIHtcclxuICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcIkVudElEXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLklELFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMudXNlcklEID09IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnRcclxuICAgICkge1xyXG4gICAgICAvLyBzZSBub24gY29ub3NjbyBsJ3V0ZW50ZVxyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBBcnJheTxEeW5SZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFuc3dlcnMgPSByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy51c2VySUQgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QWxsQnlFbnRBbmRVc2VySURFbmRQb2ludFxyXG4gICAgKSB7XHJcbiAgICAvLyBzZSBjb25vc2NvIGwndXRlbnRlXHJcbiAgICAgIGxldCBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxyXG4gICAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLklELFxyXG4gICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBQYXJhbU5hbWU6IFwiVXNlcklEXCIsXHJcbiAgICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmNvbmZpZ3VyYXRpb25zLnVzZXJJRCxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBBcnJheTxEeW5SZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFuc3dlcnMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImNvbnRyb2xsYXJlIGxlIGNvbmZpZ3VyYXppb25pIGRlbGwnZW5kcG9pbnRcIik7XHJcbiAgICB9XHJcbiAgfSAgXHJcblxyXG4gIGdlbmVyYXRlR3JhcGgoKXtcclxuICAgIHRoaXMuZ2VuZXJhdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkR2VuZXJhdGVkRmllbGRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmllbGRzKSk7XHJcbiAgICB0aGlzLmdldEVsaWdpYmxlQW5zd2VycygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxpZ2libGVBbnN3ZXJzKCl7XHJcbiAgICAvLyBBenplcm8gbGUgY29vcmRpbmF0ZVxyXG4gICAgdGhpcy5zZWxlY3RlZEdlbmVyYXRlZEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4geyBmaWVsZC5Db29yZHMgPSBuZXcgQXJyYXk8Q29vcmRzPigpOyB9KTtcclxuICAgIHRoaXMuZWxpZ2libGVBbnN3ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFuc3dlcnMpKTtcclxuXHJcbiAgICB0aGlzLm1pbnBlcmlvZFMgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1pbnBlcmlvZCxcIllZWVktbW0tZGRcIik7XHJcbiAgICB0aGlzLm1heHBlcmlvZFMgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1heHBlcmlvZCxcIllZWVktbW0tZGRcIik7XHJcblxyXG4gICAgLy8gRmlsdHJvIG1pbmltbyBwZXJpb2RvXHJcbiAgICBpZiAodGhpcy5taW5wZXJpb2QgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuZWxpZ2libGVBbnN3ZXJzID0gdGhpcy5lbGlnaWJsZUFuc3dlcnMuZmlsdGVyKHggPT4geC5BbnN3ZXJEYXRlLnNwbGl0KFwiVFwiKVswXSA+PSB0aGlzLm1pbnBlcmlvZFMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZpbHRybyBtYXNzaW1vIHBlcmlvZG9cclxuICAgIGlmICh0aGlzLm1heHBlcmlvZCAhPSBudWxsKXtcclxuICAgICAgdGhpcy5lbGlnaWJsZUFuc3dlcnMgPSB0aGlzLmVsaWdpYmxlQW5zd2Vycy5maWx0ZXIoeCA9PiB4LkFuc3dlckRhdGUuc3BsaXQoXCJUXCIpWzBdIDw9IHRoaXMubWF4cGVyaW9kUyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5zZXJpc2NvIGkgZGF0aSB0cm92YXRpXHJcbiAgICB0aGlzLmVsaWdpYmxlQW5zd2Vycy5mb3JFYWNoKChhbnN3ZXIpID0+IHtcclxuICAgICAgdmFyIGFuc3dlcnZhbHVlcyA9IEpTT04ucGFyc2UoYW5zd2VyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR2VuZXJhdGVkRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGFuc3dlcnZhbHVlc1tmaWVsZC5OYW1lXSAhPSBudWxsKXtcclxuICAgICAgICAgIHZhciBjb29yZHM6IENvb3JkcyA9IG5ldyBDb29yZHMoKTtcclxuICAgICAgICAgIGNvb3Jkcy54ID0gbmV3IERhdGUoYW5zd2VyLkFuc3dlckRhdGUuc3BsaXQoXCJUXCIpWzBdKTtcclxuICAgICAgICAgIGNvb3Jkcy55ID0gcGFyc2VGbG9hdChhbnN3ZXJ2YWx1ZXNbZmllbGQuTmFtZV0pO1xyXG4gICAgICAgICAgZmllbGQuQ29vcmRzLnB1c2goY29vcmRzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZ2VuZXJhdGVkID0gdHJ1ZTsgfSwgMTAwMCk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkZJTkFMIENPT1JEU1wiLCB0aGlzLnNlbGVjdGVkR2VuZXJhdGVkRmllbGRzKTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJsaXN0LXZpZXctZm9ybS1yZWNvcmRcIiAqbmdJZj1cImxvYWRlZFwiPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIFxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1kYXRldGltZXBpY2tlciBjbGFzcz1cImRhdGVcIiBbcGxhY2Vob2xkZXJdPVwiJ1BlcmlvZG8gaW5pemlvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm1pbnBlcmlvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BpY2tlck1vZGVdPVwicGlja2VyTW9kZUVudW0uREFURVwiIFtVVENEYXRlXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLWRhdGV0aW1lcGlja2VyIGNsYXNzPVwiZGF0ZVwiIFtwbGFjZWhvbGRlcl09XCInUGVyaW9kbyBmaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm1heHBlcmlvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BpY2tlck1vZGVdPVwicGlja2VyTW9kZUVudW0uREFURVwiIFtVVENEYXRlXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmaWVsZHNcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRGaWVsZHNcIiBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uZSBkZWkgY2FtcGknXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCIgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkRmllbGRzID09IG51bGwgfHwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWdyYXBoLWdlbmVyYXRlIGJ1dHRvbi1uZXh0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2VuZXJhdGVHcmFwaCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIEdlbmVyYVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYXRpb25fYm94XCIgKm5nSWY9XCJnZW5lcmF0ZWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYXRpb25fb3B0aW9uc1wiICpuZ0Zvcj1cImxldCBzZWxlY3RlZEZpZWxkIG9mIHNlbGVjdGVkR2VuZXJhdGVkRmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJtci0yXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZpZWxkLlZpc2libGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZEZpZWxkLk5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmF0aW9uX2dyYXBoXCIgKm5nRm9yPVwibGV0IHNlbGVjdGVkRmllbGQgb2Ygc2VsZWN0ZWRHZW5lcmF0ZWRGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmF0aW9uX2RpdmlkZXJcIiBbaGlkZGVuXT1cIiFzZWxlY3RlZEZpZWxkLlZpc2libGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JhcGggW2RhdGFdPVwic2VsZWN0ZWRGaWVsZC5Db29yZHNcIiBbdGl0bGVdPVwic2VsZWN0ZWRGaWVsZC5OYW1lXCI+PC9ncmFwaD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXI+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuICA8L21hdC1jYXJkPiJdfQ==
@@ -7,9 +7,9 @@
7
7
  export class GraphField {
8
8
  constructor() {
9
9
  this.Coords = new Array();
10
- this.Visible = false;
10
+ this.Visible = true;
11
11
  }
12
12
  }
13
13
  export class Coords {
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9tb2RlbHMvZ3JhcGgubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUF2QjtRQUVJLFdBQU0sR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUM1QyxZQUFPLEdBQVksS0FBSyxDQUFDO0lBQzdCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxNQUFNO0NBR2xCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENsYXNzZSBiYXNlIGNoZSBpbXBsZW1lbnRhIGxhIHZhbG9yaXp6YXppb25lIGRlbGwnSUQgKHNlIG51bGwpIGNvbiB1bmEgbnVvdmEgR1VJRCBcclxuICogaW4gY3JlYXppb25lIGRlbGwnb2dnZXR0by5cclxuICogUGVyIHNjZWx0YSBhcmNoaXRldHR1cmFsZSwgdmlzdG8gY2hlIG5vbiBwb3NzaWFtbyBhc3N1bWVyZSBsYSBwZXJzaXN0ZW56YSBzdSBEQiByZWxhemlvbmFsZSBvIHN1IE5PU1FMLCBvZ25pXHJcbiAqIG9nZ2V0dG8gZGVsbGEgY29uZmlndXJhemlvbmUgdmllbmUgcGVyc2lzdGl0bywgZSBnZXN0aXRvIGNvbiBJRCBkaSB0aXBvIHN0cmluZ2EgY3JlYXRvIGRhIHVuYSBHVUlELlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEdyYXBoRmllbGQge1xyXG4gICAgTmFtZTogc3RyaW5nO1xyXG4gICAgQ29vcmRzOiBBcnJheTxDb29yZHM+ID0gbmV3IEFycmF5PENvb3Jkcz4oKTtcclxuICAgIFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvb3JkcyB7XHJcbiAgICB4OiBEYXRlO1xyXG4gICAgeTogbnVtYmVyO1xyXG59Il19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9tb2RlbHMvZ3JhcGgubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUF2QjtRQUVJLFdBQU0sR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUM1QyxZQUFPLEdBQVksSUFBSSxDQUFDO0lBQzVCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxNQUFNO0NBR2xCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENsYXNzZSBiYXNlIGNoZSBpbXBsZW1lbnRhIGxhIHZhbG9yaXp6YXppb25lIGRlbGwnSUQgKHNlIG51bGwpIGNvbiB1bmEgbnVvdmEgR1VJRCBcclxuICogaW4gY3JlYXppb25lIGRlbGwnb2dnZXR0by5cclxuICogUGVyIHNjZWx0YSBhcmNoaXRldHR1cmFsZSwgdmlzdG8gY2hlIG5vbiBwb3NzaWFtbyBhc3N1bWVyZSBsYSBwZXJzaXN0ZW56YSBzdSBEQiByZWxhemlvbmFsZSBvIHN1IE5PU1FMLCBvZ25pXHJcbiAqIG9nZ2V0dG8gZGVsbGEgY29uZmlndXJhemlvbmUgdmllbmUgcGVyc2lzdGl0bywgZSBnZXN0aXRvIGNvbiBJRCBkaSB0aXBvIHN0cmluZ2EgY3JlYXRvIGRhIHVuYSBHVUlELlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEdyYXBoRmllbGQge1xyXG4gICAgTmFtZTogc3RyaW5nO1xyXG4gICAgQ29vcmRzOiBBcnJheTxDb29yZHM+ID0gbmV3IEFycmF5PENvb3Jkcz4oKTtcclxuICAgIFZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29vcmRzIHtcclxuICAgIHg6IERhdGU7XHJcbiAgICB5OiBudW1iZXI7XHJcbn0iXX0=
@@ -21,12 +21,12 @@ import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
21
21
  import * as i3$3 from '@angular/router';
22
22
  import * as i6$2 from '@angular/material/expansion';
23
23
  import { MatExpansionModule } from '@angular/material/expansion';
24
+ import * as i2$3 from '@angular/material/tooltip';
25
+ import { MatTooltipModule } from '@angular/material/tooltip';
24
26
  import * as i11 from '@angular/material/stepper';
25
27
  import { MatStepperModule } from '@angular/material/stepper';
26
28
  import * as i4$2 from '@angular/material/tabs';
27
29
  import { MatTabsModule } from '@angular/material/tabs';
28
- import * as i2$3 from '@angular/material/tooltip';
29
- import { MatTooltipModule } from '@angular/material/tooltip';
30
30
  import * as i2$2 from '@angular/material/input';
31
31
  import { MatInputModule } from '@angular/material/input';
32
32
  import * as i3 from '@angular/material/form-field';
@@ -3150,10 +3150,10 @@ class AddFormRecordComponent {
3150
3150
  }
3151
3151
  }
3152
3152
  AddFormRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddFormRecordComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
3153
- AddFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AddFormRecordComponent, selector: "add-form-record", inputs: { debugMode: "debugMode", configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form", record: "record", onlyView: "onlyView", isDuplicate: "isDuplicate", additionalParams: "additionalParams" }, outputs: { saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, viewQueries: [{ propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"form.FormScalarType == FormScalarTypeEnum.Semplice\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n <!-- VISUALIZZAZIONE A STEPPER -->\r\n <mat-horizontal-stepper linear *ngIf=\"form.FormScalarType == FormScalarTypeEnum['A step']\"\r\n class=\"add-form-record-stepper\">\r\n <mat-step *ngFor=\"let group of form.FormFieldsGroups; let i = index; let first = first; let last = last\">\r\n <ng-template matStepLabel>\r\n {{group.Name}}\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end add-form-record-buttons\">\r\n <button *ngIf=\"!first\" class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button *ngIf=\"!last\" class=\"button-next\" color=\"primary\" mat-raised-button matStepperNext>\r\n Successivo\r\n </button>\r\n <button *ngIf=\"last && showSaveButton\" (click)=\"saveOrExitForm(false)\" class=\"button-next\"\r\n color=\"primary\" mat-raised-button>\r\n Salva\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n\r\n <!-- VISUALIZZAZIONE A TAB -->\r\n <mat-tab-group *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In tab']\" class=\"add-form-record-tab\">\r\n <mat-tab *ngFor=\"let group of form.FormFieldsGroups\" [label]=\"group.Name\">\r\n <div class=\"mt-3\">\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- VISUALIZZAZIONE AD ACCORDION -->\r\n <mat-accordion multi *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In accordion']\"\r\n class=\"add-form-record-accordion\">\r\n <mat-expansion-panel *ngFor=\"let group of form.FormFieldsGroups\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{group.Name}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </form>\r\n\r\n <div class=\"row mt-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton) && form.FormScalarType != FormScalarTypeEnum['A step']\">\r\n <div class=\"col-sm-12 text-right\">\r\n <button class=\"mr-2\" mat-raised-button type=\"button\" *ngIf=\"showBackButton\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showSaveButton\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"formForm.invalid || formForm.disabled\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields'>\r\n <div class=\"row\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"!field.InListView\"\r\n [ngClass]=\"utilityService.getFieldSyleClass(field)\">\r\n <dynamic-module-field-fix #fieldTemplate [debugMode]=\"debugMode\" [field]=\"field\" [form]=\"form\" [record]=\"record\"\r\n (recordChange)=\"onRecordChange()\">\r\n </dynamic-module-field-fix>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i11.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i11.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i11.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i11.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "component", type: i4$2.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i4$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6$2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i6$2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6$2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i6$2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DynamicModuleFieldFixComponent, selector: "dynamic-module-field-fix", inputs: ["debugMode", "field", "form", "record"], outputs: ["recordChange"] }] });
3153
+ AddFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AddFormRecordComponent, selector: "add-form-record", inputs: { debugMode: "debugMode", configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form", record: "record", onlyView: "onlyView", isDuplicate: "isDuplicate", additionalParams: "additionalParams" }, outputs: { saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, viewQueries: [{ propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <span>{{form.Name}}</span>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"form.FormScalarType == FormScalarTypeEnum.Semplice\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n <!-- VISUALIZZAZIONE A STEPPER -->\r\n <mat-horizontal-stepper linear *ngIf=\"form.FormScalarType == FormScalarTypeEnum['A step']\"\r\n class=\"add-form-record-stepper\">\r\n <mat-step *ngFor=\"let group of form.FormFieldsGroups; let i = index; let first = first; let last = last\">\r\n <ng-template matStepLabel>\r\n {{group.Name}}\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end add-form-record-buttons\">\r\n <button *ngIf=\"!first\" class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button *ngIf=\"!last\" class=\"button-next\" color=\"primary\" mat-raised-button matStepperNext>\r\n Successivo\r\n </button>\r\n <button *ngIf=\"last && showSaveButton\" (click)=\"saveOrExitForm(false)\" class=\"button-next\"\r\n color=\"primary\" mat-raised-button>\r\n Salva\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n\r\n <!-- VISUALIZZAZIONE A TAB -->\r\n <mat-tab-group *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In tab']\" class=\"add-form-record-tab\">\r\n <mat-tab *ngFor=\"let group of form.FormFieldsGroups\" [label]=\"group.Name\">\r\n <div class=\"mt-3\">\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- VISUALIZZAZIONE AD ACCORDION -->\r\n <mat-accordion multi *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In accordion']\"\r\n class=\"add-form-record-accordion\">\r\n <mat-expansion-panel *ngFor=\"let group of form.FormFieldsGroups\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{group.Name}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </form>\r\n\r\n <div class=\"row mt-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton) && form.FormScalarType != FormScalarTypeEnum['A step']\">\r\n <div class=\"col-sm-12 text-right\">\r\n <button class=\"mr-2\" mat-raised-button type=\"button\" *ngIf=\"showBackButton\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showSaveButton\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"formForm.invalid || formForm.disabled\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields'>\r\n <div class=\"row\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"!field.InListView\"\r\n [ngClass]=\"utilityService.getFieldSyleClass(field)\">\r\n <dynamic-module-field-fix #fieldTemplate [debugMode]=\"debugMode\" [field]=\"field\" [form]=\"form\" [record]=\"record\"\r\n (recordChange)=\"onRecordChange()\">\r\n </dynamic-module-field-fix>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i11.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i11.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i11.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i11.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "component", type: i4$2.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i4$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6$2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i6$2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6$2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i6$2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DynamicModuleFieldFixComponent, selector: "dynamic-module-field-fix", inputs: ["debugMode", "field", "form", "record"], outputs: ["recordChange"] }] });
3154
3154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddFormRecordComponent, decorators: [{
3155
3155
  type: Component,
3156
- args: [{ selector: "add-form-record", template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"form.FormScalarType == FormScalarTypeEnum.Semplice\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n <!-- VISUALIZZAZIONE A STEPPER -->\r\n <mat-horizontal-stepper linear *ngIf=\"form.FormScalarType == FormScalarTypeEnum['A step']\"\r\n class=\"add-form-record-stepper\">\r\n <mat-step *ngFor=\"let group of form.FormFieldsGroups; let i = index; let first = first; let last = last\">\r\n <ng-template matStepLabel>\r\n {{group.Name}}\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end add-form-record-buttons\">\r\n <button *ngIf=\"!first\" class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button *ngIf=\"!last\" class=\"button-next\" color=\"primary\" mat-raised-button matStepperNext>\r\n Successivo\r\n </button>\r\n <button *ngIf=\"last && showSaveButton\" (click)=\"saveOrExitForm(false)\" class=\"button-next\"\r\n color=\"primary\" mat-raised-button>\r\n Salva\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n\r\n <!-- VISUALIZZAZIONE A TAB -->\r\n <mat-tab-group *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In tab']\" class=\"add-form-record-tab\">\r\n <mat-tab *ngFor=\"let group of form.FormFieldsGroups\" [label]=\"group.Name\">\r\n <div class=\"mt-3\">\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- VISUALIZZAZIONE AD ACCORDION -->\r\n <mat-accordion multi *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In accordion']\"\r\n class=\"add-form-record-accordion\">\r\n <mat-expansion-panel *ngFor=\"let group of form.FormFieldsGroups\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{group.Name}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </form>\r\n\r\n <div class=\"row mt-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton) && form.FormScalarType != FormScalarTypeEnum['A step']\">\r\n <div class=\"col-sm-12 text-right\">\r\n <button class=\"mr-2\" mat-raised-button type=\"button\" *ngIf=\"showBackButton\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showSaveButton\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"formForm.invalid || formForm.disabled\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields'>\r\n <div class=\"row\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"!field.InListView\"\r\n [ngClass]=\"utilityService.getFieldSyleClass(field)\">\r\n <dynamic-module-field-fix #fieldTemplate [debugMode]=\"debugMode\" [field]=\"field\" [form]=\"form\" [record]=\"record\"\r\n (recordChange)=\"onRecordChange()\">\r\n </dynamic-module-field-fix>\r\n </div>\r\n </div>\r\n</ng-template>" }]
3156
+ args: [{ selector: "add-form-record", template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <span>{{form.Name}}</span>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"form.FormScalarType == FormScalarTypeEnum.Semplice\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n <!-- VISUALIZZAZIONE A STEPPER -->\r\n <mat-horizontal-stepper linear *ngIf=\"form.FormScalarType == FormScalarTypeEnum['A step']\"\r\n class=\"add-form-record-stepper\">\r\n <mat-step *ngFor=\"let group of form.FormFieldsGroups; let i = index; let first = first; let last = last\">\r\n <ng-template matStepLabel>\r\n {{group.Name}}\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end add-form-record-buttons\">\r\n <button *ngIf=\"!first\" class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button *ngIf=\"!last\" class=\"button-next\" color=\"primary\" mat-raised-button matStepperNext>\r\n Successivo\r\n </button>\r\n <button *ngIf=\"last && showSaveButton\" (click)=\"saveOrExitForm(false)\" class=\"button-next\"\r\n color=\"primary\" mat-raised-button>\r\n Salva\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n\r\n <!-- VISUALIZZAZIONE A TAB -->\r\n <mat-tab-group *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In tab']\" class=\"add-form-record-tab\">\r\n <mat-tab *ngFor=\"let group of form.FormFieldsGroups\" [label]=\"group.Name\">\r\n <div class=\"mt-3\">\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- VISUALIZZAZIONE AD ACCORDION -->\r\n <mat-accordion multi *ngIf=\"form.FormScalarType == FormScalarTypeEnum['In accordion']\"\r\n class=\"add-form-record-accordion\">\r\n <mat-expansion-panel *ngFor=\"let group of form.FormFieldsGroups\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{group.Name}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <ng-container [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: fieldGroups[group.Name] }\">\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </form>\r\n\r\n <div class=\"row mt-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton) && form.FormScalarType != FormScalarTypeEnum['A step']\">\r\n <div class=\"col-sm-12 text-right\">\r\n <button class=\"mr-2\" mat-raised-button type=\"button\" *ngIf=\"showBackButton\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showSaveButton\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"formForm.invalid || formForm.disabled\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields'>\r\n <div class=\"row\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"!field.InListView\"\r\n [ngClass]=\"utilityService.getFieldSyleClass(field)\">\r\n <dynamic-module-field-fix #fieldTemplate [debugMode]=\"debugMode\" [field]=\"field\" [form]=\"form\" [record]=\"record\"\r\n (recordChange)=\"onRecordChange()\">\r\n </dynamic-module-field-fix>\r\n </div>\r\n </div>\r\n</ng-template>" }]
3157
3157
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: UtilityHelperService }]; }, propDecorators: { debugMode: [{
3158
3158
  type: Input
3159
3159
  }], configurations: [{
@@ -3959,7 +3959,7 @@ class ListViewFormRecordComponent {
3959
3959
  });
3960
3960
  }
3961
3961
  openGraphs() {
3962
- this.router.navigate(['dynamic-module-graphs/' + this.formID]);
3962
+ this.router.navigate(['dynamic-module-graphs/' + this.formID + '/' + this.userID]);
3963
3963
  }
3964
3964
  onAddSaveRecord(record) {
3965
3965
  if (this.openAddDialogRef != null) {
@@ -3977,10 +3977,10 @@ class ListViewFormRecordComponent {
3977
3977
  }
3978
3978
  }
3979
3979
  ListViewFormRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, deps: [{ token: UtilityHelperService }, { token: i0.ChangeDetectorRef }, { token: i1$2.MatDialog }, { token: i3$3.Router }], target: i0.ɵɵFactoryTarget.Component });
3980
- ListViewFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: { debugMode: "debugMode", configurations: "configurations", compileConfigurations: "compileConfigurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form", defaultListViewFunction: "defaultListViewFunction", externalButtons: "externalButtons", onlyView: "onlyView", records: "records", highlightFilter: "highlightFilter" }, outputs: { onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }, { propertyName: "openAddDialog", first: true, predicate: ["openAddDialog"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle\">Elenco {{ form.Name }} </mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <mat-icon>pie_chart</mat-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" mat-icon-button class=\"record-icon {{button.extraClass}}\" [hidden]=\"button.icon == 'file_copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\" mat-icon-button class=\"record-icon {{button.extraClass}}\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button> \r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!-- DIALOG RECIPIENTS EMAIL PER FIRMA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [debugMode]=\"debugMode\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [additionalParams]=\"compileConfigurations.additionalParams\"\r\n\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .dynaform-question{font-size:1em;font-weight:lighter}::ng-deep .dynaform-response{font-size:1.2em;font-weight:700}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5$1.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i6$2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i6$2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6$2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i6$2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i6$2.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AddFormRecordComponent, selector: "add-form-record", inputs: ["debugMode", "configurations", "endPointConfiguration", "userID", "formID", "form", "record", "onlyView", "isDuplicate", "additionalParams"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "component", type: SingleRecordComponent, selector: "lib-single-record", inputs: ["debugMode", "endPointConfiguration", "record", "pageState", "userID", "form", "showBackButton", "outCompileConfigurations", "onlyView"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
3980
+ ListViewFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: { debugMode: "debugMode", configurations: "configurations", compileConfigurations: "compileConfigurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form", defaultListViewFunction: "defaultListViewFunction", externalButtons: "externalButtons", onlyView: "onlyView", records: "records", highlightFilter: "highlightFilter" }, outputs: { onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }, { propertyName: "openAddDialog", first: true, predicate: ["openAddDialog"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle\">Elenco {{ form.Name }} </mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <mat-icon>pie_chart</mat-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" \r\n mat-icon-button \r\n class=\"record-icon {{button.extraClass}}\" \r\n [matTooltip]=\"button.text\"\r\n [hidden]=\"button.icon == 'file_copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\" \r\n mat-icon-button \r\n class=\"record-icon {{button.extraClass}}\"\r\n [matTooltip]=\"button.text\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button> \r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!-- DIALOG RECIPIENTS EMAIL PER FIRMA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [debugMode]=\"debugMode\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [additionalParams]=\"compileConfigurations.additionalParams\"\r\n\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .dynaform-question{font-size:1em;font-weight:lighter}::ng-deep .dynaform-response{font-size:1.2em;font-weight:700}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5$1.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i6$2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i6$2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6$2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i6$2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i6$2.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AddFormRecordComponent, selector: "add-form-record", inputs: ["debugMode", "configurations", "endPointConfiguration", "userID", "formID", "form", "record", "onlyView", "isDuplicate", "additionalParams"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "component", type: SingleRecordComponent, selector: "lib-single-record", inputs: ["debugMode", "endPointConfiguration", "record", "pageState", "userID", "form", "showBackButton", "outCompileConfigurations", "onlyView"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
3981
3981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, decorators: [{
3982
3982
  type: Component,
3983
- args: [{ selector: "list-view-form-record", template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle\">Elenco {{ form.Name }} </mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <mat-icon>pie_chart</mat-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" mat-icon-button class=\"record-icon {{button.extraClass}}\" [hidden]=\"button.icon == 'file_copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\" mat-icon-button class=\"record-icon {{button.extraClass}}\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button> \r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!-- DIALOG RECIPIENTS EMAIL PER FIRMA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [debugMode]=\"debugMode\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [additionalParams]=\"compileConfigurations.additionalParams\"\r\n\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .dynaform-question{font-size:1em;font-weight:lighter}::ng-deep .dynaform-response{font-size:1.2em;font-weight:700}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"] }]
3983
+ args: [{ selector: "list-view-form-record", template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle\">Elenco {{ form.Name }} </mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <mat-icon>pie_chart</mat-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" \r\n mat-icon-button \r\n class=\"record-icon {{button.extraClass}}\" \r\n [matTooltip]=\"button.text\"\r\n [hidden]=\"button.icon == 'file_copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\" \r\n mat-icon-button \r\n class=\"record-icon {{button.extraClass}}\"\r\n [matTooltip]=\"button.text\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <mat-icon>{{button.icon}}</mat-icon>\r\n </button> \r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!-- DIALOG RECIPIENTS EMAIL PER FIRMA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [debugMode]=\"debugMode\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [additionalParams]=\"compileConfigurations.additionalParams\"\r\n\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .dynaform-question{font-size:1em;font-weight:lighter}::ng-deep .dynaform-response{font-size:1.2em;font-weight:700}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"] }]
3984
3984
  }], ctorParameters: function () { return [{ type: UtilityHelperService }, { type: i0.ChangeDetectorRef }, { type: i1$2.MatDialog }, { type: i3$3.Router }]; }, propDecorators: { debugMode: [{
3985
3985
  type: Input
3986
3986
  }], configurations: [{
@@ -5449,7 +5449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
5449
5449
  class GraphField {
5450
5450
  constructor() {
5451
5451
  this.Coords = new Array();
5452
- this.Visible = false;
5452
+ this.Visible = true;
5453
5453
  }
5454
5454
  }
5455
5455
  class Coords {
@@ -5478,6 +5478,10 @@ class GraphComponent {
5478
5478
  minimum: new Date("2018-07-01"),
5479
5479
  maximum: new Date("2019-06-30")
5480
5480
  }
5481
+ },
5482
+ options: {
5483
+ responsive: true,
5484
+ maintainAspectRatio: false
5481
5485
  }
5482
5486
  };
5483
5487
  this.loaded = false;
@@ -5497,10 +5501,10 @@ class GraphComponent {
5497
5501
  }
5498
5502
  }
5499
5503
  GraphComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5500
- GraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphComponent, selector: "graph", inputs: { data: "data", title: "title" }, ngImport: i0, template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\">Nessun dato trovato nell'intervallo specificato!</div>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$5.CanvasJSStockChart, selector: "canvasjs-stockchart", inputs: ["options", "styles"], outputs: ["stockChartInstance"] }] });
5504
+ GraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphComponent, selector: "graph", inputs: { data: "data", title: "title" }, ngImport: i0, template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$5.CanvasJSStockChart, selector: "canvasjs-stockchart", inputs: ["options", "styles"], outputs: ["stockChartInstance"] }] });
5501
5505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, decorators: [{
5502
5506
  type: Component,
5503
- args: [{ selector: 'graph', template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\">Nessun dato trovato nell'intervallo specificato!</div>" }]
5507
+ args: [{ selector: 'graph', template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>" }]
5504
5508
  }], ctorParameters: function () { return []; }, propDecorators: { data: [{
5505
5509
  type: Input,
5506
5510
  args: ["data"]
@@ -5612,11 +5616,12 @@ class GraphsComponent {
5612
5616
  }
5613
5617
  generateGraph() {
5614
5618
  this.generated = false;
5619
+ this.selectedGeneratedFields = JSON.parse(JSON.stringify(this.selectedFields));
5615
5620
  this.getEligibleAnswers();
5616
5621
  }
5617
5622
  getEligibleAnswers() {
5618
5623
  // Azzero le coordinate
5619
- this.selectedFields.forEach((field) => { field.Coords = new Array(); });
5624
+ this.selectedGeneratedFields.forEach((field) => { field.Coords = new Array(); });
5620
5625
  this.eligibleAnswers = JSON.parse(JSON.stringify(this.answers));
5621
5626
  this.minperiodS = this.datePipe.transform(this.minperiod, "YYYY-mm-dd");
5622
5627
  this.maxperiodS = this.datePipe.transform(this.maxperiod, "YYYY-mm-dd");
@@ -5631,7 +5636,7 @@ class GraphsComponent {
5631
5636
  // Inserisco i dati trovati
5632
5637
  this.eligibleAnswers.forEach((answer) => {
5633
5638
  var answervalues = JSON.parse(answer.SerializedValues);
5634
- this.selectedFields.forEach((field) => {
5639
+ this.selectedGeneratedFields.forEach((field) => {
5635
5640
  if (answervalues[field.Name] != null) {
5636
5641
  var coords = new Coords();
5637
5642
  coords.x = new Date(answer.AnswerDate.split("T")[0]);
@@ -5641,14 +5646,14 @@ class GraphsComponent {
5641
5646
  });
5642
5647
  });
5643
5648
  setTimeout(() => { this.generated = true; }, 1000);
5644
- console.log("FINAL COORDS", this.selectedFields);
5649
+ console.log("FINAL COORDS", this.selectedGeneratedFields);
5645
5650
  }
5646
5651
  }
5647
5652
  GraphsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphsComponent, deps: [{ token: UtilityHelperService }, { token: i6.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
5648
- GraphsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphsComponent, selector: "graphs", inputs: { debugMode: "debugMode", configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form" }, ngImport: i0, template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"], dependencies: [{ kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5$1.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i1$1.EqpDateTimePickerComponent, selector: "eqp-datetimepicker", inputs: ["placeholder", "ngModelInput", "UTCDate", "timeType", "pickerMode", "formControlNameInput", "formGroupInput", "isRequired", "minDate", "maxDate", "readonlyInput", "disabled", "showSpinners", "showSeconds", "disableMinute", "defaultTime", "stepHour", "stepMinute", "stepSecond", "color", "enableMeridian", "touchUi", "customDateFormat"], outputs: ["ngModelInputChange", "onDateChange"] }, { kind: "component", type: GraphComponent, selector: "graph", inputs: ["data", "title"] }] });
5653
+ GraphsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphsComponent, selector: "graphs", inputs: { debugMode: "debugMode", configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form" }, ngImport: i0, template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"], dependencies: [{ kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5$1.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i1$1.EqpDateTimePickerComponent, selector: "eqp-datetimepicker", inputs: ["placeholder", "ngModelInput", "UTCDate", "timeType", "pickerMode", "formControlNameInput", "formGroupInput", "isRequired", "minDate", "maxDate", "readonlyInput", "disabled", "showSpinners", "showSeconds", "disableMinute", "defaultTime", "stepHour", "stepMinute", "stepSecond", "color", "enableMeridian", "touchUi", "customDateFormat"], outputs: ["ngModelInputChange", "onDateChange"] }, { kind: "component", type: GraphComponent, selector: "graph", inputs: ["data", "title"] }] });
5649
5654
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphsComponent, decorators: [{
5650
5655
  type: Component,
5651
- args: [{ selector: 'graphs', template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"] }]
5656
+ args: [{ selector: 'graphs', template: "<mat-card class=\"list-view-form-record\" *ngIf=\"loaded\">\r\n <mat-card-content>\r\n \r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"pickerModeEnum.DATE\" [UTCDate]=\"true\" [showSeconds]=\"false\">\r\n </eqp-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <eqp-select [arrayData]=\"fields\" [(ngModelInput)]=\"selectedFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\" [isMultiSelect]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedFields == null || selectedFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateGraph()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div>\r\n <div class=\"generation_box\" *ngIf=\"generated\">\r\n <div class=\"row\">\r\n <div class=\"col-3\">\r\n <div class=\"generation_options\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <mat-checkbox class=\"mr-2\" [(ngModel)]=\"selectedField.Visible\">\r\n {{selectedField.Name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"generation_graph\" *ngFor=\"let selectedField of selectedGeneratedFields\">\r\n <div class=\"generation_divider\" [hidden]=\"!selectedField.Visible\">\r\n <graph [data]=\"selectedField.Coords\" [title]=\"selectedField.Name\"></graph>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n </mat-card>", styles: [".btn-graph-generate{height:56px;width:100%}.generation_box .generation_divider{margin-bottom:10px;padding-bottom:10px;border-bottom:2px solid black;width:100%;height:600px}.generation_box .generation_divider>*{width:100%;height:400px}\n"] }]
5652
5657
  }], ctorParameters: function () { return [{ type: UtilityHelperService }, { type: i6.DatePipe }]; }, propDecorators: { debugMode: [{
5653
5658
  type: Input
5654
5659
  }], configurations: [{