Index: ssts-web/src/main/webapp/js/Ext2CompUtil.js =================================================================== diff -u --- ssts-web/src/main/webapp/js/Ext2CompUtil.js (revision 0) +++ ssts-web/src/main/webapp/js/Ext2CompUtil.js (revision 15833) @@ -0,0 +1,100 @@ +/** + * extJS2组件工具类,用来创建组件 + */ +var ext2CompUtil = (function () { + /** + * extJS2组件工具类工厂,用来返回需要创建的对象,以后扩展可以通过增加对应的组件对象,然后用这个工厂返回(参考comboBuilder) + * @constructor + */ + var ExtCompUtilFactory = function () { + this.getComboBuilder = function () { + return comboBuilder; + } + } + + //region comboBuilder + + //用来创建combo对象 + var comboBuilder = {}; + + /** + * 创建并获得远程combo的数据源,默认通过post的方式来请求远程的数据 + * @param storeConfig 相关的配置(必传:url,JsonReader) + * @returns {Ext.data.Store} + */ + comboBuilder.getStore = function (storeConfig) { + return new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: storeConfig.url, + method: 'POST' + }), + reader: storeConfig.JsonReader + }); + } + + /** + * 创建并获得本地combo的数据源 + * @param storeConfig 相关的配置(必传:data) + * @returns {Ext.data.SimpleStore} + */ + comboBuilder.getLocalStore = function (storeConfig) { + return new Ext.data.SimpleStore({ + data: storeConfig.data, + fields: ['key', 'value'] + }); + } + + /** + * 创建并获得combo对象 + * @param comboConfig 相关的配置 + * @returns {Ext.form.ComboBox} + */ + comboBuilder.getCombo = function (comboConfig) { + var combo = { + xtype: 'combo', + id: comboConfig.id, + name: comboConfig.name, + valueField: comboConfig.value || 'value', + displayField: comboConfig.key || 'key', + allowBlank: comboConfig.allowBlank || true, + editable: comboConfig.editable || false, + hidden: comboConfig.hidden || false, + fieldLabel: '类型', + forceSelection: comboConfig.forceSelection || true, + width: comboConfig.width || 160, + // emptyText: '请选择物品类型', + emptyText: comboConfig.emptyText, + triggerAction: comboConfig.triggerAction || 'all', + mode: comboConfig.mode, + store: comboConfig.store, + listeners: comboConfig.listeners || { + select: function (combo, record, index) { + } + }, + anchor: comboConfig.anchor || '95%' + } + + + return combo; + } + + /** + * 直接通过storeConfig和comboConfig来获得combo对象 + * @param config 里面要有storeConfig配置和comboConfig配置 + * @param loadStoreMethod 加载store的方式(可选:默认用远程的方式加载) + * @returns {Ext.form.ComboBox} + */ + comboBuilder.createCombo = function (config, loadStoreMethod) { + var me = this; + var loadStoreMethod = loadStoreMethod || 'remote'; + var store = loadStoreMethod == 'remote' ? me.getStore(config.storeConfig) : me.getLocalStore(config.storeConfig); + config.comboConfig.store = store; + var combo = me.getCombo(config.comboConfig); + return combo; + } + //endregion + + + return new ExtCompUtilFactory(); + +})(); \ No newline at end of file