@eqproject/eqp-dynamic-module 2.6.54 → 2.6.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +26 -14
- package/esm2020/lib/components/private/trigger-creator/dynamic-module-trigger-fix/dynamic-module-trigger-fix.component.mjs +5 -4
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.mjs +33 -105
- package/esm2020/lib/models/logicOperator.model.mjs +5 -3
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +88 -145
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +88 -145
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.d.ts +11 -27
- package/lib/models/logicOperator.model.d.ts +5 -3
- package/package.json +1 -1
|
@@ -1,138 +1,66 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { Statistic } from '../../../../../models/statistic.model';
|
|
2
|
+
import { BooleanLogicOperatorType, Condition } from '../../../../../models/trigger.model';
|
|
4
3
|
import { UtilityHelperService } from '../../../../../services/utilityHelper.services';
|
|
4
|
+
import { ListPresentationEnum } from '../../../../../models/fields/listValueField.model';
|
|
5
|
+
import { LogicOperatorListValue } from '../../../../../models/logicOperator.model';
|
|
5
6
|
import { GlobalService } from '../../../../../services/global.service';
|
|
6
|
-
import { BooleanLogicOperatorType } from '../../../../../models/trigger.model';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/
|
|
9
|
-
import * as i2 from "@
|
|
10
|
-
import * as i3 from "@eqproject/eqp-select";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@eqproject/eqp-select";
|
|
11
10
|
export class ListValueTriggerTemplateComponent {
|
|
12
11
|
constructor() {
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
12
|
+
this.recordChange = new EventEmitter();
|
|
13
|
+
this.triggerChange = new EventEmitter();
|
|
15
14
|
this.logicOperatorListValue = LogicOperatorListValue;
|
|
16
|
-
this.
|
|
15
|
+
this.selectedLogicOperatorListValue = LogicOperatorListValue['CONTIENE ALMENO UNO'];
|
|
17
16
|
this.booleanLogicOperatorType = BooleanLogicOperatorType;
|
|
18
17
|
this.selectedBooleanLogicOperator = BooleanLogicOperatorType.AND;
|
|
18
|
+
this.ListPresentationEnum = ListPresentationEnum;
|
|
19
19
|
this.arrayData = [];
|
|
20
20
|
}
|
|
21
21
|
ngOnInit() {
|
|
22
|
-
this.
|
|
22
|
+
this.field = this.condition.Field;
|
|
23
23
|
this.initStyles();
|
|
24
24
|
this.setArrayData();
|
|
25
25
|
}
|
|
26
|
-
//Funzione per parsare il campo stylecss dell'oggetto field ed applicarlo all'html
|
|
27
26
|
initStyles() {
|
|
27
|
+
//Funzione per parsare il campo stylecss dell'oggetto field ed applicarlo all'html
|
|
28
28
|
if (this.field.FieldstyleCSS != null || this.field.FieldstyleCSS != undefined)
|
|
29
29
|
this.FieldstyleObj = UtilityHelperService.initStyles(this.field.FieldstyleCSS);
|
|
30
|
+
if (this.field.LabelstyleCSS != null || this.field.LabelstyleCSS != undefined)
|
|
31
|
+
this.LabelstyleObj = UtilityHelperService.initStyles(this.field.LabelstyleCSS);
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
33
35
|
*/
|
|
34
36
|
onTriggerChange() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Metodo che genera l'oggetto da inviare all'esterno
|
|
46
|
-
*/
|
|
47
|
-
generateCondition(mode) {
|
|
48
|
-
let output = new Statistic();
|
|
49
|
-
if (mode == "active") {
|
|
50
|
-
output = {
|
|
51
|
-
key: this.field.Name,
|
|
52
|
-
value: this.record[this.field.Name],
|
|
53
|
-
logicoperator: this.selectedLogicOperator,
|
|
54
|
-
fieldtype: this.field.FieldType
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
output = {
|
|
59
|
-
key: this.field.Name,
|
|
60
|
-
value: null,
|
|
61
|
-
logicoperator: null,
|
|
62
|
-
fieldtype: null
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
return output;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Metodo di aggiunta dei validator dell'input
|
|
69
|
-
*/
|
|
70
|
-
configureControllers() {
|
|
71
|
-
this.validatorsArray = [];
|
|
72
|
-
this.field.FormFormGroup.get([this.field.Name]).setValidators(this.validatorsArray);
|
|
37
|
+
let output = new Condition();
|
|
38
|
+
output = {
|
|
39
|
+
key: this.field.Name,
|
|
40
|
+
value: this.condition.record[this.field.Name],
|
|
41
|
+
logicoperator: this.selectedLogicOperatorListValue,
|
|
42
|
+
fieldType: this.field.FieldType,
|
|
43
|
+
booleanlogicoperator: this.selectedBooleanLogicOperator
|
|
44
|
+
};
|
|
45
|
+
this.triggerChange.emit(output);
|
|
73
46
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Metodo per creare un array di oggetti del tipo { Key: string, Value: any } da usare come sorgente dati per la eqp-select.
|
|
76
|
-
*/
|
|
77
47
|
setArrayData() {
|
|
78
|
-
this.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
Object.keys(this.field.ValuePairs).forEach(k => this.createArrayDataElement(k, this.field.ValuePairs[k]));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
prepareValuePairs() {
|
|
89
|
-
if (this.field.Formula) {
|
|
90
|
-
this.field.ValuePairs = {};
|
|
91
|
-
const temp = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
92
|
-
// temp dovrebbe essere una stringa del tipo "chiave1! valore 1 ; chiave2 | valore 2 "
|
|
93
|
-
// dobbiamo ottenere un dizionario di quei valori
|
|
94
|
-
this.field.ValuePairs = GlobalService.stringToValuePairs(temp);
|
|
95
|
-
//this.record[this.field.Name] = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
96
|
-
}
|
|
97
|
-
else if (this.field.ValuePairs != null && this.field.ValuePairs.lenght > 0) {
|
|
98
|
-
// va bene così
|
|
99
|
-
}
|
|
100
|
-
else if (this.field.ValueString != null && this.field.ValueString != "") {
|
|
101
|
-
// va presa la strigna e rimappata nel diario
|
|
102
|
-
this.field.ValuePairs = GlobalService.stringToValuePairs(this.field.ValueString);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
createArrayDataElement(key, value, imgUrl = null) {
|
|
106
|
-
let isOptionSelected;
|
|
107
|
-
if (this.field.IsMultiChoiche && this.record[this.field.Name] && this.record[this.field.Name].length > 0) {
|
|
108
|
-
isOptionSelected = !!this.record[this.field.Name].find(v => v == value);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
isOptionSelected = this.record[this.field.Name] === value;
|
|
112
|
-
}
|
|
113
|
-
this.arrayData.push({ Key: key, Value: value, Selected: isOptionSelected, ImgUrl: imgUrl });
|
|
114
|
-
}
|
|
115
|
-
createNumberArrayDataElement(key, value, imgUrl = null) {
|
|
116
|
-
let isOptionSelected;
|
|
117
|
-
if (this.field.IsMultiChoiche && this.record[this.field.Name] && this.record[this.field.Name].length > 0) {
|
|
118
|
-
isOptionSelected = !!this.record[this.field.Name].find(v => v == value);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
isOptionSelected = this.record[this.field.Name] === value;
|
|
122
|
-
}
|
|
123
|
-
this.arrayData.push({ Key: key, Value: value, Selected: isOptionSelected, ImgUrl: imgUrl });
|
|
48
|
+
this.field.ValuePairs = GlobalService.stringToValuePairs(this.field.ValueString);
|
|
49
|
+
Object.keys(this.field.ValuePairs).forEach((k) => {
|
|
50
|
+
this.arrayData.push({ Key: k, Value: this.field.ValuePairs[k], Selected: false });
|
|
51
|
+
});
|
|
124
52
|
}
|
|
125
53
|
}
|
|
126
54
|
ListValueTriggerTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueTriggerTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
127
|
-
ListValueTriggerTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListValueTriggerTemplateComponent, selector: "list-value-trigger-template", inputs: {
|
|
55
|
+
ListValueTriggerTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListValueTriggerTemplateComponent, selector: "list-value-trigger-template", inputs: { condition: "condition" }, outputs: { recordChange: "recordChange", triggerChange: "triggerChange" }, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperatorListValue\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div>\r\n <div class=\"col-md-6 valueCol\">\r\n\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" *ngIf=\"field.PresentationMode == ListPresentationEnum['Combo box']\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"!field.Required\" [arrayValueProperty]=\"'Key'\"\r\n [includeFullObject]=\"false\" [isRequired]=\"true\"\r\n [(ngModelInput)]=\"condition.record[field.Name]\" [isMultiSelect]=\"field.IsMultiChoiche\">\r\n </eqp-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"booleanLogicOperatorType\" [(ngModelInput)]=\"selectedBooleanLogicOperator\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div> \r\n</div>", styles: [".valueCol{padding-right:0}.operatorCol{padding-left:0}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select .mat-form-field-appearance-fill.ng-touched label.mdc-floating-label.mat-mdc-floating-label{background-color:transparent!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.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"] }] });
|
|
128
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueTriggerTemplateComponent, decorators: [{
|
|
129
57
|
type: Component,
|
|
130
|
-
args: [{ selector: 'list-value-trigger-template', template: "<div class=\"row\">\r\n <div class=\"col-md-6 valueCol\">\r\n
|
|
131
|
-
}],
|
|
132
|
-
type: Input
|
|
133
|
-
}], record: [{
|
|
58
|
+
args: [{ selector: 'list-value-trigger-template', template: "<div class=\"row\">\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperatorListValue\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div>\r\n <div class=\"col-md-6 valueCol\">\r\n\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" *ngIf=\"field.PresentationMode == ListPresentationEnum['Combo box']\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"!field.Required\" [arrayValueProperty]=\"'Key'\"\r\n [includeFullObject]=\"false\" [isRequired]=\"true\"\r\n [(ngModelInput)]=\"condition.record[field.Name]\" [isMultiSelect]=\"field.IsMultiChoiche\">\r\n </eqp-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"booleanLogicOperatorType\" [(ngModelInput)]=\"selectedBooleanLogicOperator\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div> \r\n</div>", styles: [".valueCol{padding-right:0}.operatorCol{padding-left:0}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select .mat-form-field-appearance-fill.ng-touched label.mdc-floating-label.mat-mdc-floating-label{background-color:transparent!important}\n"] }]
|
|
59
|
+
}], propDecorators: { condition: [{
|
|
134
60
|
type: Input
|
|
135
|
-
}],
|
|
61
|
+
}], recordChange: [{
|
|
62
|
+
type: Output
|
|
63
|
+
}], triggerChange: [{
|
|
136
64
|
type: Output
|
|
137
65
|
}] } });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS10cmlnZ2VyLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci10ZW1wbGF0ZXMvbGlzdC12YWx1ZS10cmlnZ2VyLXRlbXBsYXRlL2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvdHJpZ2dlci1jcmVhdG9yL3RyaWdnZXItdGVtcGxhdGVzL2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZS9saXN0LXZhbHVlLXRyaWdnZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQU0vRSxNQUFNLE9BQU8saUNBQWlDO0lBa0I5QztRQWZZLGlCQUFZLEdBQTRCLElBQUksWUFBWSxFQUFhLENBQUM7UUFDaEYsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsMkJBQXNCLEdBQUcsc0JB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LEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4RyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQztTQUMzRDtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDOzsrSEFySVUsaUNBQWlDO21IQUFqQyxpQ0FBaUMsNEpDYjlDLCsrQkFnQk07NEZESE8saUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLDZCQUE2QjswRUFLOUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IFN0YXRpc3RpYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9zdGF0aXN0aWMubW9kZWwnO1xyXG5pbXBvcnQgeyBMaXN0UHJlc2VudGF0aW9uRW51bSwgTGlzdFZhbHVlRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12YWx1ZS10cmlnZ2VyLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RWYWx1ZVRyaWdnZXJUZW1wbGF0ZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZmllbGQ6IExpc3RWYWx1ZUZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGxvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgPSBMb2dpY09wZXJhdG9yTGlzdFZhbHVlO1xyXG4gIHNlbGVjdGVkTG9naWNPcGVyYXRvcjogTG9naWNPcGVyYXRvckxpc3RWYWx1ZTtcclxuICBhY3RpdmVDb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlID0gQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlO1xyXG4gIHNlbGVjdGVkQm9vbGVhbkxvZ2ljT3BlcmF0b3I6IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZSA9IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZS5BTkQ7ICBcclxuXHJcbi8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG5GaWVsZHN0eWxlT2JqOiBhbnk7XHJcbkxhYmVsc3R5bGVPYmo6IGFueTtcclxuXHJcbmFycmF5RGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSwgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG5jb25zdHJ1Y3RvcigpIHtcclxufVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcbiAgdGhpcy5jb25maWd1cmVDb250cm9sbGVycygpO1xyXG4gIHRoaXMuaW5pdFN0eWxlcygpO1xyXG4gIHRoaXMuc2V0QXJyYXlEYXRhKCk7XHJcbn1cclxuXHJcbiAgLy9GdW56aW9uZSBwZXIgcGFyc2FyZSBpbCBjYW1wbyBzdHlsZWNzcyBkZWxsJ29nZ2V0dG8gZmllbGQgZWQgYXBwbGljYXJsbyBhbGwnaHRtbFxyXG4gIGluaXRTdHlsZXMoKSB7XHJcbiAgICBpZih0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gdW5kZWZpbmVkKSAgIFxyXG4gICAgdGhpcy5GaWVsZHN0eWxlT2JqPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4qL1xyXG5vblRyaWdnZXJDaGFuZ2UoKSB7XHJcbiAgaWYgKHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yICE9IG51bGwpe1xyXG4gICAgdGhpcy5hY3RpdmVDb25kaXRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmdlbmVyYXRlQ29uZGl0aW9uKFwiYWN0aXZlXCIpKTtcclxuICB9XHJcbiAgaWYgKHRoaXMuYWN0aXZlQ29uZGl0aW9uICYmICB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvciA9PSBudWxsKXtcclxuICAgIHRoaXMuYWN0aXZlQ29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuZ2VuZXJhdGVDb25kaXRpb24oXCJkZWFjdGl2YXRlZFwiKSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogTWV0b2RvIGNoZSBnZW5lcmEgbCdvZ2dldHRvIGRhIGludmlhcmUgYWxsJ2VzdGVybm9cclxuICovXHJcblxyXG5nZW5lcmF0ZUNvbmRpdGlvbihtb2RlKXtcclxuICBsZXQgb3V0cHV0OlN0YXRpc3RpYyA9IG5ldyBTdGF0aXN0aWMoKTtcclxuICBpZiAobW9kZSA9PSBcImFjdGl2ZVwiKXtcclxuICAgIG91dHB1dCA9IHtcclxuICAgICAga2V5OiB0aGlzLmZpZWxkLk5hbWUsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLFxyXG4gICAgICBsb2dpY29wZXJhdG9yOiB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvcixcclxuICAgICAgZmllbGR0eXBlOiB0aGlzLmZpZWxkLkZpZWxkVHlwZVxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgb3V0cHV0ID0ge1xyXG4gICAgICBrZXk6IHRoaXMuZmllbGQuTmFtZSxcclxuICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgIGxvZ2ljb3BlcmF0b3I6IG51bGwsXHJcbiAgICAgIGZpZWxkdHlwZTogbnVsbFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJldHVybiBvdXRwdXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbnRyb2xsZXJzKCkge1xyXG4gICAgdGhpcy52YWxpZGF0b3JzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5nZXQoW3RoaXMuZmllbGQuTmFtZV0pLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSB9IGRhIHVzYXJlIGNvbWUgc29yZ2VudGUgZGF0aSBwZXIgbGEgZXFwLXNlbGVjdC5cclxuICAgKi9cclxuICAgcHJpdmF0ZSBzZXRBcnJheURhdGEoKSB7XHJcbiAgICB0aGlzLnByZXBhcmVWYWx1ZVBhaXJzKCk7XHJcbiAgICBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwpe1xyXG4gICAgICBpZiAoVXRpbGl0eUhlbHBlclNlcnZpY2UuaXNOdW1lcmljKHRoaXMuZmllbGQuVmFsdWVQYWlyc1tPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpWzBdXSkpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpLmZvckVhY2hcclxuICAgICAgICAgIChrID0+IHRoaXMuY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrLCBOdW1iZXIodGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdKSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycykuZm9yRWFjaFxyXG4gICAgICAgICAgKGsgPT4gdGhpcy5jcmVhdGVBcnJheURhdGFFbGVtZW50KGssIHRoaXMuZmllbGQuVmFsdWVQYWlyc1trXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlVmFsdWVQYWlycygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgIGNvbnN0IHRlbXA6IHN0cmluZyA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgICAvLyB0ZW1wIGRvdnJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSBkZWwgdGlwbyBcImNoaWF2ZTEhIHZhbG9yZSAxIDsgY2hpYXZlMiB8IHZhbG9yZSAyIFwiXHJcbiAgICAgIC8vIGRvYmJpYW1vIG90dGVuZXJlIHVuIGRpemlvbmFyaW8gZGkgcXVlaSB2YWxvcmlcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGVtcCk7XHJcblxyXG4gICAgICAvL3RoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwgJiYgdGhpcy5maWVsZC5WYWx1ZVBhaXJzLmxlbmdodCA+IDApIHtcclxuICAgICAgLy8gdmEgYmVuZSBjb3PDrFxyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVN0cmluZyAhPSBudWxsICYmIHRoaXMuZmllbGQuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICAvLyB2YSBwcmVzYSBsYSBzdHJpZ25hIGUgcmltYXBwYXRhIG5lbCBkaWFyaW9cclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGhpcy5maWVsZC5WYWx1ZVN0cmluZyk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU51bWJlckFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdmFsdWVDb2xcIj5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbbmdTdHlsZV09XCJGaWVsZHN0eWxlT2JqXCIgW2FycmF5RGF0YV09XCJhcnJheURhdGFcIlxyXG4gICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInVmFsdWUnXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ0tleSdcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQuRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbaXNSZXF1aXJlZF09XCJmYWxzZVwiIFtpc0Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInJlY29yZFtmaWVsZC5OYW1lXVwiIFtpc011bHRpU2VsZWN0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvblRyaWdnZXJDaGFuZ2UoKVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG9wZXJhdG9yQ29sXCI+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImxvZ2ljT3BlcmF0b3JMaXN0VmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTG9naWNPcGVyYXRvclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHJpZ2dlckNoYW5nZSgpXCI+PC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgb3BlcmF0b3JDb2xcIj5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiYm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEJvb2xlYW5Mb2dpY09wZXJhdG9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmlnZ2VyQ2hhbmdlKClcIj48L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj4gICAgIFxyXG48L2Rpdj4iXX0=
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS10cmlnZ2VyLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci10ZW1wbGF0ZXMvbGlzdC12YWx1ZS10cmlnZ2VyLXRlbXBsYXRlL2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvdHJpZ2dlci1jcmVhdG9yL3RyaWdnZXItdGVtcGxhdGVzL2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZS9saXN0LXZhbHVlLXRyaWdnZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUFvQixNQUFNLHFDQUFxQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBa0IsTUFBTSxtREFBbUQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUFPdkUsTUFBTSxPQUFPLGlDQUFpQztJQUw5QztRQVVjLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEUsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyRSwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUNoRCxtQ0FBOEIsR0FBMkIsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUt2Ryw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQUNwRCxpQ0FBNEIsR0FBNkIsd0JBQXdCLENBQUMsR0FBRyxDQUFDO1FBRXRGLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBRTVDLGNBQVMsR0FBdUUsRUFBRSxDQUFDO0tBMkN0RjtJQXpDRyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQXVCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLGtGQUFrRjtRQUNwRixJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxTQUFTO1lBQzFFLElBQUksQ0FBQyxhQUFhLEdBQUUsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEYsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUztZQUMxRSxJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7TUFFRTtJQUVGLGVBQWU7UUFFYixJQUFJLE1BQU0sR0FBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRztZQUNQLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzdDLGFBQWEsRUFBRSxJQUFJLENBQUMsOEJBQThCO1lBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDL0Isb0JBQW9CLEVBQUUsSUFBSSxDQUFDLDRCQUE0QjtTQUN4RCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsrSEEzRFEsaUNBQWlDO21IQUFqQyxpQ0FBaUMsa0xDYjlDLHFnQ0FnQk07NEZESE8saUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLDZCQUE2Qjs4QkFPNUIsU0FBUztzQkFBakIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlLCBDb25kaXRpb24sIFRyaWdnZXJDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvdHJpZ2dlci5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IExpc3RQcmVzZW50YXRpb25FbnVtLCBMaXN0VmFsdWVGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbGlzdFZhbHVlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpY09wZXJhdG9yTGlzdFZhbHVlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtdmFsdWUtdHJpZ2dlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12YWx1ZS10cmlnZ2VyLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RWYWx1ZVRyaWdnZXJUZW1wbGF0ZUNvbXBvbmVudCB7XHJcblxyXG4gICAgLy92YXJpYWJpbGkgZXN0ZXJuZSBwZXIgbCdpbnB1dCBkZWkgY2FtcGlcclxuICAgIEBJbnB1dCgpIGNvbmRpdGlvbjogVHJpZ2dlckNvbmRpdGlvbjtcclxuXHJcbiAgICBAT3V0cHV0KCkgcmVjb3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gICAgQE91dHB1dCgpIHRyaWdnZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgbG9naWNPcGVyYXRvckxpc3RWYWx1ZSA9IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWU7XHJcbiAgICBzZWxlY3RlZExvZ2ljT3BlcmF0b3JMaXN0VmFsdWU6IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgPSBMb2dpY09wZXJhdG9yTGlzdFZhbHVlWydDT05USUVORSBBTE1FTk8gVU5PJ107XHJcbiAgICBcclxuICAgIEZpZWxkc3R5bGVPYmo6IGFueTtcclxuICAgIExhYmVsc3R5bGVPYmo6IGFueTtcclxuXHJcbiAgICBib29sZWFuTG9naWNPcGVyYXRvclR5cGUgPSBCb29sZWFuTG9naWNPcGVyYXRvclR5cGU7XHJcbiAgICBzZWxlY3RlZEJvb2xlYW5Mb2dpY09wZXJhdG9yOiBCb29sZWFuTG9naWNPcGVyYXRvclR5cGUgPSBCb29sZWFuTG9naWNPcGVyYXRvclR5cGUuQU5EOyAgICBcclxuICAgIGZpZWxkOiBMaXN0VmFsdWVGaWVsZDtcclxuICAgIExpc3RQcmVzZW50YXRpb25FbnVtID0gTGlzdFByZXNlbnRhdGlvbkVudW07XHJcblxyXG4gICAgYXJyYXlEYXRhOiB7IEtleTogc3RyaW5nLCBWYWx1ZTogYW55LCBTZWxlY3RlZD86IGJvb2xlYW4sIEltZ1VybD86IHN0cmluZyB9W10gPSBbXTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5maWVsZCA9IHRoaXMuY29uZGl0aW9uLkZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkO1xyXG4gICAgICB0aGlzLmluaXRTdHlsZXMoKTtcclxuICAgICAgdGhpcy5zZXRBcnJheURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0U3R5bGVzKCkge1xyXG4gICAgICAgIC8vRnVuemlvbmUgcGVyIHBhcnNhcmUgaWwgY2FtcG8gc3R5bGVjc3MgZGVsbCdvZ2dldHRvIGZpZWxkIGVkIGFwcGxpY2FybG8gYWxsJ2h0bWxcclxuICAgICAgaWYodGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTICE9IHVuZGVmaW5lZCkgICBcclxuICAgICAgICB0aGlzLkZpZWxkc3R5bGVPYmo9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTKTtcclxuICAgICAgaWYodGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IHVuZGVmaW5lZCkgICBcclxuICAgICAgICB0aGlzLkxhYmVsc3R5bGVPYmogPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuTGFiZWxzdHlsZUNTUyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4gICAgKi9cclxuICBcclxuICAgIG9uVHJpZ2dlckNoYW5nZSgpIHtcclxuXHJcbiAgICAgIGxldCBvdXRwdXQ6Q29uZGl0aW9uID0gbmV3IENvbmRpdGlvbigpO1xyXG4gICAgICBvdXRwdXQgPSB7XHJcbiAgICAgICAga2V5OiB0aGlzLmZpZWxkLk5hbWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29uZGl0aW9uLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLFxyXG4gICAgICAgIGxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yTGlzdFZhbHVlLFxyXG4gICAgICAgIGZpZWxkVHlwZTogdGhpcy5maWVsZC5GaWVsZFR5cGUsXHJcbiAgICAgICAgYm9vbGVhbmxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRCb29sZWFuTG9naWNPcGVyYXRvclxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlLmVtaXQob3V0cHV0KTtcclxuICAgIH0gICAgXHJcblxyXG4gICAgcHJpdmF0ZSBzZXRBcnJheURhdGEoKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuVmFsdWVQYWlycyA9IEdsb2JhbFNlcnZpY2Uuc3RyaW5nVG9WYWx1ZVBhaXJzKHRoaXMuZmllbGQuVmFsdWVTdHJpbmcpO1xyXG5cclxuICAgICAgT2JqZWN0LmtleXModGhpcy5maWVsZC5WYWx1ZVBhaXJzKS5mb3JFYWNoKChrKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcnJheURhdGEucHVzaCh7S2V5OiBrLCBWYWx1ZTogdGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdLCBTZWxlY3RlZDogZmFsc2V9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiBcclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgb3BlcmF0b3JDb2xcIj5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwibG9naWNPcGVyYXRvckxpc3RWYWx1ZVwiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZExvZ2ljT3BlcmF0b3JMaXN0VmFsdWVcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uVHJpZ2dlckNoYW5nZSgpXCI+PC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdmFsdWVDb2xcIj5cclxuXHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiAqbmdJZj1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ0NvbWJvIGJveCddXCIgW2FycmF5RGF0YV09XCJhcnJheURhdGFcIlxyXG4gICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInVmFsdWUnXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiIWZpZWxkLlJlcXVpcmVkXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInS2V5J1wiXHJcbiAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtpc1JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiY29uZGl0aW9uLnJlY29yZFtmaWVsZC5OYW1lXVwiIFtpc011bHRpU2VsZWN0XT1cImZpZWxkLklzTXVsdGlDaG9pY2hlXCI+XHJcbiAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBvcGVyYXRvckNvbFwiPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJib29sZWFuTG9naWNPcGVyYXRvclR5cGVcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRCb29sZWFuTG9naWNPcGVyYXRvclwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25UcmlnZ2VyQ2hhbmdlKClcIj48L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj4gICAgICAgICBcclxuPC9kaXY+Il19
|
|
@@ -30,8 +30,8 @@ export var LogicOperatorBoolean;
|
|
|
30
30
|
})(LogicOperatorBoolean || (LogicOperatorBoolean = {}));
|
|
31
31
|
export var LogicOperatorListValue;
|
|
32
32
|
(function (LogicOperatorListValue) {
|
|
33
|
-
LogicOperatorListValue[LogicOperatorListValue["
|
|
34
|
-
LogicOperatorListValue[LogicOperatorListValue["
|
|
33
|
+
LogicOperatorListValue[LogicOperatorListValue["CONTIENE ALMENO UNO"] = 11] = "CONTIENE ALMENO UNO";
|
|
34
|
+
LogicOperatorListValue[LogicOperatorListValue["CONTIENE TUTTI"] = 12] = "CONTIENE TUTTI";
|
|
35
35
|
})(LogicOperatorListValue || (LogicOperatorListValue = {}));
|
|
36
36
|
export var LogicOperatorImageSelector;
|
|
37
37
|
(function (LogicOperatorImageSelector) {
|
|
@@ -50,5 +50,7 @@ export var LogicOperator;
|
|
|
50
50
|
LogicOperator[LogicOperator["<="] = 8] = "<=";
|
|
51
51
|
LogicOperator[LogicOperator["Si"] = 9] = "Si";
|
|
52
52
|
LogicOperator[LogicOperator["No"] = 10] = "No";
|
|
53
|
+
LogicOperator[LogicOperator["CONTIENE ALMENO UNO"] = 11] = "CONTIENE ALMENO UNO";
|
|
54
|
+
LogicOperator[LogicOperator["CONTIENE TUTTI"] = 12] = "CONTIENE TUTTI";
|
|
53
55
|
})(LogicOperator || (LogicOperator = {}));
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWNPcGVyYXRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL21vZGVscy9sb2dpY09wZXJhdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLG9CQU9YO0FBUEQsV0FBWSxvQkFBb0I7SUFDNUIseURBQU8sQ0FBQTtJQUNQLDJEQUFRLENBQUE7SUFDUix5REFBTyxDQUFBO0lBQ1AsMkRBQVEsQ0FBQTtJQUNSLHlEQUFPLENBQUE7SUFDUCwyREFBUSxDQUFBO0FBQ1osQ0FBQyxFQVBXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFPL0I7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFPWDtBQVBELFdBQVksaUJBQWlCO0lBQ3pCLG1EQUFPLENBQUE7SUFDUCxxREFBUSxDQUFBO0lBQ1IsbURBQU8sQ0FBQTtJQUNQLHFEQUFRLENBQUE7SUFDUixtREFBTyxDQUFBO0lBQ1AscURBQVEsQ0FBQTtBQUNaLENBQUMsRUFQVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBTzVCO0FBRUQsTUFBTSxDQUFOLElBQVksaUJBS1g7QUFMRCxXQUFZLGlCQUFpQjtJQUN6QixtREFBTyxDQUFBO0lBQ1AscURBQVEsQ0FBQTtJQUNSLHlEQUFVLENBQUE7SUFDVixpRUFBYyxDQUFBO0FBQ2xCLENBQUMsRUFMVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSzVCO0FBRUQsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM1QiwyREFBUSxDQUFBO0lBQ1IsNERBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBR1g7QUFIRCxXQUFZLHNCQUFzQjtJQUM5QixrR0FBMEIsQ0FBQTtJQUMxQix3RkFBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQUdqQztBQUVELE1BQU0sQ0FBTixJQUFZLDBCQUdYO0FBSEQsV0FBWSwwQkFBMEI7SUFDbEMscUVBQU8sQ0FBQTtJQUNQLHVFQUFRLENBQUE7QUFDWixDQUFDLEVBSFcsMEJBQTBCLEtBQTFCLDBCQUEwQixRQUdyQztBQUVELE1BQU0sQ0FBTixJQUFZLGFBYVg7QUFiRCxXQUFZLGFBQWE7SUFDckIsMkNBQU8sQ0FBQTtJQUNQLDZDQUFRLENBQUE7SUFDUixpREFBVSxDQUFBO0lBQ1YseURBQWMsQ0FBQTtJQUNkLDJDQUFPLENBQUE7SUFDUCw2Q0FBUSxDQUFBO0lBQ1IsMkNBQU8sQ0FBQTtJQUNQLDZDQUFRLENBQUE7SUFDUiw2Q0FBUSxDQUFBO0lBQ1IsOENBQVMsQ0FBQTtJQUNULGdGQUEwQixDQUFBO0lBQzFCLHNFQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFiVyxhQUFhLEtBQWIsYUFBYSxRQWF4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExvZ2ljT3BlcmF0b3JOdW1lcmljIHtcclxuICAgIFwiPVwiID0gMSxcclxuICAgIFwiIT1cIiA9IDIsXHJcbiAgICBcIj5cIiA9IDUsXHJcbiAgICBcIj49XCIgPSA2LFxyXG4gICAgXCI8XCIgPSA3LFxyXG4gICAgXCI8PVwiID0gOCxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTG9naWNPcGVyYXRvckRhdGUge1xyXG4gICAgXCI9XCIgPSAxLFxyXG4gICAgXCIhPVwiID0gMixcclxuICAgIFwiPlwiID0gNSxcclxuICAgIFwiPj1cIiA9IDYsXHJcbiAgICBcIjxcIiA9IDcsXHJcbiAgICBcIjw9XCIgPSA4LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMb2dpY09wZXJhdG9yVGV4dCB7XHJcbiAgICBcIj1cIiA9IDEsXHJcbiAgICBcIiE9XCIgPSAyLFxyXG4gICAgXCJMSUtFXCIgPSAzLFxyXG4gICAgXCJOT1QgTElLRVwiID0gNCxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTG9naWNPcGVyYXRvckJvb2xlYW4ge1xyXG4gICAgXCJTaVwiID0gOSxcclxuICAgIFwiTm9cIiA9IDEwXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUge1xyXG4gICAgXCJDT05USUVORSBBTE1FTk8gVU5PXCIgPSAxMSxcclxuICAgIFwiQ09OVElFTkUgVFVUVElcIiA9IDEyLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMb2dpY09wZXJhdG9ySW1hZ2VTZWxlY3RvciB7XHJcbiAgICBcIj1cIiA9IDEsXHJcbiAgICBcIiE9XCIgPSAyXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExvZ2ljT3BlcmF0b3Ige1xyXG4gICAgXCI9XCIgPSAxLFxyXG4gICAgXCIhPVwiID0gMixcclxuICAgIFwiTElLRVwiID0gMyxcclxuICAgIFwiTk9UIExJS0VcIiA9IDQsICAgIFxyXG4gICAgXCI+XCIgPSA1LFxyXG4gICAgXCI+PVwiID0gNixcclxuICAgIFwiPFwiID0gNyxcclxuICAgIFwiPD1cIiA9IDgsXHJcbiAgICBcIlNpXCIgPSA5LFxyXG4gICAgXCJOb1wiID0gMTAsXHJcbiAgICBcIkNPTlRJRU5FIEFMTUVOTyBVTk9cIiA9IDExLFxyXG4gICAgXCJDT05USUVORSBUVVRUSVwiID0gMTIsICAgIFxyXG59Il19
|
|
@@ -1933,8 +1933,8 @@ var LogicOperatorBoolean;
|
|
|
1933
1933
|
})(LogicOperatorBoolean || (LogicOperatorBoolean = {}));
|
|
1934
1934
|
var LogicOperatorListValue;
|
|
1935
1935
|
(function (LogicOperatorListValue) {
|
|
1936
|
-
LogicOperatorListValue[LogicOperatorListValue["
|
|
1937
|
-
LogicOperatorListValue[LogicOperatorListValue["
|
|
1936
|
+
LogicOperatorListValue[LogicOperatorListValue["CONTIENE ALMENO UNO"] = 11] = "CONTIENE ALMENO UNO";
|
|
1937
|
+
LogicOperatorListValue[LogicOperatorListValue["CONTIENE TUTTI"] = 12] = "CONTIENE TUTTI";
|
|
1938
1938
|
})(LogicOperatorListValue || (LogicOperatorListValue = {}));
|
|
1939
1939
|
var LogicOperatorImageSelector;
|
|
1940
1940
|
(function (LogicOperatorImageSelector) {
|
|
@@ -1953,6 +1953,8 @@ var LogicOperator;
|
|
|
1953
1953
|
LogicOperator[LogicOperator["<="] = 8] = "<=";
|
|
1954
1954
|
LogicOperator[LogicOperator["Si"] = 9] = "Si";
|
|
1955
1955
|
LogicOperator[LogicOperator["No"] = 10] = "No";
|
|
1956
|
+
LogicOperator[LogicOperator["CONTIENE ALMENO UNO"] = 11] = "CONTIENE ALMENO UNO";
|
|
1957
|
+
LogicOperator[LogicOperator["CONTIENE TUTTI"] = 12] = "CONTIENE TUTTI";
|
|
1956
1958
|
})(LogicOperator || (LogicOperator = {}));
|
|
1957
1959
|
|
|
1958
1960
|
class Trigger {
|
|
@@ -5461,24 +5463,36 @@ class AddFormRecordComponent {
|
|
|
5461
5463
|
this.logTrigger(trigger, condition, record);
|
|
5462
5464
|
return;
|
|
5463
5465
|
}
|
|
5466
|
+
if (logicOperator == LogicOperator['CONTIENE ALMENO UNO'] && !conditionValue.some(c => recordValue.includes(c))) {
|
|
5467
|
+
fireTrigger = false;
|
|
5468
|
+
this.logTrigger(trigger, condition, record);
|
|
5469
|
+
return;
|
|
5470
|
+
}
|
|
5471
|
+
if (logicOperator == LogicOperator['CONTIENE TUTTI'] && !conditionValue.every(c => recordValue.includes(c))) {
|
|
5472
|
+
fireTrigger = false;
|
|
5473
|
+
this.logTrigger(trigger, condition, record);
|
|
5474
|
+
return;
|
|
5475
|
+
}
|
|
5464
5476
|
});
|
|
5465
5477
|
GlobalService.debugLog("checkTriggers - fireTrigger? ", fireTrigger);
|
|
5466
5478
|
if (fireTrigger) {
|
|
5467
5479
|
// Il trigger va sparato. Valuto le funzioni interne
|
|
5468
5480
|
var formulas = JSON.parse(JSON.stringify(trigger.formulas));
|
|
5469
5481
|
GlobalService.debugLog("checkTriggers - evaluate formulas ", formulas);
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
+
if (formulas != null && formulas.length > 0) {
|
|
5483
|
+
Object.keys(formulas).forEach((key) => {
|
|
5484
|
+
var formula = formulas[key].value;
|
|
5485
|
+
GlobalService.debugLog("checkTriggers - formulas[key] ", formulas[key]);
|
|
5486
|
+
var temp;
|
|
5487
|
+
if (formulas[key].type == TriggerPropertyTypeEnum.DMMODULE) {
|
|
5488
|
+
temp = formula;
|
|
5489
|
+
}
|
|
5490
|
+
else {
|
|
5491
|
+
temp = UtilityHelperService.EvaluateFieldFormula(formula, record, null);
|
|
5492
|
+
}
|
|
5493
|
+
formulas[key] = temp;
|
|
5494
|
+
});
|
|
5495
|
+
}
|
|
5482
5496
|
// Sparo il trigger all'esterno
|
|
5483
5497
|
var triggerToFire = new FireTrigger();
|
|
5484
5498
|
triggerToFire.form = this.form; // Il form che ha provocato il trigger
|
|
@@ -5486,7 +5500,7 @@ class AddFormRecordComponent {
|
|
|
5486
5500
|
triggerToFire.trigger = trigger; // Il trigger
|
|
5487
5501
|
triggerToFire.formulas = formulas; // Le formule inviate in input al modulo dinamico, valutate nel contesto del trigger e del record
|
|
5488
5502
|
triggerToFire.userPatient = this.userID; // UserID
|
|
5489
|
-
|
|
5503
|
+
console.log("checkTriggers - Trigger Fired ", triggerToFire.trigger.description, triggerToFire);
|
|
5490
5504
|
this.fireTrigger.emit(triggerToFire);
|
|
5491
5505
|
}
|
|
5492
5506
|
});
|
|
@@ -10870,6 +10884,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
10870
10884
|
type: Output
|
|
10871
10885
|
}] } });
|
|
10872
10886
|
|
|
10887
|
+
class ListValueTriggerTemplateComponent {
|
|
10888
|
+
constructor() {
|
|
10889
|
+
this.recordChange = new EventEmitter();
|
|
10890
|
+
this.triggerChange = new EventEmitter();
|
|
10891
|
+
this.logicOperatorListValue = LogicOperatorListValue;
|
|
10892
|
+
this.selectedLogicOperatorListValue = LogicOperatorListValue['CONTIENE ALMENO UNO'];
|
|
10893
|
+
this.booleanLogicOperatorType = BooleanLogicOperatorType;
|
|
10894
|
+
this.selectedBooleanLogicOperator = BooleanLogicOperatorType.AND;
|
|
10895
|
+
this.ListPresentationEnum = ListPresentationEnum;
|
|
10896
|
+
this.arrayData = [];
|
|
10897
|
+
}
|
|
10898
|
+
ngOnInit() {
|
|
10899
|
+
this.field = this.condition.Field;
|
|
10900
|
+
this.initStyles();
|
|
10901
|
+
this.setArrayData();
|
|
10902
|
+
}
|
|
10903
|
+
initStyles() {
|
|
10904
|
+
//Funzione per parsare il campo stylecss dell'oggetto field ed applicarlo all'html
|
|
10905
|
+
if (this.field.FieldstyleCSS != null || this.field.FieldstyleCSS != undefined)
|
|
10906
|
+
this.FieldstyleObj = UtilityHelperService.initStyles(this.field.FieldstyleCSS);
|
|
10907
|
+
if (this.field.LabelstyleCSS != null || this.field.LabelstyleCSS != undefined)
|
|
10908
|
+
this.LabelstyleObj = UtilityHelperService.initStyles(this.field.LabelstyleCSS);
|
|
10909
|
+
}
|
|
10910
|
+
/**
|
|
10911
|
+
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
10912
|
+
*/
|
|
10913
|
+
onTriggerChange() {
|
|
10914
|
+
let output = new Condition();
|
|
10915
|
+
output = {
|
|
10916
|
+
key: this.field.Name,
|
|
10917
|
+
value: this.condition.record[this.field.Name],
|
|
10918
|
+
logicoperator: this.selectedLogicOperatorListValue,
|
|
10919
|
+
fieldType: this.field.FieldType,
|
|
10920
|
+
booleanlogicoperator: this.selectedBooleanLogicOperator
|
|
10921
|
+
};
|
|
10922
|
+
this.triggerChange.emit(output);
|
|
10923
|
+
}
|
|
10924
|
+
setArrayData() {
|
|
10925
|
+
this.field.ValuePairs = GlobalService.stringToValuePairs(this.field.ValueString);
|
|
10926
|
+
Object.keys(this.field.ValuePairs).forEach((k) => {
|
|
10927
|
+
this.arrayData.push({ Key: k, Value: this.field.ValuePairs[k], Selected: false });
|
|
10928
|
+
});
|
|
10929
|
+
}
|
|
10930
|
+
}
|
|
10931
|
+
ListValueTriggerTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueTriggerTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10932
|
+
ListValueTriggerTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListValueTriggerTemplateComponent, selector: "list-value-trigger-template", inputs: { condition: "condition" }, outputs: { recordChange: "recordChange", triggerChange: "triggerChange" }, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperatorListValue\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div>\r\n <div class=\"col-md-6 valueCol\">\r\n\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" *ngIf=\"field.PresentationMode == ListPresentationEnum['Combo box']\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"!field.Required\" [arrayValueProperty]=\"'Key'\"\r\n [includeFullObject]=\"false\" [isRequired]=\"true\"\r\n [(ngModelInput)]=\"condition.record[field.Name]\" [isMultiSelect]=\"field.IsMultiChoiche\">\r\n </eqp-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"booleanLogicOperatorType\" [(ngModelInput)]=\"selectedBooleanLogicOperator\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div> \r\n</div>", styles: [".valueCol{padding-right:0}.operatorCol{padding-left:0}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select .mat-form-field-appearance-fill.ng-touched label.mdc-floating-label.mat-mdc-floating-label{background-color:transparent!important}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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"] }] });
|
|
10933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueTriggerTemplateComponent, decorators: [{
|
|
10934
|
+
type: Component,
|
|
10935
|
+
args: [{ selector: 'list-value-trigger-template', template: "<div class=\"row\">\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperatorListValue\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div>\r\n <div class=\"col-md-6 valueCol\">\r\n\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" *ngIf=\"field.PresentationMode == ListPresentationEnum['Combo box']\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"!field.Required\" [arrayValueProperty]=\"'Key'\"\r\n [includeFullObject]=\"false\" [isRequired]=\"true\"\r\n [(ngModelInput)]=\"condition.record[field.Name]\" [isMultiSelect]=\"field.IsMultiChoiche\">\r\n </eqp-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"booleanLogicOperatorType\" [(ngModelInput)]=\"selectedBooleanLogicOperator\" (ngModelInputChange)=\"onTriggerChange()\"></eqp-select>\r\n </div> \r\n</div>", styles: [".valueCol{padding-right:0}.operatorCol{padding-left:0}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select .mat-form-field-appearance-fill.ng-touched label.mdc-floating-label.mat-mdc-floating-label{background-color:transparent!important}\n"] }]
|
|
10936
|
+
}], propDecorators: { condition: [{
|
|
10937
|
+
type: Input
|
|
10938
|
+
}], recordChange: [{
|
|
10939
|
+
type: Output
|
|
10940
|
+
}], triggerChange: [{
|
|
10941
|
+
type: Output
|
|
10942
|
+
}] } });
|
|
10943
|
+
|
|
10873
10944
|
class TextareaTriggerTemplateComponent {
|
|
10874
10945
|
constructor(voiceservice) {
|
|
10875
10946
|
this.voiceservice = voiceservice;
|
|
@@ -11007,10 +11078,10 @@ class DynamicModuleTriggerFixComponent {
|
|
|
11007
11078
|
}
|
|
11008
11079
|
}
|
|
11009
11080
|
DynamicModuleTriggerFixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleTriggerFixComponent, deps: [{ token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
11010
|
-
DynamicModuleTriggerFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleTriggerFixComponent, selector: "dynamic-module-trigger-fix", inputs: { condition: "condition", form: "form" }, outputs: { triggerChange: "triggerChange" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "\r\n<text-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</text-trigger-template>\r\n\r\n<numeric-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</numeric-trigger-template>\r\n\r\n<textarea-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</textarea-trigger-template>\r\n\r\n<boolean-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Booleano']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</boolean-trigger-template>\r\n\r\n<date-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</date-trigger-template>", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TextTriggerTemplateComponent, selector: "text-trigger-template", inputs: ["condition"], outputs: ["recordChange", "triggerChange"] }, { kind: "component", type: NumericTriggerTemplateComponent, selector: "numeric-trigger-template", inputs: ["condition"], outputs: ["triggerChange"] }, { kind: "component", type: BooleanTriggerTemplateComponent, selector: "boolean-trigger-template", inputs: ["condition"], outputs: ["triggerChange"] }, { kind: "component", type: DateTriggerTemplateComponent, selector: "date-trigger-template", inputs: ["condition"], outputs: ["triggerChange"] }, { kind: "component", type: TextareaTriggerTemplateComponent, selector: "textarea-trigger-template", inputs: ["condition"], outputs: ["recordChange", "triggerChange"] }] });
|
|
11081
|
+
DynamicModuleTriggerFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleTriggerFixComponent, selector: "dynamic-module-trigger-fix", inputs: { condition: "condition", form: "form" }, outputs: { triggerChange: "triggerChange" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "\r\n<text-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</text-trigger-template>\r\n\r\n<numeric-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</numeric-trigger-template>\r\n\r\n<textarea-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</textarea-trigger-template>\r\n\r\n<boolean-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Booleano']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</boolean-trigger-template>\r\n\r\n<date-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</date-trigger-template>\r\n\r\n<list-value-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</list-value-trigger-template>", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TextTriggerTemplateComponent, selector: "text-trigger-template", inputs: ["condition"], outputs: ["recordChange", "triggerChange"] }, { kind: "component", type: NumericTriggerTemplateComponent, selector: "numeric-trigger-template", inputs: ["condition"], outputs: ["triggerChange"] }, { kind: "component", type: BooleanTriggerTemplateComponent, selector: "boolean-trigger-template", inputs: ["condition"], outputs: ["triggerChange"] }, { kind: "component", type: DateTriggerTemplateComponent, selector: "date-trigger-template", inputs: ["condition"], outputs: ["triggerChange"] }, { kind: "component", type: ListValueTriggerTemplateComponent, selector: "list-value-trigger-template", inputs: ["condition"], outputs: ["recordChange", "triggerChange"] }, { kind: "component", type: TextareaTriggerTemplateComponent, selector: "textarea-trigger-template", inputs: ["condition"], outputs: ["recordChange", "triggerChange"] }] });
|
|
11011
11082
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleTriggerFixComponent, decorators: [{
|
|
11012
11083
|
type: Component,
|
|
11013
|
-
args: [{ selector: 'dynamic-module-trigger-fix', template: "\r\n<text-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</text-trigger-template>\r\n\r\n<numeric-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</numeric-trigger-template>\r\n\r\n<textarea-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</textarea-trigger-template>\r\n\r\n<boolean-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Booleano']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</boolean-trigger-template>\r\n\r\n<date-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</date-trigger-template>" }]
|
|
11084
|
+
args: [{ selector: 'dynamic-module-trigger-fix', template: "\r\n<text-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</text-trigger-template>\r\n\r\n<numeric-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</numeric-trigger-template>\r\n\r\n<textarea-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</textarea-trigger-template>\r\n\r\n<boolean-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Booleano']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</boolean-trigger-template>\r\n\r\n<date-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</date-trigger-template>\r\n\r\n<list-value-trigger-template #fieldTemplate *ngIf=\"condition.Field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [condition]=\"condition\" (triggerChange)=\"onTriggerChange($event)\">\r\n</list-value-trigger-template>" }]
|
|
11014
11085
|
}], ctorParameters: function () { return [{ type: i1$3.MatDialog }]; }, propDecorators: { condition: [{
|
|
11015
11086
|
type: Input
|
|
11016
11087
|
}], form: [{
|
|
@@ -12465,134 +12536,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
12465
12536
|
args: ['listInnerFormRecords']
|
|
12466
12537
|
}] } });
|
|
12467
12538
|
|
|
12468
|
-
class ListValueTriggerTemplateComponent {
|
|
12469
|
-
constructor() {
|
|
12470
|
-
this.filterChange = new EventEmitter();
|
|
12471
|
-
this.validatorsArray = [];
|
|
12472
|
-
this.logicOperatorListValue = LogicOperatorListValue;
|
|
12473
|
-
this.activeCondition = false;
|
|
12474
|
-
this.booleanLogicOperatorType = BooleanLogicOperatorType;
|
|
12475
|
-
this.selectedBooleanLogicOperator = BooleanLogicOperatorType.AND;
|
|
12476
|
-
this.arrayData = [];
|
|
12477
|
-
}
|
|
12478
|
-
ngOnInit() {
|
|
12479
|
-
this.configureControllers();
|
|
12480
|
-
this.initStyles();
|
|
12481
|
-
this.setArrayData();
|
|
12482
|
-
}
|
|
12483
|
-
//Funzione per parsare il campo stylecss dell'oggetto field ed applicarlo all'html
|
|
12484
|
-
initStyles() {
|
|
12485
|
-
if (this.field.FieldstyleCSS != null || this.field.FieldstyleCSS != undefined)
|
|
12486
|
-
this.FieldstyleObj = UtilityHelperService.initStyles(this.field.FieldstyleCSS);
|
|
12487
|
-
}
|
|
12488
|
-
/**
|
|
12489
|
-
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
12490
|
-
*/
|
|
12491
|
-
onTriggerChange() {
|
|
12492
|
-
if (this.selectedLogicOperator != null) {
|
|
12493
|
-
this.activeCondition = true;
|
|
12494
|
-
this.filterChange.emit(this.generateCondition("active"));
|
|
12495
|
-
}
|
|
12496
|
-
if (this.activeCondition && this.selectedLogicOperator == null) {
|
|
12497
|
-
this.activeCondition = false;
|
|
12498
|
-
this.filterChange.emit(this.generateCondition("deactivated"));
|
|
12499
|
-
}
|
|
12500
|
-
}
|
|
12501
|
-
/**
|
|
12502
|
-
* Metodo che genera l'oggetto da inviare all'esterno
|
|
12503
|
-
*/
|
|
12504
|
-
generateCondition(mode) {
|
|
12505
|
-
let output = new Statistic();
|
|
12506
|
-
if (mode == "active") {
|
|
12507
|
-
output = {
|
|
12508
|
-
key: this.field.Name,
|
|
12509
|
-
value: this.record[this.field.Name],
|
|
12510
|
-
logicoperator: this.selectedLogicOperator,
|
|
12511
|
-
fieldtype: this.field.FieldType
|
|
12512
|
-
};
|
|
12513
|
-
}
|
|
12514
|
-
else {
|
|
12515
|
-
output = {
|
|
12516
|
-
key: this.field.Name,
|
|
12517
|
-
value: null,
|
|
12518
|
-
logicoperator: null,
|
|
12519
|
-
fieldtype: null
|
|
12520
|
-
};
|
|
12521
|
-
}
|
|
12522
|
-
return output;
|
|
12523
|
-
}
|
|
12524
|
-
/**
|
|
12525
|
-
* Metodo di aggiunta dei validator dell'input
|
|
12526
|
-
*/
|
|
12527
|
-
configureControllers() {
|
|
12528
|
-
this.validatorsArray = [];
|
|
12529
|
-
this.field.FormFormGroup.get([this.field.Name]).setValidators(this.validatorsArray);
|
|
12530
|
-
}
|
|
12531
|
-
/**
|
|
12532
|
-
* Metodo per creare un array di oggetti del tipo { Key: string, Value: any } da usare come sorgente dati per la eqp-select.
|
|
12533
|
-
*/
|
|
12534
|
-
setArrayData() {
|
|
12535
|
-
this.prepareValuePairs();
|
|
12536
|
-
if (this.field.ValuePairs != null) {
|
|
12537
|
-
if (UtilityHelperService.isNumeric(this.field.ValuePairs[Object.keys(this.field.ValuePairs)[0]])) {
|
|
12538
|
-
Object.keys(this.field.ValuePairs).forEach(k => this.createNumberArrayDataElement(k, Number(this.field.ValuePairs[k])));
|
|
12539
|
-
}
|
|
12540
|
-
else {
|
|
12541
|
-
Object.keys(this.field.ValuePairs).forEach(k => this.createArrayDataElement(k, this.field.ValuePairs[k]));
|
|
12542
|
-
}
|
|
12543
|
-
}
|
|
12544
|
-
}
|
|
12545
|
-
prepareValuePairs() {
|
|
12546
|
-
if (this.field.Formula) {
|
|
12547
|
-
this.field.ValuePairs = {};
|
|
12548
|
-
const temp = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
12549
|
-
// temp dovrebbe essere una stringa del tipo "chiave1! valore 1 ; chiave2 | valore 2 "
|
|
12550
|
-
// dobbiamo ottenere un dizionario di quei valori
|
|
12551
|
-
this.field.ValuePairs = GlobalService.stringToValuePairs(temp);
|
|
12552
|
-
//this.record[this.field.Name] = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
12553
|
-
}
|
|
12554
|
-
else if (this.field.ValuePairs != null && this.field.ValuePairs.lenght > 0) {
|
|
12555
|
-
// va bene così
|
|
12556
|
-
}
|
|
12557
|
-
else if (this.field.ValueString != null && this.field.ValueString != "") {
|
|
12558
|
-
// va presa la strigna e rimappata nel diario
|
|
12559
|
-
this.field.ValuePairs = GlobalService.stringToValuePairs(this.field.ValueString);
|
|
12560
|
-
}
|
|
12561
|
-
}
|
|
12562
|
-
createArrayDataElement(key, value, imgUrl = null) {
|
|
12563
|
-
let isOptionSelected;
|
|
12564
|
-
if (this.field.IsMultiChoiche && this.record[this.field.Name] && this.record[this.field.Name].length > 0) {
|
|
12565
|
-
isOptionSelected = !!this.record[this.field.Name].find(v => v == value);
|
|
12566
|
-
}
|
|
12567
|
-
else {
|
|
12568
|
-
isOptionSelected = this.record[this.field.Name] === value;
|
|
12569
|
-
}
|
|
12570
|
-
this.arrayData.push({ Key: key, Value: value, Selected: isOptionSelected, ImgUrl: imgUrl });
|
|
12571
|
-
}
|
|
12572
|
-
createNumberArrayDataElement(key, value, imgUrl = null) {
|
|
12573
|
-
let isOptionSelected;
|
|
12574
|
-
if (this.field.IsMultiChoiche && this.record[this.field.Name] && this.record[this.field.Name].length > 0) {
|
|
12575
|
-
isOptionSelected = !!this.record[this.field.Name].find(v => v == value);
|
|
12576
|
-
}
|
|
12577
|
-
else {
|
|
12578
|
-
isOptionSelected = this.record[this.field.Name] === value;
|
|
12579
|
-
}
|
|
12580
|
-
this.arrayData.push({ Key: key, Value: value, Selected: isOptionSelected, ImgUrl: imgUrl });
|
|
12581
|
-
}
|
|
12582
|
-
}
|
|
12583
|
-
ListValueTriggerTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueTriggerTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12584
|
-
ListValueTriggerTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListValueTriggerTemplateComponent, selector: "list-value-trigger-template", inputs: { field: "field", record: "record" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-6 valueCol\">\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"true\" [arrayValueProperty]=\"'Key'\"\r\n [placeholder]=\"field.Description\"\r\n [includeFullObject]=\"false\" [isRequired]=\"false\" [isDisabled]=\"false\"\r\n [(ngModelInput)]=\"record[field.Name]\" [isMultiSelect]=\"false\"\r\n (ngModelInputChange)=\"onTriggerChange()\">\r\n </eqp-select>\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModel)]=\"selectedLogicOperator\" (ngModelChange)=\"onTriggerChange()\"></eqp-select>\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"booleanLogicOperatorType\" [(ngModel)]=\"selectedBooleanLogicOperator\" (ngModelChange)=\"onTriggerChange()\"></eqp-select>\r\n </div> \r\n</div>", styles: [".valueCol{padding-right:0}.operatorCol{padding-left:0}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select .mat-form-field-appearance-fill.ng-touched label.mdc-floating-label.mat-mdc-floating-label{background-color:transparent!important}\n"], dependencies: [{ 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: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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"] }] });
|
|
12585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueTriggerTemplateComponent, decorators: [{
|
|
12586
|
-
type: Component,
|
|
12587
|
-
args: [{ selector: 'list-value-trigger-template', template: "<div class=\"row\">\r\n <div class=\"col-md-6 valueCol\">\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"true\" [arrayValueProperty]=\"'Key'\"\r\n [placeholder]=\"field.Description\"\r\n [includeFullObject]=\"false\" [isRequired]=\"false\" [isDisabled]=\"false\"\r\n [(ngModelInput)]=\"record[field.Name]\" [isMultiSelect]=\"false\"\r\n (ngModelInputChange)=\"onTriggerChange()\">\r\n </eqp-select>\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModel)]=\"selectedLogicOperator\" (ngModelChange)=\"onTriggerChange()\"></eqp-select>\r\n </div>\r\n <div class=\"col-md-3 operatorCol\">\r\n <eqp-select [enumData]=\"booleanLogicOperatorType\" [(ngModel)]=\"selectedBooleanLogicOperator\" (ngModelChange)=\"onTriggerChange()\"></eqp-select>\r\n </div> \r\n</div>", styles: [".valueCol{padding-right:0}.operatorCol{padding-left:0}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select .mat-form-field-appearance-fill.ng-touched label.mdc-floating-label.mat-mdc-floating-label{background-color:transparent!important}\n"] }]
|
|
12588
|
-
}], ctorParameters: function () { return []; }, propDecorators: { field: [{
|
|
12589
|
-
type: Input
|
|
12590
|
-
}], record: [{
|
|
12591
|
-
type: Input
|
|
12592
|
-
}], filterChange: [{
|
|
12593
|
-
type: Output
|
|
12594
|
-
}] } });
|
|
12595
|
-
|
|
12596
12539
|
class ListFormRecordTriggerTemplateComponent {
|
|
12597
12540
|
constructor() {
|
|
12598
12541
|
this.filterChange = new EventEmitter();
|