@eqproject/eqp-dynamic-module 0.0.1
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/README.md +24 -0
- package/bundles/eqproject-eqp-dynamic-module.umd.js +3117 -0
- package/bundles/eqproject-eqp-dynamic-module.umd.js.map +1 -0
- package/bundles/eqproject-eqp-dynamic-module.umd.min.js +17 -0
- package/bundles/eqproject-eqp-dynamic-module.umd.min.js.map +1 -0
- package/eqproject-eqp-dynamic-module.d.ts +5 -0
- package/eqproject-eqp-dynamic-module.metadata.json +1 -0
- package/esm2015/eqproject-eqp-dynamic-module.js +6 -0
- package/esm2015/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.js +65 -0
- package/esm2015/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.js +534 -0
- package/esm2015/lib/components/private/add-form-field/add-form-field.component.js +486 -0
- package/esm2015/lib/components/private/dynamic-module-field/dynamic-module-field.component.js +127 -0
- package/esm2015/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.js +181 -0
- package/esm2015/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.js +56 -0
- package/esm2015/lib/components/private/field-templates/date-field-template/date-field-template.component.js +71 -0
- package/esm2015/lib/components/private/field-templates/image-field-template/image-field-template.component.js +54 -0
- package/esm2015/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.js +118 -0
- package/esm2015/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.js +63 -0
- package/esm2015/lib/components/private/field-templates/text-field-template/text-field-template.component.js +51 -0
- package/esm2015/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.js +51 -0
- package/esm2015/lib/components/private/form-records/add-form-record/add-form-record.component.js +126 -0
- package/esm2015/lib/components/private/form-records/list-form-record/list-form-record.component.js +210 -0
- package/esm2015/lib/eqp-dynamic-module.module.js +67 -0
- package/esm2015/lib/interfaces/iBaseFieldComponent.interface.js +1 -0
- package/esm2015/lib/interfaces/iRootObject.interface.js +1 -0
- package/esm2015/lib/models/baseField.model.js +36 -0
- package/esm2015/lib/models/baseObj.model.js +9 -0
- package/esm2015/lib/models/context.model.js +8 -0
- package/esm2015/lib/models/entity.model.js +7 -0
- package/esm2015/lib/models/fields/attachmentField.model.js +22 -0
- package/esm2015/lib/models/fields/booleanField.model.js +12 -0
- package/esm2015/lib/models/fields/dateField.model.js +11 -0
- package/esm2015/lib/models/fields/imageField.model.js +4 -0
- package/esm2015/lib/models/fields/listValueField.model.js +12 -0
- package/esm2015/lib/models/fields/lookupField.model.js +5 -0
- package/esm2015/lib/models/fields/numericField.model.js +5 -0
- package/esm2015/lib/models/fields/testareaField.model.js +4 -0
- package/esm2015/lib/models/fields/textField.model.js +5 -0
- package/esm2015/lib/models/form.model.js +24 -0
- package/esm2015/lib/models/record.model.js +3 -0
- package/esm2015/lib/modules/material.module.js +108 -0
- package/esm2015/lib/services/custom-form-validators.service.js +19 -0
- package/esm2015/lib/services/eqp-dynamic-module-dialog.service.js +104 -0
- package/esm2015/lib/services/utilityHelper.services.js +220 -0
- package/esm2015/public-api.js +37 -0
- package/esm5/eqproject-eqp-dynamic-module.js +6 -0
- package/esm5/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.js +66 -0
- package/esm5/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.js +546 -0
- package/esm5/lib/components/private/add-form-field/add-form-field.component.js +497 -0
- package/esm5/lib/components/private/dynamic-module-field/dynamic-module-field.component.js +128 -0
- package/esm5/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.js +184 -0
- package/esm5/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.js +57 -0
- package/esm5/lib/components/private/field-templates/date-field-template/date-field-template.component.js +72 -0
- package/esm5/lib/components/private/field-templates/image-field-template/image-field-template.component.js +55 -0
- package/esm5/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.js +121 -0
- package/esm5/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.js +64 -0
- package/esm5/lib/components/private/field-templates/text-field-template/text-field-template.component.js +52 -0
- package/esm5/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.js +52 -0
- package/esm5/lib/components/private/form-records/add-form-record/add-form-record.component.js +129 -0
- package/esm5/lib/components/private/form-records/list-form-record/list-form-record.component.js +216 -0
- package/esm5/lib/eqp-dynamic-module.module.js +70 -0
- package/esm5/lib/interfaces/iBaseFieldComponent.interface.js +1 -0
- package/esm5/lib/interfaces/iRootObject.interface.js +1 -0
- package/esm5/lib/models/baseField.model.js +43 -0
- package/esm5/lib/models/baseObj.model.js +13 -0
- package/esm5/lib/models/context.model.js +14 -0
- package/esm5/lib/models/entity.model.js +14 -0
- package/esm5/lib/models/fields/attachmentField.model.js +29 -0
- package/esm5/lib/models/fields/booleanField.model.js +19 -0
- package/esm5/lib/models/fields/dateField.model.js +18 -0
- package/esm5/lib/models/fields/imageField.model.js +11 -0
- package/esm5/lib/models/fields/listValueField.model.js +19 -0
- package/esm5/lib/models/fields/lookupField.model.js +12 -0
- package/esm5/lib/models/fields/numericField.model.js +12 -0
- package/esm5/lib/models/fields/testareaField.model.js +11 -0
- package/esm5/lib/models/fields/textField.model.js +12 -0
- package/esm5/lib/models/form.model.js +39 -0
- package/esm5/lib/models/record.model.js +7 -0
- package/esm5/lib/modules/material.module.js +111 -0
- package/esm5/lib/services/custom-form-validators.service.js +23 -0
- package/esm5/lib/services/eqp-dynamic-module-dialog.service.js +113 -0
- package/esm5/lib/services/utilityHelper.services.js +225 -0
- package/esm5/public-api.js +37 -0
- package/fesm2015/eqproject-eqp-dynamic-module.js +2757 -0
- package/fesm2015/eqproject-eqp-dynamic-module.js.map +1 -0
- package/fesm5/eqproject-eqp-dynamic-module.js +2902 -0
- package/fesm5/eqproject-eqp-dynamic-module.js.map +1 -0
- package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +21 -0
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +186 -0
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +160 -0
- package/lib/components/private/dynamic-module-field/dynamic-module-field.component.d.ts +55 -0
- package/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.d.ts +84 -0
- package/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.d.ts +21 -0
- package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +27 -0
- package/lib/components/private/field-templates/image-field-template/image-field-template.component.d.ts +16 -0
- package/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.d.ts +59 -0
- package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +26 -0
- package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +20 -0
- package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +20 -0
- package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +50 -0
- package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +59 -0
- package/lib/eqp-dynamic-module.module.d.ts +2 -0
- package/lib/interfaces/iBaseFieldComponent.interface.d.ts +8 -0
- package/lib/interfaces/iRootObject.interface.d.ts +10 -0
- package/lib/models/baseField.model.d.ts +56 -0
- package/lib/models/baseObj.model.d.ts +9 -0
- package/lib/models/context.model.d.ts +9 -0
- package/lib/models/entity.model.d.ts +10 -0
- package/lib/models/fields/attachmentField.model.d.ts +17 -0
- package/lib/models/fields/booleanField.model.d.ts +11 -0
- package/lib/models/fields/dateField.model.d.ts +12 -0
- package/lib/models/fields/imageField.model.d.ts +10 -0
- package/lib/models/fields/listValueField.model.d.ts +21 -0
- package/lib/models/fields/lookupField.model.d.ts +10 -0
- package/lib/models/fields/numericField.model.d.ts +9 -0
- package/lib/models/fields/testareaField.model.d.ts +7 -0
- package/lib/models/fields/textField.model.d.ts +7 -0
- package/lib/models/form.model.d.ts +45 -0
- package/lib/models/record.model.d.ts +5 -0
- package/lib/modules/material.module.d.ts +2 -0
- package/lib/services/custom-form-validators.service.d.ts +5 -0
- package/lib/services/eqp-dynamic-module-dialog.service.d.ts +28 -0
- package/lib/services/utilityHelper.services.d.ts +48 -0
- package/package.json +39 -0
- package/public-api.d.ts +35 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ViewChildren } from '@angular/core';
|
|
3
|
+
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
+
import { FieldTypeEnum } from '../../../models/baseField.model';
|
|
5
|
+
import { Record } from '../../../models/record.model';
|
|
6
|
+
var DynamicModuleFieldComponent = /** @class */ (function () {
|
|
7
|
+
function DynamicModuleFieldComponent(dialog) {
|
|
8
|
+
this.dialog = dialog;
|
|
9
|
+
this.recordChange = new EventEmitter();
|
|
10
|
+
this.FieldTypeEnum = FieldTypeEnum;
|
|
11
|
+
this.onlyViewInnerFormRecord = false;
|
|
12
|
+
}
|
|
13
|
+
DynamicModuleFieldComponent.prototype.updateField = function () {
|
|
14
|
+
if (this.fieldTemplate && this.fieldTemplate.length > 0) {
|
|
15
|
+
this.fieldTemplate.forEach(function (f) { return f.updateField(); });
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
DynamicModuleFieldComponent.prototype.ngOnInit = function () {
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Metodo invocato al cambio del valore di ogni proprietà dell'oggetto record.
|
|
22
|
+
* Serve ad aggiornare il valore di tutti i campi che hanno una formula.
|
|
23
|
+
*/
|
|
24
|
+
DynamicModuleFieldComponent.prototype.onRecordChange = function () {
|
|
25
|
+
this.recordChange.emit(this.record);
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Metodo per recuperare una InnerForm a partire dal Field che la rappresenta.
|
|
29
|
+
* @param field Campo a partire dal quale si vuole recuperare la InnerForm.
|
|
30
|
+
* @returns Restituisce un oggetto di tipo Form.
|
|
31
|
+
*/
|
|
32
|
+
DynamicModuleFieldComponent.prototype.getInnerFormFromField = function (field) {
|
|
33
|
+
if (this.form.InnerForms && this.form.InnerForms.find(function (f) { return f.Name == field.Label; })) {
|
|
34
|
+
return this.form.InnerForms.find(function (f) { return f.Name == field.Label; });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Metodo per aprire un dialog in cui aggiungere/modificare/visualizzare un record appartenente
|
|
42
|
+
* a una form di dettaglio.
|
|
43
|
+
* @param record Evento di output del componente list-form-record, contiene il record selezionato e un booleno che indica
|
|
44
|
+
* se l'utente vuole modificare o visualizzare l'elemento selezionato.
|
|
45
|
+
* @param innerForm Contiene la Form di dettaglio dalla quale è stato richiesto il record.
|
|
46
|
+
*/
|
|
47
|
+
DynamicModuleFieldComponent.prototype.onAddViewEditInnerFormRecord = function (record, field) {
|
|
48
|
+
this.selectedInnerForm = this.getInnerFormFromField(field);
|
|
49
|
+
if (record == null) {
|
|
50
|
+
this.selectedInnerFormRecord = new Record();
|
|
51
|
+
this.indexInnerFormRecord = null;
|
|
52
|
+
this.onlyViewInnerFormRecord = false;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.selectedInnerFormRecord = JSON.parse(JSON.stringify(record.record));
|
|
56
|
+
this.indexInnerFormRecord = this.record[field.Name].indexOf(record);
|
|
57
|
+
this.onlyViewInnerFormRecord = record.onlyView;
|
|
58
|
+
}
|
|
59
|
+
this.dialogInnerFormRecordRef = this.dialog.open(this.dialogInnerFormRecord, {
|
|
60
|
+
disableClose: true,
|
|
61
|
+
hasBackdrop: true,
|
|
62
|
+
width: '75%'
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Metodo invocato al salvataggio o alla chiusura del dialog di aggiunta/modifica/visualizzazione
|
|
67
|
+
* di un record di una form di dettaglio.
|
|
68
|
+
* @param record Oggetto restituito dal componente add-form-field (questo qui) contenente il Record
|
|
69
|
+
* aggiornato dall'utente. Se null allora l'utente non ha modificato nulla e ha chiuso il dialog.
|
|
70
|
+
*/
|
|
71
|
+
DynamicModuleFieldComponent.prototype.onSaveInnerFormRecord = function (record) {
|
|
72
|
+
if (record != null) {
|
|
73
|
+
var arrayName = this.selectedInnerForm.Name.split(' ').join('_');
|
|
74
|
+
if (this.indexInnerFormRecord != null && this.indexInnerFormRecord >= 0) {
|
|
75
|
+
this.record[arrayName][this.indexInnerFormRecord] = record;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
if (!this.record[arrayName]) {
|
|
79
|
+
this.record[arrayName] = [];
|
|
80
|
+
}
|
|
81
|
+
this.record[arrayName].push(record);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
this.dialogInnerFormRecordRef.close();
|
|
85
|
+
// Ricarico la tabella dei record per visualizzare le modifiche fatte dall'utente.
|
|
86
|
+
if (this.listInnerFormRecords && this.listInnerFormRecords.length > 0) {
|
|
87
|
+
this.listInnerFormRecords.forEach(function (list) {
|
|
88
|
+
if (list && list.tableRecords) {
|
|
89
|
+
list.tableRecords.reloadDatatable();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
DynamicModuleFieldComponent.ctorParameters = function () { return [
|
|
95
|
+
{ type: MatDialog }
|
|
96
|
+
]; };
|
|
97
|
+
__decorate([
|
|
98
|
+
Input()
|
|
99
|
+
], DynamicModuleFieldComponent.prototype, "field", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
Input()
|
|
102
|
+
], DynamicModuleFieldComponent.prototype, "form", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
Input()
|
|
105
|
+
], DynamicModuleFieldComponent.prototype, "record", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
Output()
|
|
108
|
+
], DynamicModuleFieldComponent.prototype, "recordChange", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
ViewChild('dialogInnerFormRecord', { static: true })
|
|
111
|
+
], DynamicModuleFieldComponent.prototype, "dialogInnerFormRecord", void 0);
|
|
112
|
+
__decorate([
|
|
113
|
+
ViewChildren("fieldTemplate")
|
|
114
|
+
], DynamicModuleFieldComponent.prototype, "fieldTemplate", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
ViewChildren('listInnerFormRecords')
|
|
117
|
+
], DynamicModuleFieldComponent.prototype, "listInnerFormRecords", void 0);
|
|
118
|
+
DynamicModuleFieldComponent = __decorate([
|
|
119
|
+
Component({
|
|
120
|
+
selector: 'dynamic-module-field',
|
|
121
|
+
template: "<text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</text-field-template>\n\n<textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</textarea-field-template>\n\n<boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</boolean-field-template>\n\n<date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</date-field-template>\n\n<numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</numeric-field-template>\n\n<list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</list-value-field-template>\n\n<attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</attachment-field-template>\n\n<image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\"\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\n</image-field-template>\n\n<list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\n [form]=\"getInnerFormFromField(field)\" [values]=\"record[field.Name]\"\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\n</list-form-record>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE/VISUALIZZARE UN RECORD IN UNA FORM DI DETTAGLIO -->\n<ng-template #dialogInnerFormRecord>\n <add-form-record [form]=\"selectedInnerForm\" [record]=\"selectedInnerFormRecord\" [onlyView]=\"onlyViewInnerFormRecord\"\n (saveRecordEvent)=\"onSaveInnerFormRecord($event)\"></add-form-record>\n</ng-template>",
|
|
122
|
+
styles: [""]
|
|
123
|
+
})
|
|
124
|
+
], DynamicModuleFieldComponent);
|
|
125
|
+
return DynamicModuleFieldComponent;
|
|
126
|
+
}());
|
|
127
|
+
export { DynamicModuleFieldComponent };
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVxcHJvamVjdC9lcXAtZHluYW1pYy1tb2R1bGUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcml2YXRlL2R5bmFtaWMtbW9kdWxlLWZpZWxkL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRW5FLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFRdEQ7SUFxQkUscUNBQ1UsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWpCakIsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUxRSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQU05Qiw0QkFBdUIsR0FBWSxLQUFLLENBQUM7SUFVckMsQ0FBQztJQUdMLGlEQUFXLEdBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFmLENBQWUsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELDhDQUFRLEdBQVI7SUFDQSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0RBQWMsR0FBZDtRQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUks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TyxDQUFDLFVBQUEsSUFBSTtnQkFDcEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQkFDckM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7Z0JBeEZpQixTQUFTOztJQXBCbEI7UUFBUixLQUFLLEVBQUU7OERBQWtCO0lBQ2pCO1FBQVIsS0FBSyxFQUFFOzZEQUFZO0lBQ1g7UUFBUixLQUFLLEVBQUU7K0RBQWdCO0lBQ2Q7UUFBVCxNQUFNLEVBQUU7cUVBQWlFO0lBVXBCO1FBQXJELFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4RUFBeUM7SUFHL0Q7UUFBOUIsWUFBWSxDQUFDLGVBQWUsQ0FBQztzRUFBdUQ7SUFDL0M7UUFBckMsWUFBWSxDQUFDLHNCQUFzQixDQUFDOzZFQUEwRDtJQW5CcEYsMkJBQTJCO1FBTHZDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMscWlGQUFvRDs7U0FFckQsQ0FBQztPQUNXLDJCQUEyQixDQStHdkM7SUFBRCxrQ0FBQztDQUFBLEFBL0dELElBK0dDO1NBL0dZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBJQmFzZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9pQmFzZUZpZWxkQ29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlRmllbGQsIEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcbmltcG9ydCB7IExpc3RGb3JtUmVjb3JkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1yZWNvcmRzL2xpc3QtZm9ybS1yZWNvcmQvbGlzdC1mb3JtLXJlY29yZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkeW5hbWljLW1vZHVsZS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY01vZHVsZUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBJQmFzZUZpZWxkQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcblxuICBGaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcblxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgYWdnaXVuZ2VyZS9tb2RpZmljYXJlIGkgcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpb1xuICBzZWxlY3RlZElubmVyRm9ybTogRm9ybTtcbiAgc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQ6IFJlY29yZDtcbiAgaW5kZXhJbm5lckZvcm1SZWNvcmQ6IG51bWJlcjtcbiAgb25seVZpZXdJbm5lckZvcm1SZWNvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlhbG9nSW5uZXJGb3JtUmVjb3JkUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0lubmVyRm9ybVJlY29yZCcsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0lubmVyRm9ybVJlY29yZDogVGVtcGxhdGVSZWY8YW55PjtcbiAgLy8jZW5kcmVnaW9uXG5cbiAgQFZpZXdDaGlsZHJlbihcImZpZWxkVGVtcGxhdGVcIikgZmllbGRUZW1wbGF0ZTogUXVlcnlMaXN0PER5bmFtaWNNb2R1bGVGaWVsZENvbXBvbmVudD47XG4gIEBWaWV3Q2hpbGRyZW4oJ2xpc3RJbm5lckZvcm1SZWNvcmRzJykgbGlzdElubmVyRm9ybVJlY29yZHM6IFF1ZXJ5TGlzdDxMaXN0Rm9ybVJlY29yZENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xuICApIHsgfVxuXG5cbiAgdXBkYXRlRmllbGQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGRUZW1wbGF0ZSAmJiB0aGlzLmZpZWxkVGVtcGxhdGUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5maWVsZFRlbXBsYXRlLmZvckVhY2goZiA9PiBmLnVwZGF0ZUZpZWxkKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBjYW1iaW8gZGVsIHZhbG9yZSBkaSBvZ25pIHByb3ByaWV0w6AgZGVsbCdvZ2dldHRvIHJlY29yZC5cbiAgICogU2VydmUgYWQgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZGkgdHV0dGkgaSBjYW1waSBjaGUgaGFubm8gdW5hIGZvcm11bGEuXG4gICAqL1xuICBvblJlY29yZENoYW5nZSgpIHtcbiAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdW5hIElubmVyRm9ybSBhIHBhcnRpcmUgZGFsIEZpZWxkIGNoZSBsYSByYXBwcmVzZW50YS5cbiAgICogQHBhcmFtIGZpZWxkIENhbXBvIGEgcGFydGlyZSBkYWwgcXVhbGUgc2kgdnVvbGUgcmVjdXBlcmFyZSBsYSBJbm5lckZvcm0uXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIG9nZ2V0dG8gZGkgdGlwbyBGb3JtLlxuICAgKi9cbiAgZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkOiBCYXNlRmllbGQpOiBGb3JtIHtcbiAgICBpZiAodGhpcy5mb3JtLklubmVyRm9ybXMgJiYgdGhpcy5mb3JtLklubmVyRm9ybXMuZmluZChmID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKGYgPT4gZi5OYW1lID09IGZpZWxkLkxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gKiBNZXRvZG8gcGVyIGFwcmlyZSB1biBkaWFsb2cgaW4gY3VpIGFnZ2l1bmdlcmUvbW9kaWZpY2FyZS92aXN1YWxpenphcmUgdW4gcmVjb3JkIGFwcGFydGVuZW50ZVxuICogYSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXG4gKiBAcGFyYW0gcmVjb3JkIEV2ZW50byBkaSBvdXRwdXQgZGVsIGNvbXBvbmVudGUgbGlzdC1mb3JtLXJlY29yZCwgY29udGllbmUgaWwgcmVjb3JkIHNlbGV6aW9uYXRvIGUgdW4gYm9vbGVubyBjaGUgaW5kaWNhIFxuICogc2UgbCd1dGVudGUgdnVvbGUgbW9kaWZpY2FyZSBvIHZpc3VhbGl6emFyZSBsJ2VsZW1lbnRvIHNlbGV6aW9uYXRvLlxuICogQHBhcmFtIGlubmVyRm9ybSBDb250aWVuZSBsYSBGb3JtIGRpIGRldHRhZ2xpbyBkYWxsYSBxdWFsZSDDqCBzdGF0byByaWNoaWVzdG8gaWwgcmVjb3JkLlxuICovXG4gIG9uQWRkVmlld0VkaXRJbm5lckZvcm1SZWNvcmQocmVjb3JkOiB7IHJlY29yZDogUmVjb3JkLCBvbmx5VmlldzogYm9vbGVhbiB9LCBmaWVsZDogQmFzZUZpZWxkKSB7XG4gICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybSA9IHRoaXMuZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkKTtcbiAgICBpZiAocmVjb3JkID09IG51bGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQgPSBuZXcgUmVjb3JkKCk7XG4gICAgICB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID0gbnVsbDtcbiAgICAgIHRoaXMub25seVZpZXdJbm5lckZvcm1SZWNvcmQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybVJlY29yZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVjb3JkLnJlY29yZCkpO1xuICAgICAgdGhpcy5pbmRleElubmVyRm9ybVJlY29yZCA9IHRoaXMucmVjb3JkW2ZpZWxkLk5hbWVdLmluZGV4T2YocmVjb3JkKTtcbiAgICAgIHRoaXMub25seVZpZXdJbm5lckZvcm1SZWNvcmQgPSByZWNvcmQub25seVZpZXc7XG4gICAgfVxuXG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVjb3JkLCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHdpZHRoOiAnNzUlJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBzYWx2YXRhZ2dpbyBvIGFsbGEgY2hpdXN1cmEgZGVsIGRpYWxvZyBkaSBhZ2dpdW50YS9tb2RpZmljYS92aXN1YWxpenphemlvbmVcbiAgICogZGkgdW4gcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpby5cbiAgICogQHBhcmFtIHJlY29yZCBPZ2dldHRvIHJlc3RpdHVpdG8gZGFsIGNvbXBvbmVudGUgYWRkLWZvcm0tZmllbGQgKHF1ZXN0byBxdWkpIGNvbnRlbmVudGUgaWwgUmVjb3JkIFxuICAgKiBhZ2dpb3JuYXRvIGRhbGwndXRlbnRlLiBTZSBudWxsIGFsbG9yYSBsJ3V0ZW50ZSBub24gaGEgbW9kaWZpY2F0byBudWxsYSBlIGhhIGNoaXVzbyBpbCBkaWFsb2cuXG4gICAqL1xuICBvblNhdmVJbm5lckZvcm1SZWNvcmQocmVjb3JkOiBSZWNvcmQpIHtcbiAgICBpZiAocmVjb3JkICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGFycmF5TmFtZTogc3RyaW5nID0gdGhpcy5zZWxlY3RlZElubmVyRm9ybS5OYW1lLnNwbGl0KCcgJykuam9pbignXycpO1xuICAgICAgaWYgKHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgIT0gbnVsbCAmJiB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID49IDApIHtcbiAgICAgICAgdGhpcy5yZWNvcmRbYXJyYXlOYW1lXVt0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkXSA9IHJlY29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5yZWNvcmRbYXJyYXlOYW1lXSkge1xuICAgICAgICAgIHRoaXMucmVjb3JkW2FycmF5TmFtZV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdLnB1c2gocmVjb3JkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmRSZWYuY2xvc2UoKTtcblxuICAgIC8vIFJpY2FyaWNvIGxhIHRhYmVsbGEgZGVpIHJlY29yZCBwZXIgdmlzdWFsaXp6YXJlIGxlIG1vZGlmaWNoZSBmYXR0ZSBkYWxsJ3V0ZW50ZS5cbiAgICBpZiAodGhpcy5saXN0SW5uZXJGb3JtUmVjb3JkcyAmJiB0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGlzdElubmVyRm9ybVJlY29yZHMuZm9yRWFjaChsaXN0ID0+IHtcbiAgICAgICAgaWYgKGxpc3QgJiYgbGlzdC50YWJsZVJlY29yZHMpIHtcbiAgICAgICAgICBsaXN0LnRhYmxlUmVjb3Jkcy5yZWxvYWREYXRhdGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';
|
|
3
|
+
import { AvailableFileExtensions, AvailableImageExtensions } from '../../../../models/fields/attachmentField.model';
|
|
4
|
+
import { UtilityHelperService } from '../../../../services/utilityHelper.services';
|
|
5
|
+
import { TypeColumn } from '@eqproject/eqp-table';
|
|
6
|
+
var AttachmentFieldTemplateComponent = /** @class */ (function () {
|
|
7
|
+
//#endregion
|
|
8
|
+
function AttachmentFieldTemplateComponent(utilityService, cdr) {
|
|
9
|
+
this.utilityService = utilityService;
|
|
10
|
+
this.cdr = cdr;
|
|
11
|
+
this.onlyImages = false;
|
|
12
|
+
this.recordChange = new EventEmitter();
|
|
13
|
+
this.metadataFormGroups = new Array();
|
|
14
|
+
//#region Etichette per eqp-attachments
|
|
15
|
+
this.previewLabel = "Anteprima";
|
|
16
|
+
this.emptyTableMessage = "No record found";
|
|
17
|
+
this.downloadTooltipPosition = "below";
|
|
18
|
+
this.openLinkLabel = "Apri link";
|
|
19
|
+
this.addButtonLabel = "Aggiungi";
|
|
20
|
+
this.downloadLabel = "Download";
|
|
21
|
+
this.deleteLabel = "Elimina";
|
|
22
|
+
this.fileNameLabel = "Nome file";
|
|
23
|
+
this.uploadFileLabel = "Carica file";
|
|
24
|
+
this.confirmLabel = "Conferma";
|
|
25
|
+
this.abortLabel = "Annulla";
|
|
26
|
+
this.saveLabel = "Salva";
|
|
27
|
+
this.exitLabel = "Esci";
|
|
28
|
+
this.eqpTableSearchText = "Cerca...";
|
|
29
|
+
this.deleteDialogTitle = "Attenzione:";
|
|
30
|
+
this.deleteDialogMessage = "Sicuro di voler eliminare questo allegato?";
|
|
31
|
+
this.noImageSelectedErrorMessage = "Nessuna immagine selezionata!";
|
|
32
|
+
}
|
|
33
|
+
AttachmentFieldTemplateComponent.prototype.ngOnInit = function () {
|
|
34
|
+
// Nel caso in cui sono in modifica di un Record aggiorno il valore
|
|
35
|
+
// e il validator del FormControl. Se non viene eseguita questa riga
|
|
36
|
+
// l'utente deve modificare la selezione fatta per aggiornare la form.
|
|
37
|
+
this.setFormControlValue();
|
|
38
|
+
// Sempre nel caso in cui sono in modifica creo i FormGroup che rappresentano
|
|
39
|
+
// gli eventuali metadata degli allegati recuperati.
|
|
40
|
+
this.createMetadataFormGroups();
|
|
41
|
+
if (this.field.MetadataFields) {
|
|
42
|
+
this.field.MetadataFields.sort(function (a, b) { return (a.OrdinalPosition > b.OrdinalPosition) ? 1 : ((b.OrdinalPosition > a.OrdinalPosition) ? -1 : 0); });
|
|
43
|
+
}
|
|
44
|
+
if (!this.field.AllowedExtensions) {
|
|
45
|
+
this.field.AllowedExtensions = AvailableFileExtensions.concat(AvailableImageExtensions).map(function (ext) { return ext.key; });
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
AttachmentFieldTemplateComponent.prototype.ngAfterViewInit = function () {
|
|
49
|
+
// Dopo aver renderizzato il DOM, se il campo ammette molteplici allegati
|
|
50
|
+
// configuro le colonne della eqp-table in eqp-attachments.
|
|
51
|
+
if (this.field.IsMultiAttach) {
|
|
52
|
+
this.configureMultiAttachmentColumns();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
AttachmentFieldTemplateComponent.prototype.ngOnChanges = function (changes) {
|
|
56
|
+
// Se viene modificato il valore di "ngModelInput" allora aggiorna l'input
|
|
57
|
+
if (changes['record'] != undefined && changes['record'].firstChange == false && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
|
|
58
|
+
this.record = changes['record'].currentValue;
|
|
59
|
+
this.updateField();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
|
|
64
|
+
*/
|
|
65
|
+
AttachmentFieldTemplateComponent.prototype.updateField = function () {
|
|
66
|
+
if (this.field.Formula) {
|
|
67
|
+
this.record[this.field.Name] = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Metodo per intercettare le modifiche agli allegati caricati.
|
|
72
|
+
* Se il campo prevede dei metadata allora per ogni allegato caricato crea un FormGroup
|
|
73
|
+
* per gestire la validazione degli input che l'utente può/deve riempire. I FormGroup
|
|
74
|
+
* seguono lo stesso ordine degli allegati caricati.
|
|
75
|
+
* @param event Contiene la lista aggiornata degli Attachment caricati dall'utente.
|
|
76
|
+
*/
|
|
77
|
+
AttachmentFieldTemplateComponent.prototype.catchAttachmentList = function (event) {
|
|
78
|
+
this.record[this.field.Name] = event;
|
|
79
|
+
this.createMetadataFormGroups();
|
|
80
|
+
this.setFormControlValue();
|
|
81
|
+
this.onRecordValueChange();
|
|
82
|
+
this.cdr.detectChanges();
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Metodo per aggiornare lo stato di validazione del FormControl che rappresenta
|
|
86
|
+
* il campo Allegato (non i metadata al suo interno). Se tra le form dei metadata
|
|
87
|
+
* ne trova una invalida allora marca il controllo come invalido.
|
|
88
|
+
*/
|
|
89
|
+
AttachmentFieldTemplateComponent.prototype.updateMetadataValidity = function () {
|
|
90
|
+
if (this.metadataFormGroups.find(function (form) { return form.invalid; })) {
|
|
91
|
+
this.field.FormFormGroup.controls[this.field.Name].setErrors({ 'incorrect': true });
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.field.FormFormGroup.controls[this.field.Name].setErrors(null);
|
|
95
|
+
}
|
|
96
|
+
this.onRecordValueChange();
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Metodo per recuperare il BaseField che rappresenta il metadata nella riga della eqp-table
|
|
100
|
+
* in base alla colonna e alla riga. Una volta trovato il BaseField gli viene associato il
|
|
101
|
+
* FormGroup di cui fa parte.
|
|
102
|
+
* @param col Colonna della eqp-table.
|
|
103
|
+
* @param row Riga della eqp-table (in questo caso eredita da IAttachment).
|
|
104
|
+
* @returns Restituisce un BaseField per renderizzare il campo nella eqp-table degli allegati multipli.
|
|
105
|
+
*/
|
|
106
|
+
AttachmentFieldTemplateComponent.prototype.getFieldFromMetadata = function (col, row) {
|
|
107
|
+
var baseField = JSON.parse(JSON.stringify(this.field.MetadataFields.find(function (metadata) { return metadata.Name === col.key; })));
|
|
108
|
+
baseField.FormFormGroup = this.metadataFormGroups[this.record[this.field.Name].indexOf(row)];
|
|
109
|
+
return baseField;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Metodo per aggiornare il valore e il validator del FormControl associato al campo.
|
|
113
|
+
*/
|
|
114
|
+
AttachmentFieldTemplateComponent.prototype.setFormControlValue = function () {
|
|
115
|
+
this.field.FormFormGroup.controls[this.field.Name].setValue(this.record[this.field.Name]);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
119
|
+
*/
|
|
120
|
+
AttachmentFieldTemplateComponent.prototype.onRecordValueChange = function () {
|
|
121
|
+
if (!this.field.Formula) {
|
|
122
|
+
this.recordChange.emit(this.record);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Metodo per aggiungere alle colonne di eqp-attachments le colonne per modificare i metadata
|
|
127
|
+
* configurati per il campo Allegato o Immagine.
|
|
128
|
+
*/
|
|
129
|
+
AttachmentFieldTemplateComponent.prototype.configureMultiAttachmentColumns = function () {
|
|
130
|
+
var _this = this;
|
|
131
|
+
if (this.eqpAttachments && this.eqpAttachments.attachmentsColumns && this.field.MetadataFields && this.field.MetadataFields.length > 0) {
|
|
132
|
+
this.field.MetadataFields.forEach(function (metadata) {
|
|
133
|
+
_this.eqpAttachments.attachmentsColumns.splice(_this.eqpAttachments.attachmentsColumns.length - 1, 0, { key: metadata.Name, display: metadata.Label, type: TypeColumn.ExternalTemplate, externalTemplate: _this.metadataColumnTemplate });
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Metodo per creare i FormGroup che rappresentano i metadata degli allegati caricati.
|
|
139
|
+
*/
|
|
140
|
+
AttachmentFieldTemplateComponent.prototype.createMetadataFormGroups = function () {
|
|
141
|
+
var _this = this;
|
|
142
|
+
if (this.field.MetadataFields && this.field.MetadataFields.length > 0) {
|
|
143
|
+
this.metadataFormGroups = [];
|
|
144
|
+
if (this.record[this.field.Name] && this.record[this.field.Name].length > 0) {
|
|
145
|
+
this.record[this.field.Name].forEach(function (attachment) {
|
|
146
|
+
_this.metadataFormGroups.push(_this.utilityService.CreateFormFormGroup(_this.field.MetadataFields, attachment, _this.field.FormFormGroup.disabled, !_this.field.IsMultiAttach));
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
this.updateMetadataValidity();
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
AttachmentFieldTemplateComponent.ctorParameters = function () { return [
|
|
153
|
+
{ type: UtilityHelperService },
|
|
154
|
+
{ type: ChangeDetectorRef }
|
|
155
|
+
]; };
|
|
156
|
+
__decorate([
|
|
157
|
+
Input()
|
|
158
|
+
], AttachmentFieldTemplateComponent.prototype, "onlyImages", void 0);
|
|
159
|
+
__decorate([
|
|
160
|
+
Input()
|
|
161
|
+
], AttachmentFieldTemplateComponent.prototype, "field", void 0);
|
|
162
|
+
__decorate([
|
|
163
|
+
Input()
|
|
164
|
+
], AttachmentFieldTemplateComponent.prototype, "record", void 0);
|
|
165
|
+
__decorate([
|
|
166
|
+
Output()
|
|
167
|
+
], AttachmentFieldTemplateComponent.prototype, "recordChange", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
ViewChild("eqpAttachments", { static: true })
|
|
170
|
+
], AttachmentFieldTemplateComponent.prototype, "eqpAttachments", void 0);
|
|
171
|
+
__decorate([
|
|
172
|
+
ViewChild('metadataColumnTemplate', { static: true })
|
|
173
|
+
], AttachmentFieldTemplateComponent.prototype, "metadataColumnTemplate", void 0);
|
|
174
|
+
AttachmentFieldTemplateComponent = __decorate([
|
|
175
|
+
Component({
|
|
176
|
+
selector: 'attachment-field-template',
|
|
177
|
+
template: "<p *ngIf=\"!field.IsMultiAttach\" class=\"mb-2\">\n {{field.Label + (field.Required ? \" *\" : \"\")}}\n</p>\n<div class=\"row\" *ngIf=\"!field.IsMultiAttach && record[field.Name] && record[field.Name][0]\">\n <div class=\"mt-2\" *ngFor=\"let metadata of field.MetadataFields\" [ngClass]=\"utilityService.getFieldSyleClass(metadata)\">\n <dynamic-module-field [field]=\"metadata\" [record]=\"record[field.Name][0]\"\n (recordChange)=\"updateMetadataValidity()\">\n </dynamic-module-field>\n </div>\n</div>\n\n\n\n<eqp-attachments [attachmentsList]=\"record[field.Name]\" [showMatCard]=\"true\" [allowOnlyImages]=\"onlyImages\"\n [isDisabled]=\"field.FormFormGroup.disabled\" [showInlinePreview]=\"true\" [multipleAttachment]=\"field.IsMultiAttach\"\n [disableAction]=\"field.FormFormGroup.disabled\" [acceptedFileTypes]=\"field.AllowedExtensions\" [showHeader]=\"true\"\n [headerTitle]=\"field.Label + (field.Required ? ' *' : '')\" [previewLabel]=\"previewLabel\"\n [emptyTableMessage]=\"emptyTableMessage\" [downloadTooltipPosition]=\"downloadTooltipPosition\"\n [openLinkLabel]=\"openLinkLabel\" [addButtonLabel]=\"addButtonLabel\" [downloadLabel]=\"downloadLabel\"\n [deleteLabel]=\"deleteLabel\" [fileNameLabel]=\"fileNameLabel\" [uploadFileLabel]=\"uploadFileLabel\"\n [confirmLabel]=\"confirmLabel\" [abortLabel]=\"abortLabel\" [saveLabel]=\"saveLabel\" [exitLabel]=\"exitLabel\"\n [eqpTableSearchText]=\"eqpTableSearchText\" [deleteDialogTitle]=\"deleteDialogTitle\"\n [deleteDialogMessage]=\"deleteDialogMessage\" [noImageSelectedErrorMessage]=\"noImageSelectedErrorMessage\"\n (localEditedAttachments)=\"catchAttachmentList($event)\" #eqpAttachments>\n</eqp-attachments>\n\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\n<ng-template #metadataColumnTemplate let-row=\"row\" let-col=\"col\">\n <dynamic-module-field [field]=\"getFieldFromMetadata(col, row)\" [record]=\"row\"\n (recordChange)=\"updateMetadataValidity()\">\n </dynamic-module-field>\n</ng-template>",
|
|
178
|
+
styles: [""]
|
|
179
|
+
})
|
|
180
|
+
], AttachmentFieldTemplateComponent);
|
|
181
|
+
return AttachmentFieldTemplateComponent;
|
|
182
|
+
}());
|
|
183
|
+
export { AttachmentFieldTemplateComponent };
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZXFwcm9qZWN0L2VxcC1keW5hbWljLW1vZHVsZS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2F0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUvYXR0YWNobWVudC1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkssT0FBTyxFQUFtQix1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXJJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBR25GLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPaEU7SUE4QkUsWUFBWTtJQUVaLDBDQUNTLGNBQW9DLEVBQ25DLEdBQXNCO1FBRHZCLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUNuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWhDdkIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUczQixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBSzFFLHVCQUFrQixHQUFxQixJQUFJLEtBQUssRUFBYSxDQUFDO1FBRTlELHVDQUF1QztRQUN2QyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQixzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUN0Qyw0QkFBdUIsR0FBRyxPQUFPLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxXQUFXLENBQUM7UUFDNUIsbUJBQWMsR0FBRyxVQUFVLENBQUM7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OzBFQUFpRTtJQUUzQjtRQUE5QyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7NEVBQXlDO0lBQ2hDO1FBQXRELFNBQVMsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztvRkFBMEM7SUFSckYsZ0NBQWdDO1FBTDVDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSwyQkFBMkI7WUFDckMscWpFQUF5RDs7U0FFMUQsQ0FBQztPQUNXLGdDQUFnQyxDQTRLNUM7SUFBRCx1Q0FBQztDQUFBLEFBNUtELElBNEtDO1NBNUtZLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWVsZCwgQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMsIEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvYXR0YWNobWVudEZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgSUJhc2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaUJhc2VGaWVsZENvbXBvbmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFcXBBdHRhY2htZW50c0NvbXBvbmVudCB9IGZyb20gJ0BlcXByb2plY3QvZXFwLWF0dGFjaG1lbnRzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb25maWdDb2x1bW4sIFR5cGVDb2x1bW4gfSBmcm9tICdAZXFwcm9qZWN0L2VxcC10YWJsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRGaWVsZFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIElCYXNlRmllbGRDb21wb25lbnQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKSBvbmx5SW1hZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmllbGQ6IEF0dGFjaG1lbnRGaWVsZDtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBAT3V0cHV0KCkgcmVjb3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiZXFwQXR0YWNobWVudHNcIiwgeyBzdGF0aWM6IHRydWUgfSkgZXFwQXR0YWNobWVudHM6IEVxcEF0dGFjaG1lbnRzQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ21ldGFkYXRhQ29sdW1uVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZXRhZGF0YUNvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBtZXRhZGF0YUZvcm1Hcm91cHM6IEFycmF5PEZvcm1Hcm91cD4gPSBuZXcgQXJyYXk8Rm9ybUdyb3VwPigpO1xyXG5cclxuICAvLyNyZWdpb24gRXRpY2hldHRlIHBlciBlcXAtYXR0YWNobWVudHNcclxuICBwcmV2aWV3TGFiZWwgPSBcIkFudGVwcmltYVwiO1xyXG4gIGVtcHR5VGFibGVNZXNzYWdlID0gXCJObyByZWNvcmQgZm91bmRcIjtcclxuICBkb3dubG9hZFRvb2x0aXBQb3NpdGlvbiA9IFwiYmVsb3dcIjtcclxuICBvcGVuTGlua0xhYmVsID0gXCJBcHJpIGxpbmtcIjtcclxuICBhZGRCdXR0b25MYWJlbCA9IFwiQWdnaXVuZ2lcIjtcclxuICBkb3dubG9hZExhYmVsID0gXCJEb3dubG9hZFwiO1xyXG4gIGRlbGV0ZUxhYmVsID0gXCJFbGltaW5hXCI7XHJcbiAgZmlsZU5hbWVMYWJlbCA9IFwiTm9tZSBmaWxlXCI7XHJcbiAgdXBsb2FkRmlsZUxhYmVsID0gXCJDYXJpY2EgZmlsZVwiO1xyXG4gIGNvbmZpcm1MYWJlbCA9IFwiQ29uZmVybWFcIjtcclxuICBhYm9ydExhYmVsID0gXCJBbm51bGxhXCI7XHJcbiAgc2F2ZUxhYmVsID0gXCJTYWx2YVwiO1xyXG4gIGV4aXRMYWJlbCA9IFwiRXNjaVwiO1xyXG4gIGVxcFRhYmxlU2VhcmNoVGV4dCA9IFwiQ2VyY2EuLi5cIjtcclxuICBkZWxldGVEaWFsb2dUaXRsZSA9IFwiQXR0ZW56aW9uZTpcIjtcclxuICBkZWxldGVEaWFsb2dNZXNzYWdlID0gXCJTaWN1cm8gZGkgdm9sZXIgZWxpbWluYXJlIHF1ZXN0byBhbGxlZ2F0bz9cIjtcclxuICBub0ltYWdlU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBcIk5lc3N1bmEgaW1tYWdpbmUgc2VsZXppb25hdGEhXCI7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gTmVsIGNhc28gaW4gY3VpIHNvbm8gaW4gbW9kaWZpY2EgZGkgdW4gUmVjb3JkIGFnZ2lvcm5vIGlsIHZhbG9yZVxyXG4gICAgLy8gZSBpbCB2YWxpZGF0b3IgZGVsIEZvcm1Db250cm9sLiBTZSBub24gdmllbmUgZXNlZ3VpdGEgcXVlc3RhIHJpZ2FcclxuICAgIC8vIGwndXRlbnRlIGRldmUgbW9kaWZpY2FyZSBsYSBzZWxlemlvbmUgZmF0dGEgcGVyIGFnZ2lvcm5hcmUgbGEgZm9ybS5cclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xyXG5cclxuICAgIC8vIFNlbXByZSBuZWwgY2FzbyBpbiBjdWkgc29ubyBpbiBtb2RpZmljYSBjcmVvIGkgRm9ybUdyb3VwIGNoZSByYXBwcmVzZW50YW5vXHJcbiAgICAvLyBnbGkgZXZlbnR1YWxpIG1ldGFkYXRhIGRlZ2xpIGFsbGVnYXRpIHJlY3VwZXJhdGkuXHJcbiAgICB0aGlzLmNyZWF0ZU1ldGFkYXRhRm9ybUdyb3VwcygpO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuTWV0YWRhdGFGaWVsZHMpIHtcclxuICAgICAgdGhpcy5maWVsZC5NZXRhZGF0YUZpZWxkcy5zb3J0KChhLCBiKSA9PiAoYS5PcmRpbmFsUG9zaXRpb24gPiBiLk9yZGluYWxQb3NpdGlvbikgPyAxIDogKChiLk9yZGluYWxQb3NpdGlvbiA+IGEuT3JkaW5hbFBvc2l0aW9uKSA/IC0xIDogMCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5maWVsZC5BbGxvd2VkRXh0ZW5zaW9ucykge1xyXG4gICAgICB0aGlzLmZpZWxkLkFsbG93ZWRFeHRlbnNpb25zID0gQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMuY29uY2F0KEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucykubWFwKGV4dCA9PiBleHQua2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIERvcG8gYXZlciByZW5kZXJpenphdG8gaWwgRE9NLCBzZSBpbCBjYW1wbyBhbW1ldHRlIG1vbHRlcGxpY2kgYWxsZWdhdGlcclxuICAgIC8vIGNvbmZpZ3VybyBsZSBjb2xvbm5lIGRlbGxhIGVxcC10YWJsZSBpbiBlcXAtYXR0YWNobWVudHMuXHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQXR0YWNoKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJlTXVsdGlBdHRhY2htZW50Q29sdW1ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgLy8gU2UgdmllbmUgbW9kaWZpY2F0byBpbCB2YWxvcmUgZGkgXCJuZ01vZGVsSW5wdXRcIiBhbGxvcmEgYWdnaW9ybmEgbCdpbnB1dFxyXG4gICAgaWYgKGNoYW5nZXNbJ3JlY29yZCddICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydyZWNvcmQnXS5maXJzdENoYW5nZSA9PSBmYWxzZSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydyZWNvcmQnXS5jdXJyZW50VmFsdWUpICE9IEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3JlY29yZCddLnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkID0gY2hhbmdlc1sncmVjb3JkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBxdWFuZG8gcXVlc3RvIMOoIHJhcHByZXNlbnRhdG8gZGEgdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgdXBkYXRlRmllbGQoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5Gb3JtdWxhKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW50ZXJjZXR0YXJlIGxlIG1vZGlmaWNoZSBhZ2xpIGFsbGVnYXRpIGNhcmljYXRpLlxyXG4gICAqIFNlIGlsIGNhbXBvIHByZXZlZGUgZGVpIG1ldGFkYXRhIGFsbG9yYSBwZXIgb2duaSBhbGxlZ2F0byBjYXJpY2F0byBjcmVhIHVuIEZvcm1Hcm91cFxyXG4gICAqIHBlciBnZXN0aXJlIGxhIHZhbGlkYXppb25lIGRlZ2xpIGlucHV0IGNoZSBsJ3V0ZW50ZSBwdcOyL2RldmUgcmllbXBpcmUuIEkgRm9ybUdyb3VwIFxyXG4gICAqIHNlZ3Vvbm8gbG8gc3Rlc3NvIG9yZGluZSBkZWdsaSBhbGxlZ2F0aSBjYXJpY2F0aS5cclxuICAgKiBAcGFyYW0gZXZlbnQgQ29udGllbmUgbGEgbGlzdGEgYWdnaW9ybmF0YSBkZWdsaSBBdHRhY2htZW50IGNhcmljYXRpIGRhbGwndXRlbnRlLlxyXG4gICAqL1xyXG4gIGNhdGNoQXR0YWNobWVudExpc3QoZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBldmVudDtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZU1ldGFkYXRhRm9ybUdyb3VwcygpO1xyXG5cclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xyXG4gICAgdGhpcy5vblJlY29yZFZhbHVlQ2hhbmdlKCk7XHJcbiAgICBcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYWdnaW9ybmFyZSBsbyBzdGF0byBkaSB2YWxpZGF6aW9uZSBkZWwgRm9ybUNvbnRyb2wgY2hlIHJhcHByZXNlbnRhIFxyXG4gICAqIGlsIGNhbXBvIEFsbGVnYXRvIChub24gaSBtZXRhZGF0YSBhbCBzdW8gaW50ZXJubykuIFNlIHRyYSBsZSBmb3JtIGRlaSBtZXRhZGF0YVxyXG4gICAqIG5lIHRyb3ZhIHVuYSBpbnZhbGlkYSBhbGxvcmEgbWFyY2EgaWwgY29udHJvbGxvIGNvbWUgaW52YWxpZG8uXHJcbiAgICovXHJcbiAgdXBkYXRlTWV0YWRhdGFWYWxpZGl0eSgpIHtcclxuICAgIGlmICh0aGlzLm1ldGFkYXRhRm9ybUdyb3Vwcy5maW5kKGZvcm0gPT4gZm9ybS5pbnZhbGlkKSkge1xyXG4gICAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5OYW1lXS5zZXRFcnJvcnMoeyAnaW5jb3JyZWN0JzogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZpZWxkLk5hbWVdLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICAgIHRoaXMub25SZWNvcmRWYWx1ZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByZWN1cGVyYXJlIGlsIEJhc2VGaWVsZCBjaGUgcmFwcHJlc2VudGEgaWwgbWV0YWRhdGEgbmVsbGEgcmlnYSBkZWxsYSBlcXAtdGFibGVcclxuICAgKiBpbiBiYXNlIGFsbGEgY29sb25uYSBlIGFsbGEgcmlnYS4gVW5hIHZvbHRhIHRyb3ZhdG8gaWwgQmFzZUZpZWxkIGdsaSB2aWVuZSBhc3NvY2lhdG8gaWwgXHJcbiAgICogRm9ybUdyb3VwIGRpIGN1aSBmYSBwYXJ0ZS5cclxuICAgKiBAcGFyYW0gY29sIENvbG9ubmEgZGVsbGEgZXFwLXRhYmxlLlxyXG4gICAqIEBwYXJhbSByb3cgUmlnYSBkZWxsYSBlcXAtdGFibGUgKGluIHF1ZXN0byBjYXNvIGVyZWRpdGEgZGEgSUF0dGFjaG1lbnQpLlxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIEJhc2VGaWVsZCBwZXIgcmVuZGVyaXp6YXJlIGlsIGNhbXBvIG5lbGxhIGVxcC10YWJsZSBkZWdsaSBhbGxlZ2F0aSBtdWx0aXBsaS5cclxuICAgKi9cclxuICBnZXRGaWVsZEZyb21NZXRhZGF0YShjb2w6IENvbmZpZ0NvbHVtbiwgcm93OiBhbnkpIHtcclxuICAgIHZhciBiYXNlRmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZmllbGQuTWV0YWRhdGFGaWVsZHMuZmluZChtZXRhZGF0YSA9PiBtZXRhZGF0YS5OYW1lID09PSBjb2wua2V5KSkpO1xyXG4gICAgYmFzZUZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLm1ldGFkYXRhRm9ybUdyb3Vwc1t0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmluZGV4T2Yocm93KV07XHJcbiAgICByZXR1cm4gYmFzZUZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhZ2dpb3JuYXJlIGlsIHZhbG9yZSBlIGlsIHZhbGlkYXRvciBkZWwgRm9ybUNvbnRyb2wgYXNzb2NpYXRvIGFsIGNhbXBvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpIHtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZpZWxkLk5hbWVdLnNldFZhbHVlKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBlbWV0dGVyZSBsJ2V2ZW50byBjaGUgaWwgdmFsb3JlIGRlbCByZWNvcmQgw6ggY2FtYmlhdG8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvblJlY29yZFZhbHVlQ2hhbmdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2l1bmdlcmUgYWxsZSBjb2xvbm5lIGRpIGVxcC1hdHRhY2htZW50cyBsZSBjb2xvbm5lIHBlciBtb2RpZmljYXJlIGkgbWV0YWRhdGFcclxuICAgKiBjb25maWd1cmF0aSBwZXIgaWwgY2FtcG8gQWxsZWdhdG8gbyBJbW1hZ2luZS5cclxuICAgKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZU11bHRpQXR0YWNobWVudENvbHVtbnMoKSB7XHJcbiAgICBpZiAodGhpcy5lcXBBdHRhY2htZW50cyAmJiB0aGlzLmVxcEF0dGFjaG1lbnRzLmF0dGFjaG1lbnRzQ29sdW1ucyAmJiB0aGlzLmZpZWxkLk1ldGFkYXRhRmllbGRzICYmIHRoaXMuZmllbGQuTWV0YWRhdGFGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpZWxkLk1ldGFkYXRhRmllbGRzLmZvckVhY2gobWV0YWRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMuZXFwQXR0YWNobWVudHMuYXR0YWNobWVudHNDb2x1bW5zLnNwbGljZShcclxuICAgICAgICAgIHRoaXMuZXFwQXR0YWNobWVudHMuYXR0YWNobWVudHNDb2x1bW5zLmxlbmd0aCAtIDEsIDAsXHJcbiAgICAgICAgICB7IGtleTogbWV0YWRhdGEuTmFtZSwgZGlzcGxheTogbWV0YWRhdGEuTGFiZWwsIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSwgZXh0ZXJuYWxUZW1wbGF0ZTogdGhpcy5tZXRhZGF0YUNvbHVtblRlbXBsYXRlIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIGkgRm9ybUdyb3VwIGNoZSByYXBwcmVzZW50YW5vIGkgbWV0YWRhdGEgZGVnbGkgYWxsZWdhdGkgY2FyaWNhdGkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVNZXRhZGF0YUZvcm1Hcm91cHMoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5NZXRhZGF0YUZpZWxkcyAmJiB0aGlzLmZpZWxkLk1ldGFkYXRhRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5tZXRhZGF0YUZvcm1Hcm91cHMgPSBbXTtcclxuICAgICAgaWYgKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5mb3JFYWNoKGF0dGFjaG1lbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZXRhZGF0YUZvcm1Hcm91cHMucHVzaCh0aGlzLnV0aWxpdHlTZXJ2aWNlLkNyZWF0ZUZvcm1Gb3JtR3JvdXAodGhpcy5maWVsZC5NZXRhZGF0YUZpZWxkcywgYXR0YWNobWVudCwgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwLmRpc2FibGVkLCAhdGhpcy5maWVsZC5Jc011bHRpQXR0YWNoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlTWV0YWRhdGFWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { BoolPresentantioEnum } from '../../../../models/fields/booleanField.model';
|
|
4
|
+
import { UtilityHelperService } from '../../../../services/utilityHelper.services';
|
|
5
|
+
var BooleanFieldTemplateComponent = /** @class */ (function () {
|
|
6
|
+
function BooleanFieldTemplateComponent() {
|
|
7
|
+
this.recordChange = new EventEmitter();
|
|
8
|
+
this.BoolPresentantioEnum = BoolPresentantioEnum;
|
|
9
|
+
}
|
|
10
|
+
BooleanFieldTemplateComponent.prototype.ngOnInit = function () {
|
|
11
|
+
if (this.record[this.field.Name] == undefined || this.record[this.field.Name] == null) {
|
|
12
|
+
this.record[this.field.Name] = this.field.IsTristate ? null : false;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
BooleanFieldTemplateComponent.prototype.ngOnChanges = function (changes) {
|
|
16
|
+
// Se viene modificato il valore di "ngModelInput" allora aggiorna l'input
|
|
17
|
+
if (changes['record'] != undefined && changes['record'].firstChange == false && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
|
|
18
|
+
this.record = changes['record'].currentValue;
|
|
19
|
+
this.updateField();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
|
|
24
|
+
*/
|
|
25
|
+
BooleanFieldTemplateComponent.prototype.updateField = function () {
|
|
26
|
+
if (this.field.Formula) {
|
|
27
|
+
this.record[this.field.Name] = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
32
|
+
*/
|
|
33
|
+
BooleanFieldTemplateComponent.prototype.onRecordValueChange = function () {
|
|
34
|
+
if (!this.field.Formula) {
|
|
35
|
+
this.recordChange.emit(this.record);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
__decorate([
|
|
39
|
+
Input()
|
|
40
|
+
], BooleanFieldTemplateComponent.prototype, "field", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
Input()
|
|
43
|
+
], BooleanFieldTemplateComponent.prototype, "record", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
Output()
|
|
46
|
+
], BooleanFieldTemplateComponent.prototype, "recordChange", void 0);
|
|
47
|
+
BooleanFieldTemplateComponent = __decorate([
|
|
48
|
+
Component({
|
|
49
|
+
selector: 'boolean-field-template',
|
|
50
|
+
template: "<div [formGroup]=\"field.FormFormGroup\">\n\n <!-- VISUALIZZAZIONE A TOGGLE -->\n <mat-slide-toggle color=\"primary\" *ngIf=\"field.PresetationType == BoolPresentantioEnum.Toggle\"\n [formControlName]=\"field.Name\" [disabled]=\"field.FormFormGroup.disabled\" [required]=\"field.Required\"\n [(ngModel)]=\"record[field.Name]\" (ngModelChange)=\"onRecordValueChange()\">\n {{field.Label + (field.Required ? \" *\" : \"\")}}\n </mat-slide-toggle>\n\n\n <!-- VISUALIZZAZIONE A RADIOBUTTON -->\n <mat-label class=\"mr-3\" *ngIf=\"field.PresetationType == BoolPresentantioEnum['Radio button']\">\n {{field.Label + (field.Required ? \" *\" : \"\")}}\n </mat-label>\n <mat-radio-group *ngIf=\"field.PresetationType == BoolPresentantioEnum['Radio button']\"\n [formControlName]=\"field.Name\" [disabled]=\"field.FormFormGroup.disabled\" [required]=\"field.Required\"\n [(ngModel)]=\"record[field.Name]\" (ngModelChange)=\"onRecordValueChange()\">\n <mat-radio-button class=\"mr-2\" [value]=\"true\" color=\"primary\"> Si </mat-radio-button>\n <mat-radio-button class=\"mr-2\" [value]=\"false\" color=\"primary\"> No </mat-radio-button>\n <mat-radio-button class=\"mr-2\" [value]=\"null\" color=\"primary\" *ngIf=\"field.IsTristate\"> ND\n </mat-radio-button>\n </mat-radio-group>\n\n <!-- VISUALIZZAZIONE A CHECKBOX -->\n <mat-checkbox class=\"mr-2\" *ngIf=\"field.PresetationType == BoolPresentantioEnum.Checkbox\"\n [disabled]=\"field.FormFormGroup.disabled\" [required]=\"field.Required\" [formControlName]=\"field.Name\"\n [(ngModel)]=\"record[field.Name]\" (ngModelChange)=\"onRecordValueChange()\">\n {{field.Label + (field.Required ? \" *\" : \"\")}}\n </mat-checkbox>\n\n <!-- TODO: Visualizzazione \"Stringa true o false\" e \"Numerico 0 o 1\" ?? -->\n</div>",
|
|
51
|
+
styles: [""]
|
|
52
|
+
})
|
|
53
|
+
], BooleanFieldTemplateComponent);
|
|
54
|
+
return BooleanFieldTemplateComponent;
|
|
55
|
+
}());
|
|
56
|
+
export { BooleanFieldTemplateComponent };
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZXFwcm9qZWN0L2VxcC1keW5hbWljLW1vZHVsZS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2Jvb2xlYW4tZmllbGQtdGVtcGxhdGUvYm9vbGVhbi1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQWdCLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFbEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFPbkY7SUFRRTtRQUpVLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUUseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFFNUIsQ0FBQztJQUVqQixnREFBUSxHQUFSO1FBQ0UsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNyRTtJQUNILENBQUM7SUFFRCxtREFBVyxHQUFYLFVBQVksT0FBc0I7UUFDaEMsMEVBQTBFO1FBQzFFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNqTCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbURBQVcsR0FBWDtRQUNFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakg7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCwyREFBbUIsR0FBbkI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQXRDUTtRQUFSLEtBQUssRUFBRTtnRUFBcUI7SUFDcEI7UUFBUixLQUFLLEVBQUU7aUVBQWdCO0lBQ2Q7UUFBVCxNQUFNLEVBQUU7dUVBQWlFO0lBSi9ELDZCQUE2QjtRQUx6QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLDAyREFBc0Q7O1NBRXZELENBQUM7T0FDVyw2QkFBNkIsQ0F5Q3pDO0lBQUQsb0NBQUM7Q0FBQSxBQXpDRCxJQXlDQztTQXpDWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IEJvb2xlYW5GaWVsZCwgQm9vbFByZXNlbnRhbnRpb0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2Jvb2xlYW5GaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IElCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2lCYXNlRmllbGRDb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm9vbGVhbi1maWVsZC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb2xlYW4tZmllbGQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Jvb2xlYW4tZmllbGQtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm9vbGVhbkZpZWxkVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBCb29sZWFuRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuXHJcbiAgQm9vbFByZXNlbnRhbnRpb0VudW0gPSBCb29sUHJlc2VudGFudGlvRW51bTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9PSB1bmRlZmluZWQgfHwgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB0aGlzLmZpZWxkLklzVHJpc3RhdGUgPyBudWxsIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBTZSB2aWVuZSBtb2RpZmljYXRvIGlsIHZhbG9yZSBkaSBcIm5nTW9kZWxJbnB1dFwiIGFsbG9yYSBhZ2dpb3JuYSBsJ2lucHV0XHJcbiAgICBpZiAoY2hhbmdlc1sncmVjb3JkJ10gIT0gdW5kZWZpbmVkICYmIGNoYW5nZXNbJ3JlY29yZCddLmZpcnN0Q2hhbmdlID09IGZhbHNlICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3JlY29yZCddLmN1cnJlbnRWYWx1ZSkgIT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1sncmVjb3JkJ10ucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5yZWNvcmQgPSBjaGFuZ2VzWydyZWNvcmQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlRmllbGQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZGVsIGNhbXBvIHF1YW5kbyBxdWVzdG8gw6ggcmFwcHJlc2VudGF0byBkYSB1bmEgZm9ybXVsYS5cclxuICAgKi9cclxuICB1cGRhdGVGaWVsZCgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBlbWV0dGVyZSBsJ2V2ZW50byBjaGUgaWwgdmFsb3JlIGRlbCByZWNvcmQgw6ggY2FtYmlhdG8uXHJcbiAgICovXHJcbiAgb25SZWNvcmRWYWx1ZUNoYW5nZSgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZC5Gb3JtdWxhKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5yZWNvcmQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { PickerModeEnum } from '@eqproject/eqp-datetimepicker';
|
|
4
|
+
import { DateTimeTypeEnum } from '../../../../models/fields/dateField.model';
|
|
5
|
+
import { UtilityHelperService } from '../../../../services/utilityHelper.services';
|
|
6
|
+
var DateFieldTemplateComponent = /** @class */ (function () {
|
|
7
|
+
function DateFieldTemplateComponent() {
|
|
8
|
+
this.recordChange = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
DateFieldTemplateComponent.prototype.ngOnInit = function () {
|
|
11
|
+
this.setTimeType();
|
|
12
|
+
};
|
|
13
|
+
DateFieldTemplateComponent.prototype.ngOnChanges = function (changes) {
|
|
14
|
+
// Se viene modificato il valore di "ngModelInput" allora aggiorna l'input
|
|
15
|
+
if (changes['record'] != undefined && changes['record'].firstChange == false && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
|
|
16
|
+
this.record = changes['record'].currentValue;
|
|
17
|
+
this.updateField();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
|
|
22
|
+
*/
|
|
23
|
+
DateFieldTemplateComponent.prototype.updateField = function () {
|
|
24
|
+
if (this.field.Formula) {
|
|
25
|
+
this.record[this.field.Name] = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
30
|
+
*/
|
|
31
|
+
DateFieldTemplateComponent.prototype.onRecordValueChange = function () {
|
|
32
|
+
if (!this.field.Formula) {
|
|
33
|
+
this.recordChange.emit(this.record);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* In base al formato della data richiesta nel DateField (solo data, solo orario o data e ora)
|
|
38
|
+
* imposta la visualizzazione corretta del componente eqp-datetimepicker.
|
|
39
|
+
*/
|
|
40
|
+
DateFieldTemplateComponent.prototype.setTimeType = function () {
|
|
41
|
+
switch (this.field.IsOnlyDate) {
|
|
42
|
+
case DateTimeTypeEnum["Solo data"]:
|
|
43
|
+
this.pickerMode = PickerModeEnum.DATE;
|
|
44
|
+
break;
|
|
45
|
+
case DateTimeTypeEnum["Solo orario"]:
|
|
46
|
+
this.pickerMode = PickerModeEnum.TIME;
|
|
47
|
+
break;
|
|
48
|
+
case DateTimeTypeEnum["Data e ora"]:
|
|
49
|
+
this.pickerMode = PickerModeEnum.DATETIME;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
__decorate([
|
|
54
|
+
Input()
|
|
55
|
+
], DateFieldTemplateComponent.prototype, "field", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
Input()
|
|
58
|
+
], DateFieldTemplateComponent.prototype, "record", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
Output()
|
|
61
|
+
], DateFieldTemplateComponent.prototype, "recordChange", void 0);
|
|
62
|
+
DateFieldTemplateComponent = __decorate([
|
|
63
|
+
Component({
|
|
64
|
+
selector: 'date-field-template',
|
|
65
|
+
template: "<eqp-datetimepicker [placeholder]=\"field.Label\" [UTCDate]=\"true\" [pickerMode]=\"pickerMode\"\n [formGroupInput]=\"field.FormFormGroup\" [formControlNameInput]=\"field.Name\"\n [minDate]=\"field.MinDate ? field.MinDate : null\" [maxDate]=\"field.MaxDate ? field.MaxDate : null\"\n [isRequired]=\"field.Required\" [disabled]=\"field.FormFormGroup.disabled\" [(ngModelInput)]=\"record[field.Name]\"\n (ngModelInputChange)=\"onRecordValueChange()\">\n</eqp-datetimepicker>",
|
|
66
|
+
styles: [""]
|
|
67
|
+
})
|
|
68
|
+
], DateFieldTemplateComponent);
|
|
69
|
+
return DateFieldTemplateComponent;
|
|
70
|
+
}());
|
|
71
|
+
export { DateFieldTemplateComponent };
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZXFwcm9qZWN0L2VxcC1keW5hbWljLW1vZHVsZS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2RhdGUtZmllbGQtdGVtcGxhdGUvZGF0ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFPbkY7SUFRRTtRQUpVLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFJMUQsQ0FBQztJQUVqQiw2Q0FBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnREFBVyxHQUFYLFVBQVksT0FBc0I7UUFDaEMsMEVBQTBFO1FBQzFFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNqTCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0RBQVcsR0FBWDtRQUNFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakg7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3REFBbUIsR0FBbkI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdEQUFXLEdBQW5CO1FBQ0UsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUM3QixLQUFLLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN0QyxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDdEMsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsWUFBWSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUM7Z0JBQzFDLE1BQU07U0FDVDtJQUNILENBQUM7SUF0RFE7UUFBUixLQUFLLEVBQUU7NkRBQWtCO0lBQ2pCO1FBQVIsS0FBSyxFQUFFOzhEQUFnQjtJQUNkO1FBQVQsTUFBTSxFQUFFO29FQUFpRTtJQUovRCwwQkFBMEI7UUFMdEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixnZkFBbUQ7O1NBRXBELENBQUM7T0FDVywwQkFBMEIsQ0F5RHRDO0lBQUQsaUNBQUM7Q0FBQSxBQXpERCxJQXlEQztTQXpEWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGlja2VyTW9kZUVudW0gfSBmcm9tICdAZXFwcm9qZWN0L2VxcC1kYXRldGltZXBpY2tlcic7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlRmllbGQsIERhdGVUaW1lVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2RhdGVGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IElCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2lCYXNlRmllbGRDb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0ZS1maWVsZC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUZpZWxkVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBEYXRlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuXHJcbiAgcGlja2VyTW9kZTogUGlja2VyTW9kZUVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRUaW1lVHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgLy8gU2UgdmllbmUgbW9kaWZpY2F0byBpbCB2YWxvcmUgZGkgXCJuZ01vZGVsSW5wdXRcIiBhbGxvcmEgYWdnaW9ybmEgbCdpbnB1dFxyXG4gICAgaWYgKGNoYW5nZXNbJ3JlY29yZCddICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydyZWNvcmQnXS5maXJzdENoYW5nZSA9PSBmYWxzZSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydyZWNvcmQnXS5jdXJyZW50VmFsdWUpICE9IEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3JlY29yZCddLnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkID0gY2hhbmdlc1sncmVjb3JkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBxdWFuZG8gcXVlc3RvIMOoIHJhcHByZXNlbnRhdG8gZGEgdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgdXBkYXRlRmllbGQoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5Gb3JtdWxhKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4gICAqL1xyXG4gIG9uUmVjb3JkVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluIGJhc2UgYWwgZm9ybWF0byBkZWxsYSBkYXRhIHJpY2hpZXN0YSBuZWwgRGF0ZUZpZWxkIChzb2xvIGRhdGEsIHNvbG8gb3JhcmlvIG8gZGF0YSBlIG9yYSlcclxuICAgKiBpbXBvc3RhIGxhIHZpc3VhbGl6emF6aW9uZSBjb3JyZXR0YSBkZWwgY29tcG9uZW50ZSBlcXAtZGF0ZXRpbWVwaWNrZXIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRUaW1lVHlwZSgpIHtcclxuICAgIHN3aXRjaCAodGhpcy5maWVsZC5Jc09ubHlEYXRlKSB7XHJcbiAgICAgIGNhc2UgRGF0ZVRpbWVUeXBlRW51bVtcIlNvbG8gZGF0YVwiXTpcclxuICAgICAgICB0aGlzLnBpY2tlck1vZGUgPSBQaWNrZXJNb2RlRW51bS5EQVRFO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGVUaW1lVHlwZUVudW1bXCJTb2xvIG9yYXJpb1wiXTpcclxuICAgICAgICB0aGlzLnBpY2tlck1vZGUgPSBQaWNrZXJNb2RlRW51bS5USU1FO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGVUaW1lVHlwZUVudW1bXCJEYXRhIGUgb3JhXCJdOlxyXG4gICAgICAgIHRoaXMucGlja2VyTW9kZSA9IFBpY2tlck1vZGVFbnVtLkRBVEVUSU1FO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { AvailableImageExtensions } from '../../../../models/fields/attachmentField.model';
|
|
4
|
+
import { UtilityHelperService } from 'projects/eqp-dynamic-module/src/lib/services/utilityHelper.services';
|
|
5
|
+
var ImageFieldTemplateComponent = /** @class */ (function () {
|
|
6
|
+
function ImageFieldTemplateComponent() {
|
|
7
|
+
this.recordChange = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
ImageFieldTemplateComponent.prototype.ngOnInit = function () {
|
|
10
|
+
this.field.AttachDefinition.FormFormGroup = this.field.FormFormGroup;
|
|
11
|
+
if (!this.field.AttachDefinition.AllowedExtensions) {
|
|
12
|
+
this.field.AttachDefinition.AllowedExtensions = AvailableImageExtensions.map(function (ext) { return ext.key; });
|
|
13
|
+
}
|
|
14
|
+
this.field.AttachDefinition.Name = this.field.Name;
|
|
15
|
+
this.field.AttachDefinition.Label = this.field.Label;
|
|
16
|
+
this.field.AttachDefinition.Description = this.field.Description;
|
|
17
|
+
this.field.AttachDefinition.Required = this.field.Required;
|
|
18
|
+
this.field.AttachDefinition.Formula = this.field.Formula;
|
|
19
|
+
this.field.AttachDefinition.FieldValue = this.field.FieldValue;
|
|
20
|
+
};
|
|
21
|
+
ImageFieldTemplateComponent.prototype.ngOnChanges = function (changes) {
|
|
22
|
+
// Se viene modificato il valore di "ngModelInput" allora aggiorna l'input
|
|
23
|
+
if (changes['record'] != undefined && changes['record'].firstChange == false && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
|
|
24
|
+
this.record = changes['record'].currentValue;
|
|
25
|
+
this.updateField();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
|
|
30
|
+
*/
|
|
31
|
+
ImageFieldTemplateComponent.prototype.updateField = function () {
|
|
32
|
+
if (this.field.Formula) {
|
|
33
|
+
this.record[this.field.Name] = UtilityHelperService.EvaluateFieldFormula(this.field.Formula, this.record, null);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
__decorate([
|
|
37
|
+
Input()
|
|
38
|
+
], ImageFieldTemplateComponent.prototype, "record", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
Input()
|
|
41
|
+
], ImageFieldTemplateComponent.prototype, "field", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
Output()
|
|
44
|
+
], ImageFieldTemplateComponent.prototype, "recordChange", void 0);
|
|
45
|
+
ImageFieldTemplateComponent = __decorate([
|
|
46
|
+
Component({
|
|
47
|
+
selector: 'image-field-template',
|
|
48
|
+
template: "<attachment-field-template [(record)]=\"record\" [field]=\"field.AttachDefinition\"\n [onlyImages]=\"true\">\n</attachment-field-template>",
|
|
49
|
+
styles: [""]
|
|
50
|
+
})
|
|
51
|
+
], ImageFieldTemplateComponent);
|
|
52
|
+
return ImageFieldTemplateComponent;
|
|
53
|
+
}());
|
|
54
|
+
export { ImageFieldTemplateComponent };
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVxcHJvamVjdC9lcXAtZHluYW1pYy1tb2R1bGUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcml2YXRlL2ZpZWxkLXRlbXBsYXRlcy9pbWFnZS1maWVsZC10ZW1wbGF0ZS9pbWFnZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUczRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQU8zRztJQU1FO1FBRlUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUUxRCxDQUFDO0lBRWpCLDhDQUFRLEdBQVI7UUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUVyRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRTtZQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQVAsQ0FBTyxDQUFDLENBQUM7U0FDOUY7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUNqRSxDQUFDO0lBR0QsaURBQVcsR0FBWCxVQUFZLE9BQXNCO1FBQ2hDLDBFQUEwRTtRQUMxRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDakwsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGlEQUFXLEdBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pIO0lBQ0gsQ0FBQztJQXJDUTtRQUFSLEtBQUssRUFBRTsrREFBZ0I7SUFDZjtRQUFSLEtBQUssRUFBRTs4REFBbUI7SUFDakI7UUFBVCxNQUFNLEVBQUU7cUVBQWlFO0lBSi9ELDJCQUEyQjtRQUx2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLDBKQUFvRDs7U0FFckQsQ0FBQztPQUNXLDJCQUEyQixDQXdDdkM7SUFBRCxrQ0FBQztDQUFBLEFBeENELElBd0NDO1NBeENZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbWFnZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hdHRhY2htZW50RmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgSUJhc2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaUJhc2VGaWVsZENvbXBvbmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJ3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbWFnZS1maWVsZC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWFnZUZpZWxkVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBJbWFnZUZpZWxkO1xyXG4gIEBPdXRwdXQoKSByZWNvcmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWVsZC5BdHRhY2hEZWZpbml0aW9uLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXA7XHJcblxyXG4gICAgaWYgKCF0aGlzLmZpZWxkLkF0dGFjaERlZmluaXRpb24uQWxsb3dlZEV4dGVuc2lvbnMpIHtcclxuICAgICAgdGhpcy5maWVsZC5BdHRhY2hEZWZpbml0aW9uLkFsbG93ZWRFeHRlbnNpb25zID0gQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zLm1hcChleHQgPT4gZXh0LmtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZC5BdHRhY2hEZWZpbml0aW9uLk5hbWUgPSB0aGlzLmZpZWxkLk5hbWU7XHJcbiAgICB0aGlzLmZpZWxkLkF0dGFjaERlZmluaXRpb24uTGFiZWwgPSB0aGlzLmZpZWxkLkxhYmVsO1xyXG4gICAgdGhpcy5maWVsZC5BdHRhY2hEZWZpbml0aW9uLkRlc2NyaXB0aW9uID0gdGhpcy5maWVsZC5EZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuZmllbGQuQXR0YWNoRGVmaW5pdGlvbi5SZXF1aXJlZCA9IHRoaXMuZmllbGQuUmVxdWlyZWQ7XHJcbiAgICB0aGlzLmZpZWxkLkF0dGFjaERlZmluaXRpb24uRm9ybXVsYSA9IHRoaXMuZmllbGQuRm9ybXVsYTtcclxuICAgIHRoaXMuZmllbGQuQXR0YWNoRGVmaW5pdGlvbi5GaWVsZFZhbHVlID0gdGhpcy5maWVsZC5GaWVsZFZhbHVlO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIC8vIFNlIHZpZW5lIG1vZGlmaWNhdG8gaWwgdmFsb3JlIGRpIFwibmdNb2RlbElucHV0XCIgYWxsb3JhIGFnZ2lvcm5hIGwnaW5wdXRcclxuICAgIGlmIChjaGFuZ2VzWydyZWNvcmQnXSAhPSB1bmRlZmluZWQgJiYgY2hhbmdlc1sncmVjb3JkJ10uZmlyc3RDaGFuZ2UgPT0gZmFsc2UgJiYgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1sncmVjb3JkJ10uY3VycmVudFZhbHVlKSAhPSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydyZWNvcmQnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnJlY29yZCA9IGNoYW5nZXNbJ3JlY29yZCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVGaWVsZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhZ2dpb3JuYXJlIGlsIHZhbG9yZSBkZWwgY2FtcG8gcXVhbmRvIHF1ZXN0byDDqCByYXBwcmVzZW50YXRvIGRhIHVuYSBmb3JtdWxhLlxyXG4gICAqL1xyXG4gIHVwZGF0ZUZpZWxkKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEodGhpcy5maWVsZC5Gb3JtdWxhLCB0aGlzLnJlY29yZCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
|