JSON Definizione
Struttura principale
Il primo livello del JSON di definizione è molto semplice, oltre a dati di configurazione generale è presente la proprietà views.
Views è il vero e proprio inizio della configurazione dell’interfaccia, all’interno sono definiti i vari layout espositivi.
export type DAGA = {
base_color?: string // Colore principare dell'anagrafica, semplice estetica
columnSpacing?: number // Spaziatura tra le views
rowSpacing?: number // Spaziatura tra le views
layoutFlexDirection?: // Direzione del flex layout nel quale le views sono disegnate
React.CSSProperties['flexDirection']
views: DAGA_view_obj[] // Elenco delle varie visualizzazioni previste nell'anagrafica
}
export type DAGA_view_obj = {
name: string // nome della vista
layouts: DAGA_layout[] // lista dei layout all'interno della vista
}
export type DAGA_layout =
(DAGA_datatable_layout
| DAGA_master_detail_grid_layout
| DAGA_generic_layout
| DAGA_list_layout
| DAGA_tab_layout
| DAGA_button_layout) & {
// Indica su quale elemento logico il layout opera, utilizzato per il controllo delle autorizzazioni
entity?: string
}Il layout DAGA_tab_layout all’interno della proprietà views permette di definire una nuova lista di layout creando cosi una struttura ricorsiva potenzialmente infinita che permette di gestire livelli multipli di esposizione dei dati
Paper layout
Il paper layout non è una vera e propria vista a se stante ma è utilizzata all’interno del tab layout.
Consiste in un Paper della MUI dove al suo interno vengono renderizzati i campi dichiarati
Principali caratteristiche dei layout
api
Quasi in tutti i layout è presente la proprietà apis dove vengono difinite tutte le chiamate API utilizzate dal layout.
Alcune come le GET sono utilizzate immediatamente per il recupero dei dati, altre sono vincolate ad azioni dell’utente e pilotano
la visualizzazione dei singoli pulsanti di manutenzione, come la DELETE che, se presente, abilita la visualizzazione del pulsante “elimina”
L’abilitazione dei pulsanti di manutenzione è coordinata anche dai ruoli utente definiti per operare in tal senso (vedi definizione), se l’utente corrente non è abilitato all’inserimento dell’entità il pulsante non verrà visualizzato anche se è presente l’API POST
export type DAGA_api_list = {
get?: DAGA_get_api[]
post?: DAGA_post_api
patch?: DAGA_patch_api
put?: DAGA_put_api
delete?: DAGA_delete_api
}Per maggiori informazioni sulle API vedi la relativa guida
watchSharedValue
La proprietà watchSharedValue permetti ai componenti nei quali è dichiarata di eseguire azioni quando si verificano determinati eventi
export type DAGA_[type]_layout = {
...
watchSharedValue?: DAGA_watch_shared_value[]
...
}
export type DAGA_watch_shared_value =
DAGA_watch_shared_value_mount_field
| DAGA_watch_shared_value_unmount_field
| DAGA_watch_shared_value_refresh_field
| DAGA_watch_shared_value_filter_field
| DAGA_watch_shared_enable_field
export type DAGA_watch_shared_value_[type]_field = {
name: string, // Id della propietĂ nello store sulla quale restare in ascolto
action: "mount" | "unmount"| "enable" | "refresh" | "filter" // tipologia di azione
filter?: Daga_api_filters_no_external_api // filtri da applicare nel caso di action "filter"
}Gli eventi disponibili sono:
- mount: evento che permette di renderizzare un componente quando la propietĂ collegata al campo name viene istanziata
- unmount: evento che permette di eliminare dalla pagine un componente
- refresh: evento che permette di renderizzare un componente ogni volta che la propietĂ collegata al campo name viene aggiornata
- filter:
- enable: evento che abilita un componente (solitamente una select) quando la propietĂ collegata al campo name viene istanziata
entity
La proprietà entity dei layout indica su quale risorsa virtuale si opera permettendo cosi al gestore di autorizzazioni di capire se rendere disponibili all’utente, ad esempio, le possibilità di gestione ed eliminazione di un elemento (vedi Gestione Auth)
show_view / insert_view / edit_view
show_view, insert_view ed edit_view contengono la definizione dei rispettivi modali: visualizzazione, inserimento e modifica.
Il modale di visualizzazioni non è altro che una tab layout che può contenere a sua volta altri tab o paper layout.
I modali di inserimento e modifica invece possono o essere gestiti come il precedente o mediante l’utilizzio di una visualizzazione a Wizard
Per maggiori informazioni sulla gestione delle risorse vedi la relativa guida