Metodo th_view

Il metodo th_view è un metodo di hook che permette di ridefinire la View nel suo complesso o parti della stessa. Tipicamente è utilizzato per modificare aspetti estetico/funzionali quali il titolo della pagina o la barra superiore, o per innescare eventi al clic sui record tramite dei controllers.

Modificare la top bar di una View: la replaceSlots

Un uso tipico, in alternativa alla creazione di una nuova barra vera e propria nel th_top o nel th_bottom , è quello di aggiungere un bottone nella barra superiore di default della View.


Sia che si voglia rimuovere, sostituire o aggiungere un componente alla barra la procedura è la stessa, e si basa sul metodo replaceSlots:

def th_view(self,view):
      bar = view.top.bar.replaceSlots('delrow','nuova_ricerca,5,aggiungi_lista,5,delrow')
      bar.nuova_ricerca.slotButton('Nuova ricerca').dataController("""SET .queryBySample = new gnr.GnrBag();
              FIRE .clearStore;""")
      bar.aggiungi_lista.slotButton('Aggiungi a lista').dataController("""genro.publish('table_script_run',
              {table:'cvgest.candidato',
              res_type:'action',
              resource:'aggiungi_a_lista',
              selectionName:grid.collectionStore().selectionName,
              selectedPkeys:selectedPkeys});""",
              grid=view.grid.js_widget,
              selectedPkeys='=.grid.currentSelectedPkeys')

Si noti che in questo caso, accanto al bottone «-» che elimina i record, abbiamo aggiunto altri due bottoni, separati tra loro da 5 pixel, il primo per svuotare la ricerca corrente, il secondo per aggiungere il record selezionato (o i record selezionati) a una lista, tramite una action apposita.

../../_images/replaceslots.png

Suggerimento

I widget dei quali è possibile effettuare il replace sono vari, e dipendono da come è stata configurata la pagina del TableHandler, ma di default quelli disponibili (da sinistra a destra) sono: 'fastQueryBox', 'runbtn', 'queryMenu', 'viewsMenu', 'filterSelected', 'menuUserSets', 'export', 'importer', 'resourcePrints', 'resourceMails', 'resourceActions', 'templateManager', 'stats', 'advancedTools', 'delrow', 'addrow', 'viewlocker'.

Si noti che in alternativa all’indicazione di uno slot preciso è possibile usare il simbolo # e decidere poi se posizionare a sinistra o destra il contenuto desiderato:

def th_view(self,view):
      bar = view.top.bar.replaceSlots('#','nuova_ricerca,5,aggiungi_lista,5,#')

Autore della sezione: Davide Paci