Uso di customgetter, templatecell e hiddencolumn

Precisazione

Per questi due metodi non si tratta di una vera e propria trattazione completa ma solo un promemoria per sapere che esistono ed avere una superficiale infarinatura che indichi possibili casi di utilizzo ed avere un’idea sia pur superficiale di ciò che si può ottenere dal loro utilizzo.

_customgetter

def th_struct(self,struct):
    r = struct.view().rows()
    #1.
    r.cell('iniziale_cliente',
          calculated=True,
          _customGetter="function(row){return row.ragione_sociale[0];}",
          name='Iniz.')

    r.fieldcell('ragione_sociale')
    r.fieldcell('indirizzo')
    r.fieldcell('comune_id')
    r.fieldcell('provincia')

è una funzione che permette di aggiungere delle colonne calcolate e di renderizzare il loro contenuto utilizzando una funzione javascript (che riceve l’intera riga di dati) ed effettuare delle elaborazioni prima di ritornare il valore con cui verrà renderizzata la cella. Notare che si tratta di un campo calcolato e quindi una cell e non una feldcell.

Nell’esempio viene preso dalla ragione_sociale il primo carattere (row.ragione_sociale[0]) ed il valore reso dalla funzione viene utilizzato per renderizzare la relativa colonna nella riga corrente.

Nota

La possibilità di intervento sul valore di una cella in fase di rendering, non va confuso con il metoto th_applymethod di cui si possono a prima vista intuire delle somiglianze, infatti, l’applymethd, consente di intervenire prima che i dati siano ricevuti dal client ed è possibile aggiungere colonne calcolate in vario modo, mentre _customgetter permette di costruire il contenuto della cella in base a dei valori già ritornati che possono essere «composti» in modo diverso.

rowtemplate

def th_struct_contemplate(self,struct):
    "Con template"
    r = struct.view().rows()
    r.cell("dati_cliente",
        rowTemplate="""
              <div>$ragione_sociale</div>
              <div>$indirizzo <b>$provincia</b></div>
              """,
        calculated=True,
        width='100%')

L’uso della funzione rowTemplate, come la funzione precedente, viene applicata ad una colonna calcolata (cell), il suo ambito di utilizzo contempla la possibilità di assemblare il valore della cella, componendo il suo valore a partire dal contenuto di altre colonne fisiche della tabella. Un possibile caso d’uso è ad esempio quando si abbia a disposizione uno schermo ridotto (come nel caso dei dispositivi mobili)e si voglia quindi risparmiare spazio mettendo insieme valori su un’unica cella. Nell’esempio la cella si compone di ragione_sociale, indirizzo e provincia, anche utilizzandop tag html, viene inoltre applicata ad una th_struct alternativa, che sarà comunque selezionabile dal menù delle view.

th_hiddencolumn

La funzione di callback definita nella risorsa, consente di definire una serie di colonne fisiche che, indipendentemente dalle varie th_struct definite nella risorsa che potrebbero prevedere liste di colonne diverse, che saranno sempre «garantite», in modo da garantire il corretto funzionamento della risorsa.

def th_hiddencolumns(self):
    return "$ragione_sociale,$indirizzo,$provincia"

In allegato è disponibile il file th_cliente.py con gli esempi utilizzati.

Attachments: