[genropy] Re: Layout di pagina

  • From: Silvano Valleferro <s.valleferro@xxxxxxxxxxx>
  • To: genropy <genropy@xxxxxxxxxxxxx>
  • Date: Wed, 15 Nov 2017 17:11:14 +0100 (CET)


----- Il 15-nov-17, alle 15:11, Giovanni Porcari giovanni.porcari@xxxxxxxxx ha 
scritto:

|> Il giorno 15 nov 2017, alle ore 14:58, Silvano Valleferro
|> <s.valleferro@xxxxxxxxxxx> ha scritto:
|> 
|> Il codice è questo:
|> 
|> class Form(BaseComponent):
|>    py_requires = "gnrcomponents/attachmanager/attachmanager:AttachManager"
|> 
|>    def th_form(self, form):
|>        bc = form.center.borderContainer()
|>        
self.opportunityTestata(bc.borderContainer(region='left',datapath='.record',width='50%'))
|> 
|>    def opportunityTestata(self,bc):
|> 
|>        bc.contentPane(region='top',
|>        height='30%').linkerBox('idclifor',margin='2px',openIfEmpty=True,
|>                                                    validate_notnull=True,
|>                                                    
auxColumns='$idclifor,$ragionesociale,$indirizzo,$localita,$idprovincia',
|>                                                    condition='$idstato < 10',
|>                                                    
newRecordOnly=True,formResource='Form',
|>                                                    
dialog_height='30%',dialog_width='100px', limit=30)
|> 
|>        sx_center = bc.contentPane(region='center',  background_color='green')
|>        fb = sx_center.formbuilder(cols=1, border_spacing='4px')
|>        fb.field('datacreazione')
|>        fb.field('oracreazione')
|>        fb.field('idoperatore')
|>        fb.field('idgruppo')
|>        fb.field('idattivita',  width='35em')
|> 
|>        sx_b = bc.contentPane(region='bottom', height='50%', 
background_color='yellow')
|>        
sx_b.inlineTableHandler(relation='@opportunity_righe',viewResource='ViewFromOpportunity')
|> 
|>    def th_options(self):
|>        return dict(dialog_height='400px', dialog_width='600px')



| Ciao Silvano


| a volte genropy tende a farti cadere in sottili tranelli e per questo bisogna
| sempre riflettere bene
| su quello che scriviamo.

| Nel tuo caso tu ha messo :
|> 
self.opportunityTestata(bc.borderContainer(region='left',datapath='.record',width='50%'))


| Questo significa che tutti i path relativi sono *dentro* al tuo record.

| Poi questo 'left' me lo dividi in center e  bottom.

| Nel center metti un formbuilder con i campi del record ma nel bottom metti
| un tablehandler sulle righe.


| Il povero tablehandler ha bisogno di una sua zona di controlli e li mette di
| defaul relativi al datapath corrente.
| l'effetto finale è che questa partita te viene cambiata ogni volta che carichi
| un record e quindi il tutto smette di funzionare.

| Quindi hai 2 soluzioni:

| la prima è che TOGLI il datapath da


self.opportunityTestata(bc.borderContainer(region='left',datapath='.record',width='50%'))

| che quindi diventa

| self.opportunityTestata(bc.borderContainer(region='left',width='50%'))

| poi nel center lo rimetterai:


| sx_center = bc.contentPane(region='center',  background_color='green'
| ,datapath='.record')



| In alternativa, invece, potresti ridare il datapath quando mettin
| l'inlinetablehandler:

| sx_b = bc.contentPane(region='bottom', height='50%',
| background_color='yellow',datapath='#FORM.opportunity_rows')

sx_b.inlineTableHandler(relation='@opportunity_righe',viewResource='ViewFromOpportunity')


| In questo modo, anche se il 'left' era su '#FORM.record', tu vai a forzare il
| bottom a '#FORM.opportunity_rows' ovvero
| in una zona dello store che non viene cambiata al caricamento del record.


| Spero che ti sia chiaro e che lo sia per chi ci sta a leggendo.


| fammi sapere se va…


| G

Perfetto !!
Era proprio questo il problema.

Quindi, se ho capito bene:
L'inlineTableHandler lavorerebbe in automatico sul suo path corretto (se il 
path non è già inizializzato), 
ma avendo io fatto ereditare il pane su cui operava con un path definito 
all'inizio e diverso dal suo andava in crisi (operando su un path errato)

Grazie
Silvano



Other related posts: