@eqproject/eqp-dynamic-module 0.0.7 → 0.0.8
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/bundles/eqproject-eqp-dynamic-module.umd.js +3991 -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 +6 -0
- package/eqproject-eqp-dynamic-module.metadata.json +1 -0
- package/esm2015/eqproject-eqp-dynamic-module.js +7 -0
- package/esm2015/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.js +262 -0
- package/esm2015/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.js +649 -0
- package/esm2015/lib/components/private/add-form-field/add-form-field.component.js +577 -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 +170 -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 +196 -0
- package/esm2015/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.js +115 -0
- package/esm2015/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.js +71 -0
- package/esm2015/lib/components/private/field-templates/text-field-template/text-field-template.component.js +67 -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 +130 -0
- package/esm2015/lib/components/private/form-records/list-form-record/list-form-record.component.js +216 -0
- package/esm2015/lib/components/private/spinner/spinner.component.js +23 -0
- package/esm2015/lib/eqp-dynamic-module.module.js +69 -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/endPointConfiguration.model.js +23 -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 +8 -0
- package/esm2015/lib/models/fields/listValueField.model.js +14 -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 +14 -0
- package/esm2015/lib/models/form.model.js +24 -0
- package/esm2015/lib/models/record.model.js +8 -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 +113 -0
- package/esm2015/lib/services/spinner.service.js +43 -0
- package/esm2015/lib/services/utilityHelper.services.js +387 -0
- package/esm2015/public-api.js +39 -0
- package/esm5/eqproject-eqp-dynamic-module.js +7 -0
- package/esm5/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.js +269 -0
- package/esm5/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.js +664 -0
- package/esm5/lib/components/private/add-form-field/add-form-field.component.js +588 -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 +173 -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 +206 -0
- package/esm5/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.js +119 -0
- package/esm5/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.js +72 -0
- package/esm5/lib/components/private/field-templates/text-field-template/text-field-template.component.js +68 -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 +133 -0
- package/esm5/lib/components/private/form-records/list-form-record/list-form-record.component.js +220 -0
- package/esm5/lib/components/private/spinner/spinner.component.js +24 -0
- package/esm5/lib/eqp-dynamic-module.module.js +72 -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/endPointConfiguration.model.js +33 -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 +19 -0
- package/esm5/lib/models/fields/listValueField.model.js +25 -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 +21 -0
- package/esm5/lib/models/form.model.js +39 -0
- package/esm5/lib/models/record.model.js +14 -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 +123 -0
- package/esm5/lib/services/spinner.service.js +46 -0
- package/esm5/lib/services/utilityHelper.services.js +396 -0
- package/esm5/public-api.js +39 -0
- package/fesm2015/eqproject-eqp-dynamic-module.js +3580 -0
- package/fesm2015/eqproject-eqp-dynamic-module.js.map +1 -0
- package/fesm5/eqproject-eqp-dynamic-module.js +3766 -0
- package/fesm5/eqproject-eqp-dynamic-module.js.map +1 -0
- package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +101 -0
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +235 -0
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +199 -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 +68 -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 +65 -0
- package/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.d.ts +51 -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 +22 -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 +52 -0
- package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +64 -0
- package/lib/components/private/spinner/spinner.component.d.ts +9 -0
- package/lib/eqp-dynamic-module.module.d.ts +2 -0
- package/{src/lib/interfaces/iBaseFieldComponent.interface.ts → lib/interfaces/iBaseFieldComponent.interface.d.ts} +1 -1
- package/{src/lib/interfaces/iRootObject.interface.ts → lib/interfaces/iRootObject.interface.d.ts} +1 -1
- package/{src/lib/models/baseField.model.ts → lib/models/baseField.model.d.ts} +5 -14
- package/{src/lib/models/baseObj.model.ts → lib/models/baseObj.model.d.ts} +3 -3
- package/lib/models/context.model.d.ts +9 -0
- package/{src/lib/models/endPointConfiguration.model.ts → lib/models/endPointConfiguration.model.d.ts} +12 -16
- package/{src/lib/models/entity.model.ts → lib/models/entity.model.d.ts} +1 -2
- package/lib/models/fields/attachmentField.model.d.ts +17 -0
- package/{src/lib/models/fields/booleanField.model.ts → lib/models/fields/booleanField.model.d.ts} +4 -8
- package/{src/lib/models/fields/dateField.model.ts → lib/models/fields/dateField.model.d.ts} +3 -5
- package/{src/lib/models/fields/imageField.model.ts → lib/models/fields/imageField.model.d.ts} +3 -8
- package/{src/lib/models/fields/listValueField.model.ts → lib/models/fields/listValueField.model.d.ts} +8 -13
- package/{src/lib/models/fields/lookupField.model.ts → lib/models/fields/lookupField.model.d.ts} +2 -5
- package/{src/lib/models/fields/numericField.model.ts → lib/models/fields/numericField.model.d.ts} +2 -3
- package/{src/lib/models/fields/testareaField.model.ts → lib/models/fields/testareaField.model.d.ts} +2 -3
- package/lib/models/fields/textField.model.d.ts +15 -0
- package/{src/lib/models/form.model.ts → lib/models/form.model.d.ts} +12 -25
- package/{src/lib/models/record.model.ts → lib/models/record.model.d.ts} +5 -4
- 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 +34 -0
- package/lib/services/spinner.service.d.ts +15 -0
- package/lib/services/utilityHelper.services.d.ts +77 -0
- package/package.json +41 -31
- package/{src/public-api.ts → public-api.d.ts} +0 -3
- package/karma.conf.js +0 -32
- package/ng-package.json +0 -18
- package/src/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.html +0 -10
- package/src/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.scss +0 -3
- package/src/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.ts +0 -228
- package/src/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.html +0 -212
- package/src/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.scss +0 -30
- package/src/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.ts +0 -692
- package/src/lib/components/private/add-form-field/add-form-field.component.html +0 -417
- package/src/lib/components/private/add-form-field/add-form-field.component.scss +0 -38
- package/src/lib/components/private/add-form-field/add-form-field.component.ts +0 -599
- package/src/lib/components/private/dynamic-module-field/dynamic-module-field.component.html +0 -42
- package/src/lib/components/private/dynamic-module-field/dynamic-module-field.component.scss +0 -0
- package/src/lib/components/private/dynamic-module-field/dynamic-module-field.component.ts +0 -125
- package/src/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.html +0 -25
- package/src/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.scss +0 -0
- package/src/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.ts +0 -172
- package/src/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.html +0 -32
- package/src/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.scss +0 -0
- package/src/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.ts +0 -53
- package/src/lib/components/private/field-templates/date-field-template/date-field-template.component.html +0 -6
- package/src/lib/components/private/field-templates/date-field-template/date-field-template.component.scss +0 -0
- package/src/lib/components/private/field-templates/date-field-template/date-field-template.component.ts +0 -70
- package/src/lib/components/private/field-templates/image-field-template/image-field-template.component.html +0 -57
- package/src/lib/components/private/field-templates/image-field-template/image-field-template.component.scss +0 -4
- package/src/lib/components/private/field-templates/image-field-template/image-field-template.component.ts +0 -203
- package/src/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.html +0 -46
- package/src/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.scss +0 -13
- package/src/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.ts +0 -114
- package/src/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.html +0 -6
- package/src/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.scss +0 -0
- package/src/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.ts +0 -70
- package/src/lib/components/private/field-templates/text-field-template/text-field-template.component.html +0 -5
- package/src/lib/components/private/field-templates/text-field-template/text-field-template.component.scss +0 -0
- package/src/lib/components/private/field-templates/text-field-template/text-field-template.component.ts +0 -65
- package/src/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.html +0 -5
- package/src/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.scss +0 -0
- package/src/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.ts +0 -48
- package/src/lib/components/private/form-records/add-form-record/add-form-record.component.html +0 -74
- package/src/lib/components/private/form-records/add-form-record/add-form-record.component.scss +0 -0
- package/src/lib/components/private/form-records/add-form-record/add-form-record.component.ts +0 -117
- package/src/lib/components/private/form-records/list-form-record/list-form-record.component.html +0 -14
- package/src/lib/components/private/form-records/list-form-record/list-form-record.component.scss +0 -7
- package/src/lib/components/private/form-records/list-form-record/list-form-record.component.ts +0 -213
- package/src/lib/components/private/spinner/spinner.component.html +0 -3
- package/src/lib/components/private/spinner/spinner.component.scss +0 -100
- package/src/lib/components/private/spinner/spinner.component.ts +0 -19
- package/src/lib/eqp-dynamic-module.module.ts +0 -65
- package/src/lib/models/context.model.ts +0 -10
- package/src/lib/models/fields/attachmentField.model.ts +0 -32
- package/src/lib/models/fields/textField.model.ts +0 -18
- package/src/lib/modules/material.module.ts +0 -104
- package/src/lib/services/custom-form-validators.service.ts +0 -21
- package/src/lib/services/eqp-dynamic-module-dialog.service.ts +0 -114
- package/src/lib/services/spinner.service.ts +0 -40
- package/src/lib/services/utilityHelper.services.ts +0 -413
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -23
- package/tsconfig.lib.prod.json +0 -6
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { Context } from '../../../models/context.model';
|
|
3
|
+
import { EndPointConfiguration } from '../../../models/endPointConfiguration.model';
|
|
4
|
+
import { Form, FormTypeEnum } from '../../../models/form.model';
|
|
5
|
+
import { Record } from '../../../models/record.model';
|
|
6
|
+
import { UtilityHelperService } from '../../../services/utilityHelper.services';
|
|
7
|
+
export declare class EqpDynamicModuleComponent implements OnInit {
|
|
8
|
+
private utilityHelperService;
|
|
9
|
+
context: Context;
|
|
10
|
+
formID: string;
|
|
11
|
+
values: Array<Record>;
|
|
12
|
+
showButtons: boolean;
|
|
13
|
+
showTitle: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Url del server da chiamare per recuperare, salvare o eliminare i record.
|
|
16
|
+
* Usato per creare la configurazione di default degli endpoint da chiamare.
|
|
17
|
+
*/
|
|
18
|
+
baseServerUrl: string;
|
|
19
|
+
/**
|
|
20
|
+
* Token da usare negli endpoint da chiamare per recuperare o salvare i record.
|
|
21
|
+
* Usato solo se viene popolata la proprietà "baseServerUrl".
|
|
22
|
+
*/
|
|
23
|
+
userToken: string;
|
|
24
|
+
/**
|
|
25
|
+
* Configurazione degli endpoint da chiamare per recuperare o salvare i dati.
|
|
26
|
+
* Può essere definita dall'utente oppure lasciata null, viene popolata con dei
|
|
27
|
+
* valori di default se viene valorizzata la proprietà "baseServerUrl" altrimenti
|
|
28
|
+
* viene lasciata null e non viene eseguita nessuna chiamata al server.
|
|
29
|
+
*/
|
|
30
|
+
endPointConfiguration: EndPointConfiguration;
|
|
31
|
+
/**
|
|
32
|
+
* Eventi emessi quando si salva, elimina o duplica un record
|
|
33
|
+
* se non è stato specificato un endpoint da chiamare.
|
|
34
|
+
*/
|
|
35
|
+
saveRecord: EventEmitter<Record>;
|
|
36
|
+
deleteRecord: EventEmitter<Record>;
|
|
37
|
+
duplicateRecord: EventEmitter<Record>;
|
|
38
|
+
/**
|
|
39
|
+
* Eventi emessi DOPO aver eseguito una chiamata al server per il salvataggio,
|
|
40
|
+
* l'eliminazione o la duplicazione di un record all'endpoint specificato.
|
|
41
|
+
*/
|
|
42
|
+
afterSaveRecord: EventEmitter<Record>;
|
|
43
|
+
afterDeleteRecord: EventEmitter<Record>;
|
|
44
|
+
afterDuplicateRecord: EventEmitter<Record>;
|
|
45
|
+
form: Form;
|
|
46
|
+
viewMode: FormTypeEnum;
|
|
47
|
+
FormTypeEnum: typeof FormTypeEnum;
|
|
48
|
+
selectedRecord: Record;
|
|
49
|
+
onlyView: boolean;
|
|
50
|
+
constructor(utilityHelperService: UtilityHelperService);
|
|
51
|
+
ngOnInit(): void;
|
|
52
|
+
getFormByID(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Metodo per configurare gli endpoint da usare di default a partire dall'url base del server
|
|
55
|
+
* a cui si deve connettere e al token da passare per autenticarsi.
|
|
56
|
+
* Se la proprietà "baseServerUrl" è null e non sono stati configurati i vari endpoint allora
|
|
57
|
+
* non viene eseguita nessuna chiamata http per recuperare/salvare i dati.
|
|
58
|
+
*/
|
|
59
|
+
configureDefaultEndPoints(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Metodo per recuperare tutti i record salvati per una particolare Form.
|
|
62
|
+
* La chiamata viene effettuata solo se è stato configurato l'endPoint da usare.
|
|
63
|
+
* La risposta della chiamata deve essere un array di oggetti di tipo "DynRecord"
|
|
64
|
+
* a partire dai quali vengono ricreati i Record usati nel client.
|
|
65
|
+
*/
|
|
66
|
+
getRecordsByFormID(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Metodo invocato quando si vuole aggiungere, visualizzare o modificare un record.
|
|
69
|
+
* Se l'evento è null vuol dire che stiamo aggiungendo un nuovo record altrimenti siamo in modifica
|
|
70
|
+
* o visualizzazione. In questi ultimi due casi, se è stato configurato un endpoint per il recupero
|
|
71
|
+
* del record completo allora viene effettuata una chiamata al server, altrimenti viene usato l'oggetto selezionato.
|
|
72
|
+
* @param event Oggetto con due proprietà:
|
|
73
|
+
* "record" = oggetto da modificare/visualizzare,
|
|
74
|
+
* "onlyView" = booleano (se TRUE siamo in visualizzazione altrimenti in modifica)
|
|
75
|
+
*/
|
|
76
|
+
onAddViewEditRecord(event: {
|
|
77
|
+
record: Record;
|
|
78
|
+
onlyView: boolean;
|
|
79
|
+
}): void;
|
|
80
|
+
/**
|
|
81
|
+
* Metodo per salvare il record aggiunto o modificato.
|
|
82
|
+
* Se è stato configurato un endPoint per il salvataggio viene effettuata una chiamata al server passando l'oggeto da salvare
|
|
83
|
+
* nel body della chiamata, altrimenti scatena l'evento "saveRecord".
|
|
84
|
+
* @param event Oggetto di tipo Record da salvare.
|
|
85
|
+
*/
|
|
86
|
+
onSaveRecord(event: Record): void;
|
|
87
|
+
/**
|
|
88
|
+
* Metodo per duplicare un record precedentemente salvato.
|
|
89
|
+
* Se è stato configurato un endPoint per la duplicazione lato server allora effettua una chiamata passando nel body
|
|
90
|
+
* un oggetto contenente il record da duplicare, altrimenti scatena l'evento di output "duplicateRecord".
|
|
91
|
+
* @param record Oggetto di tipo Record da duplicare.
|
|
92
|
+
*/
|
|
93
|
+
onDuplicateRecord(record: Record): void;
|
|
94
|
+
/**
|
|
95
|
+
* Metodo per eliminare un record.
|
|
96
|
+
* Se è stato configurato un endPoint per l'eliminazione allora effettua una chiamata passando l'ID del record da eliminare
|
|
97
|
+
* come query param all'interno della rotta, altrimenti scatena l'evento di output "deleteRecord".
|
|
98
|
+
* @param record Oggetto di tipo Record da duplicare.
|
|
99
|
+
*/
|
|
100
|
+
onDeleteRecord(record: Record): void;
|
|
101
|
+
}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
|
|
2
|
+
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
|
+
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
+
import { ConfigColumn, EqpTableComponent } from '@eqproject/eqp-table';
|
|
5
|
+
import { BaseField } from '../../../models/baseField.model';
|
|
6
|
+
import { Context } from '../../../models/context.model';
|
|
7
|
+
import { EndPointConfiguration } from '../../../models/endPointConfiguration.model';
|
|
8
|
+
import { ActionOnRecord, Form, FormScalarTypeEnum, FormTypeEnum } from '../../../models/form.model';
|
|
9
|
+
import { UtilityHelperService } from '../../../services/utilityHelper.services';
|
|
10
|
+
export declare class EqpDynamicModuleConfiguratorComponent implements OnInit {
|
|
11
|
+
private formBuilder;
|
|
12
|
+
private dialog;
|
|
13
|
+
private utilityHelperService;
|
|
14
|
+
context: Context;
|
|
15
|
+
form: Form;
|
|
16
|
+
formID: string;
|
|
17
|
+
innerFormManagment: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Url del server da chiamare per recuerare, salvare o eliminare i record.
|
|
20
|
+
* Usato per creare la configurazione di default degli endpoint da chiamare.
|
|
21
|
+
*/
|
|
22
|
+
baseServerUrl: string;
|
|
23
|
+
/**
|
|
24
|
+
* Token da usare negli endpoint da chiamare per recuperare o salvare i record.
|
|
25
|
+
* Usato solo se viene popolata la proprietà "baseServerUrl".
|
|
26
|
+
*/
|
|
27
|
+
userToken: string;
|
|
28
|
+
/**
|
|
29
|
+
* Configurazione degli endpoint da chiamare per recuperare o salvare i dati.
|
|
30
|
+
* Può essere definita dall'utente oppure lasciata null, viene popolata con dei
|
|
31
|
+
* valori di default se viene valorizzata la proprietà "baseServerUrl" altrimenti
|
|
32
|
+
* viene lasciata null e non viene eseguita nessuna chiamata al server.
|
|
33
|
+
*/
|
|
34
|
+
endPointConfiguration: EndPointConfiguration;
|
|
35
|
+
formFormGroup: FormGroup;
|
|
36
|
+
formCompleted: boolean;
|
|
37
|
+
previewForm: Form;
|
|
38
|
+
formFieldGroupName: string;
|
|
39
|
+
actionAutocompleteOptions: Array<{
|
|
40
|
+
label: string;
|
|
41
|
+
value: string;
|
|
42
|
+
}>;
|
|
43
|
+
FormTypeEnum: typeof FormTypeEnum;
|
|
44
|
+
FormScalarTypeEnum: typeof FormScalarTypeEnum;
|
|
45
|
+
fieldsColumns: Array<ConfigColumn>;
|
|
46
|
+
fieldsTable: EqpTableComponent;
|
|
47
|
+
selectedField: BaseField | any;
|
|
48
|
+
indexSelectedField: number;
|
|
49
|
+
actionOnRecordFormGroup: FormGroup;
|
|
50
|
+
dialogFieldRef: MatDialogRef<TemplateRef<any>>;
|
|
51
|
+
dialogField: TemplateRef<any>;
|
|
52
|
+
fieldSectionColumnTemplate: TemplateRef<any>;
|
|
53
|
+
selectedInnerForm: Form;
|
|
54
|
+
indexSelectedInnerForm: number;
|
|
55
|
+
dialogInnerFormRef: MatDialogRef<TemplateRef<any>>;
|
|
56
|
+
dialogInnerForm: TemplateRef<any>;
|
|
57
|
+
actionsOnRecordColumns: Array<ConfigColumn>;
|
|
58
|
+
actionsOnRecordTable: EqpTableComponent;
|
|
59
|
+
selectedAction: ActionOnRecord;
|
|
60
|
+
indexSelectedAction: number;
|
|
61
|
+
dialogActionOnRecordRef: MatDialogRef<TemplateRef<any>>;
|
|
62
|
+
dialogActionOnRecord: TemplateRef<any>;
|
|
63
|
+
/**
|
|
64
|
+
* Evento emesso quando si salva una form e non è stato specificato un endpoint da chiamare.
|
|
65
|
+
*/
|
|
66
|
+
saveFormEvent: EventEmitter<Form>;
|
|
67
|
+
/**
|
|
68
|
+
* Evento emesso DOPO aver eseguito una chiamata al server per il salvataggiodi una form all'endpoint specificato.
|
|
69
|
+
*/
|
|
70
|
+
afterSaveFormEvent: EventEmitter<Form>;
|
|
71
|
+
constructor(formBuilder: FormBuilder, dialog: MatDialog, utilityHelperService: UtilityHelperService);
|
|
72
|
+
ngOnInit(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Metodo per configurare gli endpoint da usare di default a partire dall'url base del server
|
|
75
|
+
* a cui si deve connettere e al token da passare per autenticarsi.
|
|
76
|
+
* Se la proprietà baseServerUrl è null e non sono stati configurati i vari endpoint allora
|
|
77
|
+
* non viene eseguita nessuna chiamata http per recuperare/salvare i dati.
|
|
78
|
+
*/
|
|
79
|
+
configureDefaultEndPoints(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Metodo per recuperare tutti i record salvati per una particolare Form.
|
|
82
|
+
* La chiamata viene effettuata solo se è stato configurato l'endPoint da usare.
|
|
83
|
+
*/
|
|
84
|
+
getFormByID(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Metodo invocato al cambio del tipo di visualizzazione della form.
|
|
87
|
+
* Se l'utente sceglie una visualizzazione raggruppata il metodo aggiunge al FormGroup un nuovo
|
|
88
|
+
* controllo per l'array dei nomi delle sezioni da creare.
|
|
89
|
+
*/
|
|
90
|
+
onChangeFormScalarType(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Evento invocato al keyup nell'input per inserire i nomi delle sezioni per la visualizzazione
|
|
93
|
+
* raggruppata della form. Quanto l'utente preme il tasto invio viene aggiunto il nuovo nome alle
|
|
94
|
+
* sezioni dispobili se non ne esiste una con lo stesso nome.
|
|
95
|
+
* @param event Evento che rappresenta il keyup sulla tastiera.
|
|
96
|
+
*/
|
|
97
|
+
onFormFieldGroupNameKeyUp(event: any): void;
|
|
98
|
+
/**
|
|
99
|
+
* Metodo per rimuovere la sezione selezionata da quelle disponibili per la form.
|
|
100
|
+
* @param groupName Nome della sezione da eliminare.
|
|
101
|
+
*/
|
|
102
|
+
onDeleteFormFieldGroupName(groupName: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Metodo chiamato quando si vuole aggiungere un nuovo campo o si vuole modificare uno esistente.
|
|
105
|
+
* Memorizza l'eventuale Field scelto one crea uno nuovo prima di aprire il dialog per modificarlo/aggiungerlo.
|
|
106
|
+
* @param field Oggetto BaseField da modificare. Se null ne viene creata una nuova istanza per l'aggiunta.
|
|
107
|
+
*/
|
|
108
|
+
openFieldDialog(field?: BaseField): void;
|
|
109
|
+
/**
|
|
110
|
+
* Metodo che salva il campo appena creato o modificato.
|
|
111
|
+
* Prima del salvataggio controlla se esiste un altro campo con la stessa label, in questo
|
|
112
|
+
* case genere un errore (i campi devono avere nomi, e quindi label, univoche - i nomi vengono
|
|
113
|
+
* ricavati unendo le parole che formano la label tramite "_").
|
|
114
|
+
* @param field Campo da salvare
|
|
115
|
+
*/
|
|
116
|
+
onSaveField(field: BaseField): void;
|
|
117
|
+
/**
|
|
118
|
+
* Metodo che controlla se lo step per l'aggiunta dei campi nella form è concluso.
|
|
119
|
+
* @returns Se TRUE lo step viene considerato completato ed è possbile passare al successivo.
|
|
120
|
+
*/
|
|
121
|
+
isFieldStepCompleted(): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Metodo per aprire il dialog di creazione/modifica delle form di dettaglio.
|
|
124
|
+
* Se il parametro passato è null sono in aggiunta altrimenti sono in modifica.
|
|
125
|
+
* @param innenrForm Form di dettaglio da modificare (se null allora vado in add).
|
|
126
|
+
*/
|
|
127
|
+
openInnerFormDialog(innenrForm?: Form): void;
|
|
128
|
+
/**
|
|
129
|
+
* Metodo scatenato al salvataggio di una form di dettaglio.
|
|
130
|
+
* @param event Form creata/modificata dall'utente. Se è null allora l'utente ha abbandonato la configurazione.
|
|
131
|
+
*/
|
|
132
|
+
onSaveOrExitInnerForm(event: Form): void;
|
|
133
|
+
/**
|
|
134
|
+
* Metodo per aprire il dialog di creazione/modifica delle action.
|
|
135
|
+
* Se il parametro passato è null sono in aggiunta altrimenti sono in modifica.
|
|
136
|
+
* @param action ActionOnRecord da modificare (se null allora vado in add).
|
|
137
|
+
*/
|
|
138
|
+
openActionOnRecordDialog(action?: ActionOnRecord): void;
|
|
139
|
+
/**
|
|
140
|
+
* Metodo per impostare i valori da suggerire nell'autocomplete del campo Formula.
|
|
141
|
+
* Viene scatenato al focus (in questo caso viene passato il parametro a null per differenziarlo
|
|
142
|
+
* dall'evento di click sulla tastiera) e al keyup sull'input (il parametro è diverso da null).
|
|
143
|
+
* @param keyboardEvent Evento scatenato al keyup sulla tastiera. Se null allora il metodo è stato invocato dal focus sull'input.
|
|
144
|
+
* @summary Aggiorna l'elenco dei suggerimenti per l'autocomplete se l'utente esegue il focus sull'input
|
|
145
|
+
* oppure al keyup sulla tastiera di un tasto diverso dalle frecce.
|
|
146
|
+
*/
|
|
147
|
+
setActionAutocompleteOptions(keyboardEvent: KeyboardEvent): void;
|
|
148
|
+
/**
|
|
149
|
+
* Metodo per salvare l'azione creata/modificate.
|
|
150
|
+
*/
|
|
151
|
+
saveActionOnRecord(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Metodo per chiudere il dialog di gestione delle action.
|
|
154
|
+
*/
|
|
155
|
+
closeDialogActionOnRecord(): void;
|
|
156
|
+
/**
|
|
157
|
+
* Metodo per segnare come conclusa la creazione della form e per crearne una copia
|
|
158
|
+
* da visalizzare come anteprima.
|
|
159
|
+
* @param completed Se TRUE segna la form come conclusa e ne crea una copia da visualizzare
|
|
160
|
+
*/
|
|
161
|
+
setFormStatus(completed: boolean): void;
|
|
162
|
+
/**
|
|
163
|
+
* Metodo per salvare la form creata alla fine del wizard.
|
|
164
|
+
* Se è stato configurato un endPoint per il salvataggio viene effettuata una chiamata al server passando l'oggeto da salvare
|
|
165
|
+
* nel body della chiamata, altrimenti scatena l'evento "saveFormEvent".
|
|
166
|
+
* NOTA: Per comunicare correttamente con la parte server del modulo dinamico bisogna modificare l'array dei Fields.
|
|
167
|
+
* Al posto di passare un array di BaseField bisogna passare un array di oggetti del tipo { FieldType: FieldTypeEnum, Value: BaseField }.
|
|
168
|
+
*/
|
|
169
|
+
saveForm(): void;
|
|
170
|
+
/**
|
|
171
|
+
* Metodo per impostare la form e configurare colonne/FormGourp.
|
|
172
|
+
* @param form Form da utilizzare.
|
|
173
|
+
*/
|
|
174
|
+
private setFormAndConfigure;
|
|
175
|
+
/**
|
|
176
|
+
* Configura le colonne per le tabelle necessarie alla creazione della form:
|
|
177
|
+
* - per la visualizzazione dei campi inseriti
|
|
178
|
+
* - per le form di dettaglio create
|
|
179
|
+
* - per le azioni configurate sui record della form
|
|
180
|
+
*/
|
|
181
|
+
private configureColumns;
|
|
182
|
+
/**
|
|
183
|
+
* Crea il FormGroup per l'oggetto Form
|
|
184
|
+
*/
|
|
185
|
+
private createFormForm;
|
|
186
|
+
/**
|
|
187
|
+
* Crea il FormGroup epr l'aggiunta o la modifica di una action sui record della Form.
|
|
188
|
+
*/
|
|
189
|
+
private createActionOnRecordForm;
|
|
190
|
+
/**
|
|
191
|
+
* Chiude il dialog per aggiungere/modificare un Field senza salvare
|
|
192
|
+
*/
|
|
193
|
+
private closeFieldDialog;
|
|
194
|
+
/**
|
|
195
|
+
* Metodo per gestire l'apertura del dialog per la modifica di un Field.
|
|
196
|
+
* Se il field è di tipo "Form di dettaglio" apre il dialog per la modifica di una
|
|
197
|
+
* InnerForm altrimenti apre quello per la modifica di un Field.
|
|
198
|
+
* @param field Campo da modificare
|
|
199
|
+
*/
|
|
200
|
+
private editField;
|
|
201
|
+
/**
|
|
202
|
+
* Metodo per rimuovere un Field all'interno di una Form.
|
|
203
|
+
* Richiede conferma all'utente prima di rimuoverlo.
|
|
204
|
+
* @param field BaseField da rimuovere
|
|
205
|
+
*/
|
|
206
|
+
private deleteElement;
|
|
207
|
+
/**
|
|
208
|
+
* Metodo per spostare un campo all'interno della form.
|
|
209
|
+
* @param field Oggetto di tipo BaseField da spostare.
|
|
210
|
+
* @param moveUp Se TRUE allora sposta verso l'alto il campo (abbassa l'indice) altrimenti il contrario.
|
|
211
|
+
*/
|
|
212
|
+
private moveElement;
|
|
213
|
+
/**
|
|
214
|
+
* Imposta l'ordinamento delle sezioni che compongono la form.
|
|
215
|
+
*/
|
|
216
|
+
private setFormFieldGroupOrdinalPosition;
|
|
217
|
+
/**
|
|
218
|
+
* Imposta l'ordinamento dei campi all'interno della form in base all'ordine che l'utente
|
|
219
|
+
* ha definito nella tabella in cui sono mostrati
|
|
220
|
+
*/
|
|
221
|
+
private setFieldOrdinalPosition;
|
|
222
|
+
/**
|
|
223
|
+
* Metodo per ricaricare i dati della tabella dei campi aggiunti in una form
|
|
224
|
+
*/
|
|
225
|
+
private reloadFieldsTable;
|
|
226
|
+
/**
|
|
227
|
+
* Imposta l'ordinamento dei campi all'interno della form in base all'ordine che l'utente
|
|
228
|
+
* ha definito nella tabella in cui sono mostrati
|
|
229
|
+
*/
|
|
230
|
+
private setActionOrdinalPosition;
|
|
231
|
+
/**
|
|
232
|
+
* Metodo per ricaricare i dati della tabella delle azioni aggiuntive sui record della Form.
|
|
233
|
+
*/
|
|
234
|
+
private reloadActionsOnRecordTable;
|
|
235
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter, OnInit, TemplateRef } from '@angular/core';
|
|
2
|
+
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
|
+
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
+
import { AttachmentType, EqpAttachmentsComponent, IAttachmentDTO } from '@eqproject/eqp-attachments';
|
|
5
|
+
import { EnumHelper } from '@eqproject/eqp-select';
|
|
6
|
+
import { ConfigColumn, EqpTableComponent } from '@eqproject/eqp-table';
|
|
7
|
+
import { BaseField, ColSpanSizesEnum, FieldTypeEnum } from '../../../models/baseField.model';
|
|
8
|
+
import { BoolPresentantioEnum } from '../../../models/fields/booleanField.model';
|
|
9
|
+
import { DateTimeTypeEnum } from '../../../models/fields/dateField.model';
|
|
10
|
+
import { ListPresentationEnum } from '../../../models/fields/listValueField.model';
|
|
11
|
+
import { TextMaskEnum } from '../../../models/fields/textField.model';
|
|
12
|
+
import { FormFieldGroup } from '../../../models/form.model';
|
|
13
|
+
export declare class AddFormFieldComponent implements OnInit {
|
|
14
|
+
private formBuilder;
|
|
15
|
+
private enumHelper;
|
|
16
|
+
private dialog;
|
|
17
|
+
private cdr;
|
|
18
|
+
field: BaseField | any;
|
|
19
|
+
indexField: number;
|
|
20
|
+
formFieldsGroups: Array<FormFieldGroup>;
|
|
21
|
+
/** Elenco dei Field creati nella form, usati per popolare l'autocomplete della proprietà Formula. */
|
|
22
|
+
availableFields: Array<BaseField>;
|
|
23
|
+
fieldTypesToExclude: Array<FieldTypeEnum>;
|
|
24
|
+
fieldFormGroup: FormGroup;
|
|
25
|
+
keyValueObject: {
|
|
26
|
+
key: string;
|
|
27
|
+
value: string;
|
|
28
|
+
};
|
|
29
|
+
availableColSpanSizes: Array<ColSpanSizesEnum>;
|
|
30
|
+
formulaAutocompleteOptions: Array<{
|
|
31
|
+
label: string;
|
|
32
|
+
value: string;
|
|
33
|
+
}>;
|
|
34
|
+
AvailableFileExtensions: {
|
|
35
|
+
key: string;
|
|
36
|
+
value: string;
|
|
37
|
+
}[];
|
|
38
|
+
AvailableImageExtensions: {
|
|
39
|
+
key: string;
|
|
40
|
+
value: string;
|
|
41
|
+
}[];
|
|
42
|
+
saveFieldEvent: EventEmitter<BaseField | any>;
|
|
43
|
+
fieldTypeFormTemplate: TemplateRef<any>;
|
|
44
|
+
textFieldFormTemplate: TemplateRef<any>;
|
|
45
|
+
textareaFieldFormTemplate: TemplateRef<any>;
|
|
46
|
+
booleadFieldFormTemplate: TemplateRef<any>;
|
|
47
|
+
dateFieldFormTemplate: TemplateRef<any>;
|
|
48
|
+
numericFieldFormTemplate: TemplateRef<any>;
|
|
49
|
+
attachmentFieldFormTemplate: TemplateRef<any>;
|
|
50
|
+
imageFieldFormTemplate: TemplateRef<any>;
|
|
51
|
+
listValueFieldFormTemplate: TemplateRef<any>;
|
|
52
|
+
lookupFieldFormTemplate: TemplateRef<any>;
|
|
53
|
+
metadataColumns: Array<ConfigColumn>;
|
|
54
|
+
metadataFieldsTable: EqpTableComponent;
|
|
55
|
+
selectedMetadata: BaseField;
|
|
56
|
+
indexSelectedMetadata: number;
|
|
57
|
+
dialogMetadataRef: MatDialogRef<TemplateRef<any>>;
|
|
58
|
+
dialogMetadata: TemplateRef<any>;
|
|
59
|
+
buttonImagesKeyValueInputColumn: TemplateRef<any>;
|
|
60
|
+
FieldTypeEnum: typeof FieldTypeEnum;
|
|
61
|
+
BoolPresentantioEnum: typeof BoolPresentantioEnum;
|
|
62
|
+
DateTimeTypeEnum: typeof DateTimeTypeEnum;
|
|
63
|
+
ListPresentationEnum: typeof ListPresentationEnum;
|
|
64
|
+
TextMaskEnum: typeof TextMaskEnum;
|
|
65
|
+
AttachmentType: typeof AttachmentType;
|
|
66
|
+
constructor(formBuilder: FormBuilder, enumHelper: EnumHelper, dialog: MatDialog, cdr: ChangeDetectorRef);
|
|
67
|
+
ngOnInit(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Metodo per impostare i valori da suggerire nell'autocomplete del campo Formula.
|
|
70
|
+
* Viene scatenato al focus (in questo caso viene passato il parametro a null per differenziarlo
|
|
71
|
+
* dall'evento di click sulla tastiera) e al keyup sull'input (il parametro è diverso da null).
|
|
72
|
+
* @param keyboardEvent Evento scatenato al keyup sulla tastiera. Se null allora il metodo è stato invocato dal focus sull'input.
|
|
73
|
+
* @summary Aggiorna l'elenco dei suggerimenti per l'autocomplete se l'utente esegue il focus sull'input
|
|
74
|
+
* oppure al keyup sulla tastiera di un tasto diverso dalle frecce.
|
|
75
|
+
*/
|
|
76
|
+
setFormulaAutocompleteOptions(keyboardEvent: KeyboardEvent): void;
|
|
77
|
+
/**
|
|
78
|
+
* Crea il FormGroup per l'aggiunta di un nuovo campo all'interno della form.
|
|
79
|
+
* Metodo richiamato ogni volta che cambia il tipo del campo scelto o viene aggiunto/modificato un Field
|
|
80
|
+
*/
|
|
81
|
+
createFieldForm(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Metodo chiamato quando cambia il FieldType del BaseField che si sta aggiungendo/modificando.
|
|
84
|
+
* Ricrea l'oggetto field popolando solo le proprietà del BaseField inserite dall'utente
|
|
85
|
+
* (quelle comuni a tutte le tipologie di campo), ricrea la form e, in base al FieldType scelto,
|
|
86
|
+
* aggiunge alla form i FormControl necessari e seleziona il template corretto da usare.
|
|
87
|
+
* @param restoreField Se TRUE ripristina i valori base (ereditati dal modello BaseField) del campo aggiunto/modificato
|
|
88
|
+
*/
|
|
89
|
+
onFieldTypeChange(restoreField?: boolean): void;
|
|
90
|
+
/**
|
|
91
|
+
* Metodo invocato al cambio del valore della proprietà ImageIsContextualAttachment nel caso
|
|
92
|
+
* di campi di tipo Immagine. Se TRUE allora rimuove i FormControl per le proprietà IsMultiAttach
|
|
93
|
+
* e AllowedExtensions e aggiunge i FormControl per le proprietà ImgName e ContextualAttachment,
|
|
94
|
+
* altrimenti il contrario.
|
|
95
|
+
*/
|
|
96
|
+
onImageIsContextualAttachmentChange(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Metodo per intercettare l'aggiunta di un allegato nei campi di tipo Immagine per aggiornare
|
|
99
|
+
* il valore della proprietà ContextualAttachment e la validazione del relativo FormControl.
|
|
100
|
+
* @param event Array contenente l'elenco aggiornato degli allegati caricati (nel nostro caso ne contiene al più 1).
|
|
101
|
+
*/
|
|
102
|
+
catchContextualAttachmentChange(event: Array<IAttachmentDTO>): void;
|
|
103
|
+
/**
|
|
104
|
+
* Metodo invocato alla selezione di una classe nella select per le colonne di bootstrap
|
|
105
|
+
* da usare nella visualizzazione del campo. Questa funzione manipola la sorgente dati per
|
|
106
|
+
* la eqp-select in modo da escludere i valori dell'enumeratore che fanno riferimento ad
|
|
107
|
+
* una larghezza di schermo già selezionata. Esempio: per gli schermi piccoli (sm) l'utente
|
|
108
|
+
* seleziona la classe "col-sm-6", al change del valore questo metodo rimuove dalla select
|
|
109
|
+
* tutti gli altri valori per la grandezza di schermo selezionata.
|
|
110
|
+
*/
|
|
111
|
+
onColSpanSizeSelect(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Metodo invocato al cambio del tipo di visualizzazione scelta per i campi di tipo elenco generico.
|
|
114
|
+
* Se viene scelta la visualizzazione ad immagini svuota la lista delle coppie chiave-valore inserite
|
|
115
|
+
* in precedenza, altrimenti svuota la lista delle immagini caricate.
|
|
116
|
+
*/
|
|
117
|
+
onPresentationModeChange(): void;
|
|
118
|
+
/**
|
|
119
|
+
* Metodo invocato quando viene caricato il componente eqp-attachments per caricare le immagini da usare
|
|
120
|
+
* nella visualizzazione ad immagini dei campi di tipo "Elenco generico". Aggiunge due colonne a quelle
|
|
121
|
+
* configurate nel componente in cui l'utente può indicare chiave e valore della scelta.
|
|
122
|
+
* @param component Istanza del componente eqp-attachments in cui effettuare la modifica.
|
|
123
|
+
*/
|
|
124
|
+
configureButtonImagesColumns(component: EqpAttachmentsComponent): void;
|
|
125
|
+
/**
|
|
126
|
+
* Metodo invocato al salvataggio degli allegati quando viene configurato un campo di tipo "Elenco generico"
|
|
127
|
+
* con il tipo di visualizzazione ad immagini. Intercetta l'elenco aggiornato delle immagini caricate e lo
|
|
128
|
+
* memorizza nell'oggetto field corrente.
|
|
129
|
+
* @param attachments Array aggiornato degli allegati caricati.
|
|
130
|
+
*/
|
|
131
|
+
catchButtonImagesChange(attachments: Array<IAttachmentDTO>): void;
|
|
132
|
+
/**
|
|
133
|
+
* Metodo chiamato al keyup degli input testuali che prevedono l'aggiunta del valore inserito in un array.
|
|
134
|
+
* Se l'utente preme il tasto invio, in base al tipo di campo che sta inserendo/modificando, questo metodo
|
|
135
|
+
* aggiunge il valore inserito dall'utente nella lista di stringhe corretta (in input viene passato il nome
|
|
136
|
+
* della proprietà in cui inserire la stringa).
|
|
137
|
+
* @param event Evento che rappresenta il keyup dell'utente
|
|
138
|
+
* @param propertyName Nome della proprietà del field in cui inserire la stringa digitata.
|
|
139
|
+
*/
|
|
140
|
+
onMultiSelectInputKeyup(event: any, propertyName: string): void;
|
|
141
|
+
/**
|
|
142
|
+
* Metodo chiamato per mostrare come elenco le opzioni aggiunte in un campo di tipo "Elenco generico".
|
|
143
|
+
* @returns Restituisce un array di oggetti del tipo { key: string, value: string } con i valori inseriti dall'utente.
|
|
144
|
+
*/
|
|
145
|
+
getDictionaryKeyValue(): {
|
|
146
|
+
key: string;
|
|
147
|
+
value: any;
|
|
148
|
+
}[];
|
|
149
|
+
/**
|
|
150
|
+
* Metodo per rimuovere una opzione aggiunta al campo di tipo "Elenco generico"
|
|
151
|
+
* @param key Nome della chiave da rimuovere
|
|
152
|
+
*/
|
|
153
|
+
deleteKeyFromDictionary(key: string): void;
|
|
154
|
+
/**
|
|
155
|
+
* Metodo per aprire il dialog per aggiungere/modificare un metadata in un campo di tipo Allegato o Immagine.
|
|
156
|
+
* @param metadata Metadata da modificare, se null allora ne sto creando uno nuovo.
|
|
157
|
+
*/
|
|
158
|
+
openMetadataDialog(field?: BaseField): void;
|
|
159
|
+
/**
|
|
160
|
+
* Metodo invocato dall'output dal dialog per aggiungere/modificare un metadata
|
|
161
|
+
* nei campi di tipo Allegato o Immagine. Prima di aggiungere il metadata nell'elenco
|
|
162
|
+
* contolla se esiste un altro metadata con lo stesso nome e nel caso genera un errore
|
|
163
|
+
* (i metadata, come per i campi della form, devono avere un nome univoco).
|
|
164
|
+
* @param metadata Metadata aggiunto o modificato, se null allora il dialog è stato chiuso senza fare modifiche.
|
|
165
|
+
*/
|
|
166
|
+
onSaveMetadata(metadata: BaseField): void;
|
|
167
|
+
/**
|
|
168
|
+
* Metodo per disabilitare il pulsante per salvare il campo inserito/modificato.
|
|
169
|
+
* @returns Restituisce un booleano, se true il salvataggio viene disabilitato.
|
|
170
|
+
*/
|
|
171
|
+
disableSaveField(): boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Metodo per salvare il campo inserito/modificato.
|
|
174
|
+
* Se è stato inserito un field con la stessa label viene generato un errore (le label devono essere univoche).
|
|
175
|
+
* Una volta aggiunto/aggiornato il campo nell'elenco dei Field della Form chiude il dialog e ricarica la tabella
|
|
176
|
+
* che mostra l'elenco dei campi aggiunti alla form.
|
|
177
|
+
*/
|
|
178
|
+
saveAndExitAddField(save: boolean): void;
|
|
179
|
+
/**
|
|
180
|
+
* Metodo per ripristinare l'oggetto field al cambio del tipo selezionato.
|
|
181
|
+
* Lascia valorizzate solo le proprietà dell'oggetto BaseField comune a tutti i tipi di campo.
|
|
182
|
+
*/
|
|
183
|
+
private restoreBaseFieldProperties;
|
|
184
|
+
private configureColumns;
|
|
185
|
+
/**
|
|
186
|
+
* Metodo per eliminare un metadata aggiunto per un campo di tipo Allegato o Immagine.
|
|
187
|
+
* @param metadata Metadata da eliminare.
|
|
188
|
+
*/
|
|
189
|
+
private deleteMetadata;
|
|
190
|
+
/**
|
|
191
|
+
* Imposta l'ordinamento dei metadata all'interno dei campi di tipo Allegato e Immagine.
|
|
192
|
+
*/
|
|
193
|
+
private setMetadataOrdinalPosition;
|
|
194
|
+
/**
|
|
195
|
+
* Metodo per ricaricare i dati della tabella dei metadata visualizzata nella creazione/modifica
|
|
196
|
+
* dei campi di tipo Allegato o Immagine.
|
|
197
|
+
*/
|
|
198
|
+
private reloadMetadataTable;
|
|
199
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, QueryList, TemplateRef } from '@angular/core';
|
|
2
|
+
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
+
import { IBaseFieldComponent } from '../../../interfaces/iBaseFieldComponent.interface';
|
|
4
|
+
import { BaseField, FieldTypeEnum } from '../../../models/baseField.model';
|
|
5
|
+
import { Form } from '../../../models/form.model';
|
|
6
|
+
import { Record } from '../../../models/record.model';
|
|
7
|
+
import { ListFormRecordComponent } from '../form-records/list-form-record/list-form-record.component';
|
|
8
|
+
export declare class DynamicModuleFieldComponent implements OnInit, IBaseFieldComponent {
|
|
9
|
+
private dialog;
|
|
10
|
+
field: BaseField;
|
|
11
|
+
form: Form;
|
|
12
|
+
record: Record;
|
|
13
|
+
recordChange: EventEmitter<Record>;
|
|
14
|
+
FieldTypeEnum: typeof FieldTypeEnum;
|
|
15
|
+
selectedInnerForm: Form;
|
|
16
|
+
selectedInnerFormRecord: Record;
|
|
17
|
+
indexInnerFormRecord: number;
|
|
18
|
+
onlyViewInnerFormRecord: boolean;
|
|
19
|
+
dialogInnerFormRecordRef: MatDialogRef<TemplateRef<any>>;
|
|
20
|
+
dialogInnerFormRecord: TemplateRef<any>;
|
|
21
|
+
fieldTemplate: QueryList<DynamicModuleFieldComponent>;
|
|
22
|
+
listInnerFormRecords: QueryList<ListFormRecordComponent>;
|
|
23
|
+
constructor(dialog: MatDialog);
|
|
24
|
+
updateField(): void;
|
|
25
|
+
ngOnInit(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Metodo invocato al cambio del valore di ogni proprietà dell'oggetto record.
|
|
28
|
+
* Serve ad aggiornare il valore di tutti i campi che hanno una formula.
|
|
29
|
+
*/
|
|
30
|
+
onRecordChange(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Metodo per recuperare una InnerForm a partire dal Field che la rappresenta.
|
|
33
|
+
* @param field Campo a partire dal quale si vuole recuperare la InnerForm.
|
|
34
|
+
* @returns Restituisce un oggetto di tipo Form.
|
|
35
|
+
*/
|
|
36
|
+
getInnerFormFromField(field: BaseField): Form;
|
|
37
|
+
/**
|
|
38
|
+
* Metodo per aprire un dialog in cui aggiungere/modificare/visualizzare un record appartenente
|
|
39
|
+
* a una form di dettaglio.
|
|
40
|
+
* @param record Evento di output del componente list-form-record, contiene il record selezionato e un booleno che indica
|
|
41
|
+
* se l'utente vuole modificare o visualizzare l'elemento selezionato.
|
|
42
|
+
* @param innerForm Contiene la Form di dettaglio dalla quale è stato richiesto il record.
|
|
43
|
+
*/
|
|
44
|
+
onAddViewEditInnerFormRecord(record: {
|
|
45
|
+
record: Record;
|
|
46
|
+
onlyView: boolean;
|
|
47
|
+
}, field: BaseField): void;
|
|
48
|
+
/**
|
|
49
|
+
* Metodo invocato al salvataggio o alla chiusura del dialog di aggiunta/modifica/visualizzazione
|
|
50
|
+
* di un record di una form di dettaglio.
|
|
51
|
+
* @param record Oggetto restituito dal componente add-form-field (questo qui) contenente il Record
|
|
52
|
+
* aggiornato dall'utente. Se null allora l'utente non ha modificato nulla e ha chiuso il dialog.
|
|
53
|
+
*/
|
|
54
|
+
onSaveInnerFormRecord(record: Record): void;
|
|
55
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
|
|
2
|
+
import { Record } from '../../../../models/record.model';
|
|
3
|
+
import { AttachmentField } from '../../../../models/fields/attachmentField.model';
|
|
4
|
+
import { IBaseFieldComponent } from '../../../../interfaces/iBaseFieldComponent.interface';
|
|
5
|
+
import { UtilityHelperService } from '../../../../services/utilityHelper.services';
|
|
6
|
+
import { EqpAttachmentsComponent } from '@eqproject/eqp-attachments';
|
|
7
|
+
import { FormGroup } from '@angular/forms';
|
|
8
|
+
import { ConfigColumn } from '@eqproject/eqp-table';
|
|
9
|
+
export declare class AttachmentFieldTemplateComponent implements OnInit, OnChanges, IBaseFieldComponent, AfterViewInit {
|
|
10
|
+
utilityService: UtilityHelperService;
|
|
11
|
+
private cdr;
|
|
12
|
+
onlyImages: boolean;
|
|
13
|
+
field: AttachmentField;
|
|
14
|
+
record: Record;
|
|
15
|
+
recordChange: EventEmitter<Record>;
|
|
16
|
+
onAttachmentsChange: EventEmitter<void>;
|
|
17
|
+
eqpAttachments: EqpAttachmentsComponent;
|
|
18
|
+
metadataColumnTemplate: TemplateRef<any>;
|
|
19
|
+
metadataFormGroups: Array<FormGroup>;
|
|
20
|
+
constructor(utilityService: UtilityHelperService, cdr: ChangeDetectorRef);
|
|
21
|
+
ngOnInit(): void;
|
|
22
|
+
ngAfterViewInit(): void;
|
|
23
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
24
|
+
/**
|
|
25
|
+
* Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
|
|
26
|
+
*/
|
|
27
|
+
updateField(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Metodo per intercettare le modifiche agli allegati caricati.
|
|
30
|
+
* Se il campo prevede dei metadata allora per ogni allegato caricato crea un FormGroup
|
|
31
|
+
* per gestire la validazione degli input che l'utente può/deve riempire. I FormGroup
|
|
32
|
+
* seguono lo stesso ordine degli allegati caricati.
|
|
33
|
+
* @param event Contiene la lista aggiornata degli Attachment caricati dall'utente.
|
|
34
|
+
*/
|
|
35
|
+
catchAttachmentList(event: any): void;
|
|
36
|
+
/**
|
|
37
|
+
* Metodo per aggiornare lo stato di validazione del FormControl che rappresenta
|
|
38
|
+
* il campo Allegato (non i metadata al suo interno). Se tra le form dei metadata
|
|
39
|
+
* ne trova una invalida allora marca il controllo come invalido.
|
|
40
|
+
*/
|
|
41
|
+
updateMetadataValidity(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Metodo per recuperare il BaseField che rappresenta il metadata nella riga della eqp-table
|
|
44
|
+
* in base alla colonna e alla riga. Una volta trovato il BaseField gli viene associato il
|
|
45
|
+
* FormGroup di cui fa parte.
|
|
46
|
+
* @param col Colonna della eqp-table.
|
|
47
|
+
* @param row Riga della eqp-table (in questo caso eredita da IAttachment).
|
|
48
|
+
* @returns Restituisce un BaseField per renderizzare il campo nella eqp-table degli allegati multipli.
|
|
49
|
+
*/
|
|
50
|
+
getFieldFromMetadata(col: ConfigColumn, row: any): any;
|
|
51
|
+
/**
|
|
52
|
+
* Metodo per aggiornare il valore e il validator del FormControl associato al campo.
|
|
53
|
+
*/
|
|
54
|
+
private setFormControlValue;
|
|
55
|
+
/**
|
|
56
|
+
* Metodo per emettere l'evento che il valore del record è cambiato.
|
|
57
|
+
*/
|
|
58
|
+
private onRecordValueChange;
|
|
59
|
+
/**
|
|
60
|
+
* Metodo per aggiungere alle colonne di eqp-attachments le colonne per modificare i metadata
|
|
61
|
+
* configurati per il campo Allegato o Immagine.
|
|
62
|
+
*/
|
|
63
|
+
private configureMultiAttachmentColumns;
|
|
64
|
+
/**
|
|
65
|
+
* Metodo per creare i FormGroup che rappresentano i metadata degli allegati caricati.
|
|
66
|
+
*/
|
|
67
|
+
private createMetadataFormGroups;
|
|
68
|
+
}
|