.. _tablehandler/ViewResource/advanced_methods/th_sections_method/th_struct_sections_variable: Metodi condizionali per th_struct e th_sections =============================================== Definire toolbar aggiuntive e struct condizionate ------------------------------------------------- Tra le opzioni disponibili e le possibilità di utilizzo delle sections e struct multiple, esiste la possibilità di condizionarne il funzionamento a seconda del verificarsi di determinate condizioni sui dati. Data la complessità dell'argomento non possiamo non avvalerci di esempi pratici per dare l'idea di utilizzo e dei risultati che si possono ottenere. Ci avvarremo come esempi della tabella cliente di Sandbox opportunamente modificata allo scopo. Prerequisiti ------------ Prima di analizzare il codice di esempio vediamo quali sono i requisiti richiesti e quale sarà il risultato finale. 1) creare un toolbar superiore per ospitare nuovi pulsanti per selezionare i clienti in base al fatturato (tutti, con fatture, senza fatture) 2) creare una bottoniera che condizionata dalla scelta della tipologia del cliente consenta di visualizzare una ulteriore bottoniera per la selezione dei clienti con fatturato basso, medio, alto e che dovrà essere visibile solo per i clienti con almeno una fattura 3) nel caso di selezione dei clienti con fatture, venga utilizzata anzichè la struct di default del cliente, una struct modificata che mostri anche il totale fatturato. Vediamo ora il risultato finale, prima di vedere la sua implementazione: .. image:: /_static/images/ViewResource/advanced_methods/th_sections_method/th_sect_struct_cond_01.png :width: 584px :align: center Nell'immagine A) se selezioniamo "tutti" o "senza acquisti", la view rimane la stessa e mostra i dati del cliente... .. image:: /_static/images/ViewResource/advanced_methods/th_sections_method/th_sect_struct_cond_02.png :width: 584px :align: center tuttavia, non appena si seleziona "con acquisti" appare una nuova bottoniera che consente di filtrare i clienti in base al fatturato "basso", "medio" o "alto" ed inoltre la grid mostra una diversa struttura che comprende anche i dati del fatturato del cliente. Vediamo ora come tutto ciò si reaìlizzi in appena qualche decina di righe di codice dove ci concentreremo in particol modo per quanto riguarda il cambio di struct condizionato e la visualizzazione condizionata della seconda bottoniera. Per i dettagli relativi alla costruzione delle sections si faccia riferimento alla specifica sezione :ref:`Metodo th_sections` mentre per la realizzaizone della toolbar vedere :ref:`Metodo th_top` :: class View(BaseComponent): # 1. def th_struct(self,struct): r = struct.view().rows() r.fieldcell('ragione_sociale') r.fieldcell('indirizzo') r.fieldcell('comune_id') r.fieldcell('provincia') # 2. def th_struct_contotali(self,struct): "Vista con totali fattura" r = struct.view().rows() r.fieldcell('ragione_sociale') r.fieldcell('indirizzo') r.fieldcell('n_fatture') r.fieldcell('tot_fatturato',format='#,###.00') # 3. def th_top_toolbarsuperiore(self,top): top.slotToolbar('5,sections@acquisti,10,sections@volumeacquisti,*,sections@cliente_tipo_codice,5', childname='superiore',_position=' **Parametri:** +------------------------+------+--------------------------------------------------+ | Nome parametro | Tipo | Descrizione | +========================+======+==================================================+ |multivalue |B |Se impostato a True consente di poter effettuare | | | |selezioni multiple di valori di partizionamento | | | |dei dati | +------------------------+------+--------------------------------------------------+ |multiButton |L |Permette di indicare un numero di bottoni oltre il| | | |quale la bottoniera si convertirà in tendina (es: | | | |multiButton=5) | +------------------------+------+--------------------------------------------------+ |variable_struct |B |Se impostato a True permette di selezionare nelle | | | |sections una determinata th_struct precedentemente| | | |definita (es: struct="clienti con_acquisti") | +------------------------+------+--------------------------------------------------+ |_if |T |Utilizzando il parametro "_if" seguito da una | | | |variabile javascript all'interno del decoratore | | | |metadata, è possibile rendere sensibile la struct | | | |o la section al verificarsi di una determinata | | | |condizione | +------------------------+------+--------------------------------------------------+ .. sectionauthor:: Valter Vettorello