Skip to content
Snippets Groups Projects
Commit e460c11d authored by Renaud Le Gac's avatar Renaud Le Gac
Browse files

follow changes.

parent 76571ed3
No related branches found
No related tags found
No related merge requests found
Ext.namespace("App");App.encodeField=function(table,field){var t,f;t=table[0].toUpperCase()+table.slice(1,table.length);f=field[0].toUpperCase()+field.slice(1,field.length);return t+f};App.getDirectStore=function(storeId){var cfg,store,table;store=Ext.StoreMgr.lookup(storeId);if(!store&&!Ext.isString(storeId)){throw new Error('Fail to instanciate the store: "'+storeId+'"')}if(!store&&Ext.isString(storeId)){table=storeId.slice(0,storeId.search("Store"));cfg=App.storeCfgs[table];store=new App.data.DirectStore(cfg)}return store};App.getTableName=function(store){return store.baseParams.tableName};App.isPlugin=function(component,ptype){var i,plugin;if(!component.hasOwnProperty("plugins")){return false}for(i=0;i<component.plugins.length;i+=1){plugin=component.plugins[i];if(plugin===ptype){return true}if((typeof (plugin)==="object")&&plugin.hasOwnProperty("ptype")&&(plugin.ptype===ptype)){return true}}return false};App.loadMathJax=function(callback,scope){var path="/"+App.name+"/static/plugin_mathjax/MathJax.js";Ext.Loader.load([path],callback,scope)};Ext.namespace("App.form");App.form.ComboBox=Ext.extend(Ext.form.ComboBox,{mode:"remote",editable:false,selectOnFocus:true,triggerAction:"all",typeAhead:true,initComponent:function(){if(this.fieldLabel&&!this.emptyText){this.emptyText="Select a "+this.fieldLabel+" ..."}this.store=App.getDirectStore(this.store);App.form.ComboBox.superclass.initComponent.call(this);if(this.store.getCount()===0){this.store.load()}this.store.on("load",function(){this.setValue(this.initialConfig.value)},this)}});Ext.reg("xcombobox",App.form.ComboBox);Ext.namespace("App.form");App.form.FormPanel=Ext.extend(Ext.form.FormPanel,{store:null,autoScroll:true,bodyStyle:"padding:5px 5px 0",buttons:[{text:"Action",ref:"../buttonAction"},{text:"Reset",ref:"../buttonReset"}],defaults:{anchor:"100%"},defaultType:"textfield",frame:true,currentAction:null,currentRecord:null,textCreate:"Create",textDestroy:"Delete",textDuplicate:"Duplicate",textReset:"Reset",textUpdate:"Update",initComponent:function(){function resetForm(){this.reset()}App.form.FormPanel.superclass.initComponent.call(this);this.buttonAction.on("click",this.doAction,this);this.buttonReset.on("click",resetForm,this.getForm());this.addFieldToolTipsListeners();this.store=App.getDirectStore(this.store);this.store.on("exception",this.onStoreException,this);this.store.on("write",resetForm,this.getForm());this.setAction("create")},addFieldToolTipsListeners:function(){var form;function createToolTip(c){new Ext.ToolTip({target:c.getEl(),title:c.fieldLabel,anchor:"left",trackMouse:false,html:Ext.util.Format.htmlEncode(c.tipText)})}form=this.getForm();form.items.each(function(field){if(field.tipText){field.on("render",createToolTip)}})},disableFields:function(bool){var form=this.getForm();form.items.each(function(field){field.setDisabled(bool)})},doAction:function(){var form=this.getForm(),newRecord;if(!form.isValid()){return }if(!this.store){throw new Error("the store is undefined !!!")}switch(this.currentAction){case"create":newRecord=new this.store.recordType();this.updateRecord(newRecord);this.store.add(newRecord);break;case"destroy":this.store.remove(this.currentRecord);break;case"duplicate":newRecord=new this.store.recordType();this.updateRecord(newRecord);this.store.add(newRecord);break;case"update":this.currentRecord.beginEdit();this.updateRecord(this.currentRecord);this.currentRecord.endEdit();break}if(this.store.autoSave===false){this.store.save()}},hardReset:function(){var form=this.getForm();form.items.each(function(field){field.originalValue=field.initialConfig.value});form.reset()},onStoreException:function(proxy,type,action,options,response,arg){var field,fieldName,form=this.getForm(),record;for(fieldName in response.errors){if(response.errors.hasOwnProperty(fieldName)){field=form.findField(fieldName);field.markInvalid(response.errors[fieldName])}}record=arg[0];this.store.remove(record)},setAction:function(action,record){var form=this.getForm(),table,tableId;this.buttonReset.show();this.buttonAction.show();this.disableFields(false);this.currentAction=action;this.currentRecord=record;switch(action){case"create":this.hardReset();this.buttonAction.setText(this.textCreate);break;case"destroy":this.buttonAction.setText(this.textDestroy);form.loadRecord(record);break;case"duplicate":this.buttonAction.setText(this.textDuplicate);this.hardReset();table=App.getTableName(this.store);tableId=App.encodeField(table,"id");delete record.data[tableId];form.loadRecord(record);break;case"update":this.buttonAction.setText(this.textUpdate);form.loadRecord(record);break;case"view":this.buttonReset.hide();this.buttonAction.hide();form.loadRecord(record);this.disableFields(true);break}},updateRecord:function(record){var combo,combos,i,item,rec,values;values=this.getForm().getValues();for(item in values){if(values.hasOwnProperty(item)){record.set(item,values[item])}}combos=this.findByType("xcombobox");for(i=0;i<combos.length;i+=1){combo=combos[i];rec=combo.findRecord(combo.valueField,combo.getValue());record.set(combo.displayField,rec.get(combo.displayField))}}});Ext.reg("xform",App.form.FormPanel);Ext.namespace("App.grid");App.grid.Grid=Ext.extend(Ext.grid.GridPanel,{rowEditor:null,initComponent:function(){this.store=App.getDirectStore(this.store);this.bbar=new Ext.PagingToolbar();this.bbar.hide();App.grid.Grid.superclass.initComponent.call(this);if(!this.store.getTotalCount()){if(App.isPlugin(this,"pGridPaging")){this.store.load({params:{start:0,limit:10}})}else{this.store.load()}}}});Ext.reg("xgrid",App.grid.Grid);Ext.namespace("App.grid");App.grid.GridFilter=Ext.extend(Ext.form.FieldSet,{filterConditions:{},initialFilterConditions:[],pagingToolbar:null,store:null,defaults:{anchor:"100%",enableKeyEvents:true},initComponent:function(){var field,fields,i;App.grid.GridFilter.superclass.initComponent.call(this);fields=this.findByType("field");for(i=0;i<fields.length;i+=1){field=fields[i];if(field.xtype==="xcombobox"){field.on("select",this.onChange,this)}else{field.on("keyup",this.onChange,this,{buffer:500})}}},bind:function(grid){var baseParams,i;this.store=grid.getStore();if(grid.pagingInitialized){this.pagingToolbar=grid.getBottomToolbar()}baseParams=this.store.baseParams;for(i=0;i<baseParams.where.length;i+=1){this.initialFilterConditions.push(baseParams.where[i])}},onChange:function(field){this.setupCondition(field)},onReset:function(){var fields,i;fields=this.findByType("field");for(i=0;i<fields.length;i+=1){fields[i].reset()}this.filterConditions={};this.store.baseParams.where=this.initialFilterConditions;this.updateStore()},setupCondition:function(field){var conditions=[],i,k,value,where;value=field.getValue();where=field.name+" "+field.filterOperator+" '"+value+"'";if(value===""){delete this.filterConditions[field.name]}else{this.filterConditions[field.name]=where}for(i=0;i<this.initialFilterConditions.length;i+=1){conditions.push(this.initialFilterConditions[i])}for(k in this.filterConditions){if(this.filterConditions.hasOwnProperty(k)){conditions.push(this.filterConditions[k])}}this.store.baseParams.where=conditions;this.updateStore()},updateStore:function(){if(this.pagingToolbar){this.pagingToolbar.doRefresh()}else{this.store.load()}}});Ext.reg("xgridfilter",App.grid.GridFilter);Ext.namespace("App.grid");App.grid.MathJax=Ext.extend(Object,{init:function(grid){function processMath(){MathJax.Hub.PreProcess();MathJax.Hub.Process()}grid.getView().on("refresh",processMath,grid,{delay:100})}});Ext.preg("pGridMathJax",App.grid.MathJax);Ext.namespace("App.grid");App.grid.Paging=Ext.extend(Object,{ptype:"pGridPaging",init:function(grid){var bbar;bbar=grid.getBottomToolbar();bbar.bindStore(grid.store);bbar.add("-","Rows per page",{xtype:"slider",plugins:new Ext.slider.Tip(),listeners:{changecomplete:this.onChangePageSize,scope:bbar},minValue:1,width:100},"->",{xtype:"xbuttondownload",text:"Export to CSV",url:App.csvUrl+"?tableName="+App.getTableName(grid.store)});bbar.show();if(grid.store.getTotalCount()>0){this.onInit.call(grid,grid.store)}else{grid.store.on("load",this.onInit,grid,{single:true})}grid.store.on("write",this.onWrite,grid)},onChangePageSize:function(slider,newValue,thumb){var bbar=this;bbar.pageSize=newValue;bbar.moveFirst()},onInit:function(store,records,options){var bbar,grid=this,nRows=store.getCount(),slider;bbar=grid.getBottomToolbar();bbar.pageSize=nRows;slider=bbar.findByType("slider")[0];slider.setMaxValue(store.getTotalCount());slider.setValue(nRows)},onWrite:function(){var bbar,grid=this,slider;bbar=grid.getBottomToolbar();slider=bbar.findByType("slider")[0];slider.setMaxValue(grid.store.getTotalCount());slider.setValue(grid.store.getCount())}});Ext.preg("pGridPaging",App.grid.Paging);Ext.namespace("App.grid");App.grid.RowEditor=Ext.extend(Ext.Window,{ptype:"pGridRowEditor",formPanel:null,grid:null,autoScroll:true,closeAction:"hide",constrainHeader:true,defaults:{autoScroll:true},modal:true,plain:true,init:function(grid){var table;this.grid=grid;this.grid.rowEditor=this;this.grid.selModel=new Ext.grid.RowSelectionModel({singleSelect:true});this.grid.store.on("write",this.onWrite,this);table=App.getTableName(this.grid.store);Dbui.getForm(table,this.addFormPanel,this)},addFormPanel:function(provider,response){var formCfg=response.result;this.formPanel=new App.form.FormPanel(formCfg);this.add(this.formPanel);this.grid.store.on("exception",this.formPanel.onStoreException,this.formPanel)},getSelected:function(){var record=this.grid.getSelectionModel().getSelected();if(!record){Ext.MessageBox.alert("Warning","Select a row please");return false}return record},onAddRow:function(){this.formPanel.setAction("create");this.setTitle("Create a new record...");this.show()},onDeleteRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("destroy",record);this.setTitle("Delete the record...");this.formPanel.doAction()},onDuplicateRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("duplicate",record);this.setTitle("Duplicate the record...");this.show()},onEditRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("update",record);this.setTitle("Update the record...");this.show()},onViewRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("view",record);this.setTitle("View the record...");this.show()},onWrite:function(store,action,result,transaction,record){this.hide()}});Ext.preg("pGridRowEditor",App.grid.RowEditor);Ext.namespace("App.grid");App.grid.RowEditorContextMenu=Ext.extend(Object,{ptype:"pGridRowEditorContextMenu",init:function(grid){var menu=new Ext.menu.Menu();if(!grid.rowEditor){throw new Error("no grid row editor !!!")}grid.addListener("containercontextmenu",this.onContainerContextMenu,menu);grid.addListener("headercontextmenu",this.onHeaderContextMenu,menu);grid.addListener("rowcontextmenu",this.onRowContextMenu,menu);menu.add({text:"Add",iconCls:"silk-add",handler:grid.rowEditor.onAddRow,scope:grid.rowEditor},"-",{text:"Delete",iconCls:"silk-delete",handler:grid.rowEditor.onDeleteRow,scope:grid.rowEditor},"-",{text:"Duplicate",iconCls:"silk-clone",handler:grid.rowEditor.onDuplicateRow,scope:grid.rowEditor},{text:"Update",iconCls:"silk-update",handler:grid.rowEditor.onEditRow,scope:grid.rowEditor},"-",{text:"View",iconCls:"silk-view",handler:grid.rowEditor.onViewRow,scope:grid.rowEditor})},onContainerContextMenu:function(grid,event){var menu=this;event.stopEvent();menu.showAt(event.getXY())},onHeaderContextMenu:function(grid,columIndex,event){event.stopEvent()},onRowContextMenu:function(grid,rowIndex,event){var menu=this;event.stopEvent();grid.selModel.selectRow(rowIndex);menu.showAt(event.getXY())}});Ext.preg("pGridRowEditorContextMenu",App.grid.RowEditorContextMenu);Ext.namespace("App.grid");App.grid.RowEditorToolbar=Ext.extend(Object,{ptype:"pGridRowEditorToolbar",init:function(grid){var toolbar;if(!grid.rowEditor){throw new Error("no grid row editor !!!")}toolbar=grid.getTopToolbar();toolbar.add([{text:"Add",iconCls:"silk-add",handler:grid.rowEditor.onAddRow,scope:grid.rowEditor}," ",{text:"Delete",iconCls:"silk-delete",handler:grid.rowEditor.onDeleteRow,scope:grid.rowEditor}," ",{text:"Duplicate",iconCls:"silk-clone",handler:grid.rowEditor.onDuplicateRow,scope:grid.rowEditor}," ",{text:"Update",iconCls:"silk-update",handler:grid.rowEditor.onEditRow,scope:grid.rowEditor}," ",{text:"View",iconCls:"silk-view",handler:grid.rowEditor.onViewRow,scope:grid.rowEditor},"-"])}});Ext.preg("pGridRowEditorToolbar",App.grid.RowEditorToolbar);Ext.namespace("App.data");App.data.DirectStore=Ext.extend(Ext.data.DirectStore,{autoLoad:true,autoSave:true,constructor:function(config){var cfg,cfgWrt;cfg=Ext.apply({},{encode:false,listful:true,writeAllFields:false},config);cfg=Ext.apply(cfg,{api:{create:Dbui.create,destroy:Dbui.destroy,read:Dbui.read,update:Dbui.update}});if(!Ext.isDefined(cfg.writer)){cfgWrt=Ext.copyTo({},cfg,"encode, listful, writeAllFields");cfg.writer=new Ext.data.JsonWriter(cfgWrt)}App.data.DirectStore.superclass.constructor.call(this,cfg);this.on("write",this.onWrite)},onWrite:function(store,action){switch(action){case"create":store.totalLength+=1;break;case"destroy":store.totalLength-=1;break}}});Ext.reg("xdirectstore",App.data.DirectStore);Ext.namespace("App");App.Mgr=Ext.extend(Object,{constructor:function(config){Ext.apply(this,config);App.Mgr.superclass.constructor.apply(this);if(App.withMathJax){App.loadMathJax(this.configure,this)}else{this.configure()}},configure:function(){Dbui.getViewport(this.launch,this)},launch:function(provider,response){var cfg,vpCfg,treeNode,viewport;treeNode=new Ext.tree.TreeNode({id:App.name,text:App.name});vpCfg={layout:"border",title:"Ext Layout Browser",items:[{region:"west",title:App.name,width:200,collapsible:true,autoScroll:true,split:true,xtype:"treepanel",rootVisible:false,root:treeNode,ref:"treePanel"},{region:"center",xtype:"tabpanel",ref:"tabPanel",autoScroll:true,defaults:{layout:"fit"}}]};cfg=response.result;vpCfg=Ext.apply(vpCfg,cfg);viewport=new Ext.Viewport(vpCfg);viewport.treePanel.on("contextmenu",function(n,e){e.stopEvent()})}});Ext.namespace("App.panel");App.panel.MathJax=Ext.extend(Object,{init:function(panel){panel.on("render",this.onPanelRender,this,{single:true})},onPanelRender:function(panel){var updater=panel.body.getUpdater();updater.on("update",this.onProcess)},onProcess:function(e,o){MathJax.Hub.PreProcess();MathJax.Hub.Process()}});Ext.preg("pPanelMathJax",App.panel.MathJax);Ext.namespace("App.form");App.form.SetBox=Ext.extend(Ext.form.ComboBox,{model:null,editable:false,emptyText:"Select...",selectOnFocus:true,triggerAction:"all",typeAhead:true,initComponent:function(){var i,li=[];if(!this.model){throw new Error("the property model is missing !!!")}li=[];for(i=0;i<this.model.setData.length;i+=1){li.push([this.model.setData[i]])}this.store=new Ext.data.ArrayStore({fields:[this.model.name],data:li});this.displayField=this.model.name;this.mode="local";App.form.SetBox.superclass.initComponent.call(this)}});Ext.reg("xsetbox",App.form.SetBox);Ext.namespace("App.viewport");App.viewport.InTreePanelBase=Ext.extend(Object,{topNodeName:null,nodesId:null,nodesText:null,tabTitlePrefix:"",viewport:null,constructor:function(config){Ext.apply(this,config);App.viewport.InTreePanelBase.superclass.constructor.apply(this)},init:function(viewport){var i,child,node,root;this.viewport=viewport;node=new Ext.tree.TreeNode({id:"/"+App.name+"/"+this.topNodeName,text:this.topNodeName});root=viewport.treePanel.getRootNode();root.appendChild(node);if(!this.nodesText){this.nodesText=this.nodesId}for(i=0;i<this.nodesId.length;i+=1){child=new Ext.tree.TreeNode({id:"/"+App.name+"/"+this.topNodeName+"/"+this.nodesId[i],text:this.nodesText[i],leaf:true});node.appendChild(child);child.on("click",this.onCreateTab,this)}viewport.tabPanel.on("beforeadd",this.addWdg,this)},addWdg:function(container,component,index){},getNodeNameFromId:function(id){var li=id.split("/").reverse();return li[0]},getTopNodeNameFromId:function(id){var li=id.split("/").reverse();return li[1]},onCreateTab:function(node){var nodeName,pan,tab,tabId;tabId=node.id;if(this.viewport.tabPanel.getItem(tabId)){this.viewport.tabPanel.setActiveTab(tabId);return }nodeName=this.getNodeNameFromId(tabId);pan=new Ext.Panel({id:tabId,closable:true,title:this.tabTitlePrefix+" "+nodeName});tab=this.viewport.tabPanel.add(pan);this.viewport.tabPanel.setActiveTab(tab.id)}});Ext.preg("pInTreeBase",App.viewport.InTreePanelBase);Ext.namespace("App.viewport");App.viewport.InTreePanelForm=Ext.extend(App.viewport.InTreePanelBase,{addWdg:function(container,component,index){var cfg,table,wdg;if(this.getTopNodeNameFromId(component.id)!==this.topNodeName){return }table=this.getNodeNameFromId(component.id);Dbui.getForm(table,function(provider,response){cfg=response.result;wdg=Ext.ComponentMgr.create(cfg);component.add(wdg);component.doLayout()},this)}});Ext.preg("pInTreeForm",App.viewport.InTreePanelForm);Ext.namespace("App.viewport");App.viewport.InTreePanelGrid=Ext.extend(App.viewport.InTreePanelBase,{addWdg:function(container,component,index){var cfg,grid,gridfilter,table,wdg;function createGrid(provider,response){cfg=response.result;wdg=Ext.ComponentMgr.create(cfg);if(cfg.hasOwnProperty("filterModel")){grid=wdg;gridfilter=Ext.ComponentMgr.create(cfg.filterModel);gridfilter.bind(grid);wdg=new Ext.Panel({layout:"border",border:false,items:[{region:"center",layout:"fit",items:[grid]},{region:"east",layout:"form",collapsible:true,collapsed:true,defaults:{anchor:"100%"},frame:true,items:[gridfilter],width:300,split:true,buttons:[{text:"reset",ref:"../../resetButton"}]}]});wdg.resetButton.on("click",gridfilter.onReset,gridfilter)}component.add(wdg);component.doLayout()}if(this.getTopNodeNameFromId(component.id)!==this.topNodeName){return }table=this.getNodeNameFromId(component.id);Dbui.getGrid(table,createGrid,this)}});Ext.preg("pInTreeGrid",App.viewport.InTreePanelGrid);Ext.namespace("App");App.ButtonDownload=Ext.extend(Ext.Button,{url:undefined,initComponent:function(){App.ButtonDownload.superclass.initComponent.call(this);this.on("click",this.onDownload,this)},onDownload:function(button,event){try{Ext.destroy(Ext.get("downloadIframe"))}catch(err){}Ext.DomHelper.append(document.body,{tag:"iframe",id:"downloadIframe",frameBorder:0,width:0,height:0,css:"display:none;visibility:hidden;height:0px;",src:this.url})}});Ext.reg("xbuttondownload",App.ButtonDownload);
\ No newline at end of file
Ext.namespace("App");App.encodeField=function(table,field){var t,f;t=table[0].toUpperCase()+table.slice(1,table.length);f=field[0].toUpperCase()+field.slice(1,field.length);return t+f};App.getDirectStore=function(storeId){var cfg,store,table;store=Ext.StoreMgr.lookup(storeId);if(!store&&!Ext.isString(storeId)){throw new Error('Fail to instanciate the store: "'+storeId+'"')}if(!store&&Ext.isString(storeId)){table=storeId.slice(0,storeId.search("Store"));cfg=App.storeCfgs[table];store=new App.data.DirectStore(cfg)}return store};App.getTableName=function(store){return store.baseParams.tableName};App.isPlugin=function(component,ptype){var i,plugin;if(!component.hasOwnProperty("plugins")){return false}for(i=0;i<component.plugins.length;i+=1){plugin=component.plugins[i];if(plugin===ptype){return true}if((typeof (plugin)==="object")&&plugin.hasOwnProperty("ptype")&&(plugin.ptype===ptype)){return true}}return false};App.loadMathJax=function(callback,scope){if(App.mathJax){Ext.Loader.load([App.mathJax],callback,scope)}else{callback.call(scope)}};Ext.namespace("App.form");App.form.ComboBox=Ext.extend(Ext.form.ComboBox,{mode:"remote",editable:false,selectOnFocus:true,triggerAction:"all",typeAhead:true,initComponent:function(){if(this.fieldLabel&&!this.emptyText){this.emptyText="Select a "+this.fieldLabel+" ..."}this.store=App.getDirectStore(this.store);App.form.ComboBox.superclass.initComponent.call(this);if(this.store.getCount()===0){this.store.load()}this.store.on("load",function(){this.setValue(this.initialConfig.value)},this)}});Ext.reg("xcombobox",App.form.ComboBox);Ext.namespace("App.form");App.form.FormPanel=Ext.extend(Ext.form.FormPanel,{store:null,autoScroll:true,bodyStyle:"padding:5px 5px 0",buttons:[{text:"Action",ref:"../buttonAction"},{text:"Reset",ref:"../buttonReset"}],defaults:{anchor:"100%"},defaultType:"textfield",frame:true,currentAction:null,currentRecord:null,textCreate:"Create",textDestroy:"Delete",textDuplicate:"Duplicate",textReset:"Reset",textUpdate:"Update",initComponent:function(){function resetForm(){this.reset()}App.form.FormPanel.superclass.initComponent.call(this);this.buttonAction.on("click",this.doAction,this);this.buttonReset.on("click",resetForm,this.getForm());this.addFieldToolTipsListeners();this.store=App.getDirectStore(this.store);this.store.on("exception",this.onStoreException,this);this.store.on("write",resetForm,this.getForm());this.setAction("create")},addFieldToolTipsListeners:function(){var form;function createToolTip(c){new Ext.ToolTip({target:c.getEl(),title:c.fieldLabel,anchor:"left",trackMouse:false,html:Ext.util.Format.htmlEncode(c.tipText)})}form=this.getForm();form.items.each(function(field){if(field.tipText){field.on("render",createToolTip)}})},disableFields:function(bool){var form=this.getForm();form.items.each(function(field){field.setDisabled(bool)})},doAction:function(){var form=this.getForm(),newRecord;if(!form.isValid()){return }if(!this.store){throw new Error("the store is undefined !!!")}switch(this.currentAction){case"create":newRecord=new this.store.recordType();this.updateRecord(newRecord);this.store.add(newRecord);break;case"destroy":this.store.remove(this.currentRecord);break;case"duplicate":newRecord=new this.store.recordType();this.updateRecord(newRecord);this.store.add(newRecord);break;case"update":this.currentRecord.beginEdit();this.updateRecord(this.currentRecord);this.currentRecord.endEdit();break}if(this.store.autoSave===false){this.store.save()}},hardReset:function(){var form=this.getForm();form.items.each(function(field){field.originalValue=field.initialConfig.value});form.reset()},onStoreException:function(proxy,type,action,options,response,arg){var field,fieldName,form=this.getForm(),record;for(fieldName in response.errors){if(response.errors.hasOwnProperty(fieldName)){field=form.findField(fieldName);field.markInvalid(response.errors[fieldName])}}record=arg[0];this.store.remove(record)},setAction:function(action,record){var form=this.getForm(),table,tableId;this.buttonReset.show();this.buttonAction.show();this.disableFields(false);this.currentAction=action;this.currentRecord=record;switch(action){case"create":this.hardReset();this.buttonAction.setText(this.textCreate);break;case"destroy":this.buttonAction.setText(this.textDestroy);form.loadRecord(record);break;case"duplicate":this.buttonAction.setText(this.textDuplicate);this.hardReset();table=App.getTableName(this.store);tableId=App.encodeField(table,"id");delete record.data[tableId];form.loadRecord(record);break;case"update":this.buttonAction.setText(this.textUpdate);form.loadRecord(record);break;case"view":this.buttonReset.hide();this.buttonAction.hide();form.loadRecord(record);this.disableFields(true);break}},updateRecord:function(record){var combo,combos,i,item,rec,values;values=this.getForm().getValues();for(item in values){if(values.hasOwnProperty(item)){record.set(item,values[item])}}combos=this.findByType("xcombobox");for(i=0;i<combos.length;i+=1){combo=combos[i];rec=combo.findRecord(combo.valueField,combo.getValue());record.set(combo.displayField,rec.get(combo.displayField))}}});Ext.reg("xform",App.form.FormPanel);Ext.namespace("App.grid");App.grid.Grid=Ext.extend(Ext.grid.GridPanel,{rowEditor:null,initComponent:function(){this.store=App.getDirectStore(this.store);this.bbar=new Ext.PagingToolbar();this.bbar.hide();App.grid.Grid.superclass.initComponent.call(this);if(!this.store.getTotalCount()){if(App.isPlugin(this,"pGridPaging")){this.store.load({params:{start:0,limit:10}})}else{this.store.load()}}}});Ext.reg("xgrid",App.grid.Grid);Ext.namespace("App.grid");App.grid.GridFilter=Ext.extend(Ext.form.FieldSet,{filterConditions:{},initialFilterConditions:[],pagingToolbar:null,store:null,defaults:{anchor:"100%",enableKeyEvents:true},initComponent:function(){var field,fields,i;App.grid.GridFilter.superclass.initComponent.call(this);fields=this.findByType("field");for(i=0;i<fields.length;i+=1){field=fields[i];if(field.xtype==="xcombobox"){field.on("select",this.onChange,this)}else{field.on("keyup",this.onChange,this,{buffer:500})}}},bind:function(grid){var baseParams,i;this.store=grid.getStore();if(grid.pagingInitialized){this.pagingToolbar=grid.getBottomToolbar()}baseParams=this.store.baseParams;for(i=0;i<baseParams.where.length;i+=1){this.initialFilterConditions.push(baseParams.where[i])}},onChange:function(field){this.setupCondition(field)},onReset:function(){var fields,i;fields=this.findByType("field");for(i=0;i<fields.length;i+=1){fields[i].reset()}this.filterConditions={};this.store.baseParams.where=this.initialFilterConditions;this.updateStore()},setupCondition:function(field){var conditions=[],i,k,value,where;value=field.getValue();where=field.name+" "+field.filterOperator+" '"+value+"'";if(value===""){delete this.filterConditions[field.name]}else{this.filterConditions[field.name]=where}for(i=0;i<this.initialFilterConditions.length;i+=1){conditions.push(this.initialFilterConditions[i])}for(k in this.filterConditions){if(this.filterConditions.hasOwnProperty(k)){conditions.push(this.filterConditions[k])}}this.store.baseParams.where=conditions;this.updateStore()},updateStore:function(){if(this.pagingToolbar){this.pagingToolbar.doRefresh()}else{this.store.load()}}});Ext.reg("xgridfilter",App.grid.GridFilter);Ext.namespace("App.grid");App.grid.MathJax=Ext.extend(Object,{init:function(grid){function processMath(){MathJax.Hub.PreProcess();MathJax.Hub.Process()}grid.getView().on("refresh",processMath,grid,{delay:100})}});Ext.preg("pGridMathJax",App.grid.MathJax);Ext.namespace("App.grid");App.grid.Paging=Ext.extend(Object,{ptype:"pGridPaging",init:function(grid){var bbar;bbar=grid.getBottomToolbar();bbar.bindStore(grid.store);bbar.add("-","Rows per page",{xtype:"slider",plugins:new Ext.slider.Tip(),listeners:{changecomplete:this.onChangePageSize,scope:bbar},minValue:1,width:100},"->",{xtype:"xbuttondownload",text:"Export to CSV",url:App.csvUrl+"?tableName="+App.getTableName(grid.store)});bbar.show();if(grid.store.getTotalCount()>0){this.onInit.call(grid,grid.store)}else{grid.store.on("load",this.onInit,grid,{single:true})}grid.store.on("write",this.onWrite,grid)},onChangePageSize:function(slider,newValue,thumb){var bbar=this;bbar.pageSize=newValue;bbar.moveFirst()},onInit:function(store,records,options){var bbar,grid=this,nRows=store.getCount(),slider;bbar=grid.getBottomToolbar();bbar.pageSize=nRows;slider=bbar.findByType("slider")[0];slider.setMaxValue(store.getTotalCount());slider.setValue(nRows)},onWrite:function(){var bbar,grid=this,slider;bbar=grid.getBottomToolbar();slider=bbar.findByType("slider")[0];slider.setMaxValue(grid.store.getTotalCount());slider.setValue(grid.store.getCount())}});Ext.preg("pGridPaging",App.grid.Paging);Ext.namespace("App.grid");App.grid.RowEditor=Ext.extend(Ext.Window,{ptype:"pGridRowEditor",formPanel:null,grid:null,autoScroll:true,closeAction:"hide",constrainHeader:true,defaults:{autoScroll:true},modal:true,plain:true,init:function(grid){var table;this.grid=grid;this.grid.rowEditor=this;this.grid.selModel=new Ext.grid.RowSelectionModel({singleSelect:true});this.grid.store.on("write",this.onWrite,this);table=App.getTableName(this.grid.store);Dbui.getForm(table,this.addFormPanel,this)},addFormPanel:function(provider,response){var formCfg=response.result;this.formPanel=new App.form.FormPanel(formCfg);this.add(this.formPanel);this.grid.store.on("exception",this.formPanel.onStoreException,this.formPanel)},getSelected:function(){var record=this.grid.getSelectionModel().getSelected();if(!record){Ext.MessageBox.alert("Warning","Select a row please");return false}return record},onAddRow:function(){this.formPanel.setAction("create");this.setTitle("Create a new record...");this.show()},onDeleteRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("destroy",record);this.setTitle("Delete the record...");this.formPanel.doAction()},onDuplicateRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("duplicate",record);this.setTitle("Duplicate the record...");this.show()},onEditRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("update",record);this.setTitle("Update the record...");this.show()},onViewRow:function(){var record=this.getSelected();if(!record){return }this.formPanel.setAction("view",record);this.setTitle("View the record...");this.show()},onWrite:function(store,action,result,transaction,record){this.hide()}});Ext.preg("pGridRowEditor",App.grid.RowEditor);Ext.namespace("App.grid");App.grid.RowEditorContextMenu=Ext.extend(Object,{ptype:"pGridRowEditorContextMenu",init:function(grid){var menu=new Ext.menu.Menu();if(!grid.rowEditor){throw new Error("no grid row editor !!!")}grid.addListener("containercontextmenu",this.onContainerContextMenu,menu);grid.addListener("headercontextmenu",this.onHeaderContextMenu,menu);grid.addListener("rowcontextmenu",this.onRowContextMenu,menu);menu.add({text:"Add",iconCls:"silk-add",handler:grid.rowEditor.onAddRow,scope:grid.rowEditor},"-",{text:"Delete",iconCls:"silk-delete",handler:grid.rowEditor.onDeleteRow,scope:grid.rowEditor},"-",{text:"Duplicate",iconCls:"silk-clone",handler:grid.rowEditor.onDuplicateRow,scope:grid.rowEditor},{text:"Update",iconCls:"silk-update",handler:grid.rowEditor.onEditRow,scope:grid.rowEditor},"-",{text:"View",iconCls:"silk-view",handler:grid.rowEditor.onViewRow,scope:grid.rowEditor})},onContainerContextMenu:function(grid,event){var menu=this;event.stopEvent();menu.showAt(event.getXY())},onHeaderContextMenu:function(grid,columIndex,event){event.stopEvent()},onRowContextMenu:function(grid,rowIndex,event){var menu=this;event.stopEvent();grid.selModel.selectRow(rowIndex);menu.showAt(event.getXY())}});Ext.preg("pGridRowEditorContextMenu",App.grid.RowEditorContextMenu);Ext.namespace("App.grid");App.grid.RowEditorToolbar=Ext.extend(Object,{ptype:"pGridRowEditorToolbar",init:function(grid){var toolbar;if(!grid.rowEditor){throw new Error("no grid row editor !!!")}toolbar=grid.getTopToolbar();toolbar.add([{text:"Add",iconCls:"silk-add",handler:grid.rowEditor.onAddRow,scope:grid.rowEditor}," ",{text:"Delete",iconCls:"silk-delete",handler:grid.rowEditor.onDeleteRow,scope:grid.rowEditor}," ",{text:"Duplicate",iconCls:"silk-clone",handler:grid.rowEditor.onDuplicateRow,scope:grid.rowEditor}," ",{text:"Update",iconCls:"silk-update",handler:grid.rowEditor.onEditRow,scope:grid.rowEditor}," ",{text:"View",iconCls:"silk-view",handler:grid.rowEditor.onViewRow,scope:grid.rowEditor},"-"])}});Ext.preg("pGridRowEditorToolbar",App.grid.RowEditorToolbar);Ext.namespace("App.data");App.data.DirectStore=Ext.extend(Ext.data.DirectStore,{autoLoad:true,autoSave:true,constructor:function(config){var cfg,cfgWrt;cfg=Ext.apply({},{encode:false,listful:true,writeAllFields:false},config);cfg=Ext.apply(cfg,{api:{create:Dbui.create,destroy:Dbui.destroy,read:Dbui.read,update:Dbui.update}});if(!Ext.isDefined(cfg.writer)){cfgWrt=Ext.copyTo({},cfg,"encode, listful, writeAllFields");cfg.writer=new Ext.data.JsonWriter(cfgWrt)}App.data.DirectStore.superclass.constructor.call(this,cfg);this.on("write",this.onWrite)},onWrite:function(store,action){switch(action){case"create":store.totalLength+=1;break;case"destroy":store.totalLength-=1;break}}});Ext.reg("xdirectstore",App.data.DirectStore);Ext.namespace("App");App.Mgr=Ext.extend(Object,{constructor:function(config){Ext.apply(this,config);App.Mgr.superclass.constructor.apply(this);App.loadMathJax(this.configure,this)},configure:function(){Dbui.getViewport(this.launch,this)},launch:function(provider,response){var cfg,vpCfg,treeNode,viewport;treeNode=new Ext.tree.TreeNode({id:App.name,text:App.name});vpCfg={layout:"border",title:"Ext Layout Browser",items:[{region:"west",title:App.name,width:200,collapsible:true,autoScroll:true,split:true,xtype:"treepanel",rootVisible:false,root:treeNode,ref:"treePanel"},{region:"center",xtype:"tabpanel",ref:"tabPanel",autoScroll:true,defaults:{layout:"fit"}}]};cfg=response.result;vpCfg=Ext.apply(vpCfg,cfg);viewport=new Ext.Viewport(vpCfg);viewport.treePanel.on("contextmenu",function(n,e){e.stopEvent()})}});Ext.namespace("App.panel");App.panel.MathJax=Ext.extend(Object,{init:function(panel){panel.on("render",this.onPanelRender,this,{single:true})},onPanelRender:function(panel){var updater=panel.body.getUpdater();updater.on("update",this.onProcess)},onProcess:function(e,o){MathJax.Hub.PreProcess();MathJax.Hub.Process()}});Ext.preg("pPanelMathJax",App.panel.MathJax);Ext.namespace("App.form");App.form.SetBox=Ext.extend(Ext.form.ComboBox,{model:null,editable:false,emptyText:"Select...",selectOnFocus:true,triggerAction:"all",typeAhead:true,initComponent:function(){var i,li=[];if(!this.model){throw new Error("the property model is missing !!!")}li=[];for(i=0;i<this.model.setData.length;i+=1){li.push([this.model.setData[i]])}this.store=new Ext.data.ArrayStore({fields:[this.model.name],data:li});this.displayField=this.model.name;this.mode="local";App.form.SetBox.superclass.initComponent.call(this)}});Ext.reg("xsetbox",App.form.SetBox);Ext.namespace("App.viewport");App.viewport.InTreePanelBase=Ext.extend(Object,{topNodeName:null,nodesId:null,nodesText:null,tabTitlePrefix:"",viewport:null,constructor:function(config){Ext.apply(this,config);App.viewport.InTreePanelBase.superclass.constructor.apply(this)},init:function(viewport){var i,child,node,root;this.viewport=viewport;node=new Ext.tree.TreeNode({id:"/"+App.name+"/"+this.topNodeName,text:this.topNodeName});root=viewport.treePanel.getRootNode();root.appendChild(node);if(!this.nodesText){this.nodesText=this.nodesId}for(i=0;i<this.nodesId.length;i+=1){child=new Ext.tree.TreeNode({id:"/"+App.name+"/"+this.topNodeName+"/"+this.nodesId[i],text:this.nodesText[i],leaf:true});node.appendChild(child);child.on("click",this.onCreateTab,this)}viewport.tabPanel.on("beforeadd",this.addWdg,this)},addWdg:function(container,component,index){},getNodeNameFromId:function(id){var li=id.split("/").reverse();return li[0]},getTopNodeNameFromId:function(id){var li=id.split("/").reverse();return li[1]},onCreateTab:function(node){var nodeName,pan,tab,tabId;tabId=node.id;if(this.viewport.tabPanel.getItem(tabId)){this.viewport.tabPanel.setActiveTab(tabId);return }nodeName=this.getNodeNameFromId(tabId);pan=new Ext.Panel({id:tabId,closable:true,title:this.tabTitlePrefix+" "+nodeName});tab=this.viewport.tabPanel.add(pan);this.viewport.tabPanel.setActiveTab(tab.id)}});Ext.preg("pInTreeBase",App.viewport.InTreePanelBase);Ext.namespace("App.viewport");App.viewport.InTreePanelForm=Ext.extend(App.viewport.InTreePanelBase,{addWdg:function(container,component,index){var cfg,table,wdg;if(this.getTopNodeNameFromId(component.id)!==this.topNodeName){return }table=this.getNodeNameFromId(component.id);Dbui.getForm(table,function(provider,response){cfg=response.result;wdg=Ext.ComponentMgr.create(cfg);component.add(wdg);component.doLayout()},this)}});Ext.preg("pInTreeForm",App.viewport.InTreePanelForm);Ext.namespace("App.viewport");App.viewport.InTreePanelGrid=Ext.extend(App.viewport.InTreePanelBase,{addWdg:function(container,component,index){var cfg,grid,gridfilter,table,wdg;function createGrid(provider,response){cfg=response.result;wdg=Ext.ComponentMgr.create(cfg);if(cfg.hasOwnProperty("filterModel")){grid=wdg;gridfilter=Ext.ComponentMgr.create(cfg.filterModel);gridfilter.bind(grid);wdg=new Ext.Panel({layout:"border",border:false,items:[{region:"center",layout:"fit",items:[grid]},{region:"east",layout:"form",collapsible:true,collapsed:true,defaults:{anchor:"100%"},frame:true,items:[gridfilter],width:300,split:true,buttons:[{text:"reset",ref:"../../resetButton"}]}]});wdg.resetButton.on("click",gridfilter.onReset,gridfilter)}component.add(wdg);component.doLayout()}if(this.getTopNodeNameFromId(component.id)!==this.topNodeName){return }table=this.getNodeNameFromId(component.id);Dbui.getGrid(table,createGrid,this)}});Ext.preg("pInTreeGrid",App.viewport.InTreePanelGrid);Ext.namespace("App");App.ButtonDownload=Ext.extend(Ext.Button,{url:undefined,initComponent:function(){App.ButtonDownload.superclass.initComponent.call(this);this.on("click",this.onDownload,this)},onDownload:function(button,event){try{Ext.destroy(Ext.get("downloadIframe"))}catch(err){}Ext.DomHelper.append(document.body,{tag:"iframe",id:"downloadIframe",frameBorder:0,width:0,height:0,css:"display:none;visibility:hidden;height:0px;",src:this.url})}});Ext.reg("xbuttondownload",App.ButtonDownload);
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment