comindware.ui
Version:
Comindware Core UI provides the basic components like editors, lists, dropdowns, popups that we so desperately need while creating Marionette-based single-page applications.
67 lines (60 loc) • 3.09 kB
JavaScript
/**
* Developer: Grigory Kuznetsov
* Date: 17.08.2015
* Copyright: 2009-2016 Comindware®
* All Rights Reserved
* Published under the MIT license
*/
;
import { helpers } from 'utils';
import NativeGridView from './views/NativeGridView';
import VirtualCollection from '../collections/VirtualCollection';
/**
* @memberof module:core.nativeGrid.factory
* @method createWrappedCollection
* @description Метод для Backbone-коллекции элементов списка
* @param {Object} options Constructor options
* @param {Array} options.collection Массив элементов
* @returns {Object}
* @returns {Backbone.Collection} collection Коллекция элементов списка
* */
const createWrappedCollection = function(collection, options) {
if (!(collection instanceof VirtualCollection)) {
if (_.isArray(collection)) {
collection = new VirtualCollection(new Backbone.Collection(collection), options);
} else if (collection instanceof Backbone.Collection) {
collection = new VirtualCollection(collection, options);
} else {
helpers.throwError('Invalid collection', 'ArgumentError');
}
}
return collection;
};
export default {
/**
* @memberof module:core.nativeGrid.factory
* @method createDefaultList
* @description Метод для создания списка
* @param {Object} options Constructor options
* @param {Backbone.View} [options.emptyView] View используемый по умолчанию для отображения пустого списка (нет строк)
* @param {Object} options.gridViewOptions Опции списка
* @param {Object} [options.gridViewOptions.selectableBehavior] Выбора элементов в списке (none/single/multi)
* @param {Function} [options.onColumnSort] Обработчик oncColumnSort события
* @param {Backbone.View} [options.headerView] View, используемый для отображения заголовка списка
* @param {Backbone.View} [options.rowView] View строки списка
* @param {Function} [options.rowViewSelector] Функция для разрешения (resolve) View, используемого для отображения строки списка
* @returns {Backbone.View} NativeGridView View-списка
* */
createNativeGrid(options) {
const collection = createWrappedCollection(options.collection, { selectableBehavior: options.gridViewOptions.selectableBehavior });
const gridViewOptions = _.extend({
collection,
onColumnSort: options.onColumnSort,
headerView: options.headerView,
rowView: options.rowView,
rowViewSelector: options.rowViewSelector,
emptyView: options.emptyView
}, options.gridViewOptions);
return new NativeGridView(gridViewOptions);
}
};