fieldcell

Il fieldcell è uno speciale widget di Genropy che si occupa della visualizzazione (ed eventualmente della modifica) dei valori di una colonna di una tabella del database all’interno di una griglia .

La sintassi del widget è estremamente semplice, e nella sua forma più minimale si limita a specificare in maniera implicita il field a cui si riferisce il valore all’interno della struct della griglia:

def th_struct(self,struct):
      r = struct.view().rows()
      r.fieldcell('_row_count', counter=True, hidden=True)
      r.fieldcell('codice', edit=dict(validate_notnull=True))
      r.fieldcell('nome')

La particolarità del fieldcell è che si occuperà automaticamente di effettuare un controllo sui permessi, stabilendo cosa mostrare/nascondere/filtrare all’utente che sta visualizzando la pagina, di controllare nelle preferenze se la colonna è abilitata o disabilitata, infine di individuare il format della colonna più adatto, sulla base del dtype specificato nel model.

Si noti che il valore indicato come field deve essere una colonna appartenente ad una table del database ed il suo valore deve coincidere con il nome della colonna. Può anche essere una colonna in relazione rispetto a quella della table di riferimento ed è possibile riferirsi ad essa usando il path di relazione con il carattere @ (es: @prodotto_id.peso). Se il riferimento viene fatto ad una colonna foreign-key verrà mostrato il corrispondente campo indicato come caption_field.


Parametri:

Nome parametro

Tipo

Descrizione

width

T

Consente di definire l’eventuale larghezza di una colonna, il valore può essere espresso in px o em.

name

T

è il titolo della colonna che voglio mostrare nell’header, se sto usando fieldcell il suo valore di default è letto dagli attributi name_short e name_long della colonna corrispondente, nella definizione del model.

text_align

T

consente di allineare il testo a sinistra (left, default o center o right)

format

T

è una stringa che rappresenta il pattern di formattazione che voglio dare ad un dato di tipo data o numerico. Ad esempio #,###.00

dtype

T

è il tipo di dato nella solita codifica. Se si usa fieldcell non serve perché il dtype è ricavato dal model.

columnset

T

ha uno scopo di esclusiva organizzazione visiva e/o logica dei dati e ne consente una maggiore leggibilità in quanto le colonne appartenenti allo stesso columnset vengono visualmente raggruppate sotto una sorta di cappelletto colorato

sort

T

Permette di stabilire il criterio di ordinamento (a=Ascendente, d=discendente) della griglia basato sulla colonna in cui viene dichiarato. Ha la precedenza rispetto all’ordinamento eventualmente definito nel metodo th_order, che invece è definito a livello di classe View.

calculated

B

Se a un cell assegniamo il parametro calculated=True, la colonna sarà considerata «calcolata» e non sarà quindi presente nelle query

formula

T

Per un cell calcolato, permette di inserire una sintassi javascript per il calcolo (es: formula=”voto_si?popolazione_residente:0”)

totalize

B

Se impostato a True, specifica se totalizzare i valori della colonna. Alternativamente, in caso per esempio di colonne calcolate, può contenere indicazione dei valori da totalizzare (es: totalize=”#FORM.record.mill_si”)

_customGetter

T

Permette di customizzare il contenuto della cella e modificarlo tramite un contenuto js (per i dettagli si rimanda alla sezione dedicata)

rowTemplate

T

Permette di modificare la modalità di visualizzazione della cella, inserendo direttamente codice html (es: rowTemplate=»<div>$r agione_sociale</div><div>$indirizzo</div>»)

semaphore

B

Se impostato a True, le celle di tipo booleano verranno mostrate con un semaforo verde se Vero, rosso se Falso

tick

B

Se impostato a True, le celle di tipo booleano verranno mostrate con un segno di spunta se Vero.

three_state

B

Se impostato a True, il semaphore avrà tre stati anziché due (rosso e verde più il giallo per i valori nulli)

field

T

La colonna da mostrare nella griglia

edit

B

Se impostato a True, la cella sarà editabile (può in alternativa ricevere anche un dict dove specificare altre variabili, es: edit=dict(validate_notnull=True))

zoom

B

Se impostato a True, consente di poter visualizzare direttamente la form di gestione dei dati della tabella collegata. (Es: r.fieldcell(“cliente_id”,zoom=True))

zoom_mode

T

Il parametro funziona se zoom=True (vedere parametro relativo) e consente in questo caso di poter definire la modalità di visualizzazione della form stessa. Con zoom_mode=”page” verrà aperta una nuova finestra a tutto schermo.

CSS Parametri

classes

T

Le classi css da assegnare alla colonna per intero

cellClasses

T

Le classi css da assegnare alle celle

headerClasses

T

Le classi css da assegnare alle testate delle colonne

Autore della sezione: Davide Paci