import { ChangeDetectorRef, EventEmitter, OnInit, TemplateRef } from "@angular/core"; import { FormControl, UntypedFormBuilder, UntypedFormGroup } from "@angular/forms"; import { MatDialog, MatDialogRef } from "@angular/material/dialog"; import { AttachmentType, TmwAttachmentsComponent, TmwAttachmentDTO } from "tmw-attachments"; import { EnumHelper, TmwSelectOption } from "tmw-select"; import { ConfigColumn } from "tmw-table"; import { BaseField, DataGetterCardinalityEnum, FieldInvisibilityEnum, FieldTypeEnum } from "../../../models/baseField.model"; import { BoolPresentantioEnum } from "../../../models/fields/booleanField.model"; import { DateTimeTypeEnum } from "../../../models/fields/dateField.model"; import { ListPresentationEnum } from "../../../models/fields/listValueField.model"; import { NumericFieldIconPositionEnum } from "../../../models/fields/numericField.model"; import { TextareaFieldIconPositionEnum } from "../../../models/fields/textareaField.model"; import { TextFieldIconPositionEnum, TextMaskEnum } from "../../../models/fields/textField.model"; import { FormFieldGroup, Form } from '../../../models/form.model'; import { UtilityHelperService } from "../../../services/utilityHelper.services"; import { AttachmentFieldTypeEnum, DynAttachment } from "../../../models/dynAttachment"; import { DynamicLoaderDirectiveData, eventOut } from "../../../directives/dynamic-loader/dynamic-loader.directive"; import { HttpClient } from "@angular/common/http"; import { DataGetterTypeEnum } from '../../../models/baseField.model'; import { ModeEnum, TimeTypeEnum } from "tmw-picker"; import { EndPointConfiguration } from "../../../models/endPointConfiguration.model"; import { Contestualization } from "../../../models/getter.model"; import { ActionButtonField } from "../../../models/fields/actionButton.model"; import { FieldExtraConfig } from '../../../models/fieldExtraConfig.model'; import * as i0 from "@angular/core"; export declare class AddFormFieldComponent implements OnInit { private formBuilder; private enumHelper; private dialog; private cdr; private httpClient; private utilityHelperService; fieldsExtraConfig: Array; form: Form; endPointConfiguration: EndPointConfiguration; field: BaseField | any; indexField: number; formFieldsGroups: Array; /** Elenco dei Field creati nella form, usati per popolare l'autocomplete della proprietà Formula. */ availableFields: Array; fieldTypesToExclude: Array; QueryEditorComponent: DynamicLoaderDirectiveData; contestualization: Array; actionButtons: any; formulaObject: any; out: EventEmitter; saveFieldEvent: EventEmitter<{ field: BaseField; reopen: number; }>; openAiEditForFieldEvent: EventEmitter; openAiGraphicSuggestEvent: EventEmitter<{ code: string; hint: string; }>; aiFieldSuggestLoading: boolean; showGraphicSuggestInput: boolean; graphicSuggestHint: string; private static readonly HINT_PALETTES; private static readonly HINT_STYLES; private static readonly HINT_ADJECTIVES; randomizeGraphicHint(): void; private ensureFieldCode; onOpenAiEditForField(): void; onGraphicSuggest(): void; resizedImagesHeightPx: number; fieldFormGroup: UntypedFormGroup; keyValueObject: { key: string; value: string; }; availableColSpanSizesCompilazione: Array; availableColSpanSizesRisposta: Array; formulaAutocompleteOptions: Array<{ label: string; value: string; }>; VisibleIfAutocompleteOptions: Array<{ label: string; value: string; }>; AvailableFileExtensions: { key: string; value: string; }[]; AvailableImageExtensions: { key: string; value: string; }[]; fieldInvisibilityEnum: typeof FieldInvisibilityEnum; columnKeys: Array<{ key: string; value: string; }>; aggregationFunctionEnum: any; fieldTypeFormTemplate: TemplateRef; textFieldFormTemplate: TemplateRef; labelFieldFormTemplate: TemplateRef; buttonFieldFormTemplate: TemplateRef; textareaFieldFormTemplate: TemplateRef; booleadFieldFormTemplate: TemplateRef; dateFieldFormTemplate: TemplateRef; numericFieldFormTemplate: TemplateRef; attachmentFieldFormTemplate: TemplateRef; imageFieldFormTemplate: TemplateRef; imageWithMarkersFieldFormTemplate: TemplateRef; imageFieldSelectorFormTemplate: TemplateRef; listValueFieldFormTemplate: TemplateRef; lookupFieldFormTemplate: TemplateRef; dataGetterTemplate: TemplateRef; metadataColumns: Array; selectedMetadata: BaseField; dialogVisibleIfRef: MatDialogRef>; dialogReadOnlyIfRef: MatDialogRef>; dialogFormula: TemplateRef; dialogFormulaRef: MatDialogRef>; buttonImagesKeyValueInputColumn: TemplateRef; FieldTypeEnum: typeof FieldTypeEnum; BoolPresentantioEnum: typeof BoolPresentantioEnum; DateTimeTypeEnum: typeof DateTimeTypeEnum; ListPresentationEnum: typeof ListPresentationEnum; TextMaskEnum: typeof TextMaskEnum; TextFieldIconPositionEnum: typeof TextFieldIconPositionEnum; NumericFieldIconPositionEnum: typeof NumericFieldIconPositionEnum; TextareaFieldIconPositionEnum: typeof TextareaFieldIconPositionEnum; readonly dateTimeIconPositionOptions: { value: string; label: string; }[]; AttachmentType: typeof AttachmentType; attachmentFieldTypeEnum: typeof AttachmentFieldTypeEnum; dataGetterTypeEnum: typeof DataGetterTypeEnum; subscription: any; showTextFieldIcon: boolean; showNumericFieldIcon: boolean; showTextareaFieldIcon: boolean; configColumnListImages: Array; configColumnImage: Array; GenericListImagesImageTemplate: TemplateRef; GenericListImagesKeyTemplate: TemplateRef; GenericListImagesValueTemplate: TemplateRef; imageSelectorAttachments: TmwAttachmentsComponent; imageAttachment: TmwAttachmentsComponent; dialogQERef: MatDialogRef>; dialogQE: TemplateRef; mode: typeof ModeEnum; timeType: typeof TimeTypeEnum; forms: Array
; DMModule: any; DMField: any; DMFields: Array<{ key: string; }>; DMGetterCardinalities: typeof DataGetterCardinalityEnum; platform: string; loadedFieldExtra: boolean; aggregationFieldLoaded: boolean; previewRecord: any; styleVersion: number; previewForceState: string | null; get isTextField(): boolean; get isNumericField(): boolean; get isTextareaField(): boolean; get isBooleanField(): boolean; get isAttachmentField(): boolean; get isLabelField(): boolean; get isDateField(): boolean; get isActionButtonField(): boolean; get isImageField(): boolean; get isImageWithMarkersField(): boolean; get isListValueField(): boolean; get isImageSelectorField(): boolean; /** Metadati degli elementi del TextField per le tab CSS */ readonly textFieldStyleElements: { key: string; label: string; }[]; /** Metadati degli stati per le tab CSS */ readonly textFieldStyleStates: { key: string; label: string; }[]; selectedTextFieldStyleState: string | null; /** Metadati degli elementi del NumericField per le tab CSS (senza Microfono) */ readonly numericFieldStyleElements: { key: string; label: string; }[]; readonly numericFieldStyleStates: { key: string; label: string; }[]; selectedNumericFieldStyleState: string | null; /** Metadati degli elementi del TextareaField per le tab CSS */ readonly textareaFieldStyleElements: { key: string; label: string; }[]; readonly textareaFieldStyleStates: { key: string; label: string; }[]; selectedTextareaFieldStyleState: string | null; /** Metadati degli elementi del BooleanField per le tab CSS (3 elementi, senza NotValid) */ readonly booleanFieldStyleElements: { key: string; label: string; }[]; readonly booleanFieldStyleStates: { key: string; label: string; }[]; selectedBooleanFieldStyleState: string | null; /** Metadati degli elementi del AttachmentField per le tab CSS */ readonly attachmentFieldStyleElements: { key: string; label: string; }[]; readonly attachmentFieldStyleStates: { key: string; label: string; }[]; selectedAttachmentFieldStyleState: string | null; /** Metadati degli elementi del LabelField per le tab CSS (1 elemento, 2 stati) */ readonly labelFieldStyleElements: { key: string; label: string; }[]; readonly labelFieldStyleStates: { key: string; label: string; }[]; selectedLabelFieldStyleState: string | null; /** Metadati degli elementi del DateField per le tab CSS (8 elementi, 5 stati) */ readonly dateFieldStyleElements: { key: string; label: string; }[]; readonly dateFieldStyleStates: { key: string; label: string; }[]; selectedDateFieldStyleState: string | null; /** Metadati degli elementi del ActionButtonField per le tab CSS (3 elementi, 3 stati) */ readonly actionButtonFieldStyleElements: { key: string; label: string; }[]; readonly actionButtonFieldStyleStates: { key: string; label: string; }[]; selectedActionButtonFieldStyleState: string | null; /** Metadati degli elementi del ImageField per le tab CSS (3 elementi, 2 stati) */ readonly imageFieldStyleElements: { key: string; label: string; }[]; readonly imageFieldStyleStates: { key: string; label: string; }[]; selectedImageFieldStyleState: string | null; /** Metadati degli elementi del ImageWithMarkersField per le tab CSS (3 elementi, 2 stati) */ readonly imageWithMarkersFieldStyleElements: { key: string; label: string; }[]; readonly imageWithMarkersFieldStyleStates: { key: string; label: string; }[]; selectedImageWithMarkersFieldStyleState: string | null; private readonly listValueComboElements; private readonly listValueRadioElements; private readonly listValueButtonElements; get listValueStyleElements(): { key: string; label: string; }[]; readonly listValueFieldStyleStates: { key: string; label: string; }[]; selectedListValueFieldStyleState: string | null; readonly imageSelectorFieldStyleElements: { key: string; label: string; }[]; readonly imageSelectorFieldStyleStates: { key: string; label: string; }[]; selectedImageSelectorFieldStyleState: string | null; constructor(formBuilder: UntypedFormBuilder, enumHelper: EnumHelper, dialog: MatDialog, cdr: ChangeDetectorRef, httpClient: HttpClient, utilityHelperService: UtilityHelperService); ngOnInit(): Promise; /** * Metodo per impostare i valori da suggerire nell'autocomplete del campo Formula. * Viene scatenato al focus (in questo caso viene passato il parametro a null per differenziarlo * dall'evento di click sulla tastiera) e al keyup sull'input (il parametro è diverso da null). * @param keyboardEvent Evento scatenato al keyup sulla tastiera. Se null allora il metodo è stato invocato dal focus sull'input. * @summary Aggiorna l'elenco dei suggerimenti per l'autocomplete se l'utente esegue il focus sull'input * oppure al keyup sulla tastiera di un tasto diverso dalle frecce. */ setVisibleIfAutocompleteOptions(keyboardEvent: KeyboardEvent): void; omit_special_char(event: any): boolean; /** * Crea il FormGroup per l'aggiunta di un nuovo campo all'interno della form. * Metodo richiamato ogni volta che cambia il tipo del campo scelto o viene aggiunto/modificato un Field */ createFieldForm(): void; questionPoll(control: FormControl): { [s: string]: boolean; }; stringSanitaizedValidator(control: FormControl): { [s: string]: boolean; }; /** * Metodo chiamato dai mat-error per prendere gli errori generati relativi al campo. * @param control è il nome del GroupControl di cui leggere se ci sono errori */ getFormValidationErrors(control: string): string; setAggregation(enumType: any, reset: boolean): void; /** * Metodo chiamato quando cambia il FieldType del BaseField che si sta aggiungendo/modificando. * Ricrea l'oggetto field popolando solo le proprietà del BaseField inserite dall'utente * (quelle comuni a tutte le tipologie di campo), ricrea la form e, in base al FieldType scelto, * aggiunge alla form i FormControl necessari e seleziona il template corretto da usare. * @param restoreField Se TRUE ripristina i valori base (ereditati dal modello BaseField) del campo aggiunto/modificato */ onFieldTypeChange(restoreField?: boolean): void; onDataGetterTypeChange(): Promise; /** * Metodo invocato al cambio del valore della proprietà ImageIsContextualAttachment nel caso * di campi di tipo Immagine. Se TRUE allora rimuove i FormControl per le proprietà IsMultiAttach * e AllowedMimeTypes e aggiunge i FormControl per le proprietà ImgName e ContextualAttachment, * altrimenti il contrario. */ onImageIsContextualAttachmentChange(): void; /** * Metodo per intercettare l'aggiunta di un allegato nei campi di tipo Immagine per aggiornare * il valore della proprietà ContextualAttachment e la validazione del relativo FormControl. * @param event Array contenente l'elenco aggiornato degli allegati caricati (nel nostro caso ne contiene al più 1). */ catchContextualAttachmentChange(event: Array): void; /** * Metodo invocato alla selezione di una classe nella select per le colonne di bootstrap * da usare nella visualizzazione del campo. Questa funzione manipola la sorgente dati per * la eqp-select in modo da escludere i valori dell'enumeratore che fanno riferimento ad * una larghezza di schermo già selezionata. Esempio: per gli schermi piccoli (sm) l'utente * seleziona la classe "col-sm-6", al change del valore questo metodo rimuove dalla select * tutti gli altri valori per la grandezza di schermo selezionata. */ onColSpanSizeSelect(): void; /** * Metodo invocato al cambio del tipo di visualizzazione scelta per i campi di tipo elenco generico. * Se viene scelta la visualizzazione ad immagini svuota la lista delle coppie chiave-valore inserite * in precedenza, altrimenti svuota la lista delle immagini caricate. */ onPresentationModeChange(): void; /** * Metodo invocato al salvataggio degli allegati quando viene configurato un campo di tipo "Elenco generico" * con il tipo di visualizzazione ad immagini. Intercetta l'elenco aggiornato delle immagini caricate e lo * memorizza nell'oggetto field corrente. * @param attachments Array aggiornato degli allegati caricati. */ catchButtonImagesChange(attachments: Array): void; catchButtonImageChange(attachments: Array): void; catchButtonImageWithMarkersChange(attachments: Array): void; /** * Metodo chiamato al keyup degli input testuali che prevedono l'aggiunta del valore inserito in un array. * Se l'utente preme il tasto invio, in base al tipo di campo che sta inserendo/modificando, questo metodo * aggiunge il valore inserito dall'utente nella lista di stringhe corretta (in input viene passato il nome * della proprietà in cui inserire la stringa). * @param event Evento che rappresenta il keyup dell'utente * @param propertyName Nome della proprietà del field in cui inserire la stringa digitata. */ onMultiSelectInputKeyup(event: any, propertyName: string): void; /** * Metodo chiamato per mostrare come elenco le opzioni aggiunte in un campo di tipo "Elenco generico". * @returns Restituisce un array di oggetti del tipo { key: string, value: string } con i valori inseriti dall'utente. */ getDictionaryKeyValue(): { key: string; value: any; }[]; /** * Metodo per rimuovere una opzione aggiunta al campo di tipo "Elenco generico" * @param key Nome della chiave da rimuovere */ deleteKeyFromDictionary(key: string): void; openFormulaDialog(): void; openVisibleIfDialog(): void; openReadOnlyIfDialog(): void; openAnswerStyleVisibleIfDialog(): void; onTextFieldIconToggle(enabled: boolean): void; /** Legge il valore di una proprietà CSS da TextFieldStyleCSS */ getStyleValue(key: string): string; /** Imposta o cancella una proprietà CSS in TextFieldStyleCSS e aggiorna l'anteprima */ setStyleValue(key: string, value: string): void; /** Inizializza la preview del TextField (FormFormGroup + record dummy) */ initTextFieldPreview(): void; /** Aggiorna Name e FormFormGroup quando il Codice cambia, per mantenere la preview allineata */ onLabelChangeForPreview(newLabel: string): void; /** Sincronizza MinValue/MaxValue dal fieldFormGroup al campo e aggiorna i validator dell'anteprima */ onNumericMinMaxChange(): void; onNumericFieldIconToggle(enabled: boolean): void; getNumericStyleValue(key: string): string; setNumericStyleValue(key: string, value: string): void; initNumericFieldPreview(): void; onTextareaFieldIconToggle(enabled: boolean): void; getTextareaStyleValue(key: string): string; setTextareaStyleValue(key: string, value: string): void; initTextareaFieldPreview(): void; getBooleanStyleValue(key: string): string; setBooleanStyleValue(key: string, value: string): void; initBooleanFieldPreview(): void; getAttachmentStyleValue(key: string): string; setAttachmentStyleValue(key: string, value: string): void; initAttachmentFieldPreview(): void; getLabelStyleValue(key: string): string; setLabelStyleValue(key: string, value: string): void; initLabelFieldPreview(): void; onDateTypeChange(): void; getDateStyleValue(key: string): string; setDateStyleValue(key: string, value: string): void; initDateFieldPreview(): void; getActionButtonStyleValue(key: string): string; setActionButtonStyleValue(key: string, value: string): void; initActionButtonFieldPreview(): void; getImageStyleValue(key: string): string; setImageStyleValue(key: string, value: string): void; initImageFieldPreview(): void; getImageWithMarkersStyleValue(key: string): string; setImageWithMarkersStyleValue(key: string, value: string): void; initImageWithMarkersFieldPreview(): void; getListValueStyleValue(key: string): string; setListValueStyleValue(key: string, value: string): void; initListValueFieldPreview(): void; onIsMultiChoicheChange(): void; getImageSelectorStyleValue(key: string): string; setImageSelectorStyleValue(key: string, value: string): void; initImageSelectorFieldPreview(): void; stringSanitizer(value: any): void; /** * Metodo per disabilitare il pulsante per salvare il campo inserito/modificato. * @returns Restituisce un booleano, se true il salvataggio viene disabilitato. */ disableSaveField(): boolean; onSaveClick(): void; private collectValidationErrors; /** * Metodo per salvare il campo inserito/modificato. * Se è stato inserito un field con la stessa label viene generato un errore (le label devono essere univoche). * Una volta aggiunto/aggiornato il campo nell'elenco dei Field della Form chiude il dialog e ricarica la tabella * che mostra l'elenco dei campi aggiunti alla form. */ saveAndExitAddField(save: boolean, nextRelativeIndex?: number): void; isAnActionKey(key: any, field: ActionButtonField, formulas: Array): boolean; setCodeToExtraFields(): void; /** * Metodo per ripristinare l'oggetto field al cambio del tipo selezionato. * Lascia valorizzate solo le proprietà dell'oggetto BaseField comune a tutti i tipi di campo. */ private restoreBaseFieldProperties; countValuePairs(valuePairs: any): number; configureColumns(): void; private moveElement; private setFieldOrdinalPosition; setResizedImagesHeightPx(): void; deleteListImage(el: DynAttachment, i: number, col: ConfigColumn): void; deleteImage(el: DynAttachment): void; openDBGetter(): void; closeQEModal(): void; onExternalComponentOut(ev: eventOut): void; treatDataFromQueryEditor(data: any): void; createColumnKeys(data: any): void; getAllModules(): void; onChangeDMModule(): void; onChangeDMField(): void; onChangeDMContestualization(): void; changedButtonField(field: ActionButtonField): void; configureFieldsExtra(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }