[genropy] Re: modifica del nome di una colonna in modo dinamico

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy@xxxxxxxxxxxxx
  • Date: Thu, 2 Feb 2017 18:32:00 +0100


Il giorno 02 feb 2017, alle ore 09:26, Alessandro Tufi 
<alessandro.tufi@xxxxxxxxx> ha scritto:


Allora
se vuoi cambiare nome della colonna basta che tu metta nella cell il nome 
col ^.
mmmhhh..  poi mi appare come nome "^.nome_variabile" , mi sa che non 
interpreta il codice


Se invece vuoi cambiare il columnset allora c'è un modo ma più complesso.

Ma te lo dico solo se ti serve ;)

No, pietà, in questo periodo ho bisogno di cose semplic! :-)

Ale





Se aggiorni develop abbiamo fatto qualche modifica alla griglia per 
semplificare il tutto.

Da questa versione gli header possono avere il ^ e quindi se passi 
name='^myname' lui si comporta bene.


Già che c'eravamo abbiamo anche reso dinamici gli attributi del columnset. 
Quindi se fai columnset_pippo='^foo'
funziona e anche gli attributi di stile columnset_pippo_color='^colmio'

Come ulteriore aggiunta e credo serva a Luigi Renna come name in una griglia 
possiamo mettere anche delle date
e in questo caso specificare anche un name_format. 

se ad esempio mettiamo name_format='EEE d' allora l'header della colonna sarà 
il giorno della settimana
abbreviato più il numero di giorno.
Ad esempio : gio 2, ven 3, sab 4 e via dicendo.

Tutti gli esempi sono nel test della baggrid: 

https://bitbucket.org/genropy/genropy/src/eb3a87bdb3b3b126e708fe8dba0e2b08af35f484/projects/gnrcore/packages/test15/webpages/gnrwdg/baggrid.py?at=develop&fileviewer=file-view-default



In particolare per header variabile:

    def test_9_bagridformula(self,pane):
        def struct(struct):
            r = struct.view().rows()
            
r.cell('description',name='^first_header_name',width='15em',edit=True,hidden='^hidden_0')


Per columnset variabile

 frame = 
bc.contentPane(region='center').bagGrid(frameCode='formule',datapath='.surfaces',
                                                    
struct=struct,height='300px',fillDown=True,
                                                    grid_footer='Totals',
                                                    
pbl_classes=True,margin='5px',
                                                    columnset_ent='^colsetname',
                                                    columnset_disc='Discount',
                                                    columnset_tot='Totals',
                                                    
columnset_ent_background='^colsetentbg',
                                                    
columnset_tot_background='red'
                                                    )




Per gli header come data:

   def test_13_autorow_date(self,pane):
        bc = pane.borderContainer(height='300px')
        top = bc.contentPane(region='top')
        fb = top.formbuilder(cols=1,border_spacing='3px')
        fb.dateTextBox(value='^s_date_base',lbl='Start date')
        fb.dataController("""
            sd = sd || new Date();
            var y = sd.getFullYear();
            var m = sd.getMonth();
            for (var i=1;i<32; i++){
                d = new Date(y,m,i);
                if(d.getMonth()!=m){
                    d = null;  
                }
                genro.setData('s_date_'+i,d);
            }

            """, sd='^s_date_base',_init=True)

        center = bc.contentPane(region='center')

        def struct(struct):
            r = struct.view().rows()
            r.cell('name',description='Name',width='15em',edit=True)
            for i in range(1,32):
                r.cell('day_%02i' %i, name='^s_date_%i' %i,name_format='EEE d',
                    hidden='^s_date_%i?=!#v' %i,dtype='N',edit=True)

        center.bagGrid(storepath='.store',title='Date 
grid',struct=struct,datapath='.mygrid',
                    addrow='auto',delrow='auto')


Possiamo notare  la struct che prepara le 31 colonne e poi al variare della data
i giorni vengono mutati se cambia il mese.

Da notare anche l'opzione addrow='auto',delrow='auto' che fanno si che sia 
sufficente avere il focus sulla grid perchè
venga aggiunta una riga e appena una riga è riempita anche per una sola cella 
viene agiunta una nuova riga vuota.

Quando la grid perde il focus le righe vuote vengono tolte.

Insomma evita diu usare il + e il - in certe situazioni.


Spero sia chiaro e utile :)


G


Other related posts: