🎉 T-wiki 1.3.0 is released

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