@eqproject/eqp-common
v21.0.0
Published
Eqp common libraries
Readme
eqp-common
Libreria di utilità condivise per l'ecosistema @eqproject. Contiene tutti i modelli, gli enum, i servizi statici e le direttive utilizzati dalle altre librerie (eqp-table, eqp-filters, eqp-form, eqp-lookup, ecc.). Non espone componenti visivi propri: è una dipendenza trasversale che normalizza la configurazione delle colonne, dei filtri e dei form attraverso un sistema di conversione basato su BaseFieldModel.
Installazione
npm install @eqproject/eqp-common --legacy-peer-depsNessun modulo Angular da importare: tutti i servizi esposti sono statici o injectable nel normale providers[] dell'applicazione.
Indice
- EqpCommonService
- EqpDialogService
- DynamicLoaderDirective
- Modelli base
- Modelli tabella
- Modelli filtro
- Modelli form
- Modelli LINQ / server-side filtering
- Enum di supporto
EqpCommonService
Servizio con metodi esclusivamente statici (più un metodo d'istanza). Il caso d'uso principale è la conversione di un array di BaseFieldModel nel tipo concreto richiesto da eqp-table, eqp-filters o eqp-form, evitando la duplicazione delle configurazioni.
convertAs<T>(baseFields, ctor, keys?, additionalProps?)
Converte un array di BaseFieldModel[] in T[] dove T è TableColumnField, FilterField o FormField.
| Parametro | Tipo | Descrizione |
|---|---|---|
| baseFields | BaseFieldModel[] | Sorgente dati (oppure direttamente T[] già tipizzati) |
| ctor | new (...args) => T | Costruttore del tipo target |
| keys | string[] (opz.) | Sottoinsieme di chiavi da includere, nell'ordine indicato |
| additionalProps | T[] (opz.) | Elementi extra o sovrascritture da unire per chiave |
Se baseFields è già un array del tipo target (rilevato tramite isBaseField), la conversione viene saltata e si applica solo il merge di additionalProps.
// Unica sorgente, tre usi
const baseFields: BaseFieldModel[] = [
{ key: 'nome', display: 'Nome', baseType: BaseType.Text },
{ key: 'eta', display: 'Età', baseType: BaseType.Number },
{ key: 'attivo', display: 'Attivo', baseType: BaseType.Boolean },
];
// Per eqp-table
const colonne = EqpCommonService.convertAs(baseFields, TableColumnField);
// Per eqp-filters (solo alcune colonne)
const filtri = EqpCommonService.convertAs(baseFields, FilterField, ['nome', 'attivo']);
// Per eqp-form con sovrascrittura
const campi = EqpCommonService.convertAs(baseFields, FormField, null, [
Object.assign(new FormField(), { key: 'eta', required: true, minValue: 0 })
]);isBaseField(fields)
Type guard statico che verifica se il primo elemento dell'array ha la proprietà baseType != null. Utilizzato internamente da convertAs per evitare doppie conversioni.
getFieldSizeClass(field)
Metodo d'istanza. Riceve un FilterField (o qualsiasi oggetto con fieldClass: FieldSizeClass) e restituisce la stringa della classe Bootstrap corrispondente.
| FieldSizeClass | Classe CSS restituita |
|---|---|
| SMALL (1) | col-12 col-md-3 |
| MEDIUM (2) | col-12 col-md-6 |
| LARGE (3) | col-12 col-md-12 |
| CUSTOM (4) | col-12 col-md-{customClass} |
mergeAdditionalProps<T>(convertedData, additionalProps, comparisonKey)
Metodo statico interno. Per ogni elemento in additionalProps: se esiste già in convertedData (confronto su comparisonKey, default 'key'), sovrascrive le proprietà; altrimenti appende l'elemento in coda.
EqpDialogService
Servizio con metodi esclusivamente statici basati su SweetAlert2. Non richiede injection: i metodi si chiamano direttamente sulla classe.
EqpDialogService.Error(title, message?)
Mostra una dialog di errore (icona error). Restituisce Promise<SweetAlertResult>.
await EqpDialogService.Error('Operazione fallita', 'Impossibile salvare il record.');EqpDialogService.Confirm(title, message?, isWarning?, customWidth?)
Mostra una dialog di conferma con pulsanti Conferma / Annulla.
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
| title | string | — | Titolo della dialog |
| message | string | '' | Testo del corpo |
| isWarning | boolean | false | Se true, usa icona warning invece di question |
| customWidth | string | undefined | Larghezza CSS personalizzata (es. '600px') |
Restituisce Promise<SweetAlertResult>. Il risultato va ispezionato tramite .isConfirmed.
const result = await EqpDialogService.Confirm('Eliminare il record?', 'L\'operazione è irreversibile.', true);
if (result.isConfirmed) {
// procedi con l'eliminazione
}EqpDialogService.Info(title, message?)
Mostra una dialog informativa (icona info). Restituisce Promise<SweetAlertResult>.
EqpDialogService.Warning(title, message?)
Mostra una dialog di avviso (icona warning). Restituisce Promise<SweetAlertResult>.
DynamicLoaderDirective
Direttiva strutturale [appDynamicLoader] che carica dinamicamente un componente all'interno del ViewContainerRef dell'host. Utilizzata principalmente da eqp-lookup per iniettare il componente di aggiunta/modifica all'interno del dialog di lookup.
<ng-template appDynamicLoader [dynamicData]="loaderData"></ng-template>La configurazione avviene tramite DynamicLoaderDirectiveData:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| component | Type<any> | Classe del componente da caricare |
| data | any | Dati da passare al componente caricato |
| closeCallback | Function | Callback invocata alla chiusura del componente |
this.loaderData = {
component: MioFormComponent,
data: { id: this.selectedId },
closeCallback: (result) => {
if (result) this.reloadData();
}
};Modelli base
BaseFieldModel
Classe base da cui ereditano TableColumnField, FilterField e FormField. Definisce le proprietà comuni a tutti i tipi di campo.
| Proprietà | Tipo | Descrizione |
|---|---|---|
| key | string | Chiave univoca del campo (corrisponde al nome della proprietà nell'oggetto dati) |
| display | string | Etichetta visualizzata all'utente |
| value | any | Valore corrente del campo |
| format | string | Formato per la visualizzazione (es. formato data) |
| numberPipe | NumberColumnPipe | Tipo di formattazione numerica da applicare |
| currencyPipeCode | string | Codice valuta (es. 'EUR') quando numberPipe = CURRENCY |
| enumModel | any[] | Array di oggetti { value, label } per la visualizzazione enum |
| styles | Style | Stili CSS inline (flex, minWidth, maxWidth, color, cellAlignment) |
| disabled | boolean | Se true, il campo è disabilitato |
| multilanguagePrefixKey | string | Prefisso per la traduzione via ngx-translate |
| tooltip | EqpMatTooltip | Configurazione del tooltip Material |
| baseType | BaseType | Tipo base del campo (Text, Number, Date, Enum, Boolean) |
BaseType
Enum che descrive il tipo semantico del campo. Utilizzato da convertAs per la conversione automatica verso TypeColumn, InputType e FormFieldType.
| Valore | Costante | Conversione automatica |
|---|---|---|
| 1 | Text | TypeColumn.String / InputType.Text / FormFieldType.Text |
| 2 | Number | TypeColumn.Number / InputType.Number / FormFieldType.Number |
| 3 | Date | TypeColumn.Date / InputType.Date / FormFieldType.Date |
| 4 | Enum | TypeColumn.Enum / InputType.Enum / FormFieldType.Enum |
| 5 | Boolean | TypeColumn.Boolean / InputType.Boolean / FormFieldType.Boolean |
Style e CellAlignmentEnum
Style è un'interfaccia per la definizione degli stili delle celle:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| flex | string | Valore CSS flex (es. '1 1 150px') |
| minWidth | string | Larghezza minima (es. '100px') |
| maxWidth | string | Larghezza massima (es. '300px') |
| color | string | Colore del testo |
| cellAlignment | CellAlignmentEnum | Allineamento del contenuto della cella |
CellAlignmentEnum:
| Valore | Costante |
|---|---|
| 1 | LEFT |
| 2 | RIGHT |
| 3 | CENTER |
EqpMatTooltip e TooltipPositionType
EqpMatTooltip configura il tooltip Angular Material applicato alle celle:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| tooltipText | string | Testo del tooltip (oppure nome della proprietà nell'oggetto riga) |
| tooltipPosition | TooltipPositionType | Posizione del tooltip rispetto all'elemento |
| isDynamicProperty | boolean | Se true, tooltipText viene risolto come proprietà dell'oggetto riga |
TooltipPositionType:
| Valore | Costante |
|---|---|
| 1 | Below |
| 2 | Above |
| 3 | Left |
| 4 | Right |
Modelli tabella
ConfigColumn e TypeColumn
ConfigColumn è il modello legacy per la configurazione delle colonne di eqp-table. È ancora supportato ma si raccomanda l'uso di TableColumnField (basato su BaseFieldModel) per i nuovi sviluppi.
Proprietà principali di ConfigColumn:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| key | string | Nome della proprietà nell'oggetto dati |
| title | string | Intestazione della colonna |
| type | TypeColumn | Tipo di visualizzazione della colonna |
| styles | Style | Stili della cella |
| actions | ConfigAction[] | Azioni (pulsanti) nella colonna |
| hyperlink | Hyperlink | Configurazione link |
| navigate | Navigate | Configurazione navigazione router |
| image | Image | Configurazione immagine |
| icon | Icon | Configurazione icona |
| visible | boolean | Visibilità della colonna (default: true) |
| sortable | boolean | Se la colonna è ordinabile |
| tooltip | EqpMatTooltip | Configurazione tooltip |
| headerFilter | HeaderFilter | Filtro nell'intestazione |
| sticky | boolean | Se true, la colonna è sticky a sinistra |
| stickyEnd | boolean | Se true, la colonna è sticky a destra |
TypeColumn
Enum per il tipo di visualizzazione della colonna:
| Valore | Costante | Descrizione |
|---|---|---|
| 1 | Date | Data formattata |
| 2 | Number | Numero formattato |
| 3 | String | Testo semplice |
| 4 | Action | Colonna con pulsanti azione |
| 5 | Enum | Valore da lista enumerata |
| 6 | Boolean | Valore booleano (icona spunta/croce) |
| 7 | Image | Immagine |
| 8 | Hyperlink | Link cliccabile |
| 9 | Icon | Icona |
| 10 | Currency | Importo con simbolo valuta |
| 11 | CustomComponent | Componente custom iniettato nella cella |
| 12 | Navigate | Navigazione con routerLink |
ConfigAction
Configura un pulsante azione all'interno di una colonna di tipo Action:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| label | string | Testo del pulsante |
| icon | string | Icona Material |
| color | string | Colore del pulsante |
| action | Function | Funzione da eseguire al click (riceve la riga) |
| isVisible | Function \| boolean | Visibilità condizionale |
| isDisabled | Function \| boolean | Disabilitazione condizionale |
| tooltip | string | Testo del tooltip |
Navigate
Configura la navigazione tramite routerLink per colonne di tipo Navigate:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| text | string | Testo visualizzato nel link |
| routeUrl | string | URL base della rotta |
| queryParams | object | Query parameters fissi |
| paramKey | string | Nome della proprietà nell'oggetto riga da usare come parametro dinamico |
ExportEqpTable
Configura l'esportazione della tabella:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| fileName | string | Nome del file esportato (senza estensione) |
| exportType | CustomExportType | Formato di esportazione |
| sheetName | string | Nome del foglio (per xlsx/xls) |
| columnsToExclude | string[] | Chiavi delle colonne da escludere dall'export |
CustomExportType enum: XLSX = 'xlsx', XLS = 'xls', CSV = 'csv', PDF = 'pdf', JSON = 'json', TXT = 'txt'.
CustomButton
Configura i pulsanti custom nell'header di eqp-table:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| label | string | Testo del pulsante |
| action | Function | Funzione da eseguire al click |
| icon | string | Icona Material |
| color | string | Colore del pulsante |
| isDisabled | Function \| boolean | Disabilitazione condizionale |
| fontawesome | string | Classe FontAwesome alternativa all'icona Material |
| containerStyle | string | Stile CSS inline del contenitore |
TableColumnField
Modello raccomandato per la configurazione delle colonne di eqp-table. Estende BaseFieldModel e aggiunge le proprietà specifiche della tabella.
| Proprietà | Tipo | Descrizione |
|---|---|---|
| actions | ConfigAction[] | Azioni nella colonna |
| hyperlink | Hyperlink | Configurazione link |
| navigate | Navigate | Configurazione navigazione |
| image | Image | Configurazione immagine |
| icon | Icon | Configurazione icona |
| visible | boolean | Visibilità (default: true) |
| sortable | boolean | Ordinabilità |
| headerFilter | HeaderFilter | Filtro nell'intestazione |
| sticky | boolean | Sticky a sinistra |
| stickyEnd | boolean | Sticky a destra |
| typeColumn | TypeColumn | Tipo visualizzazione (derivato automaticamente da baseType) |
Metodi statici di TableColumnField
TableColumnField.createTableColumnFields(keys, displays, types, styles?)
Factory helper per creare rapidamente un array di TableColumnField senza istanziare ogni oggetto manualmente.
const columns = TableColumnField.createTableColumnFields(
['id', 'nome', 'data'],
['ID', 'Nome', 'Data creazione'],
[TypeColumn.Number, TypeColumn.String, TypeColumn.Date]
);TableColumnField.createConfigColumns(keys, displays, types, styles?)
Equivalente legacy che produce ConfigColumn[].
BaseTypeConverterTable.convertToTypeColumn(baseType)
Converte un BaseType nel corrispondente TypeColumn. Utilizzato internamente da convertAs.
Modelli filtro
FilterField
Estende BaseFieldModel. Rappresenta la configurazione di un campo filtro da passare a eqp-filters (tramite l'input [filterFields]).
| Proprietà | Tipo | Descrizione |
|---|---|---|
| filterID | string | Identificativo univoco del filtro |
| fieldClass | FieldSizeClass | Dimensione del campo nel layout a griglia |
| label | string | Etichetta del campo filtro |
| propertyName | string | Nome della proprietà su cui filtrare |
| inputType | InputType | Tipo di controllo input |
| placeholder | string | Testo placeholder |
| required | boolean | Se il campo è obbligatorio |
| defaultValue | any | Valore preimpostato |
| enumList | any[] | Lista per i filtri di tipo Enum |
| lookupConfig | LookupObject | Configurazione per filtri di tipo Lookup |
| selectConfig | SelectObject | Configurazione per filtri di tipo Select |
Metodi statici di FilterField
FilterField.createStandardFilterConfig(key, label, inputType, fieldClass?, placeholder?)
Factory helper per la creazione rapida di un FilterField standard.
const filtri: FilterField[] = [
FilterField.createStandardFilterConfig('nome', 'Nome', InputType.Text, FieldSizeClass.MEDIUM),
FilterField.createStandardFilterConfig('data', 'Data', InputType.Date, FieldSizeClass.SMALL),
];FilterField.createFilterFields(keys, labels, inputTypes, fieldClasses?)
Crea un array di FilterField dai parametri forniti come array paralleli.
FilterField.createFilterConfigs(filterFields)
Converte un array di FilterField in FilterConfig[] (formato interno di eqp-filters).
BaseTypeConverterFilter.convertToInputType(baseType)
Converte un BaseType nel corrispondente InputType.
FilterConfig e FilterCvlConfig
FilterConfig è la versione PascalCase di FilterField utilizzata internamente da eqp-filters. I campi sono equivalenti con naming diverso (PropertyName invece di propertyName, ecc.).
FilterCvlConfig estende la configurazione per i filtri a valori controllati (CVL — Controlled Vocabulary List):
| Proprietà | Tipo | Descrizione |
|---|---|---|
| FilterID | string | Identificativo del filtro |
| CvlList | any[] | Lista dei valori selezionabili |
| ValueProperty | string | Proprietà da usare come valore |
| DisplayProperty | string | Proprietà da visualizzare |
| MultiSelect | boolean | Se abilitare la selezione multipla |
FilterCvlConfig.CreateFilterCVLConfig(filterID, cvlList, valueProperty, displayProperty, multiSelect?)
Factory statica per la creazione di una FilterCvlConfig.
SavedFilterItem rappresenta un filtro salvato dall'utente:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| FilterName | string | Nome assegnato dall'utente al filtro salvato |
| FilterData | LinqPredicateDTO | Dati del filtro in formato LINQ |
InputType
Enum che definisce il tipo di controllo di input per i campi filtro e form:
| Valore | Costante | Descrizione |
|---|---|---|
| 1 | Text | Campo di testo libero |
| 2 | Number | Campo numerico |
| 3 | Date | Selettore data |
| 4 | DateRange | Selettore intervallo date |
| 5 | Enum | Lista a valori fissi (dropdown) |
| 6 | Boolean | Toggle booleano |
| 7 | Select | Dropdown con ng-select |
| 8 | Lookup | Dialog di ricerca (eqp-lookup) |
| 9 | Autocomplete | Autocomplete Material |
| 10 | Currency | Campo importo con valuta |
| 11 | Lookup | Alias lookup (vedi nota) |
WherePartType
Enum che definisce l'operatore di confronto da applicare in un predicato LINQ:
| Valore | Costante | Descrizione |
|---|---|---|
| 1 | Equal | Uguale a |
| 2 | NotEqual | Diverso da |
| 3 | GreaterThan | Maggiore di |
| 4 | LessThan | Minore di |
| 5 | GreaterThanOrEqual | Maggiore o uguale a |
| 6 | LessThanOrEqual | Minore o uguale a |
| 7 | Contains | Contiene (LIKE %value%) |
| 8 | StartsWith | Inizia con |
| 9 | EndsWith | Finisce con |
| 10 | NotContainsElement | Non contiene l'elemento (per liste) |
FilterResultType e FilterMode
FilterResultType definisce la modalità con cui vengono restituiti i risultati del pannello filtri:
| Valore | Costante | Descrizione |
|---|---|---|
| 1 | BASIC | Filtro base: singolo LinqPredicateDTO |
| 2 | ADVANCED | Filtro avanzato: ComplexLinqPredicateDTO con operatori AND/OR |
FilterMode definisce il layout del pannello filtri:
| Valore | Costante | Descrizione |
|---|---|---|
| 1 | WITH_CARD | Filtri racchiusi in una mat-card |
| 2 | WITH_BUTTON | Filtri racchiusi in un pannello espandibile con pulsante |
Modelli form
FormField e FormFieldType
FormField estende BaseFieldModel. Rappresenta la configurazione di un campo del form dinamico di eqp-form.
| Proprietà | Tipo | Descrizione |
|---|---|---|
| formFieldType | FormFieldType | Tipo del campo form |
| required | boolean | Campo obbligatorio |
| placeholder | string | Testo placeholder |
| defaultValue | any | Valore iniziale |
| validators | ValidatorFn[] | Validatori Angular aggiuntivi |
| fieldClass | FieldSizeClass | Dimensione nel layout griglia |
| lookupObject | LookupObject | Configurazione lookup (quando formFieldType = Lookup) |
| selectObject | SelectObject | Configurazione select (quando formFieldType = Select o Enum) |
| minValue | number | Valore minimo (per campi numerici) |
| maxValue | number | Valore massimo (per campi numerici) |
| readonly | boolean | Campo in sola lettura |
| hint | string | Testo di aiuto sotto il campo |
FormFieldType enum:
| Valore | Costante |
|---|---|
| 1 | Text |
| 2 | Number |
| 3 | Date |
| 4 | Enum |
| 5 | Boolean |
| 6 | Select |
| 7 | Lookup |
| 8 | Textarea |
| 9 | Currency |
| 10 | DateRange |
BoolLabelPosition enum: BEFORE / AFTER — posizione dell'etichetta rispetto al toggle booleano.
BaseTypeConverter.convertToFormFieldType(baseType) — converte BaseType in FormFieldType.
LookupObject e SelectObject
LookupObject è la specifica di configurazione mirror di eqp-lookup per i campi di tipo Lookup nei form e nei filtri:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| lookupUrl | string | URL endpoint HTTP |
| lookupMethod | string | Metodo HTTP (GET/POST) |
| displayProperties | string[] | Proprietà da visualizzare nel dropdown |
| valueProperty | string | Proprietà usata come valore selezionato |
| dataFilter | LinqPredicateDTO | Filtro statico applicato alla chiamata |
| multiSelect | boolean | Selezione multipla |
| addComponent | Type<any> | Componente per aggiunta record |
| editComponent | Type<any> | Componente per modifica record |
SelectObject configura i dropdown basati su eqp-select:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| selectList | any[] | Lista statica dei valori |
| selectUrl | string | URL per lista dinamica |
| valueProperty | string | Proprietà valore |
| displayProperty | string | Proprietà visualizzata |
| multiSelect | boolean | Selezione multipla |
| enumType | any | Tipo enum (per liste generate da enum TypeScript) |
Modelli LINQ / server-side filtering
Questi modelli rappresentano il contratto di comunicazione tra il frontend e il backend per il filtraggio server-side. Vengono serializzati e inviati nelle richieste HTTP.
LinqPredicateDTO e LinqFilterDTO
LinqPredicateDTO incapsula un insieme di condizioni WHERE concatenate con lo stesso operatore logico:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| Filters | LinqFilterDTO[] | Array delle singole condizioni |
| Operator | 'AND' \| 'OR' | Operatore logico tra le condizioni |
LinqFilterDTO rappresenta una singola condizione:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| PropertyName | string | Nome della proprietà su cui filtrare |
| Value | any | Valore di confronto |
| WherePart | WherePartType | Operatore di confronto |
| FilterType | LinqFilterType | Tipo del dato filtrato |
LinqFilterDTO.createFilter(propertyName, value, wherePart, filterType?) — factory statica per la creazione di un filtro.
const predicato: LinqPredicateDTO = {
Operator: 'AND',
Filters: [
LinqFilterDTO.createFilter('Nome', 'Mario', WherePartType.Contains),
LinqFilterDTO.createFilter('Attivo', true, WherePartType.Equal),
]
};LinqFilterType enum (valori da 1 a 10): String, Number, Date, Boolean, Guid, List, Enum, DateTime, DateRange, NullableNumber.
ComplexLinqPredicateDTO
Estende la logica di LinqPredicateDTO consentendo la composizione di più predicati con operatori diversi (es. (A AND B) OR (C AND D)):
| Proprietà | Tipo | Descrizione |
|---|---|---|
| Predicates | LinqPredicateDTO[] | Array di predicati semplici |
| Operator | 'AND' \| 'OR' | Operatore tra i predicati |
ComplexLinqPredicateDTO.CreateComplexPredicate(predicates, operator?) — factory statica (default operator = 'OR').
const predicatoComplesso = ComplexLinqPredicateDTO.CreateComplexPredicate([
{ Operator: 'AND', Filters: [LinqFilterDTO.createFilter('TipoId', 1, WherePartType.Equal)] },
{ Operator: 'AND', Filters: [LinqFilterDTO.createFilter('TipoId', 2, WherePartType.Equal)] },
], 'OR');LookupDTO e LookupCustomConfig
LookupDTO è il modello di risposta degli endpoint di lookup:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| ID | any | Identificativo del record |
| DisplayName | string | Testo visualizzato nel dropdown |
| AdditionalData | any | Dati extra opzionali |
LookupCustomConfig configura il comportamento del lookup per richieste personalizzate:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| lookupCustomUrl | string | URL alternativo per il lookup |
| lookupCustomBody | any | Body della richiesta personalizzata |
| lookupCustomMethod | string | Metodo HTTP personalizzato |
Enum di supporto
FieldSizeClass
Enum per la dimensione dei campi nei layout a griglia di eqp-filters e eqp-form:
| Valore | Costante | Classe Bootstrap |
|---|---|---|
| 1 | SMALL | col-12 col-md-3 |
| 2 | MEDIUM | col-12 col-md-6 |
| 3 | LARGE | col-12 col-md-12 |
| 4 | CUSTOM | col-12 col-md-{n} (specificare customClass) |
NumberColumnPipe e BooleanValues
NumberColumnPipe definisce la formattazione per le colonne numeriche:
| Valore | Costante | Descrizione |
|---|---|---|
| 1 | DECIMAL | Numero decimale formattato |
| 2 | PERCENT | Percentuale (multiplica per 100) |
| 3 | CURRENCY | Importo con valuta (currencyPipeCode) |
BooleanValues è un'interfaccia per la localizzazione dei valori booleani nelle celle della tabella:
| Proprietà | Tipo | Descrizione |
|---|---|---|
| trueValue | string | Testo/icona per true (default: 'Sì') |
| falseValue | string | Testo/icona per false (default: 'No') |
Pattern di utilizzo consigliato
Il caso d'uso più comune è definire una sorgente unica di configurazione tramite BaseFieldModel[] e derivarne automaticamente colonne, filtri e campi form.
// definizione unica
this.baseFields: BaseFieldModel[] = [
{ key: 'id', display: 'ID', baseType: BaseType.Number },
{ key: 'nome', display: 'Nome', baseType: BaseType.Text },
{ key: 'dataIns', display: 'Data', baseType: BaseType.Date },
{ key: 'stato', display: 'Stato', baseType: BaseType.Enum, enumModel: this.statiList },
];
// per eqp-table — tutte le colonne
this.tableColumns = EqpCommonService.convertAs(this.baseFields, TableColumnField);
// per eqp-filters — solo nome e data, con override della dimensione
this.filterFields = EqpCommonService.convertAs(
this.baseFields,
FilterField,
['nome', 'dataIns'],
[
Object.assign(new FilterField(), { key: 'nome', fieldClass: FieldSizeClass.MEDIUM }),
Object.assign(new FilterField(), { key: 'dataIns', fieldClass: FieldSizeClass.SMALL }),
]
);
// per eqp-form — con campo aggiuntivo non presente nella sorgente base
this.formFields = EqpCommonService.convertAs(
this.baseFields,
FormField,
['nome', 'stato'],
[
Object.assign(new FormField(), { key: 'nome', required: true }),
Object.assign(new FormField(), {
key: 'note',
display: 'Note',
formFieldType: FormFieldType.Textarea,
fieldClass: FieldSizeClass.LARGE
}),
]
);