Ext.regModel('Compass.ErpApp.Shared.ConfigurationOption', { fields: [ { type: 'string', name: 'description' }, { type: 'string', name: 'value' }, { type: 'string', name: 'comment' } ] }); Ext.define("Compass.ErpApp.Shared.ConfigurationForm",{ extend:"Ext.form.Panel", alias:"widget.sharedconfigurationform", configurationItems:null, autoScroll:true, bodyStyle:'padding:5px 5px 0', frame:true, alreadySetup:false, border:false, fieldDefaults: { labelAlign: 'top' }, // layout: "table", // items:[{ // itemId:'leftContainer', // xtype: 'container', // style: {padding:'5px','vertical-align':'top'}, // columnWidth:.5, // layout: 'anchor' // },{ // itemId:'rightContainer', // xtype: 'container', // style: {padding:'5px','vertical-align':'top'}, // columnWidth:.5, // layout: 'anchor' // }], buttonAlign:'center', buttons:[ { text:'Update', handler:function(button){ var self = button.findParentByType('sharedconfigurationform'); self.getForm().submit({ reset:false, waitMsg:'Updating configuration...', success:function(form, action){ var response = Ext.decode(action.response.responseText); var result = self.fireEvent('afterUpdate', self, response.configurationItems, action.response); if(result !== false){ Ext.Msg.alert('Success', 'Configuration Saved'); } }, failure:function(form, action){ var message = 'Error saving configuraiton.' Ext.Msg.alert("Status", message); } }); } }], wait : function(msg){ this.waitMsg = Ext.MessageBox.show({ msg: msg || 'Processing your request, please wait...', progressText: 'Working...', width:300, wait:true, waitConfig: { interval:200 }, iconCls:'icon-gear' }); }, clearWait : function(){ this.waitMsg.hide(); }, setup: function(){ var self = this; var url = '/erp_app/shared/configuration/setup/' + self.initialConfig.configurationId if(!Compass.ErpApp.Utility.isBlank(self.initialConfig.categoryId)){ url += '/' + self.initialConfig.categoryId; } this.disable(); this.wait('Loading configuration...'); Ext.Ajax.request({ url:url, success: function(responseObject) { self.clearWait(); var response = Ext.decode(responseObject.responseText); self.buildConfigurationForm(response.configurationItemTypes) }, failure: function() { self.clearWait(); Ext.Msg.alert('Status', 'Error setting up configruation.'); } }); }, buildConfigurationForm: function(configurationItemTypes){ var self = this; if(!self.alreadySetup){ var result = this.fireEvent('beforeAddItemsToForm', self, configurationItemTypes); if(result !== false) { Ext.each(configurationItemTypes, function(configurationItemType){ var field = null; if(configurationItemType.allowUserDefinedOptions){ field = Ext.create('Ext.form.field.Text',{ itemId:configurationItemType.internalIdentifier + '_id', fieldLabel:configurationItemType.description, name:configurationItemType.internalIdentifier, iconCls:'icon-add', width:150 }); } else { var store = Ext.create('Ext.data.Store',{data:[], model:'Compass.ErpApp.Shared.ConfigurationOption'}); Ext.each(configurationItemType.configurationOptions,function(option){ store.add({ value:option.internalIdentifier, description:option.description, comment:option.comment }); }); if(configurationItemType.isMultiOptional){ field = Ext.create('Ext.ux.form.MultiSelect',{ itemId:configurationItemType.internalIdentifier + '_id', fieldLabel:configurationItemType.description, name:configurationItemType.internalIdentifier, displayField:'description', valueField:'value', width:150, queryMode: 'local', height:100, listConfig: { getInnerTpl: function() { return '