$(function() { $.extend(BemsWebApplication.Factory, { getColumns: function(columns) { var defaultColumns = this.defaultColumns; if (_.isNull(defaultColumns)) { throw new Error('it must be "defaultColumns"'); } if (_.isUndefined(columns)) { return defaultColumns; } _.each(columns, function(c) { var defaultColumn = _.find(defaultColumns, function(x) { return x.dataField === c.dataField; }); _.each(defaultColumn, function(value, name) { if (_.isUndefined(c[name])) { c[name] = value; } }); }); //columns = _.map(columns, function(c) { // return _.extend(_.find(defaultColumns, function(x) { // return x.dataField === c.dataField; // }), c); //}); //columns.forEach(function(column) { // c.push($.extend({}, defaultColumns[column.dataField], column)); //}); //return c; return columns; }, getAlterNames: function(select, alterNames) { return $.extend(_.reduce(select, function(o, name) { if (name.indexOf('/') < 0) { o[name] = name; } return o; }, {}), alterNames); }, getBaseDataSourceWithRelation: function(store, options, dataSourceOptions, refTable) { var o = { dataSourceOptions: { store: store, select: dataSourceOptions.select, expand: dataSourceOptions.expand, refOptions: options, }, ref: refTable }; if (_.has(dataSourceOptions, 'extendOptions')) { var extendOptions = {}; if (_.has(dataSourceOptions.extendOptions, 'multipleItems')) { extendOptions.multipleItems = dataSourceOptions.extendOptions.multipleItems; } if (_.has(dataSourceOptions.extendOptions, 'alterNames')) { extendOptions.alterNames = BWA.DataUtil.mapObject(dataSourceOptions.extendOptions.alterNames, function(x) { return [refTable, '/', x].join(''); }); } o.dataSourceOptions.extendOptions = extendOptions; } return BWA.DataUtil.createDataSource(o); } }); });