Changeset 30

Show
Ignore:
Timestamp:
11/21/08 18:44:50 (7 weeks ago)
Author:
fcavazza
Message:

a

Files:
12 modified

Legend:

Unmodified
Added
Removed
  • gnrjs/gnr_d11/js/genro_frm.js

    r14 r30  
    270270            } 
    271271        } 
    272     } 
     272    }, 
     273     
    273274     
    274275}); 
  • gnrjs/gnr_d11/js/genro.js

    r29 r30  
    696696        params = objectUpdate({}, params); 
    697697        var resolverName = resolverName || objectPop(params, '_resolver_name'); 
    698         return this['remote_'+resolverName].call(this, params, parentbag); 
    699     }, 
    700     remote_relOneResolver: function(params, parentbag){ 
    701         var kw = {}; 
    702         var cacheTime = -1; 
    703         var isGetter = false; 
    704         var sync=('sync' in params)? objectPop(params,'sync'):true; 
    705         var kwargs = { 'sync':sync,'from_fld':params._from_fld, 'target_fld':params._target_fld, 'sqlContextName':params._sqlContextName}; 
    706         kwargs.method = 'app.getRelatedRecord'; 
    707          
    708         var resolver = new gnr.GnrRemoteResolver(kwargs, isGetter, cacheTime); 
    709         resolver.updateAttr=true; 
    710         var _related_field = params._target_fld.split('.')[2]; 
    711          
    712         if(params._auto_relation_value){ 
    713             resolver.relation_fld = params._auto_relation_value; //params._from_fld.split('.')[2]; 
    714             var dataprovider = function(){ 
    715                 return this.getParentNode().getParentBag().getItem(this.relation_fld); 
    716             }; 
    717             kwargs[_related_field] = dojo.hitch(resolver, dataprovider); 
    718  
    719             //TODO: move that feature to BagNode.setResolver 
    720             var valNode = parentbag.getNode(resolver.relation_fld); 
    721             var reloader = function(){ 
    722                 this.getParentNode().getValue('reload'); 
    723             }; 
    724             valNode._onChangedValue = dojo.hitch(resolver, reloader); 
    725  
    726         } else { 
    727                 kwargs[_related_field] = params._relation_value; 
    728         } 
    729         return resolver; 
    730     }, 
    731     remote_relManyResolver: function(params){ 
    732         var kw = {}; 
    733         var cacheTime = -1; 
    734         var isGetter = false; 
    735          
    736         var kwargs = {'sync':true,  
    737                       'from_fld':params._from_fld, 'target_fld':params._target_fld, 'relation_value':params._relation_value, 
    738                       'sqlContextName':params._sqlContextName}; 
    739         kwargs.method = 'app.getRelatedSelection'; 
    740                  
    741         var resolver = new gnr.GnrRemoteResolver(kwargs, isGetter, cacheTime); 
    742         resolver.updateAttr=true; 
    743         resolver.onSetResolver = function(node){ 
    744             node.newBagRow = function(defaultArgs){ 
    745                 //var defaultArgs = defaultArgs || {}; 
    746                 var resolver = genro.getRelationResolver(objectUpdate(this.attr.childResolverParams,{'sync':true})); 
    747                 resolver.kwargs.newRecordDefualts = defaultArgs; 
    748                 var result = new gnr.GnrBagNode(null,'label',null ,this.attr.childResolverParams,resolver); 
    749                 if ((!this._newRowTemplate) || (!objectIsEqual(defaultArgs,this._oldDefaultArgs||{}))){ 
    750                     resolver._keepResponse=true; 
    751                     this._oldDefaultArgs=defaultArgs; 
    752                     result.getValue().toXml(); 
    753                     this._lastResponse=resolver._lastResponse; 
    754                     resolver._lastResponse=null; 
    755                     this._newRowTemplateAttr=result.attr; 
    756                 }else{ 
    757                     var envelope = new gnr.GnrBag(); 
    758                     envelope.fromXmlDoc(this._lastResponse, genro.clsdict); 
    759                     result._value=envelope.getValue('result'); 
    760                     resolver.lastUpdate=new Date(); 
    761                     objectUpdate(result.attr,this._newRowTemplateAttr); 
    762                 } 
    763                 return result; 
    764             }; 
    765         }; 
    766         resolver.updateAttr=true; 
    767         return resolver; 
     698        return genro.rpc['remote_'+resolverName].call(genro.rpc, params, parentbag); 
    768699    }, 
    769700    loadUserObject: function(path, params){ 
  • gnrjs/gnr_d11/js/genro_rpc.js

    r1 r30  
    485485                        }, 1000); 
    486486        } 
     487    }, 
     488     
     489     
     490    remote_relOneResolver: function(params, parentbag){ 
     491        var kw = {}; 
     492        var cacheTime = -1; 
     493        var isGetter = false; 
     494        var sync=('sync' in params)? objectPop(params,'sync'):true; 
     495        var kwargs = { 'sync':sync,'from_fld':params._from_fld,  
     496                                 'target_fld':params._target_fld,  
     497                             'sqlContextName':params._sqlContextName}; 
     498        kwargs.method = 'app.getRelatedRecord'; 
     499         
     500        var resolver = new gnr.GnrRemoteResolver(kwargs, isGetter, cacheTime); 
     501        resolver.updateAttr=true; 
     502        resolver.onloading = function(kwargs){ 
     503            var target = kwargs.target_fld.split('.'); 
     504            var table = target[0] + '_' + target[1]; 
     505            kwargs['loadingParameters'] = genro.getData('gnr.tables.'+table+'.loadingParameters'); 
     506        }; 
     507        var _related_field = params._target_fld.split('.')[2]; 
     508         
     509        if(params._auto_relation_value){ 
     510            resolver.relation_fld = params._auto_relation_value; //params._from_fld.split('.')[2]; 
     511            var dataprovider = function(){ 
     512                return this.getParentNode().getParentBag().getItem(this.relation_fld); 
     513            }; 
     514            kwargs[_related_field] = dojo.hitch(resolver, dataprovider); 
     515 
     516            //TODO: move that feature to BagNode.setResolver 
     517            var valNode = parentbag.getNode(resolver.relation_fld); 
     518            var reloader = function(){ 
     519                this.getParentNode().getValue('reload'); 
     520            }; 
     521            valNode._onChangedValue = dojo.hitch(resolver, reloader); 
     522 
     523        } else { 
     524                kwargs[_related_field] = params._relation_value; 
     525        } 
     526        return resolver; 
     527    }, 
     528    remote_relManyResolver: function(params){ 
     529        var kw = {}; 
     530        var cacheTime = -1; 
     531        var isGetter = false; 
     532         
     533        var kwargs = {'sync':true,  
     534                      'from_fld':params._from_fld, 'target_fld':params._target_fld, 'relation_value':params._relation_value, 
     535                      'sqlContextName':params._sqlContextName}; 
     536        kwargs.method = 'app.getRelatedSelection'; 
     537                 
     538        var resolver = new gnr.GnrRemoteResolver(kwargs, isGetter, cacheTime); 
     539        resolver.updateAttr=true; 
     540        resolver.onSetResolver = function(node){ 
     541            node.newBagRow = function(defaultArgs){ 
     542                //var defaultArgs = defaultArgs || {}; 
     543                var resolver = genro.getRelationResolver(objectUpdate(this.attr.childResolverParams,{'sync':true})); 
     544                resolver.kwargs.newRecordDefualts = defaultArgs; 
     545                var result = new gnr.GnrBagNode(null,'label',null ,this.attr.childResolverParams,resolver); 
     546                if ((!this._newRowTemplate) || (!objectIsEqual(defaultArgs,this._oldDefaultArgs||{}))){ 
     547                    resolver._keepResponse=true; 
     548                    this._oldDefaultArgs=defaultArgs; 
     549                    result.getValue().toXml(); 
     550                    this._lastResponse=resolver._lastResponse; 
     551                    resolver._lastResponse=null; 
     552                    this._newRowTemplateAttr=result.attr; 
     553                }else{ 
     554                    var envelope = new gnr.GnrBag(); 
     555                    envelope.fromXmlDoc(this._lastResponse, genro.clsdict); 
     556                    result._value=envelope.getValue('result'); 
     557                    resolver.lastUpdate=new Date(); 
     558                    objectUpdate(result.attr,this._newRowTemplateAttr); 
     559                } 
     560                return result; 
     561            }; 
     562        }; 
     563        resolver.updateAttr=true; 
     564        return resolver; 
    487565    } 
    488566     
  • gnrjs/gnr_d11/js/gnrdomsource.js

    r27 r30  
    160160        var _if=objectPop(attributes,'_if'); 
    161161        var _else=objectPop(attributes,'_else'); 
     162        var expr; 
     163        if(tag=='dataFormula'){ 
     164            expr=objectPop(attributes,'formula'); 
     165        }else if ((tag=='dataController') || (tag=='dataScript')){ 
     166            expr=objectPop(attributes,'script'); 
     167        }else { 
     168            expr=objectPop(attributes,'method'); 
     169        } 
    162170        var argValues=[node]; 
    163171        var argNames=['_node']; 
     
    175183        } 
    176184        if(tag=='dataFormula' || tag=='dataScript' || tag=='dataController' || tag=='dataRpc'){ 
    177             var expr; 
    178             if(tag=='dataFormula'){ 
    179                 expr=objectPop(attributes,'formula'); 
    180             }else if ((tag=='dataController') || (tag=='dataScript')){ 
    181                 expr=objectPop(attributes,'script'); 
    182             }else { 
    183                 expr=objectPop(attributes,'method'); 
    184             } 
    185185            var val; 
    186186            if(! if_result){ 
     187                if(!_else){ 
     188                    return; 
     189                } 
    187190                expr=_else; 
    188191            } 
    189             if(expr){ 
    190                 if(tag=='dataRpc' && (expr != _else)){ 
    191                      var doCall = true; 
    192                      var method=expr; 
    193                      var httpMethod = objectPop(kwargs,'_POST')? 'POST' :'GET'; 
    194                      var _onResult = objectPop(kwargs,'_onResult'); 
    195                      var _onCalling = objectPop(kwargs,'_onCalling'); 
    196                      objectExtract(kwargs,'_*'); 
    197                      if (_onResult){ 
    198                         _onResult = dojo.hitch(this, funcCreate(_onResult)); 
    199                      } 
    200                      kwargs['_rpc_resultPath']=destinationPath; 
    201                      var cb = function(result){ 
    202                                                   dataNode.setValue(result); 
    203                                                   if(_onResult){ 
    204                                                         _onResult(result); 
    205                                                   } 
    206                                             }; 
    207                      
    208                      if (_onCalling){ 
    209                          doCall = funcCreate(_onCalling, argNames.join(',')).apply(this,argValues); 
    210                      } 
    211                     if(doCall != false){ 
    212                         genro.rpc.remoteCall(method, kwargs, null, httpMethod, null, cb); 
    213                     } 
    214                 } 
    215                 else{  
    216                     expr=(tag=='dataFormula')? 'return '+expr : expr; 
    217                     var result=funcCreate(expr,argNames.join(',')).apply(this,argValues); 
    218                     if (dataNode){ // if it has a dataNode set it to the returned value 
    219                         dataNode.setValue(result); 
    220                     } 
    221                 }  
    222             } 
     192            if(tag=='dataRpc' && (expr != _else)){ 
     193                 var doCall = true; 
     194                 var method=expr; 
     195                 var httpMethod = objectPop(kwargs,'_POST')? 'POST' :'GET'; 
     196                 var _onResult = objectPop(kwargs,'_onResult'); 
     197                 var _onCalling = objectPop(kwargs,'_onCalling'); 
     198                 objectExtract(kwargs,'_*'); 
     199                 if (_onResult){ 
     200                    _onResult = dojo.hitch(this, funcCreate(_onResult)); 
     201                 } 
     202                 kwargs['_rpc_resultPath']=destinationPath; 
     203                 var cb = function(result){ 
     204                                              dataNode.setValue(result); 
     205                                              if(_onResult){ 
     206                                                    _onResult(result); 
     207                                              } 
     208                                        }; 
     209                 
     210                 if (_onCalling){ 
     211                     doCall = funcCreate(_onCalling, argNames.join(',')).apply(this,argValues); 
     212                 } 
     213                if(doCall != false){ 
     214                    genro.rpc.remoteCall(method, kwargs, null, httpMethod, null, cb); 
     215                } 
     216            } 
     217            else{ 
     218                var result; 
     219                if(!expr){ 
     220                    result = new gnr.GnrBag(kwargs); 
     221                } else { 
     222                    expr = (tag=='dataFormula') ? 'return '+ expr : expr; 
     223                    result = funcCreate(expr,argNames.join(',')).apply(this,argValues); 
     224                } 
     225                if (dataNode){ // if it has a dataNode set it to the returned value 
     226                    dataNode.setValue(result); 
     227                } 
     228            }  
    223229        } 
    224230        else{ 
    225231            if( if_result){ 
    226                 var method=objectPop(attributes,'method'); 
     232                var method=expr; 
    227233                var cacheTime=objectPop(attributes,'cacheTime', -1); 
    228234                var isGetter=objectPop(attributes,'isGetter', false); 
  • gnrpy/gnr/sql/gnrsqldata.py

    r29 r30  
    15871587    result = property(_get_result) 
    15881588 
    1589     def out_newrecord(self, resolver_one=True, resolver_many=True, defaults=None): 
     1589    def out_newrecord(self, resolver_one=True, resolver_many=True): 
    15901590        result = SqlRecordBag(self.db, self.dbtable.fullname) 
    1591          
    1592         #defaults = self.dbtable.getNewRow(defaults) 
    15931591        record = Bag() 
    1594         #for k,v in defaults.items(): 
    1595         #    record['t0_%s' % k]=v # for loaded records all fields startst with t0_ 
    1596              
    15971592        self._loadRecord(result, record, self.compiled.template, resolver_many=resolver_many, resolver_one=resolver_one) 
    1598         self.dbtable.onCreating(result, defaults) 
     1593         
     1594        newdefaults = self.dbtable.defaultValues() 
     1595        for k,v in newdefaults.items(): 
     1596            result[k] = v 
     1597             
    15991598        return result 
    16001599     
  • gnrpy/gnr/sql/gnrsqltable.py

    r29 r30  
    292292        else: 
    293293            return record 
    294      
    295     def onCreating(self, record, defaults=None): 
    296         newdefaults = self.defaultValues() 
    297         if defaults: 
    298             newdefaults.update(defaults) 
    299         for k,v in newdefaults.items(): 
    300             record[k] = v 
     294         
    301295         
    302296    def defaultValues (self): 
  • gnrpy/gnr/web/gnrwebapphandler.py

    r29 r30  
    694694                    ignoreMissing=True, ignoreDuplicate=True,  
    695695                    from_fld=None, target_fld=None, sqlContextName=None, applymethod=None, 
    696                      js_resolver_one='relOneResolver', js_resolver_many='relManyResolver',   
    697                      newRecordDefaults=None, **kwargs): 
     696                    js_resolver_one='relOneResolver', js_resolver_many='relManyResolver',   
     697                    **kwargs): 
    698698        t = time.time() 
    699699        dbtable = dbtable or table 
     
    701701            dbtable='%s.%s' % (pkg, dbtable) 
    702702        tblobj = self.db.table(dbtable) 
     703        newrecord = False 
     704        loadingParameters = dict([(k.lstrip('loading_'), kwargs.pop(k)) for k in kwargs.keys() if k.startswith('loading_')]) 
    703705        if pkey:  
    704706            kwargs['pkey'] = pkey 
     
    711713                self._joinConditionsFromContext(rec, sqlContextName) 
    712714            if (pkey=='*newrecord*'): 
    713                 record = rec.output('newrecord', resolver_one=js_resolver_one, resolver_many=js_resolver_many, defaults=newRecordDefaults) 
     715                newrecord = True 
     716                record = rec.output('newrecord', resolver_one=js_resolver_one, resolver_many=js_resolver_many) 
    714717            else: 
    715718                record = rec.output('bag', resolver_one=js_resolver_one, resolver_many=js_resolver_many) 
     
    719722                               sqlContextName=sqlContextName, **kwargs) 
    720723            if sqlContextName: self._joinConditionsFromContext(record, sqlContextName) 
    721  
     724             
    722725            record = record.output('bag', resolver_one=js_resolver_one, resolver_many=js_resolver_many) 
    723             newrecord = False 
    724              
     726             
     727        recInfo = dict(_pkey=record[tblobj.pkey] or '*newrecord*', 
     728                        caption=tblobj.recordCaption(record,newrecord), 
     729                        _newrecord=newrecord) 
     730 
     731        method = loadingParameters.pop('method', None) 
     732        if method: 
     733            handler = self.page.getPublicMethod('rpc', method) 
     734        else: 
     735            if dbtable == self.page.maintable: 
     736                method = 'onLoading' 
     737            else: 
     738                method = 'onLoading_%s' % dbtable.replace('.','_') 
     739            handler = getattr(self.page, method, None) 
     740             
     741        if not handler and newrecord and loadingParameters: 
     742            handler = self.newRecordDefaults 
     743        if handler: 
     744            handler(record, recInfo, loadingParameters) 
     745                     
    725746        if applymethod: 
    726747            self.page.getPublicMethod('rpc', applymethod)(record) 
    727748             
    728         recInfo = dict(_pkey=record[tblobj.pkey] or '*newrecord*', 
    729                         caption=tblobj.recordCaption(record,newrecord), 
    730                         _newrecord=not(newrecord is False), servertime=int((time.time() - t)*1000)) 
     749        recInfo['servertime'] = int((time.time() - t)*1000) 
    731750        if tblobj.lastTS: 
    732751            recInfo['lastTS'] = str(record[tblobj.lastTS]) 
    733752        return (record,recInfo) 
    734753     
     754    def newRecordDefaults(record, recInfo, **kwargs): 
     755        for k,v in kwargs.items(): 
     756            if k in record: 
     757                record[k] = v 
     758         
    735759    def rpc_saveRecord(self, dbtable=None, recordBag=None,**kwargs): 
    736760        tbl = self.db.table(dbtable) 
  • gnrpy/gnr/web/gnrwebpage.py

    r29 r30  
    23582358                    ignoreMissing=True, ignoreDuplicate=True,  
    23592359                    from_fld=None, target_fld=None, sqlContextName=None, applymethod=None, 
    2360                      js_resolver_one='relOneResolver', js_resolver_many='relManyResolver',  
    2361                      newRecordDefaults=None, **kwargs): 
     2360                    js_resolver_one='relOneResolver', js_resolver_many='relManyResolver',  
     2361                    loadingParameters=None, **kwargs): 
    23622362        t = time.time() 
    23632363        dbtable = dbtable or table 
     
    23652365            dbtable='%s.%s' % (pkg, dbtable) 
    23662366        tblobj = self.db.table(dbtable) 
     2367        newrecord = False 
    23672368        if pkey:  
    23682369            kwargs['pkey'] = pkey 
     
    23752376                self._joinConditionsFromContext(rec, sqlContextName) 
    23762377            if (pkey=='*newrecord*'): 
    2377                 record = rec.output('newrecord', resolver_one=js_resolver_one, resolver_many=js_resolver_many, defaults=newRecordDefaults) 
     2378                newrecord = True 
     2379                record = rec.output('newrecord', resolver_one=js_resolver_one, resolver_many=js_resolver_many) 
    23782380            else: 
    23792381                record = rec.output('bag', resolver_one=js_resolver_one, resolver_many=js_resolver_many) 
     
    23832385                               sqlContextName=sqlContextName, **kwargs) 
    23842386            if sqlContextName: self._joinConditionsFromContext(record, sqlContextName) 
    2385  
     2387             
    23862388            record = record.output('bag', resolver_one=js_resolver_one, resolver_many=js_resolver_many) 
    2387             newrecord = False 
    2388              
     2389             
     2390        recInfo = dict(_pkey=record[tblobj.pkey] or '*newrecord*', 
     2391                        caption=tblobj.recordCaption(record,newrecord), 
     2392                        _newrecord=newrecord) 
     2393         
     2394        method = None 
     2395        if loadingParameters: 
     2396            method = loadingParameters.pop('method') 
     2397             
     2398        if method: 
     2399            handler = self.page.getPublicMethod('rpc', method) 
     2400        else: 
     2401            if dbtable == self.page.maintable: 
     2402                method = 'onLoading' 
     2403            else: 
     2404                method = 'onLoading_%s' % dbtable.replace('.','_') 
     2405            handler = getattr(self.page, method, None) 
     2406             
     2407        if not handler and newrecord and loadingParameters: 
     2408            handler = self.newRecordDefaults 
     2409        if handler: 
     2410            handler(record, recInfo, loadingParameters) 
     2411                     
    23892412        if applymethod: 
    23902413            self.page.getPublicMethod('rpc', applymethod)(record) 
    2391          
    2392         _pkey = record[tblobj.pkey] or '*newrecord*' 
    2393         _newrecord = (_pkey=='*newrecord*') 
    2394         recInfo = dict( _pkey=_pkey, 
    2395                         caption=tblobj.recordCaption(record, newrecord=_newrecord), 
    2396                         _newrecord=_newrecord, servertime=int((time.time() - t)*1000)) 
     2414             
     2415        recInfo['servertime'] = int((time.time() - t)*1000) 
    23972416        if tblobj.lastTS: 
    23982417            recInfo['lastTS'] = str(record[tblobj.lastTS]) 
    23992418        return (record,recInfo) 
    24002419     
     2420    def newRecordDefaults(self, record, recInfo, loadingParameters): 
     2421        for k,v in loadingParameters.items(): 
     2422            if k in record: 
     2423                record[k] = v 
     2424         
    24012425    def rpc_saveRecord(self, dbtable=None, recordBag=None,**kwargs): 
    24022426        tbl = self.db.table(dbtable) 
  • gnrpy/packages/adm/webpages/manage_users.py

    r23 r30  
    7373        return struct 
    7474         
    75     def onLoading(self, record, recinfo): 
     75    def onLoading(self, record, recinfo, loadingParameters): 
    7676        tags = record['auth_tags'] 
    7777        b = Bag() 
  • gnrpy/packages/_common_d11/webpages/_resources/public.py

    r28 r30  
    570570                                     grid.addBagRow('#id', '*', grid.newBagRow(),event); 
    571571                                     """ ,  
    572                             event='^.addRecord', gridId=gridId) 
     572                                     event='^.addRecord', 
     573                                     gridId=gridId) 
    573574        delScript = """var grid = genro.wdgById(gridId); 
    574575                       var nodesToDel = grid.delBagRow('*', delSelection);""" 
  • gnrpy/packages/_common_d11/webpages/_resources/standard_tables.py

    r27 r30  
    576576                       _fired='^.delete', _onResult='genro.wdgById("delete_view_dlg").onCancel();FIRE .deleted = true') 
    577577     
    578                                     
    579      
    580     def recordGetter(self): 
    581         return ('app.getRecord', {}) 
    582          
    583      
     578         
    584579    def formController(self,pane): 
    585580        self.formTitleBase(pane) 
     
    594589        pane.dataFormula('form.canDelete','(!locked) && deletePermission',locked='^form.locked',deletePermission='=usr.deletePermission',_init=True) 
    595590         
    596         recordGetter, kwargs = self.recordGetter() 
    597          
    598591        pane.dataController('genro.formById("formPane").load();', _fired='^form.doLoad') 
    599592        #pane.dataRpc('form.record', 'load', table=self.maintable, pkey='=list.selectedId', _fired='^form.doLoad', recordGetter = recordGetter, sqlContextName='sql_record', 
    600593        #                 _onResult='FIRE recordLoaded=true;FIRE loggerReset=true;SET form.loading=false;', **kwargs) 
    601  
    602594         
    603595        pane.dataRpc('form.record', 'load', table=self.maintable, pkey='=list.selectedId', 
    604                                             recordGetter = recordGetter, sqlContextName='sql_record', 
     596                        recordGetter = self.recordGetter(), sqlContextName='sql_record', 
    605597                        nodeId='formPane_loader', 
    606                          _onResult='genro.formById("formPane").loaded();', 
    607                          **kwargs) 
     598                        _onResult='genro.formById("formPane").loaded();', 
     599                        loadingParameters='=gnr.tables.maintable.loadingParameters') 
    608600         
    609601         
     
    770762     
    771763    def rpc_load(self, table=None, pkey=None, recordGetter='app.getRecord', **kwargs): 
    772         recordGetter = self.getPublicMethod('rpc', recordGetter) 
    773         record, recinfo = recordGetter(table=table, pkey=pkey, **kwargs) 
    774         self.onLoading(record, recinfo) 
     764        getterHandler = self.getPublicMethod('rpc', recordGetter) 
     765        record, recinfo = getterHandler(table=table, pkey=pkey, **kwargs) 
     766        #self.onLoading(record, recinfo, loadingParameters) 
    775767        return record, recinfo 
    776768     
     
    865857        return 
    866858     
    867     def onLoading(self, record, recinfo): 
     859    def recordGetter(self): 
     860        return 'app.getRecord' 
     861         
     862    def setLoadingParameters(self, table, **kwargs): 
     863        self.pageSource().dataFormula('gnr.tables.%s.loadingParameters' % table.replace('.','_'), '', _fired='^gnr.onStart', **kwargs) 
     864 
     865    def onLoading(self, record, recinfo, loadingParameters): 
    868866        pass 
    869867     
  • gnrpy/packages/showcase/webpages/Widgets/Form/textbox.py

    r1 r30  
    2222        fb.numberTextBox(value='^.r0.age',lbl='age') 
    2323&