Tabelle Gerarchiche¶
Come gestire gerarchie di record¶
In alcuni casi può essere necessario tenere traccia, gestendo e visualizzando correttamente, di una «gerarchia» di record, ovvero di una struttura padre-figlio. Si pensi a tutti quei casi in cui non è sufficiente una gestione «piatta» dei record, ma è anzi preferibile stabilire una gerarchia, come ad esempio la categorizzazione di un catalogo prodotti.
Per queste situazioni Genropy mette a disposizione uno strumento particolare, la Tabella Gerarchica, che ci permette di visualizzare in una struttura ad albero tutti i record contenuti nella tabella, e inoltre ci permette di gestirli facilmente consentendoci delle comode operazioni di trascinamento tra un livello e un altro della struttura.
Come costruire una Tabella Gerarchica¶
La Tabella Gerarchica è uno speciale tipo di table di Genropy, che permette di inserire e navigare tra i record sfruttando una visualizzazione gerarchica padre-figlio che mette in relazione tutti i record presenti.
La tabella gerarchica si definisce con l’aggiunta dell’attributo hierarchical=True
(o hierarchical='nome_colonna'
, utilizzando quindi una colonna specifica come criterio della gerarchia) ai sysFields
class Table(object):
def config_db(self, pkg):
tbl = pkg.table('prodotto_tipo', pkey='id', name_long='!![it]Prodotto tipo',
name_plural='!![it]Prodotto tipi',
caption_field='hierarchical_descrizione')
self.sysFields(tbl,hierarchical='descrizione', counter=True, df=True)
tbl.column('descrizione' ,size=':50',name_long='!![it]Descrizione')
Per la successiva visualizzazione ad albero della gerarchia sarà poi necessario nella Form della risorsa th specificare l’attributo hierarchical=True
nel metodo th_options
:
def th_options(self):
return dict(dialog_height='400px', dialog_width='600px', hierarchical=True)
Parametri:
Nome parametro |
Tipo |
Descrizione |
---|---|---|
hierarchical |
B |
Indicando nei sysFields l’attributo hierarchical=True, la tabella verrà gestita come gerarchica. Si noti che è possibile in alternativa a True specificare un nome di una colonna (es: hierarchical=”descrizione”), utilizzando così una colonna specifica come criterio della gerarchia |
counter |
B |
Se specificato a True, le voci della gerarchia saranno ordinabili a piacimento tenendo premuto shift e trascinando nella posizione desiderata. |
Autore della sezione: Davide Paci