@esfaenza/parameters 13.1.3 → 13.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/es_parameters.component.mjs +94 -11
- package/esm2020/lib/models/GenericParameter.mjs +6 -6
- package/fesm2015/esfaenza-parameters.mjs +98 -15
- package/fesm2015/esfaenza-parameters.mjs.map +1 -1
- package/fesm2020/esfaenza-parameters.mjs +98 -15
- package/fesm2020/esfaenza-parameters.mjs.map +1 -1
- package/lib/es_parameters.component.d.ts +36 -4
- package/lib/models/GenericParameter.d.ts +13 -5
- package/package.json +2 -2
|
@@ -48,11 +48,12 @@ class EsParametersComponent {
|
|
|
48
48
|
*
|
|
49
49
|
* @ignore
|
|
50
50
|
*/
|
|
51
|
-
constructor(utiExts, lc, cdr, inj) {
|
|
51
|
+
constructor(utiExts, lc, cdr, inj, dates) {
|
|
52
52
|
this.utiExts = utiExts;
|
|
53
53
|
this.lc = lc;
|
|
54
54
|
this.cdr = cdr;
|
|
55
55
|
this.inj = inj;
|
|
56
|
+
this.dates = dates;
|
|
56
57
|
/**
|
|
57
58
|
* Pipeline di Angular
|
|
58
59
|
*
|
|
@@ -87,6 +88,10 @@ class EsParametersComponent {
|
|
|
87
88
|
* Indica se i componenti di Input generati sono Readonly o no
|
|
88
89
|
*/
|
|
89
90
|
this.Readonly = false;
|
|
91
|
+
/**
|
|
92
|
+
* Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit
|
|
93
|
+
*/
|
|
94
|
+
this.Form = null;
|
|
90
95
|
}
|
|
91
96
|
/**
|
|
92
97
|
* Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi "X Y"
|
|
@@ -103,18 +108,23 @@ class EsParametersComponent {
|
|
|
103
108
|
*/
|
|
104
109
|
writeValue(obj) {
|
|
105
110
|
this.Parameters = obj;
|
|
111
|
+
this.ParametersCache = {};
|
|
106
112
|
if (!this.Parameters)
|
|
107
113
|
return;
|
|
108
114
|
this.Parameters.forEach(t => {
|
|
115
|
+
this.ParametersCache[t.id] = t;
|
|
116
|
+
if (!t.typecode && !t.type)
|
|
117
|
+
console.warn("Non è stato specificato né un type né un typecode");
|
|
109
118
|
if (t.typecode && !t.type)
|
|
110
119
|
t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);
|
|
111
|
-
if (t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))
|
|
112
|
-
|
|
120
|
+
if (t.typecode && t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))
|
|
121
|
+
console.warn("Rilevate inconsistenze fra il tipo " + t.type + " e il tipo " + this.utiExts.getJsTypeFromTypeCode(t.typecode));
|
|
113
122
|
if (t.type == "boolean")
|
|
114
123
|
t.value = t.value.toString().toLowerCase() === "true";
|
|
115
124
|
if (t.enumtype || t.dicttype)
|
|
116
125
|
t.type = 'enum';
|
|
117
126
|
});
|
|
127
|
+
this.reviewParametersBindings();
|
|
118
128
|
}
|
|
119
129
|
/**
|
|
120
130
|
* Pipeline di Angular
|
|
@@ -131,10 +141,14 @@ class EsParametersComponent {
|
|
|
131
141
|
let valid = true;
|
|
132
142
|
if (this.Parameters && this.Parameters.length > 0) {
|
|
133
143
|
this.Parameters.forEach(t => {
|
|
134
|
-
if (
|
|
144
|
+
if (!t.visible)
|
|
145
|
+
return;
|
|
146
|
+
let emptyNumber = t.type == 'number' && (t.value == null || t.value == undefined);
|
|
147
|
+
let emptyNonNumber = t.type != 'number' && !t.value;
|
|
148
|
+
if (t.required && (emptyNumber || emptyNonNumber))
|
|
135
149
|
valid = false;
|
|
136
150
|
else if (t.value && t.type == 'number')
|
|
137
|
-
valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value);
|
|
151
|
+
valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value.toString());
|
|
138
152
|
else if (t.value && t.pattern)
|
|
139
153
|
valid = new RegExp(t.pattern).test(t.value);
|
|
140
154
|
});
|
|
@@ -161,6 +175,7 @@ class EsParametersComponent {
|
|
|
161
175
|
changed() {
|
|
162
176
|
var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));
|
|
163
177
|
this.propagateChange(thyCleanShaltNotBlankMe);
|
|
178
|
+
this.reviewParametersBindings();
|
|
164
179
|
}
|
|
165
180
|
/**
|
|
166
181
|
* Rimuove il parametro selezionato e propaga il modello
|
|
@@ -171,9 +186,75 @@ class EsParametersComponent {
|
|
|
171
186
|
this.Parameters.splice(this.Parameters.indexOf(par), 1);
|
|
172
187
|
this.changed();
|
|
173
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo
|
|
191
|
+
*/
|
|
192
|
+
reviewParametersBindings() {
|
|
193
|
+
for (let i = 0; i < this.Parameters.length; i++) {
|
|
194
|
+
var p = this.Parameters[i];
|
|
195
|
+
if (p.requiredexp)
|
|
196
|
+
p.required = this.evaluate(p.requiredexp);
|
|
197
|
+
if (p.visibleexp)
|
|
198
|
+
p.visible = this.evaluate(p.visibleexp);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Valuta un'espressione in base ai parametri presenti nel modello attuale
|
|
203
|
+
*
|
|
204
|
+
* @param expr Espressione da valutare scritta nel formato (ripetibile) "ID (==|!=|<|>|>=|<=) (`valore` | null)" separato eventualmente da && ed ||
|
|
205
|
+
*
|
|
206
|
+
* @returns **true** se la condizione è verificata, **false** altrimenti
|
|
207
|
+
*/
|
|
208
|
+
evaluate(expr) {
|
|
209
|
+
var regex = /\s?([a-zA-Z0-9]+)\s?(!=|==|<|>|<=|>=)\s?(`[^`]+`|null|[0-9,]+|true|false)/gm;
|
|
210
|
+
var matches = [];
|
|
211
|
+
var finalExpr = expr;
|
|
212
|
+
while (matches = regex.exec(expr)) {
|
|
213
|
+
var fullMatch = matches[0].trim();
|
|
214
|
+
var id = matches[1].trim();
|
|
215
|
+
var operation = matches[2].trim();
|
|
216
|
+
var value = matches[3].trim().trim().replace('`', '').replace('`', '');
|
|
217
|
+
finalExpr = finalExpr.replace(fullMatch, `this.checkValue('${id}', '${operation}', '${value}')`);
|
|
218
|
+
}
|
|
219
|
+
return eval(finalExpr);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore
|
|
223
|
+
* Richiamata da EVAL
|
|
224
|
+
*
|
|
225
|
+
* @param {string} key Chiave del parametro di cui verificare il valore
|
|
226
|
+
* @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=
|
|
227
|
+
* @param {string} value Valore di confronto da utilizzare
|
|
228
|
+
*
|
|
229
|
+
* @returns **true** se la condizione è verificata, **false** altrimenti
|
|
230
|
+
*/
|
|
231
|
+
checkValue(key, operator, value) {
|
|
232
|
+
var rPar = this.ParametersCache[key];
|
|
233
|
+
switch (rPar.type) {
|
|
234
|
+
case "string":
|
|
235
|
+
case "enum":
|
|
236
|
+
return eval(`"${rPar.value}" ${operator} "${value}"`);
|
|
237
|
+
case "boolean":
|
|
238
|
+
return eval(`${rPar.value.toString()} ${operator} ${value}`);
|
|
239
|
+
case "number":
|
|
240
|
+
return eval(`${rPar.value.replace(',', '.')} ${operator} ${value.replace(',', '.')}`);
|
|
241
|
+
case "date":
|
|
242
|
+
let parDateConv = `this.dates.getDateConvertion("${rPar.value}")`;
|
|
243
|
+
let valDateConv = `this.dates.getDateConvertion("${value}")`;
|
|
244
|
+
switch (operator) {
|
|
245
|
+
case "==": return eval(`${parDateConv} == ${valDateConv} || (${parDateConv} != null && ${parDateConv}.isSame(${valDateConv}))`);
|
|
246
|
+
case "!=": return eval(`${parDateConv} != ${valDateConv} && ${parDateConv} != null && !${parDateConv}.isSame(${valDateConv})`);
|
|
247
|
+
case ">": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isAfter(${valDateConv})`);
|
|
248
|
+
case "<": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isBefore(${valDateConv})`);
|
|
249
|
+
case ">=": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isAfter(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);
|
|
250
|
+
case "<=": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isBefore(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
throw `@esfaenza/parameters: Tipo parametro ${key} non riconosciuto: ${rPar.type}`;
|
|
254
|
+
}
|
|
174
255
|
}
|
|
175
|
-
EsParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
-
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
256
|
+
EsParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
257
|
+
EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsParametersComponent, selector: "es-parameters", inputs: { LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", submitted: "submitted", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", Form: "Form", LabelInputRatio: "LabelInputRatio" }, providers: [
|
|
177
258
|
{ provide: LocalizationService, useClass: EsParametersLoc },
|
|
178
259
|
{
|
|
179
260
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -185,7 +266,7 @@ EsParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
185
266
|
useExisting: forwardRef(() => EsParametersComponent),
|
|
186
267
|
multi: true
|
|
187
268
|
}
|
|
188
|
-
], ngImport: i0, template: "<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.
|
|
269
|
+
], ngImport: i0, template: "<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"></span> {{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"mtu\" [Readonly]=\"Readonly || par.readonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>", components: [{ type: i3.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i3.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i3.FormCheckboxComponent, selector: "form-checkbox" }, { type: i3.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i3.FormMultiSelectComponent, selector: "form-multiselect", inputs: ["SelectLabel", "UseKeyValues"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }], pipes: { "localize": i2.LocalizePipe } });
|
|
189
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsParametersComponent, decorators: [{
|
|
190
271
|
type: Component,
|
|
191
272
|
args: [{ selector: "es-parameters", providers: [
|
|
@@ -200,8 +281,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
200
281
|
useExisting: forwardRef(() => EsParametersComponent),
|
|
201
282
|
multi: true
|
|
202
283
|
}
|
|
203
|
-
], template: "<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.
|
|
204
|
-
}], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }]; }, propDecorators: { LastParameterNoMargin: [{
|
|
284
|
+
], template: "<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"></span> {{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"mtu\" [Readonly]=\"Readonly || par.readonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>" }]
|
|
285
|
+
}], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.DateService }]; }, propDecorators: { LastParameterNoMargin: [{
|
|
205
286
|
type: Input
|
|
206
287
|
}], LabelColWidth: [{
|
|
207
288
|
type: Input
|
|
@@ -215,6 +296,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
215
296
|
type: Input
|
|
216
297
|
}], Readonly: [{
|
|
217
298
|
type: Input
|
|
299
|
+
}], Form: [{
|
|
300
|
+
type: Input
|
|
218
301
|
}], LabelInputRatio: [{
|
|
219
302
|
type: Input
|
|
220
303
|
}] } });
|
|
@@ -268,22 +351,22 @@ class GenericParameter {
|
|
|
268
351
|
* @param {string} description Descrizione del parametro
|
|
269
352
|
* @param {string} pattern Pattern di validazione
|
|
270
353
|
* @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input
|
|
271
|
-
* @param {boolean}
|
|
354
|
+
* @param {boolean} required Indica se il valore è obbligatorio o meno
|
|
272
355
|
* @param {any} v_default Valore di default per questo Parametro
|
|
273
356
|
* @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere
|
|
274
357
|
* @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)
|
|
275
358
|
*/
|
|
276
|
-
constructor(id, description, pattern, type,
|
|
359
|
+
constructor(id, description, pattern, type, required, v_default = null, enumvalues = [], multienum) {
|
|
277
360
|
this.id = id;
|
|
278
361
|
this.description = description;
|
|
279
362
|
this.pattern = pattern;
|
|
280
|
-
this.
|
|
363
|
+
this.required = required;
|
|
281
364
|
this.enumvalues = enumvalues;
|
|
282
365
|
this.multienum = multienum;
|
|
283
366
|
this.type = type == 'enum' ? "" : type;
|
|
284
|
-
this.
|
|
367
|
+
this.visible = true;
|
|
285
368
|
this.enumtype = type == 'enum' ? type : "";
|
|
286
|
-
this.
|
|
369
|
+
this.readonly = false;
|
|
287
370
|
if (!this.enumtype && enumvalues.length != 0)
|
|
288
371
|
console.error("impossibile gestire valori di dizionario per un parametro non di tipo enum");
|
|
289
372
|
if (v_default != null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-parameters.mjs","sources":["../../../projects/parameters/src/lib/tokens.ts","../../../projects/parameters/src/lib/es_parameters.component.loc.ts","../../../projects/parameters/src/lib/es_parameters.component.ts","../../../projects/parameters/src/lib/es_parameters.component.html","../../../projects/parameters/src/lib/es_parameters.module.ts","../../../projects/parameters/src/lib/models/GenericParameter.ts","../../../projects/parameters/src/public-api.ts","../../../projects/parameters/src/esfaenza-parameters.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Token che indica il locale da utilizzare per l'applicazione. Sono supportati i locali \"it-IT\" ed \"en-US\"\r\n */\r\nexport const PAR_LOCALE: InjectionToken<string> = new InjectionToken<string>('PAR_LOCALE');","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PAR_LOCALE } from './tokens';\r\n\r\n/**\r\n * Classe di localizzazione per il componente **EsParametersComponent**\r\n */\r\n@Injectable()\r\nexport class EsParametersLoc extends LocalizationService {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(@Inject(PAR_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n }\r\n}","// Angular\r\nimport { ControlValueAccessor, FormControl, NgControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { ChangeDetectorRef, Component, forwardRef, Injector, Input } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Classi\r\nimport { GenericParameter } from './models/GenericParameter';\r\n\r\n// Applicazione\r\nimport { EsParametersLoc } from \"./es_parameters.component.loc\";\r\n\r\n/**\r\n * Componente che permette di graficare una lista di **GenericParameter** come Input in base al loro tipo specifico\r\n */\r\n@Component({\r\n selector: \"es-parameters\",\r\n providers: [\r\n { provide: LocalizationService, useClass: EsParametersLoc },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n }],\r\n templateUrl: \"./es_parameters.component.html\"\r\n})\r\nexport class EsParametersComponent implements ControlValueAccessor, Validator {\r\n\r\n /**\r\n * Modello del componente su cui vengono effettuate le graficazioni\r\n */\r\n public Parameters: GenericParameter[];\r\n\r\n /**\r\n * Pipeline di Angular \r\n * \r\n * @ignore\r\n */\r\n propagateChange = (_: any) => { };\r\n\r\n /**\r\n * Indica che l'ultimo parametro non deve avere margine in fondo\r\n */\r\n @Input() LastParameterNoMargin: boolean = false;\r\n\r\n /**\r\n * col-md-X per la label\r\n */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /**\r\n * col-md-X per l'input\r\n */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /**\r\n * Input a cui collegare la variabile **submitted** del form all'interno del quale viene utilizzato questo componente\r\n */\r\n @Input() submitted: boolean = false;\r\n\r\n /**\r\n * Valore da mostrare qualora non fossero ancora ricevuti i **Parameters** da mostrare\r\n */\r\n @Input() EmptyMessage: string = \"\";\r\n\r\n /**\r\n * Permette di rimuovere i parametri dalla lista cliccando sulla X davanti alla Label\r\n */\r\n @Input() Removal: boolean = false;\r\n\r\n /**\r\n * Indica se i componenti di Input generati sono Readonly o no\r\n */\r\n @Input() Readonly: boolean = false;\r\n\r\n /**\r\n * Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi \"X Y\"\r\n */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private utiExts: UtilityService, public lc: LocalizationService, public cdr: ChangeDetectorRef, private inj: Injector) { }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public writeValue(obj): void {\r\n this.Parameters = obj;\r\n if (!this.Parameters)\r\n return;\r\n\r\n this.Parameters.forEach(t => {\r\n if (t.typecode && !t.type)\r\n t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))\r\n throw \"Rilevate inconsistenze fra il tipo \" + t.type + \" e il tipo \" + this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.type == \"boolean\")\r\n t.value = (<string>t.value.toString()).toLowerCase() === \"true\";\r\n\r\n if (t.enumtype || t.dicttype)\r\n t.type = 'enum';\r\n });\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n validate(c: FormControl): any {\r\n // Se la validazione è richiamata da un componente non me stesso vuol dire che i componenti di validazione interni stanno richiamando\r\n // questo validator, ma dal loro punto di vista non se ne devono preoccupare quindi faccio finta non ci siano errori.\r\n // Se invece vengo richiamato direttamente significa che è il form in cui vive es-parameters e lì devo effettuare la validazione\r\n let control = this.inj.get(NgControl, null)?.control;\r\n if (c != control)\r\n return null;\r\n\r\n let valid = true;\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n if (t.mandatory && !t.value)\r\n valid = false;\r\n else if (t.value && t.type == 'number')\r\n valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value);\r\n else if (t.value && t.pattern)\r\n valid = new RegExp(t.pattern).test(t.value);\r\n });\r\n }\r\n\r\n if (valid)\r\n return null;\r\n return { \"es-parameters\": valid };\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnTouched(fn): void { }\r\n\r\n /**\r\n * Metodo che si occupa di gestire il modello in uscita e propagarlo sul binding ngModel\r\n */\r\n public changed() {\r\n var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));\r\n this.propagateChange(thyCleanShaltNotBlankMe);\r\n }\r\n\r\n /**\r\n * Rimuove il parametro selezionato e propaga il modello\r\n * \r\n * @param {GenericParameter} par Parametro da rimuovere\r\n */\r\n public removeParameter(par: GenericParameter) {\r\n this.Parameters.splice(this.Parameters.indexOf(par), 1);\r\n this.changed();\r\n }\r\n}","<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.insertthis\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"></span> {{par.description}}{{par.mandatory ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.mandatory\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.mandatory\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.mandatory\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum\">\r\n <form-select [FormLayout]=\"false\" [Readonly]=\"Readonly || par.isreadonly\" [required]=\"par.mandatory\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum\">\r\n <form-multiselect [FormLayout]=\"false\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"mtu\" [Readonly]=\"Readonly || par.isreadonly\" [Source]=\"par.enumvalues\" required (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { LocalizationModule } from '@esfaenza/localizations';\r\nimport { FullExtensionsModule } from '@esfaenza/extensions';\r\nimport { EsParametersComponent } from './es_parameters.component';\r\nimport { EsParametersModuleConfig } from './models/EsParametersModuleConfig';\r\nimport { PAR_LOCALE } from './tokens';\r\n\r\n\r\n@NgModule({\r\n declarations: [EsParametersComponent],\r\n imports: [\r\n CommonModule,\r\n LocalizationModule,\r\n FormsModule,\r\n FullExtensionsModule,\r\n FormsAndValidationsModule,\r\n ],\r\n exports: [EsParametersComponent]\r\n})\r\nexport class EsParametersModule {\r\n static forRoot(config?: EsParametersModuleConfig): ModuleWithProviders<EsParametersModule> {\r\n return {\r\n ngModule: EsParametersModule,\r\n providers: [\r\n { provide: PAR_LOCALE, useValue: config?.locale || 'it-IT' }\r\n ]\r\n };\r\n }\r\n }\r\n","/**\r\n * Classe che rappresenta un parametro generico\r\n */\r\nexport class GenericParameter {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @param {string} id Codice del parametro\r\n * @param {string} description Descrizione del parametro\r\n * @param {string} pattern Pattern di validazione\r\n * @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input \r\n * @param {boolean} mandatory Indica se il valore è obbligatorio o meno\r\n * @param {any} v_default Valore di default per questo Parametro\r\n * @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere \r\n * @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)\r\n */\r\n constructor(\r\n public id: string, \r\n public description: string, \r\n public pattern: string,\r\n type: 'date' | 'string' | 'number' | 'boolean' | 'enum', \r\n public mandatory: boolean, \r\n v_default: any = null, \r\n public enumvalues: { id: string, description: string }[] = [],\r\n public multienum?: boolean) {\r\n\r\n this.type = type == 'enum' ? \"\" : type;\r\n this.insertthis = true;\r\n this.enumtype = type == 'enum' ? type : \"\";\r\n this.isreadonly = false;\r\n\r\n if(!this.enumtype && enumvalues.length != 0)\r\n console.error(\"impossibile gestire valori di dizionario per un parametro non di tipo enum\");\r\n\r\n if (v_default != null)\r\n this.value = v_default;\r\n }\r\n \r\n /**\r\n * Tipo di dato rappresentato da questo parametro\r\n */\r\n public type: string;\r\n\r\n /**\r\n * Typecode lato C# che rappresenta il tipo di dato\r\n */\r\n public typecode: number;\r\n\r\n /**\r\n * Indica se il campo specificato dev'essere di sola lettura o meno\r\n */\r\n public isreadonly: boolean;\r\n\r\n /**\r\n * Valore del parametro\r\n */\r\n public value: any;\r\n\r\n /**\r\n * Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto\r\n */\r\n public insertthis: boolean;\r\n\r\n /**\r\n * Tipo Enum, valorizzato dal Backend\r\n */\r\n public enumtype: string;\r\n\r\n /**\r\n * Tipo Dizionario, valorizzato dal Backend\r\n */\r\n public dicttype: string;\r\n}","/*\r\n * Public API Surface of parameters\r\n */\r\nexport * from './lib/es_parameters.module';\r\nexport * from './lib/tokens';\r\nexport * from './lib/models/GenericParameter';\r\nexport * from './lib/es_parameters.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-parameters.mjs","sources":["../../../projects/parameters/src/lib/tokens.ts","../../../projects/parameters/src/lib/es_parameters.component.loc.ts","../../../projects/parameters/src/lib/es_parameters.component.ts","../../../projects/parameters/src/lib/es_parameters.component.html","../../../projects/parameters/src/lib/es_parameters.module.ts","../../../projects/parameters/src/lib/models/GenericParameter.ts","../../../projects/parameters/src/public-api.ts","../../../projects/parameters/src/esfaenza-parameters.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Token che indica il locale da utilizzare per l'applicazione. Sono supportati i locali \"it-IT\" ed \"en-US\"\r\n */\r\nexport const PAR_LOCALE: InjectionToken<string> = new InjectionToken<string>('PAR_LOCALE');","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PAR_LOCALE } from './tokens';\r\n\r\n/**\r\n * Classe di localizzazione per il componente **EsParametersComponent**\r\n */\r\n@Injectable()\r\nexport class EsParametersLoc extends LocalizationService {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(@Inject(PAR_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n }\r\n}","// Angular\r\nimport { ControlValueAccessor, FormControl, NgControl, NgForm, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { ChangeDetectorRef, Component, forwardRef, Injector, Input } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { DateService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Classi\r\nimport { GenericParameter } from './models/GenericParameter';\r\n\r\n// Applicazione\r\nimport { EsParametersLoc } from \"./es_parameters.component.loc\";\r\n\r\n/**\r\n * Componente che permette di graficare una lista di **GenericParameter** come Input in base al loro tipo specifico\r\n */\r\n@Component({\r\n selector: \"es-parameters\",\r\n providers: [\r\n { provide: LocalizationService, useClass: EsParametersLoc },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EsParametersComponent),\r\n multi: true\r\n }],\r\n templateUrl: \"./es_parameters.component.html\"\r\n})\r\nexport class EsParametersComponent implements ControlValueAccessor, Validator {\r\n\r\n /**\r\n * Modello del componente su cui vengono effettuate le graficazioni\r\n */\r\n public Parameters: GenericParameter[];\r\n\r\n /**\r\n * Cache per fare lookup rapidi in fase di valutazione espressioni di visibilità e obbligatorietà\r\n */\r\n private ParametersCache: {[id: string]: GenericParameter};\r\n\r\n /**\r\n * Pipeline di Angular \r\n * \r\n * @ignore\r\n */\r\n propagateChange = (_: any) => { };\r\n\r\n /**\r\n * Indica che l'ultimo parametro non deve avere margine in fondo\r\n */\r\n @Input() LastParameterNoMargin: boolean = false;\r\n\r\n /**\r\n * col-md-X per la label\r\n */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /**\r\n * col-md-X per l'input\r\n */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /**\r\n * Input a cui collegare la variabile **submitted** del form all'interno del quale viene utilizzato questo componente\r\n */\r\n @Input() submitted: boolean = false;\r\n\r\n /**\r\n * Valore da mostrare qualora non fossero ancora ricevuti i **Parameters** da mostrare\r\n */\r\n @Input() EmptyMessage: string = \"\";\r\n\r\n /**\r\n * Permette di rimuovere i parametri dalla lista cliccando sulla X davanti alla Label\r\n */\r\n @Input() Removal: boolean = false;\r\n\r\n /**\r\n * Indica se i componenti di Input generati sono Readonly o no\r\n */\r\n @Input() Readonly: boolean = false;\r\n\r\n /**\r\n * Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit\r\n */\r\n @Input() Form : NgForm = null;\r\n\r\n /**\r\n * Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi \"X Y\"\r\n */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private utiExts: UtilityService, public lc: LocalizationService, public cdr: ChangeDetectorRef, private inj: Injector, public dates: DateService) { }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public writeValue(obj): void {\r\n this.Parameters = obj;\r\n this.ParametersCache = {};\r\n if (!this.Parameters)\r\n return;\r\n\r\n this.Parameters.forEach(t => {\r\n this.ParametersCache[t.id] = t;\r\n\r\n if(!t.typecode && !t.type)\r\n console.warn(\"Non è stato specificato né un type né un typecode\");\r\n\r\n if (t.typecode && !t.type)\r\n t.type = this.utiExts.getJsTypeFromTypeCode(t.typecode);\r\n\r\n if (t.typecode && t.type != this.utiExts.getJsTypeFromTypeCode(t.typecode))\r\n console.warn(\"Rilevate inconsistenze fra il tipo \" + t.type + \" e il tipo \" + this.utiExts.getJsTypeFromTypeCode(t.typecode));\r\n\r\n if (t.type == \"boolean\")\r\n t.value = (<string>t.value.toString()).toLowerCase() === \"true\";\r\n\r\n if (t.enumtype || t.dicttype)\r\n t.type = 'enum';\r\n });\r\n\r\n this.reviewParametersBindings();\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n validate(c: FormControl): any {\r\n // Se la validazione è richiamata da un componente non me stesso vuol dire che i componenti di validazione interni stanno richiamando\r\n // questo validator, ma dal loro punto di vista non se ne devono preoccupare quindi faccio finta non ci siano errori.\r\n // Se invece vengo richiamato direttamente significa che è il form in cui vive es-parameters e lì devo effettuare la validazione\r\n let control = this.inj.get(NgControl, null)?.control;\r\n if (c != control)\r\n return null;\r\n\r\n let valid = true;\r\n if (this.Parameters && this.Parameters.length > 0) {\r\n this.Parameters.forEach(t => {\r\n if(!t.visible)\r\n return;\r\n \r\n let emptyNumber = t.type == 'number' && (t.value == null || t.value == undefined);\r\n let emptyNonNumber = t.type != 'number' && !t.value\r\n\r\n if (t.required && (emptyNumber || emptyNonNumber))\r\n valid = false;\r\n else if (t.value && t.type == 'number')\r\n valid = new RegExp(t.pattern || /^[+-]?[0-9]*[,]?[0-9]+$/).test(t.value.toString());\r\n else if (t.value && t.pattern)\r\n valid = new RegExp(t.pattern).test(t.value);\r\n });\r\n }\r\n\r\n if (valid)\r\n return null;\r\n return { \"es-parameters\": valid };\r\n }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n\r\n /**\r\n * Pipeline di Angular\r\n * \r\n * @ignore\r\n */\r\n public registerOnTouched(fn): void { }\r\n\r\n /**\r\n * Metodo che si occupa di gestire il modello in uscita e propagarlo sul binding ngModel\r\n */\r\n public changed() {\r\n var thyCleanShaltNotBlankMe = JSON.parse(JSON.stringify(this.Parameters));\r\n this.propagateChange(thyCleanShaltNotBlankMe);\r\n this.reviewParametersBindings();\r\n }\r\n\r\n /**\r\n * Rimuove il parametro selezionato e propaga il modello\r\n * \r\n * @param {GenericParameter} par Parametro da rimuovere\r\n */\r\n public removeParameter(par: GenericParameter) {\r\n this.Parameters.splice(this.Parameters.indexOf(par), 1);\r\n this.changed();\r\n }\r\n\r\n /**\r\n * Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo\r\n */\r\n private reviewParametersBindings() {\r\n for (let i = 0; i < this.Parameters.length; i++) {\r\n var p = this.Parameters[i];\r\n\r\n if (p.requiredexp)\r\n p.required = this.evaluate(p.requiredexp);\r\n if (p.visibleexp)\r\n p.visible = this.evaluate(p.visibleexp);\r\n }\r\n }\r\n\r\n /**\r\n * Valuta un'espressione in base ai parametri presenti nel modello attuale\r\n * \r\n * @param expr Espressione da valutare scritta nel formato (ripetibile) \"ID (==|!=|<|>|>=|<=) (`valore` | null)\" separato eventualmente da && ed ||\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n private evaluate(expr: string): boolean {\r\n var regex = /\\s?([a-zA-Z0-9]+)\\s?(!=|==|<|>|<=|>=)\\s?(`[^`]+`|null|[0-9,]+|true|false)/gm;\r\n\r\n var matches: string[] = [];\r\n var finalExpr = expr;\r\n while (matches = regex.exec(expr)) {\r\n var fullMatch = matches[0].trim();\r\n var id = matches[1].trim();\r\n var operation = matches[2].trim();\r\n var value = matches[3].trim().trim().replace('`', '').replace('`', '');\r\n\r\n finalExpr = finalExpr.replace(fullMatch, `this.checkValue('${id}', '${operation}', '${value}')`);\r\n }\r\n\r\n return eval(finalExpr);\r\n }\r\n\r\n /**\r\n * Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore\r\n * Richiamata da EVAL\r\n * \r\n * @param {string} key Chiave del parametro di cui verificare il valore\r\n * @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=\r\n * @param {string} value Valore di confronto da utilizzare\r\n * \r\n * @returns **true** se la condizione è verificata, **false** altrimenti\r\n */\r\n public checkValue(key: string, operator: string, value: string): boolean {\r\n var rPar = this.ParametersCache[key];\r\n switch (rPar.type) {\r\n case \"string\":\r\n case \"enum\":\r\n return eval(`\"${rPar.value}\" ${operator} \"${value}\"`);\r\n case \"boolean\":\r\n return eval(`${rPar.value.toString()} ${operator} ${value}`);\r\n case \"number\":\r\n return eval(`${rPar.value.replace(',', '.')} ${operator} ${value.replace(',', '.')}`);\r\n case \"date\":\r\n let parDateConv = `this.dates.getDateConvertion(\"${rPar.value}\")`;\r\n let valDateConv = `this.dates.getDateConvertion(\"${value}\")`;\r\n\r\n switch (operator) {\r\n\r\n case \"==\": return eval(`${parDateConv} == ${valDateConv} || (${parDateConv} != null && ${parDateConv}.isSame(${valDateConv}))`);\r\n case \"!=\": return eval(`${parDateConv} != ${valDateConv} && ${parDateConv} != null && !${parDateConv}.isSame(${valDateConv})`);\r\n case \">\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isAfter(${valDateConv})`);\r\n case \"<\": return eval(`${parDateConv} != null && ${valDateConv} != null && ${parDateConv}.isBefore(${valDateConv})`);\r\n case \">=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isAfter(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n case \"<=\": return eval(`${parDateConv} != null && ${valDateConv} != null && (${parDateConv}.isBefore(${valDateConv}) || ${parDateConv}?.isSame(${valDateConv}))`);\r\n }\r\n }\r\n throw `@esfaenza/parameters: Tipo parametro ${key} non riconosciuto: ${rPar.type}`;\r\n }\r\n}","<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Parameters && Parameters.length > 0\">\r\n <div class=\"row form-group\" *ngFor=\"let par of Parameters; let i= index; let last = last;\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [hidden]=\"!par.visible\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\"><span *ngIf=\"Removal\" class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\"></span> {{par.description}}{{par.required ? '*' : ''}}:</label>\r\n\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'date'\">\r\n <form-date [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-date>\r\n </div>\r\n <!--Se stringa-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'string'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-input>\r\n </div>\r\n <!--Se numero-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'number'\">\r\n <form-input [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\"></form-input>\r\n </div>\r\n <!--Se boolean-->\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\" *ngIf=\"par.type == 'boolean'\">\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator></form-checkbox>\r\n </div>\r\n <!--Se enum single select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && !par.multienum\">\r\n <form-select [Form]=\"Form\" [FormLayout]=\"false\" [Readonly]=\"Readonly || par.readonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"par{{i}}\" (inputChange)=\"changed();\" #validator [Source]=\"par.enumvalues\"></form-select>\r\n </div>\r\n <!--Se enum multi select-->\r\n <div class=\"col-md-{{InputColWidth}}\" *ngIf=\"par.type == 'enum' && par.multienum\">\r\n <form-multiselect [Form]=\"Form\" [FormLayout]=\"false\" [SelectLabel]=\"('Select' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"mtu\" [Readonly]=\"Readonly || par.readonly\" [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" #validator></form-multiselect>\r\n </div>\r\n\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n</div>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { LocalizationModule } from '@esfaenza/localizations';\r\nimport { FullExtensionsModule } from '@esfaenza/extensions';\r\nimport { EsParametersComponent } from './es_parameters.component';\r\nimport { EsParametersModuleConfig } from './models/EsParametersModuleConfig';\r\nimport { PAR_LOCALE } from './tokens';\r\n\r\n\r\n@NgModule({\r\n declarations: [EsParametersComponent],\r\n imports: [\r\n CommonModule,\r\n LocalizationModule,\r\n FormsModule,\r\n FullExtensionsModule,\r\n FormsAndValidationsModule,\r\n ],\r\n exports: [EsParametersComponent]\r\n})\r\nexport class EsParametersModule {\r\n static forRoot(config?: EsParametersModuleConfig): ModuleWithProviders<EsParametersModule> {\r\n return {\r\n ngModule: EsParametersModule,\r\n providers: [\r\n { provide: PAR_LOCALE, useValue: config?.locale || 'it-IT' }\r\n ]\r\n };\r\n }\r\n }\r\n","/**\r\n * Classe che rappresenta un parametro generico\r\n */\r\nexport class GenericParameter {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @param {string} id Codice del parametro\r\n * @param {string} description Descrizione del parametro\r\n * @param {string} pattern Pattern di validazione\r\n * @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input \r\n * @param {boolean} required Indica se il valore è obbligatorio o meno\r\n * @param {any} v_default Valore di default per questo Parametro\r\n * @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere \r\n * @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)\r\n */\r\n constructor(\r\n public id: string, \r\n public description: string, \r\n public pattern: string,\r\n type: 'date' | 'string' | 'number' | 'boolean' | 'enum', \r\n public required: boolean, \r\n v_default: any = null, \r\n public enumvalues: { id: string, description: string }[] = [],\r\n public multienum?: boolean) {\r\n\r\n this.type = type == 'enum' ? \"\" : type;\r\n this.visible = true;\r\n this.enumtype = type == 'enum' ? type : \"\";\r\n this.readonly = false;\r\n\r\n if(!this.enumtype && enumvalues.length != 0)\r\n console.error(\"impossibile gestire valori di dizionario per un parametro non di tipo enum\");\r\n\r\n if (v_default != null)\r\n this.value = v_default;\r\n }\r\n \r\n /**\r\n * Tipo di dato rappresentato da questo parametro\r\n */\r\n public type: string;\r\n\r\n /**\r\n * Typecode lato C# che rappresenta il tipo di dato\r\n */\r\n public typecode: number;\r\n\r\n /**\r\n * Indica se il campo specificato dev'essere di sola lettura o meno\r\n */\r\n public readonly: boolean;\r\n\r\n /**\r\n * Valore del parametro\r\n */\r\n public value: any;\r\n\r\n /**\r\n * Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto\r\n */\r\n public visible: boolean;\r\n\r\n /**\r\n * Tipo Enum, valorizzato dal Backend\r\n */\r\n public enumtype: string;\r\n\r\n /**\r\n * Tipo Dizionario, valorizzato dal Backend\r\n */\r\n public dicttype: string;\r\n\r\n /**\r\n * Espressione di obbligatorietà\r\n */\r\n public requiredexp?: string;\r\n\r\n /**\r\n * Espressione di visibilità\r\n */\r\n public visibleexp?: string;\r\n}","/*\r\n * Public API Surface of parameters\r\n */\r\nexport * from './lib/es_parameters.module';\r\nexport * from './lib/tokens';\r\nexport * from './lib/models/GenericParameter';\r\nexport * from './lib/es_parameters.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
|
|
1
|
+
import { ControlValueAccessor, FormControl, NgForm, Validator } from "@angular/forms";
|
|
2
2
|
import { ChangeDetectorRef, Injector } from "@angular/core";
|
|
3
3
|
import { LocalizationService } from "@esfaenza/localizations";
|
|
4
|
-
import { UtilityService } from "@esfaenza/extensions";
|
|
4
|
+
import { DateService, UtilityService } from "@esfaenza/extensions";
|
|
5
5
|
import { GenericParameter } from './models/GenericParameter';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
@@ -12,10 +12,15 @@ export declare class EsParametersComponent implements ControlValueAccessor, Vali
|
|
|
12
12
|
lc: LocalizationService;
|
|
13
13
|
cdr: ChangeDetectorRef;
|
|
14
14
|
private inj;
|
|
15
|
+
dates: DateService;
|
|
15
16
|
/**
|
|
16
17
|
* Modello del componente su cui vengono effettuate le graficazioni
|
|
17
18
|
*/
|
|
18
19
|
Parameters: GenericParameter[];
|
|
20
|
+
/**
|
|
21
|
+
* Cache per fare lookup rapidi in fase di valutazione espressioni di visibilità e obbligatorietà
|
|
22
|
+
*/
|
|
23
|
+
private ParametersCache;
|
|
19
24
|
/**
|
|
20
25
|
* Pipeline di Angular
|
|
21
26
|
*
|
|
@@ -50,6 +55,10 @@ export declare class EsParametersComponent implements ControlValueAccessor, Vali
|
|
|
50
55
|
* Indica se i componenti di Input generati sono Readonly o no
|
|
51
56
|
*/
|
|
52
57
|
Readonly: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Form che utilizza il componente. Fondamentale collegarlo se si vogliono le validazioni sul submit
|
|
60
|
+
*/
|
|
61
|
+
Form: NgForm;
|
|
53
62
|
/**
|
|
54
63
|
* Permette di settare in una volta solo gli input **LabelColWidth** e **InputColWidth**, basta scriverlo con la sintassi "X Y"
|
|
55
64
|
*/
|
|
@@ -59,7 +68,7 @@ export declare class EsParametersComponent implements ControlValueAccessor, Vali
|
|
|
59
68
|
*
|
|
60
69
|
* @ignore
|
|
61
70
|
*/
|
|
62
|
-
constructor(utiExts: UtilityService, lc: LocalizationService, cdr: ChangeDetectorRef, inj: Injector);
|
|
71
|
+
constructor(utiExts: UtilityService, lc: LocalizationService, cdr: ChangeDetectorRef, inj: Injector, dates: DateService);
|
|
63
72
|
/**
|
|
64
73
|
* Pipeline di Angular
|
|
65
74
|
*
|
|
@@ -94,6 +103,29 @@ export declare class EsParametersComponent implements ControlValueAccessor, Vali
|
|
|
94
103
|
* @param {GenericParameter} par Parametro da rimuovere
|
|
95
104
|
*/
|
|
96
105
|
removeParameter(par: GenericParameter): void;
|
|
106
|
+
/**
|
|
107
|
+
* Rivede i bindings dei parametri in base a loro eventuali espressioni di controllo
|
|
108
|
+
*/
|
|
109
|
+
private reviewParametersBindings;
|
|
110
|
+
/**
|
|
111
|
+
* Valuta un'espressione in base ai parametri presenti nel modello attuale
|
|
112
|
+
*
|
|
113
|
+
* @param expr Espressione da valutare scritta nel formato (ripetibile) "ID (==|!=|<|>|>=|<=) (`valore` | null)" separato eventualmente da && ed ||
|
|
114
|
+
*
|
|
115
|
+
* @returns **true** se la condizione è verificata, **false** altrimenti
|
|
116
|
+
*/
|
|
117
|
+
private evaluate;
|
|
118
|
+
/**
|
|
119
|
+
* Restituisce l'operazione di comparazione fra un singolo valore di un parametro e un suo valore di confronto in base ad un operatore
|
|
120
|
+
* Richiamata da EVAL
|
|
121
|
+
*
|
|
122
|
+
* @param {string} key Chiave del parametro di cui verificare il valore
|
|
123
|
+
* @param {string} operator Operatore con cui verificare il valore: ==, !=, >, <, >=, <=
|
|
124
|
+
* @param {string} value Valore di confronto da utilizzare
|
|
125
|
+
*
|
|
126
|
+
* @returns **true** se la condizione è verificata, **false** altrimenti
|
|
127
|
+
*/
|
|
128
|
+
checkValue(key: string, operator: string, value: string): boolean;
|
|
97
129
|
static ɵfac: i0.ɵɵFactoryDeclaration<EsParametersComponent, never>;
|
|
98
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EsParametersComponent, "es-parameters", never, { "LastParameterNoMargin": "LastParameterNoMargin"; "LabelColWidth": "LabelColWidth"; "InputColWidth": "InputColWidth"; "submitted": "submitted"; "EmptyMessage": "EmptyMessage"; "Removal": "Removal"; "Readonly": "Readonly"; "LabelInputRatio": "LabelInputRatio"; }, {}, never, never>;
|
|
130
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EsParametersComponent, "es-parameters", never, { "LastParameterNoMargin": "LastParameterNoMargin"; "LabelColWidth": "LabelColWidth"; "InputColWidth": "InputColWidth"; "submitted": "submitted"; "EmptyMessage": "EmptyMessage"; "Removal": "Removal"; "Readonly": "Readonly"; "Form": "Form"; "LabelInputRatio": "LabelInputRatio"; }, {}, never, never>;
|
|
99
131
|
}
|
|
@@ -5,7 +5,7 @@ export declare class GenericParameter {
|
|
|
5
5
|
id: string;
|
|
6
6
|
description: string;
|
|
7
7
|
pattern: string;
|
|
8
|
-
|
|
8
|
+
required: boolean;
|
|
9
9
|
enumvalues: {
|
|
10
10
|
id: string;
|
|
11
11
|
description: string;
|
|
@@ -18,12 +18,12 @@ export declare class GenericParameter {
|
|
|
18
18
|
* @param {string} description Descrizione del parametro
|
|
19
19
|
* @param {string} pattern Pattern di validazione
|
|
20
20
|
* @param {'date' | 'string' | 'number' | 'boolean' | 'enum'} type Tipo di input
|
|
21
|
-
* @param {boolean}
|
|
21
|
+
* @param {boolean} required Indica se il valore è obbligatorio o meno
|
|
22
22
|
* @param {any} v_default Valore di default per questo Parametro
|
|
23
23
|
* @param {{ id: string, description: string }[]} enumvalues Qualora il **type** fosse di tipo **enum**, qui devono esserci tutti i valori che può assumere
|
|
24
24
|
* @param {boolean} multienum Qualora il **type** fosse di tipo **enum**, indica se è possibile selezionare più valori (multiselect)
|
|
25
25
|
*/
|
|
26
|
-
constructor(id: string, description: string, pattern: string, type: 'date' | 'string' | 'number' | 'boolean' | 'enum',
|
|
26
|
+
constructor(id: string, description: string, pattern: string, type: 'date' | 'string' | 'number' | 'boolean' | 'enum', required: boolean, v_default?: any, enumvalues?: {
|
|
27
27
|
id: string;
|
|
28
28
|
description: string;
|
|
29
29
|
}[], multienum?: boolean);
|
|
@@ -38,7 +38,7 @@ export declare class GenericParameter {
|
|
|
38
38
|
/**
|
|
39
39
|
* Indica se il campo specificato dev'essere di sola lettura o meno
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
readonly: boolean;
|
|
42
42
|
/**
|
|
43
43
|
* Valore del parametro
|
|
44
44
|
*/
|
|
@@ -46,7 +46,7 @@ export declare class GenericParameter {
|
|
|
46
46
|
/**
|
|
47
47
|
* Indica se questo parametro dev'essere inserito o no. In caso contrario viene semplicemente nascosto
|
|
48
48
|
*/
|
|
49
|
-
|
|
49
|
+
visible: boolean;
|
|
50
50
|
/**
|
|
51
51
|
* Tipo Enum, valorizzato dal Backend
|
|
52
52
|
*/
|
|
@@ -55,4 +55,12 @@ export declare class GenericParameter {
|
|
|
55
55
|
* Tipo Dizionario, valorizzato dal Backend
|
|
56
56
|
*/
|
|
57
57
|
dicttype: string;
|
|
58
|
+
/**
|
|
59
|
+
* Espressione di obbligatorietà
|
|
60
|
+
*/
|
|
61
|
+
requiredexp?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Espressione di visibilità
|
|
64
|
+
*/
|
|
65
|
+
visibleexp?: string;
|
|
58
66
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esfaenza/parameters",
|
|
3
|
-
"version": "13.1.
|
|
3
|
+
"version": "13.1.7",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.0.0"
|
|
6
6
|
},
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"@angular-material-components/datetime-picker": "7.0.1",
|
|
19
19
|
"angular2-multiselect-dropdown": "5.0.4",
|
|
20
20
|
"ngx-toastr": "14.2.1",
|
|
21
|
-
"ngx-bootstrap": "
|
|
21
|
+
"ngx-bootstrap": "8.0.0",
|
|
22
22
|
"dayjs": "1.10.7",
|
|
23
23
|
"cerialize": "0.1.18",
|
|
24
24
|
"sweetalert2": "11.3.3"
|