Gfa.data={ROWSTATUS_DETACHED:1,ROWSTATUS_UNCHANGED:2,ROWSTATUS_ADDED:4,ROWSTATUS_DELETED:8,ROWSTATUS_MODIFIED:16,LISTTYPE_LIST:'list',LISTTYPE_PAGE:'page',ORDERBY_DESC:'desc',ORDERBY_ASC:'asc',CONJUNCTIONTYPE_AND:'and',CONJUNCTIONTYPE_OR:'or',CONDITION_EQ:"eq",CONDITION_NEQ:"neq",CONDITION_EQIC:"eqic",CONDITION_LIKE_END:"likee",CONDITION_LIKE_END_IC:"likeeic",CONDITION_LIKE_START:"likes",CONDITION_LIKE_START_IC:"likesic",CONDITION_LIKE_ANYWHERE:"likea",CONDITION_LIKE_ANYWHERE_IC:"likeaic",CONDITION_GT:"gt",CONDITION_GE:"ge",CONDITION_LT:"lt",CONDITION_LE:"le",CONDITION_ISNULL:"is null",CONDITION_ISNOTNULL:"is not null",CONDITION_IN:"in",CONDITION_NOT_IN:"not in",CONJUNCTIONTYPE_AND:"and",CONJUNCTIONTYPE_OR:"or",CONJUNCTIONTYPE_EXIST:"exist",CONJUNCTIONTYPE_NOT:"not",getQueryInfo:function(opt,form,prop){var queryInfo={listType:'page',pageStart:opt.start+1,pageSize:opt.limit||15,entityAlias:null,conjunctionType:'and',queryObjectName:'',fields:[]};Ext.apply(queryInfo,prop);if(form.form)form=form.form;form.items.each(function(item){if(item.queryField&&Ext.isEmpty(item.getValue())==false){if(!item.isValid()){Ext.Msg.alert(i18n.message.prompt,'\"'+item.fieldLabel+'\" 格式不匹配');return;}var field={};field.fieldName=item.getName();field.fieldValueString=item.getValue();if(item.getValue()instanceof Date){field.fieldValueString=item.getValue().getTime();}if(item.fromAssociateCollection){field.fromAssociateCollection=item.fromAssociateCollection;}if(item.fromAssociateObject){field.fromAssociateObject=item.fromAssociateObject;}Ext.apply(field,item.queryField);queryInfo.fields.push(field);}});return queryInfo;}};Ext.data.DWRProxy=function(DWRinterface){Ext.data.DWRProxy.superclass.constructor.call(this);this.DWR=DWRinterface;};Ext.extend(Ext.data.DWRProxy,Ext.data.DataProxy,{load:function(params,reader,loadCallback,scope,arg){var dataProxy=this;dataProxy.fireEvent("beforeload",dataProxy,params);var args=[];if(params.dwrArguments)args=args.concat(params.dwrArguments);args[args.length]={callback:function(response){dataProxy.fireEvent("load",dataProxy,response,loadCallback);var records=reader.readRecords(response);loadCallback.call(scope,records,arg,true);},exceptionHandler:function(msg,ex){dataProxy.fireEvent("loadexception",dataProxy,null,loadCallback,ex);loadCallback.call(scope,null,arg,false);}};this.DWR[params.dwrMethod].apply(this.DWR,args);}});Ext.data.QueryReader=function(meta,recordType){Ext.data.QueryReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.QueryReader,Ext.data.DataReader,{readRecords:function(o){if(o==undefined||o==null)return;var sid=this.meta?this.meta.id:null;var recordType=this.recordType;var records=[];var root=(o.list==undefined)?o:o.list;if(!(root instanceof Array)){root=[root];}for(var i=0;i<root.length;i++){var value=root[i];var id=((sid||sid===0)&&n[sid]!==undefined&&value[sid]!==""?n[sid]:null);var record=new recordType(value,id);records[records.length]=record;}return{records:records,totalRecords:o.total};}});Gfa.data.Store=function(config){if(!this.proxy)this.proxy=new Ext.data.DWRProxy(CommonService);Gfa.data.Store.superclass.constructor.call(this,config);this.proxy.on('loadexception',Gfa.net.onRequestError);};Ext.extend(Gfa.data.Store,Ext.data.Store,{pruneModifiedRecords:true,isDirty:function(){if(this.getModifiedRecords().length>0){return true;}return false;},getChangedData:function(){var changes=[];Ext.each(this.modified,function(rec){changes.push(rec.data);});return changes;},createNewData:function(){var recordData={};this.fields.each(function(field){recordData[field.name]=field.defaultValue;});recordData['rowStatus']=QueryConstans.ROWSTATUS_ADDED;return recordData;},createNewRecord:function(initProp){var data={};this.fields.each(function(f){var v={};if(f.defaultValue!=null){v=f.defaultValue;}else if(f.type==='int'||f.type==='float'){v=0;}else{v='';}data[f.name]=v;});data['rowStatus']=Gfa.data.ROWSTATUS_ADDED;Ext.apply(data,initProp);return new this.recordType(data);},insertNewRecord:function(){var record=this.createNewRecord();this.insert(0,record);this.afterEdit(record);return record;},save:function(){var lst=this.getChangedData();if(this.isDirty()){this.load({params:{},list:lst});}else{Ext.MessageBox.alert(i18n.message.prompt,i18n.message.noChanges);}},loadRecords:function(o,options,success){if(o&&options.params&&options.params.start===undefined){var r=o.records;this.updateRecords(r);this.fireEvent("load",this,r,options);if(options.callback){options.callback.call(options.scope||this,r,options,true);}}else{Gfa.data.Store.superclass.loadRecords.call(this,o,options,success);}},updateRecords:function(records){for(var i=records.length-1;i>=0&&this.modified[i];i--){var rec=this.modified[i];if(!rec)continue;if(rec.data.rowStatus===Gfa.data.ROWSTATUS_DELETED){this.remove(rec);}else{rec.data=records[i].data;rec.commit();}}},load:function(options){options=options||{};if(this.fireEvent("beforeload",this,options)!==false){this.storeOptions(options);var p=Ext.apply(options.params||{},this.baseParams);if(this.sortInfo&&this.remoteSort){var pn=this.paramNames;p[pn["sort"]]=this.sortInfo.field;p[pn["dir"]]=this.sortInfo.direction;}this.proxy.load(p,this.reader,this.loadRecords,this,options);}else{this.fireEvent("load",this,[],options);}}});Gfa.page.BTN_ADD={id:'tb-add',text:i18n.global.add,iconCls:'toolbar-add'};Gfa.page.BTN_EDIT={id:'tb-edit',text:i18n.global.edit,iconCls:'toolbar-edit'};Gfa.page.BTN_SAVE={id:'tb-save',text:i18n.global.save,iconCls:'toolbar-save'};Gfa.page.BTN_DEL={id:'tb-del',text:i18n.global.del,iconCls:'toolbar-del'};Gfa.page.BTN_CANCEL={id:'tb-cancel',text:i18n.global.cancel,iconCls:'toolbar-cancel'};Gfa.page.BTN_SEARCH={id:'tb-search',text:i18n.global.search,iconCls:'toolbar-search'};Gfa.page.BTN_RESET={id:'tb-reset',text:i18n.global.reset,iconCls:'toolbar-reset'};Gfa.page.GridEdit=function(config){this.load=function(opt){if(!this.$initialed)this.init(this);if(this.toolbar){var btnSearch=this.toolbar.items.get('tb-search');if(btnSearch&&btnSearch.hidden)return;}this.grid.store.load(opt||{params:{start:0}});};this.$tb$add=function(btn){var rec={};if(this.editColIdx>-1){rec=this.grid.store.insertNewRecord();if(this.grid.selModel.select)this.grid.selModel.select(0,this.editColIdx);else this.grid.selModel.selectRow(0);}else this.grid.selModel.clearSelections();if(this.onEdit)this.onEdit(btn,rec);else this.grid.startEditing(0,this.editColIdx);};this.$tb$edit=function(btn){/*chenm start*/if(this.grid.selModel.selections.length>1){Ext.Msg.alert(i18n.message.prompt,i18n.message.editErr);return  false;}/*chenm end*/var idx=this.grid.selModel.lastActive;if(typeof(idx)=='number'&&this.grid.selModel.getSelected()){if(this.onEdit)this.onEdit(btn,this.grid.selModel.getSelected());else this.grid.startEditing(idx,this.editColIdx);}};this.$tb$del=function(){var rec=this.getSelected();if(rec){if(rec.data.rowStatus===Gfa.data.ROWSTATUS_ADDED)rec.reject();else{Ext.Msg.confirm(i18n.message.prompt,i18n.message.confirmDel,function(btn,text){if(btn==='yes'){rec.set('rowStatus',Gfa.data.ROWSTATUS_DELETED);if(this.editColIdx==-1)this.grid.store.save();}},this);}}};this.save=function(){this.grid.store.save();};this.cancel=function(){var rec=this.getSelected();if(rec)rec.reject();};this.$toolbar$onClick=function(btn,e){e.stopEvent();switch(btn.id){case 'tb-add':this.$tb$add(btn,e);break;case 'tb-edit':this.$tb$edit(btn,e);break;case 'tb-del':this.$tb$del(btn,e);break;case 'tb-save':this.save(btn,e);break;case 'tb-cancel':this.cancel(btn,e);break;case 'tb-search':this.load();break;case 'tb-reset':this.filter.form.reset();break;}};this.$gridView$onGetRowClass=function(rec,index){if(rec.data.rowStatus===Gfa.data.ROWSTATUS_ADDED){return 'gfa-row-added';}else if(rec.data.rowStatus===Gfa.data.ROWSTATUS_DELETED){return 'gfa-row-deleted';}else if(rec.dirty){if(rec.data.rowStatus!==Gfa.data.ROWSTATUS_MODIFIED)rec.set('rowStatus',Gfa.data.ROWSTATUS_MODIFIED);return 'gfa-row-modified';}else return '';};this.getSelected=function(){if(!this.grid.selModel.hasSelection())return;if(this.grid.selModel.select)var rec=this.grid.selModel.selection.record;else var rec=this.grid.selModel.getSelected();return rec;};this.init=function(){if(this.editColIdx==null)this.editColIdx=1;if(this.grid){if(!this.toolbar)this.toolbar=this.grid.topToolbar;this.grid.getView().getRowClass=this.$gridView$onGetRowClass;}if(this.toolbar){for(var i=0;i<this.toolbar.items.items.length;i++){var btn=this.toolbar.items.items[i];if(!btn.hidden&&btn.type=='button'&&!btn.handler)btn.on('click',this.$toolbar$onClick,this);}}if(this.filter){var keyEnter={key:Ext.EventObject.ENTER,fn:function(){},scope:this};if(this.filter.keyMap){this.filter.keyMap.addBinding(keyEnter);}else{this.filter.keyMap=new Ext.KeyMap(this.filter.el,keyEnter);}}if(this.grid){if(this.grid.getColumnModel().getTotalWidth()>this.grid.getBox().width){this.grid.on('columnresize',function(columnIndex,newSize){this.getView().refresh();})}}this.$initialed=true;};this.$initialed=false;this.grid=null;this.filter=null;this.toolbar=null;this.editColIdx=null;this.onEdit=null;Ext.apply(this,config);};
