.. _widgetpedia/grids/cells/fieldcell: 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 :ref:`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*. .. raw:: html
**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="
$r| | | |agione_sociale
$indirizzo
") | +------------------------+------+--------------------------------------------------+ |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 | +------------------------+------+--------------------------------------------------+ .. sectionauthor:: Davide Paci