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