.. _tablehandler/ViewResource/advanced_methods/th_view: 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 :ref:`th_top` o nel :ref:`th_bottom` , è quello di aggiungere un bottone nella barra superiore di default della View. .. raw:: html
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. .. image:: /_static/images/ViewResource/advanced_methods/replaceslots.png :width: 300px :align: center .. hint:: 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,#') .. sectionauthor:: Davide Paci