devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
2,245 lines • 126 kB
JavaScript
/**
* DevExtreme (cjs/ui/grid_core/ui.grid_core.columns_controller.js)
* Version: 21.2.3
* Build date: Thu Oct 28 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
exports.columnsControllerModule = void 0;
var _renderer = _interopRequireDefault(require("../../core/renderer"));
var _callbacks = _interopRequireDefault(require("../../core/utils/callbacks"));
var _variable_wrapper = _interopRequireDefault(require("../../core/utils/variable_wrapper"));
var _data = require("../../core/utils/data");
var _type = require("../../core/utils/type");
var _iterator = require("../../core/utils/iterator");
var _position = require("../../core/utils/position");
var _extend = require("../../core/utils/extend");
var _array = require("../../core/utils/array");
var _config = _interopRequireDefault(require("../../core/config"));
var _object = require("../../core/utils/object");
var _ui = _interopRequireDefault(require("../widget/ui.errors"));
var _uiGrid_core = _interopRequireDefault(require("./ui.grid_core.modules"));
var _uiGrid_core2 = _interopRequireDefault(require("./ui.grid_core.utils"));
var _inflector = require("../../core/utils/inflector");
var _date_serialization = _interopRequireDefault(require("../../core/utils/date_serialization"));
var _number = _interopRequireDefault(require("../../localization/number"));
var _date = _interopRequireDefault(require("../../localization/date"));
var _message = _interopRequireDefault(require("../../localization/message"));
var _deferred = require("../../core/utils/deferred");
var _abstract_store = _interopRequireDefault(require("../../data/abstract_store"));
var _data_source = require("../../data/data_source/data_source");
var _utils = require("../../data/data_source/utils");
var _filtering = _interopRequireDefault(require("../shared/filtering"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
function _extends() {
_extends = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key]
}
}
}
return target
};
return _extends.apply(this, arguments)
}
var USER_STATE_FIELD_NAMES_15_1 = ["filterValues", "filterType", "fixed", "fixedPosition"];
var USER_STATE_FIELD_NAMES = ["visibleIndex", "dataField", "name", "dataType", "width", "visible", "sortOrder", "lastSortOrder", "sortIndex", "groupIndex", "filterValue", "selectedFilterOperation", "added"].concat(USER_STATE_FIELD_NAMES_15_1);
var IGNORE_COLUMN_OPTION_NAMES = {
visibleWidth: true,
bestFitWidth: true,
bufferedFilterValue: true
};
var COMMAND_EXPAND_CLASS = "dx-command-expand";
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
var GROUP_COMMAND_COLUMN_NAME = "groupExpand";
var regExp = /columns\[(\d+)\]\.?/gi;
var globalColumnId = 1;
var columnsControllerModule = {
defaultOptions: function() {
return {
commonColumnSettings: {
allowFiltering: true,
allowHiding: true,
allowSorting: true,
allowEditing: true,
encodeHtml: true,
trueText: _message.default.format("dxDataGrid-trueText"),
falseText: _message.default.format("dxDataGrid-falseText")
},
allowColumnReordering: false,
allowColumnResizing: false,
columnResizingMode: "nextColumn",
columnMinWidth: void 0,
columnWidth: void 0,
adaptColumnWidthByRatio: true,
columns: void 0,
regenerateColumnsByVisibleItems: false,
customizeColumns: null,
dateSerializationFormat: void 0
}
},
controllers: {
columns: _uiGrid_core.default.Controller.inherit(function() {
var DEFAULT_COLUMN_OPTIONS = {
visible: true,
showInColumnChooser: true
};
var DATATYPE_OPERATIONS = {
number: ["=", "<>", "<", ">", "<=", ">=", "between"],
string: ["contains", "notcontains", "startswith", "endswith", "=", "<>"],
date: ["=", "<>", "<", ">", "<=", ">=", "between"],
datetime: ["=", "<>", "<", ">", "<=", ">=", "between"]
};
var COLUMN_INDEX_OPTIONS = {
visibleIndex: true,
groupIndex: true,
grouped: true,
sortIndex: true,
sortOrder: true
};
var setFilterOperationsAsDefaultValues = function(column) {
column.filterOperations = column.defaultFilterOperations
};
var createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {
var commonColumnOptions = {};
if (columnOptions) {
if ((0, _type.isString)(columnOptions)) {
columnOptions = {
dataField: columnOptions
}
}
that.setName(columnOptions);
var result = {};
if (columnOptions.command) {
result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions)
} else {
commonColumnOptions = that.getCommonSettings(columnOptions);
if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {
columnOptions = (0, _extend.extend)({}, columnOptions, {
dataField: userStateColumnOptions.dataField
})
}
var calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);
if (!columnOptions.type) {
result = {
headerId: "dx-col-".concat(globalColumnId++)
}
}
result = (0, _object.deepExtendArraySafe)(result, DEFAULT_COLUMN_OPTIONS);
(0, _object.deepExtendArraySafe)(result, commonColumnOptions);
(0, _object.deepExtendArraySafe)(result, calculatedColumnOptions);
(0, _object.deepExtendArraySafe)(result, columnOptions);
(0, _object.deepExtendArraySafe)(result, {
selector: null
})
}
if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {
setFilterOperationsAsDefaultValues(result)
}
return result
}
};
var createColumnsFromOptions = function createColumnsFromOptions(that, columnsOptions, bandColumn) {
var result = [];
if (columnsOptions) {
(0, _iterator.each)(columnsOptions, (function(index, columnOptions) {
var userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];
var column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);
if (column) {
if (bandColumn) {
column.ownerBand = bandColumn
}
result.push(column);
if (column.columns) {
result = result.concat(createColumnsFromOptions(that, column.columns, column));
delete column.columns;
column.hasColumns = true
}
}
}))
}
return result
};
var getParentBandColumns = function(columnIndex, columnParentByIndex) {
var result = [];
var parent = columnParentByIndex[columnIndex];
while (parent) {
result.unshift(parent);
columnIndex = parent.index;
parent = columnParentByIndex[columnIndex]
}
return result
};
var _getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {
var result = [];
var children = columnChildrenByIndex[columnIndex];
if (children) {
for (var i = 0; i < children.length; i++) {
var column = children[i];
if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) {
result.push(column);
if (recursive && column.isBand) {
result = result.concat(_getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))
}
}
}
}
return result
};
var getColumnFullPath = function(that, column) {
var result = [];
var columns;
var bandColumnsCache = that.getBandColumnsCache();
var callbackFilter = function(item) {
return item.ownerBand === column.ownerBand
};
if (bandColumnsCache.isPlain) {
var columnIndex = that._columns.indexOf(column);
if (columnIndex >= 0) {
result = ["columns[".concat(columnIndex, "]")]
}
} else {
columns = that._columns.filter(callbackFilter);
while (columns.length && -1 !== columns.indexOf(column)) {
result.unshift("columns[".concat(columns.indexOf(column), "]"));
column = bandColumnsCache.columnParentByIndex[column.index];
columns = column ? that._columns.filter(callbackFilter) : []
}
}
return result.join(".")
};
var calculateColspan = function calculateColspan(that, columnID) {
var colspan = 0;
var columns = that.getChildrenByBandColumn(columnID, true);
(0, _iterator.each)(columns, (function(_, column) {
if (column.isBand) {
column.colspan = column.colspan || calculateColspan(that, column.index);
colspan += column.colspan || 1
} else {
colspan += 1
}
}));
return colspan
};
var getValueDataType = function(value) {
var dataType = (0, _type.type)(value);
if ("string" !== dataType && "boolean" !== dataType && "number" !== dataType && "date" !== dataType && "object" !== dataType) {
dataType = void 0
}
return dataType
};
var getSerializationFormat = function(dataType, value) {
switch (dataType) {
case "date":
case "datetime":
return _date_serialization.default.getDateSerializationFormat(value);
case "number":
if ((0, _type.isString)(value)) {
return "string"
}
if ((0, _type.isNumeric)(value)) {
return null
}
}
};
var updateSerializers = function(options, dataType) {
if (!options.deserializeValue) {
if (_uiGrid_core2.default.isDateType(dataType)) {
options.deserializeValue = function(value) {
return _date_serialization.default.deserializeDate(value)
};
options.serializeValue = function(value) {
return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat)
}
}
if ("number" === dataType) {
options.deserializeValue = function(value) {
var parsedValue = parseFloat(value);
return isNaN(parsedValue) ? value : parsedValue
};
options.serializeValue = function(value, target) {
if ("filter" === target) {
return value
}
return (0, _type.isDefined)(value) && "string" === this.serializationFormat ? value.toString() : value
}
}
}
};
var customizeTextForBooleanDataType = function(e) {
if (true === e.value) {
return this.trueText || "true"
} else if (false === e.value) {
return this.falseText || "false"
} else {
return e.valueText || ""
}
};
var getCustomizeTextByDataType = function(dataType) {
if ("boolean" === dataType) {
return customizeTextForBooleanDataType
}
};
var updateColumnIndexes = function(that) {
(0, _iterator.each)(that._columns, (function(index, column) {
column.index = index
}));
(0, _iterator.each)(that._columns, (function(index, column) {
if ((0, _type.isObject)(column.ownerBand)) {
column.ownerBand = column.ownerBand.index
}
}));
(0, _iterator.each)(that._commandColumns, (function(index, column) {
column.index = -(index + 1)
}))
};
var updateColumnGroupIndexes = function(that, currentColumn) {
(0, _array.normalizeIndexes)(that._columns, "groupIndex", currentColumn, (function(column) {
var grouped = column.grouped;
delete column.grouped;
return grouped
}))
};
var getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {
var rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null;
var columns = "group" === location ? that.getGroupColumns() : "columnChooser" === location ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);
var column;
visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;
column = columns[visibleIndex];
if (column && column.type === GROUP_COMMAND_COLUMN_NAME) {
column = that._columns.filter((function(col) {
return column.type === col.type
}))[0] || column
}
return column && (0, _type.isDefined)(column.index) ? column.index : -1
};
function checkUserStateColumn(column, userStateColumn) {
return column && userStateColumn && (userStateColumn.name === column.name || !column.name) && (userStateColumn.dataField === column.dataField || column.name)
}
var applyUserState = function(that) {
var columnsUserState = that._columnsUserState;
var ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];
var columns = that._columns;
var columnCountById = {};
var resultColumns = [];
var allColumnsHaveState = true;
var userStateColumnIndexes = [];
var column;
var userStateColumnIndex;
var i;
function applyFieldsState(column, userStateColumn) {
if (!userStateColumn) {
return
}
for (var index = 0; index < USER_STATE_FIELD_NAMES.length; index++) {
var fieldName = USER_STATE_FIELD_NAMES[index];
if ((0, _array.inArray)(fieldName, ignoreColumnOptionNames) >= 0) {
continue
}
if ("dataType" === fieldName) {
column[fieldName] = column[fieldName] || userStateColumn[fieldName]
} else if ((0, _array.inArray)(fieldName, USER_STATE_FIELD_NAMES_15_1) >= 0) {
if (fieldName in userStateColumn) {
column[fieldName] = userStateColumn[fieldName]
}
} else {
if ("selectedFilterOperation" === fieldName && userStateColumn[fieldName]) {
column.defaultSelectedFilterOperation = column[fieldName] || null
}
column[fieldName] = userStateColumn[fieldName]
}
}
}
function findUserStateColumn(columnsUserState, column) {
var id = column.name || column.dataField;
var count = columnCountById[id] || 0;
for (var j = 0; j < columnsUserState.length; j++) {
if (checkUserStateColumn(column, columnsUserState[j])) {
if (count) {
count--
} else {
columnCountById[id] = columnCountById[id] || 0;
columnCountById[id]++;
return j
}
}
}
return -1
}
if (columnsUserState) {
for (i = 0; i < columns.length; i++) {
userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);
allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;
userStateColumnIndexes.push(userStateColumnIndex)
}
for (i = 0; i < columns.length; i++) {
column = columns[i];
userStateColumnIndex = userStateColumnIndexes[i];
if (that._hasUserState || allColumnsHaveState) {
applyFieldsState(column, columnsUserState[userStateColumnIndex])
}
if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) {
resultColumns[userStateColumnIndex] = column
} else {
resultColumns.push(column)
}
}
var hasAddedBands = false;
for (i = 0; i < columnsUserState.length; i++) {
var columnUserState = columnsUserState[i];
if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {
column = createColumn(that, columnUserState.added);
applyFieldsState(column, columnUserState);
resultColumns.push(column);
if (columnUserState.added.columns) {
hasAddedBands = true
}
}
}
if (hasAddedBands) {
updateColumnIndexes(that);
resultColumns = createColumnsFromOptions(that, resultColumns)
}
assignColumns(that, resultColumns)
}
};
var updateIndexes = function(that, column) {
updateColumnIndexes(that);
updateColumnGroupIndexes(that, column);
! function(that, currentColumn) {
(0, _iterator.each)(that._columns, (function(index, column) {
if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {
delete column.sortIndex
}
}));
(0, _array.normalizeIndexes)(that._columns, "sortIndex", currentColumn, (function(column) {
return !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder)
}))
}(that, column);
resetBandColumnsCache(that);
! function(that, currentColumn) {
var key;
var column;
var bandColumns = {};
var result = [];
var bandColumnsCache = that.getBandColumnsCache();
var columns = that._columns.filter((function(column) {
return !column.command
}));
for (var i = 0; i < columns.length; i++) {
column = columns[i];
var parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);
if (parentBandColumns.length) {
var bandColumnIndex = parentBandColumns[parentBandColumns.length - 1].index;
bandColumns[bandColumnIndex] = bandColumns[bandColumnIndex] || [];
bandColumns[bandColumnIndex].push(column)
} else {
result.push(column)
}
}
for (key in bandColumns) {
(0, _array.normalizeIndexes)(bandColumns[key], "visibleIndex", currentColumn)
}(0, _array.normalizeIndexes)(result, "visibleIndex", currentColumn)
}(that, column)
};
var resetColumnsCache = function(that) {
that.resetColumnsCache()
};
function assignColumns(that, columns) {
that._columns = columns;
resetColumnsCache(that);
that.updateColumnDataTypes()
}
var updateColumnChanges = function(that, changeType, optionName, columnIndex) {
var columnChanges = that._columnChanges || {
optionNames: {
length: 0
},
changeTypes: {
length: 0
},
columnIndex: columnIndex
};
optionName = optionName || "all";
optionName = optionName.split(".")[0];
var changeTypes = columnChanges.changeTypes;
if (changeType && !changeTypes[changeType]) {
changeTypes[changeType] = true;
changeTypes.length++
}
var optionNames = columnChanges.optionNames;
if (optionName && !optionNames[optionName]) {
optionNames[optionName] = true;
optionNames.length++
}
if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {
delete columnChanges.columnIndex
}
that._columnChanges = columnChanges;
resetColumnsCache(that)
};
var fireColumnsChanged = function(that) {
var onColumnsChanging = that.option("onColumnsChanging");
var columnChanges = that._columnChanges;
var reinitOptionNames = ["dataField", "lookup", "dataType", "columns"];
if (that.isInitialized() && !that._updateLockCount && columnChanges) {
if (onColumnsChanging) {
that._updateLockCount++;
onColumnsChanging((0, _extend.extend)({
component: that.component
}, columnChanges));
that._updateLockCount--
}
that._columnChanges = void 0;
if (options = columnChanges.optionNames, options && reinitOptionNames.some((function(name) {
return options[name]
}))) {
that.reinit()
} else {
that.columnsChanged.fire(columnChanges)
}
}
var options
};
var updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {
var columnWasGrouped = prevGroupIndex >= 0;
if (groupIndex >= 0) {
if (!columnWasGrouped) {
column.lastSortOrder = column.sortOrder
}
} else {
var sortMode = that.option("sorting.mode");
var sortOrder = column.lastSortOrder;
if ("single" === sortMode) {
var sortedByAnotherColumn = that._columns.some((function(col) {
return col !== column && (0, _type.isDefined)(col.sortIndex)
}));
if (sortedByAnotherColumn) {
sortOrder = void 0
}
}
column.sortOrder = sortOrder
}
};
var fireOptionChanged = function(that, options) {
var value = options.value;
var optionName = options.optionName;
var prevValue = options.prevValue;
var fullOptionName = options.fullOptionName;
var fullOptionPath = "".concat(fullOptionName, ".").concat(optionName);
if (!IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {
that._skipProcessingColumnsChange = fullOptionPath;
that.component._notifyOptionChanged(fullOptionPath, value, prevValue);
that._skipProcessingColumnsChange = false
}
};
var columnOptionCore = function(that, column, optionName, value, notFireEvent) {
var optionGetter = (0, _data.compileGetter)(optionName);
var columnIndex = column.index;
var columns;
var changeType;
var initialColumn;
if (3 === arguments.length) {
return optionGetter(column, {
functionsAsIs: true
})
}
var prevValue = optionGetter(column, {
functionsAsIs: true
});
if (prevValue !== value) {
if ("groupIndex" === optionName || "calculateGroupValue" === optionName) {
changeType = "grouping";
updateSortOrderWhenGrouping(that, column, value, prevValue)
} else if ("sortIndex" === optionName || "sortOrder" === optionName || "calculateSortValue" === optionName) {
changeType = "sorting"
} else {
changeType = "columns"
}
var optionSetter = (0, _data.compileSetter)(optionName);
optionSetter(column, value, {
functionsAsIs: true
});
var fullOptionName = getColumnFullPath(that, column);
if (COLUMN_INDEX_OPTIONS[optionName]) {
updateIndexes(that, column);
value = optionGetter(column)
}
if ("name" === optionName || "allowEditing" === optionName) {
that._checkColumns()
}
fullOptionName && fireOptionChanged(that, {
fullOptionName: fullOptionName,
optionName: optionName,
value: value,
prevValue: prevValue
});
if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf("buffer")) {
notFireEvent = true
}
if (!notFireEvent) {
if ((0, _array.inArray)(optionName, USER_STATE_FIELD_NAMES) < 0 && "visibleWidth" !== optionName) {
columns = that.option("columns");
initialColumn = that.getColumnByPath(fullOptionName, columns);
if ((0, _type.isString)(initialColumn)) {
initialColumn = columns[columnIndex] = {
dataField: initialColumn
}
}
if (initialColumn && checkUserStateColumn(initialColumn, column)) {
optionSetter(initialColumn, value, {
functionsAsIs: true
})
}
}
updateColumnChanges(that, changeType, optionName, columnIndex)
} else {
resetColumnsCache(that)
}
}
};
function isSortOrderValid(sortOrder) {
return "asc" === sortOrder || "desc" === sortOrder
}
var defaultSetCellValue = function(data, value) {
var path = this.dataField.split(".");
var dotCount = path.length - 1;
if (this.serializeValue) {
value = this.serializeValue(value)
}
for (var i = 0; i < dotCount; i++) {
var name = path[i];
data = data[name] = data[name] || {}
}
data[path[dotCount]] = value
};
var isCustomCommandColumn = function(that, commandColumn) {
return !!that._columns.filter((function(column) {
return column.type === commandColumn.type
})).length
};
var getFixedPosition = function(that, column) {
var rtlEnabled = that.option("rtlEnabled");
if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {
return rtlEnabled ? "right" : "left"
}
return column.fixedPosition
};
var processExpandColumns = function(columns, expandColumns, type, columnIndex) {
var customColumnIndex;
var rowCount = this.getRowCount();
var rowspan = columns[columnIndex] && columns[columnIndex].rowspan;
var expandColumnsByType = expandColumns.filter((function(column) {
return column.type === type
}));
columns.forEach((function(column, index) {
if (column.type === type) {
customColumnIndex = index;
rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount
}
}));
if (rowspan > 1) {
expandColumnsByType = (0, _iterator.map)(expandColumnsByType, (function(expandColumn) {
return (0, _extend.extend)({}, expandColumn, {
rowspan: rowspan
})
}))
}
expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);
columns.splice.apply(columns, expandColumnsByType);
return rowspan || 1
};
var numberToString = function(number, digitsCount) {
var str = number ? number.toString() : "0";
while (str.length < digitsCount) {
str = "0" + str
}
return str
};
var mergeColumns = function(that, columns, commandColumns, needToExtend) {
var column;
var commandColumnIndex;
var result = columns.slice().map((function(column) {
return (0, _extend.extend)({}, column)
}));
var isColumnFixing = that._isColumnFixing();
var defaultCommandColumns = commandColumns.slice().map((function(column) {
return (0, _extend.extend)({
fixed: isColumnFixing
}, column)
}));
var getCommandColumnIndex = function(column) {
return commandColumns.reduce((function(result, commandColumn, index) {
var columnType = needToExtend && column.type === GROUP_COMMAND_COLUMN_NAME ? "expand" : column.type;
return commandColumn.type === columnType || commandColumn.command === column.command ? index : result
}), -1)
};
var callbackFilter = function(commandColumn) {
return commandColumn.command !== commandColumns[commandColumnIndex].command
};
for (var i = 0; i < columns.length; i++) {
column = columns[i];
commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;
if (commandColumnIndex >= 0) {
if (needToExtend) {
result[i] = (0, _extend.extend)({
fixed: isColumnFixing
}, commandColumns[commandColumnIndex], column);
if (column.type !== GROUP_COMMAND_COLUMN_NAME) {
defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)
}
} else {
var columnOptions = {
visibleIndex: column.visibleIndex,
index: column.index,
headerId: column.headerId,
allowFixing: 0 === column.groupIndex,
allowReordering: 0 === column.groupIndex,
groupIndex: column.groupIndex
};
result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === GROUP_COMMAND_COLUMN_NAME && columnOptions)
}
}
}
if (columns.length && needToExtend && defaultCommandColumns.length) {
result = result.concat(defaultCommandColumns)
}
return result
};
var isColumnFixed = function(that, column) {
return (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed : that._isColumnFixing()
};
var resetBandColumnsCache = function(that) {
that._bandColumnsCache = void 0
};
var findColumn = function(columns, identifier) {
var identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(":"));
var column;
if (void 0 === identifier) {
return
}
if (identifierOptionName) {
identifier = identifier.substr(identifierOptionName.length + 1)
}
if (identifierOptionName) {
column = columns.filter((function(column) {
return "" + column[identifierOptionName] === identifier
}))[0]
} else {
["index", "name", "dataField", "caption"].some((function(optionName) {
column = columns.filter((function(column) {
return column[optionName] === identifier
}))[0];
return !!column
}))
}
return column
};
return {
_getExpandColumnOptions: function() {
return {
type: "expand",
command: "expand",
width: "auto",
cssClass: COMMAND_EXPAND_CLASS,
allowEditing: false,
allowGrouping: false,
allowSorting: false,
allowResizing: false,
allowReordering: false,
allowHiding: false
}
},
_getFirstItems: function(dataSource) {
var groupsCount;
var items = [];
if (dataSource && dataSource.items().length > 0) {
groupsCount = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group()).length;
items = function getFirstItemsCore(items, groupsCount) {
if (!items || !groupsCount) {
return items
}
for (var i = 0; i < items.length; i++) {
var childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);
if (childItems && childItems.length) {
return childItems
}
}
}(dataSource.items(), groupsCount) || []
}
return items
},
_endUpdateCore: function() {
!this._skipProcessingColumnsChange && fireColumnsChanged(this)
},
init: function() {
var columns = this.option("columns");
this._commandColumns = this._commandColumns || [];
this._columns = this._columns || [];
this._isColumnsFromOptions = !!columns;
if (this._isColumnsFromOptions) {
assignColumns(this, columns ? createColumnsFromOptions(this, columns) : []);
applyUserState(this)
} else {
assignColumns(this, this._columnsUserState ? createColumnsFromOptions(this, this._columnsUserState) : this._columns)
}! function(that) {
var options = that._getExpandColumnOptions();
that.addCommandColumn(options)
}(this);
if (this._dataSourceApplied) {
this.applyDataSource(this._dataSource, true)
} else {
updateIndexes(this)
}
this._checkColumns()
},
callbackNames: function() {
return ["columnsChanged"]
},
getColumnByPath: function(path, columns) {
var column;
var columnIndexes = [];
path.replace(regExp, (function(_, columnIndex) {
columnIndexes.push(parseInt(columnIndex));
return ""
}));
if (columnIndexes.length) {
if (columns) {
column = columnIndexes.reduce((function(column, index) {
return column && column.columns && column.columns[index]
}), {
columns: columns
})
} else {
column = function(that, columnIndexes) {
var result;
var columns;
var bandColumnsCache = that.getBandColumnsCache();
var callbackFilter = function(column) {
var ownerBand = result ? result.index : void 0;
return column.ownerBand === ownerBand
};
if (bandColumnsCache.isPlain) {
result = that._columns[columnIndexes[0]]
} else {
columns = that._columns.filter(callbackFilter);
for (var i = 0; i < columnIndexes.length; i++) {
result = columns[columnIndexes[i]];
if (result) {
columns = that._columns.filter(callbackFilter)
}
}
}
return result
}(this, columnIndexes)
}
}
return column
},
optionChanged: function(args) {
var needUpdateRequireResize;
switch (args.name) {
case "adaptColumnWidthByRatio":
args.handled = true;
break;
case "dataSource":
if (args.value !== args.previousValue && !this.option("columns") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {
this._columns = []
}
break;
case "columns":
needUpdateRequireResize = this._skipProcessingColumnsChange;
args.handled = true;
if (!this._skipProcessingColumnsChange) {
if (args.name === args.fullName) {
this._columnsUserState = null;
this._ignoreColumnOptionNames = null;
this.init()
} else {
this._columnOptionChanged(args);
needUpdateRequireResize = true
}
}
if (needUpdateRequireResize) {
this._updateRequireResize(args)
}
break;
case "commonColumnSettings":
case "columnAutoWidth":
case "allowColumnResizing":
case "allowColumnReordering":
case "columnFixing":
case "grouping":
case "groupPanel":
case "regenerateColumnsByVisibleItems":
case "customizeColumns":
case "columnHidingEnabled":
case "dateSerializationFormat":
case "columnResizingMode":
case "columnMinWidth":
case "columnWidth":
args.handled = true;
var ignoreColumnOptionNames = "columnWidth" === args.fullName && ["width"];
this.reinit(ignoreColumnOptionNames);
break;
case "rtlEnabled":
this.reinit();
break;
default:
this.callBase(args)
}
},
_columnOptionChanged: function(args) {
var columnOptionValue = {};
var column = this.getColumnByPath(args.fullName);
var columnOptionName = args.fullName.replace(regExp, "");
if (column) {
if (columnOptionName) {
columnOptionValue[columnOptionName] = args.value
} else {
columnOptionValue = args.value
}
this._skipProcessingColumnsChange = args.fullName;
this.columnOption(column.index, columnOptionValue);
this._skipProcessingColumnsChange = false
}
},
_updateRequireResize: function(args) {
var component = this.component;
if ("width" === args.fullName.replace(regExp, "") && component._updateLockCount) {
component._requireResize = true
}
},
publicMethods: function() {
return ["addColumn", "deleteColumn", "columnOption", "columnCount", "clearSorting", "clearGrouping", "getVisibleColumns", "getVisibleColumnIndex"]
},
applyDataSource: function(dataSource, forceApplying) {
var isDataSourceLoaded = dataSource && dataSource.isLoaded();
this._dataSource = dataSource;
if (!this._dataSourceApplied || 0 === this._dataSourceColumnsCount || forceApplying || this.option("regenerateColumnsByVisibleItems")) {
if (isDataSourceLoaded) {
if (!this._isColumnsFromOptions) {
var columnsFromDataSource = function(that, dataSource) {
var firstItems = that._getFirstItems(dataSource);
var fieldName;
var processedFields = {};
var result = [];
for (var i = 0; i < firstItems.length; i++) {
if (firstItems[i]) {
for (fieldName in firstItems[i]) {
if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) {
processedFields[fieldName] = true
}
}
}
}
for (fieldName in processedFields) {
if (0 !== fieldName.indexOf("__")) {
var column = createColumn(that, fieldName);
result.push(column)
}
}
return result
}(this, dataSource);
if (columnsFromDataSource.length) {
assignColumns(this, columnsFromDataSource);
this._dataSourceColumnsCount = this._columns.length;
applyUserState(this)
}
}
return this.updateColumns(dataSource, forceApplying)
} else {
this._dataSourceApplied = false
}
} else if (isDataSourceLoaded && !this.isAllDataTypesDefined(true) && this.updateColumnDataTypes(dataSource)) {
updateColumnChanges(this, "columns");
fireColumnsChanged(this);
return (new _deferred.Deferred).reject().promise()
}
},
reset: function() {
this._dataSourceApplied = false;
this._dataSourceColumnsCount = void 0;
this.reinit()
},
resetColumnsCache: function() {
this._visibleColumns = void 0;
this._fixedColumns = void 0;
this._rowCount = void 0;
resetBandColumnsCache(this)
},
reinit: function(ignoreColumnOptionNames) {
this._columnsUserState = this.getUserState();
this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;
this.init();
if (ignoreColumnOptionNames) {
this._ignoreColumnOptionNames = null
}
},
isInitialized: function() {
return !!this._columns.length || !!this.option("columns")
},
isDataSourceApplied: function() {
return this._dataSourceApplied
},
getCommonSettings: function(column) {
var commonColumnSettings = (!column || !column.type) && this.option("commonColumnSettings") || {};
var groupingOptions = this.option("grouping") || {};
var groupPanelOptions = this.option("groupPanel") || {};
return (0, _extend.extend)({
allowFixing: this.option("columnFixing.enabled"),
allowResizing: this.option("allowColumnResizing") || void 0,
allowReordering: this.option("allowColumnReordering"),
minWidth: this.option("columnMinWidth"),
width: this.option("columnWidth"),
autoExpandGroup: groupingOptions.autoExpandAll,
allowCollapsing: groupingOptions.allowCollapsing,
allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled
}, commonColumnSettings)
},
isColumnOptionUsed: function(optionName) {
for (var i = 0; i < this._columns.length; i++) {
if (this._columns[i][optionName]) {
return true
}
}
},
isAllDataTypesDefined: function(checkSerializers) {
var columns = this._columns;
if (!columns.length) {
return false
}
for (var i = 0; i < columns.length; i++) {
if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {
continue
}
if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {
return false
}
}
return true
},
getColumns: function() {
return this._columns
},
isBandColumnsUsed: function() {
return this.getColumns().some((function(column) {
return column.isBand
}))
},
getGroupColumns: function() {
var result = [];
(0, _iterator.each)(this._columns, (function() {
if ((0, _type.isDefined)(this.groupIndex)) {
result[this.groupIndex] = this
}
}));
return result
},
getVisibleColumns: function(rowIndex) {
this._visibleColumns = this._visibleColumns || this._getVisibleColumnsCore();
rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1;
return this._visibleColumns[rowIndex] || []
},
getFixedColumns: function(rowIndex) {
this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();
rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1;
return this._fixedColumns[rowIndex] || []
},
getFilteringColumns: function() {
return this.getColumns().filter((function(item) {
return (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)
})).map((function(item) {
var field = (0, _extend.extend)(true, {}, item);
if (!(0, _type.isDefined)(field.dataField)) {
field.dataField = field.name
}
field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;
return field
}))
},
getColumnIndexOffset: function() {
return 0
},
_getFixedColumnsCore: function() {
var result = [];
var rowCount = this.getRowCount();
var isColumnFixing = this._isColumnFixing();
var transparentColumn = {
command: "transparent"
};
var transparentColspan = 0;
var notFixedColumnCount;
var transparentColumnIndex;
var lastFixedPosition;
if (isColumnFixing) {
for (var i = 0; i <= rowCount; i++) {
notFixedColumnCount = 0;
lastFixedPosition = null;
transparentColumnIndex = null;
var visibleColumns = this.getVisibleColumns(i, true);
for (var j = 0; j < visibleColumns.length; j++) {
var prevColumn = visibleColumns[j - 1];
var column = visibleColumns[j];
if (!column.fixed) {
if (0 === i) {
if (column.isBand && column.colspan) {
transparentColspan += column.colspan
} else {
transparentColspan++
}
}
notFixedColumnCount++;
if (!(0, _type.isDefined)(transparentColumnIndex)) {
transparentColumnIndex = j
}
} else if (prevColumn && prevColumn.fixed && getFixedPosition(this, prevColumn) !== getFixedPosition(this, column)) {
if (!(0, _type.isDefined)(transparentColumnIndex)) {
transparentColumnIndex = j
}
} else {
lastFixedPosition = column.fixedPosition
}
}
if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {
return []
}
if (!(0, _type.isDefined)(transparentColumnIndex)) {
transparentColumnIndex = "right" === lastFixedPosition ? 0 : visibleColumns.length
}
result[i] = visibleColumns.slice(0);
if (!transparentColumn.colspan) {
transparentColumn.colspan = transparentColspan
}
result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)
}
}
return result.map((function(columns) {
return columns.map((function(column) {
var newColumn = _extends({}, column);
if (newColumn.headerId) {
newColumn.headerId += "-fixed"
}
return newColumn
}))
}))
},
_isColumnFixing: function() {
var isColumnFixing = this.option("columnFixing.enabled");
!isColumnFixing && (0, _iterator.each)(this._columns, (function(_, column) {
if (column.fixed) {
isColumnFixing = true;
return false
}
}));
return isColumnFixing
},
_getExpandColumnsCore: function() {
return this.getGroupColumns()
},
getExpandColumns: function() {
var expandColumns = this._getExpandColumnsCore();
var expandColumn;
var firstGroupColumn = expandColumns.filter((function(column) {
return 0 === column.groupIndex
}))[0];
var isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;
var isColumnFixing = this._isColumnFixing();
if (expandColumns.length) {
expandColumn = this.columnOption("command:expand")
}
expandColumns = (0, _iterator.map)(expandColumns, (function(column) {
return (0, _extend.extend)({}, column, {
visibleWidth: null,
minWidth: null,
cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null,
headerCellTemplate: null,
fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true
}, expandColumn, {
index: column.index,
type: column.type || GROUP_COMMAND_COLUMN_NAME
})
}));
return expandColumns
},
getBandColumnsCache: function() {
if (!this._bandColumnsCache) {
var columns = this._columns;
var columnChildrenByIndex = {};
var columnParentByIndex = {};
var isPlain = true;
columns.forEach((function(column) {
var parentIndex = column.ownerBand;
var parent = columns[parentIndex];
if (column.hasColumns) {
isPlain = false
}
if (column.colspan) {
column.colspan = void 0
}
if (column.rowspan) {
column.rowspan = void 0
}
if (parent) {
columnParentByIndex[column.index] = parent
} else {
parentIndex = -1
}
columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];
columnChildrenByIndex[parentIndex].push(column)
}));
this._bandColumnsCache = {
isPlain: isPlain,
columnChildrenByIndex: columnChildrenByIndex,
columnParentByIndex: columnParentByIndex
}
}
return this._bandColumnsCache
},
_isColumnVisible: function(column) {
return column.visible && this.isParentColumnVisible(column.index)
},
_getVisibleColumnsCore: function() {
var that = this;
var i;
var result = [];
var rowspanGroupColumns = 0;
var rowspanExpandColumns = 0;
var rowCount = that.getRowCount();
var positiveIndexedColumns = [];
var negativeIndexedColumns = [];
var notGroupedColumnsCount = 0;
var isFixedToEnd;
var rtlEnabled = that.option("rtlEnabled");
var bandColumnsCache = that.getBandColumnsCache();
var expandColumns = mergeColumns(that, that.getExpandColumns(), that._columns);
var columns = mergeColumns(that, that._columns, that._commandColumns, true);
var columnDigitsCount = function(number) {
var i;
for (i = 0; number > 1; i++) {
number /= 10
}
return i
}(columns.length);
! function(that, columns, bandColumnsCache) {
var rowspan;
for (var i = 0; i < columns.length; i++) {
var column = columns[i];
if (column.visible || column.command) {
if (column.isBand) {
column.colspan = column.colspan || calculateColspan(that, column.index)
}
if (!column.isBand || !column.colspan) {
rowspan = that.getRowCount();
if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {
rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length
}
if (rowspan > 1) {
column.rowspan = rowspan
}
}
}
}
}(that, columns, bandColumnsCache);
for (i = 0; i < rowCount; i++) {
result[i] = [];
negativeIndexedColumns[i] = [{}];
positiveIndexedColumns[i] = [{}, {}, {}]
}(0, _iterator.each)(columns, (function() {
var visibleIndex = this.visibleIndex;
var indexedColumns;
var parentBandColumns = getParentBandColumns(this.index, bandColumnsCache.columnParentByIndex);
var visible = that._isColumnVisible(this);
if (visible && (!(0, _type.isDefined)(this.groupIndex) || this.showWhenGrouped)) {
var rowIndex = parentBandColumns.length;
if (visibleIndex < 0) {
visibleIndex = -visibleIndex;
indexedColumns = negativeIndexedColumns[rowIndex]
} else {
this.fixed = parentBandColumns.length ? parentBandColumns[0].fixed : this.fixed;
this.fixedPosition = parentBandColumns.length ? parentBandColumns[0].fixedPosition : this.fixedPosition;
if (this.fixed) {
isFixedToEnd = "right" === this.fixedPosition;
if (rtlEnabled && (!this.command || isCustomCommandColumn(that, this))) {
isFixedToEnd = !isFixedToEnd
}
if (isFixedToEnd) {
indexedColumns = positiveIndexedColumns[rowIndex][2]
} else {
indexedColumns = positiveIndexedColumns[rowIndex][0]
}
} else {
indexedColumns = positiveIndexedColumns[rowIndex][1]
}
}
if (parentBandColumns.length) {
visibleIndex = numberToString(visibleIndex, columnDigitsCount);
for (i = parentBandColumns.length - 1; i >= 0; i--) {
visibleIndex = numberToString(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex
}
}
indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];
indexedColumns[visibleIndex].push(this);
notGroupedColumnsCount++
}
}));
(0, _iterator.each)(result, (function(rowIndex) {
(0, _object.orderEach)(negativeIndexedColumns[rowIndex], (function(_, columns) {
result[rowIndex].unshift.apply(result[rowIndex], columns)
}));
var firstPositiveIndexColumn = result[rowIndex].length;
(0, _iterator.each)(positiveIndexedColumns[rowIndex], (function(index, columnsByFixing) {
(0, _object.orderEach)(columnsByFixing, (function(_, columnsByVisibleIndex) {
result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)
}))
}));
if (rowspanExpandColumns < rowIndex + 1) {
rowspanExpandColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, "detailExpand", firstPositiveIndexColumn)
}
if (rowspanGroupColumns < rowIndex + 1) {
rowspanGroupColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)
}
}));
result.push(function getDataColumns(columns, rowIndex, bandColumnID) {
var result = [];
rowIndex = rowIndex || 0;
columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], (function(_, column) {
if (column.ownerBand === bandColumnID || column.type === GROUP_COMMAND_COLUMN_NAME) {
if (!column.isBand || !column.colspan) {
if (!column.command || rowIndex < 1) {
result.push(column)
}
} else {
result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))
}
}
}));
return result
}(result));
if (!notGroupedColumnsCount && that._columns.length) {
result[rowCount].push({
command: "empty"
})
}
return result
},
getInvisibleColumns: function(columns, bandColumnIndex) {
var that = this;
var result = [];
var hiddenColumnsByBand;
columns = columns || that._columns;
(0, _iterator.each)(columns, (function(_, column) {
if (column.ownerBand !== bandColumnIndex) {
return
}
if (column.isBand) {
if (!column.visible) {
hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)
} else {
hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)
}
if (hiddenColumnsByBand.length) {
result.push(column);
result = result.concat(hiddenColumnsByBand)
}
return
}
if (!column.visible) {
result.push(column)
}
}));
return result
},
getChooserColumns: function(getAllColumns) {
var columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();
var columnChooserColumns = columns.filter((function(column) {
return column.showInColumnChooser
}));
var sortOrder = this.option("columnChooser.sortOrder");
return function(columns, sortOrder) {
if ("asc" !== sortOrder && "desc" !== sortOrder) {
return columns
}
var sign = "asc" === sortOrder ? 1 : -1;
columns.sort((function(column1, column2) {
var caption1 = column1.caption || "";
var caption2 = column2.caption || "";
return sign * caption1.localeCompare(caption2)
}));
return columns
}(columnChooserColumns, sortOrder)
},
allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {
var columnIndex = getColumnIndexByVisibleIndex(this, fromVisibleIndex, sourceLocation);
var sourceColumn = this._columns[columnIndex];
if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {
if (sourceLocation === targetLocation) {
if ("columnChooser" === sourceLocation) {
return false
}
fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;
toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;
return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex
} else if ("group" === sourceLocation && "columnChooser" !== targetLocation || "group" === targetLocation) {
return sourceColumn && sourceColumn.allowGrouping
} else if ("columnChooser" === sourceLocation || "columnChooser" === targetLocation) {
return sourceColumn && sourceColumn.allowHiding
}
return true
}
return false
},
moveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {
var options = {};
var prevGroupIndex;
var fromIndex = getColumnIndexByVisibleIndex(this, fromVisibleIndex, sourceLocation);
var toIndex = getColumnIndexByVisibleIndex(this, toVisibleIndex, targetLocation);
var targetGroupIndex;
if (fromIndex >= 0) {
var column = this._columns[fromIndex];
toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;
targetGroupIndex = toIndex >= 0 ? this._columns[toIndex].groupIndex : -1;
if ((0, _type.isDefined)(column.groupIndex) && "group" === sourceLocation) {
if (targetGroupIndex > column.groupIndex) {
targetGroupIndex--
}
if ("group" !== targetLocation) {
options.groupIndex = void 0
} else {
prevGroupIndex = column.groupIndex;
delete column.groupIndex;
updateColumnGroupIndexes(this)
}
}
if ("group" === targetLocation) {
options.groupIndex = function(that, column, groupIndex) {
var groupColumns = that.getGroupColumns();
var i;
if (groupIndex >= 0) {
for (i = 0; i < groupColumns.length; i++) {
if (groupColumns[i].groupIndex >= groupIndex) {
groupColumns[i].groupIndex++
}
}
} else {
groupIndex = 0;
for (i = 0; i < groupColumns.length; i++) {
groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)
}
}
return groupIndex
}(this, 0, targetGroupIndex);
column.groupIndex = prevGroupIndex
} else if (toVisibleIndex >= 0) {
var targetColumn = this._columns[toIndex];
if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {
options.visibleIndex = MAX_SAFE_INTEGER
} else if (isColumnFixed(this, column) ^ isColumnFixed(this, targetColumn)) {
options.visibleIndex = MAX_SAFE_INTEGER
} else {
options.visibleIndex = targetColumn.visibleIndex
}
}
var isVisible = "columnChooser" !== targetLocation;
if (column.visible !== isVisible) {
options.visible = isVisible
}
this.columnOption(column.index, options)
}
},
changeSortOrder: function(columnIndex, sortOrder) {
var options = {};
var sortingOptions = this.option("sorting");
var sortingMode = sortingOptions && sortingOptions.mode;
var needResetSorting = "single" === sortingMode || !sortOrder;
var allowSorting = "single" === sortingMode || "multiple" === sortingMode;
var column = this._columns[columnIndex];
if (allowSorting && column && column.allowSorting) {
if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) {
(0, _iterator.each)(this._columns, (function(index) {
if (index !== columnIndex && this.sortOrder) {
if (!(0, _type.isDefined)(this.groupIndex)) {
delete this.sortOrder
}
delete this.sortIndex
}
}))
}
if (isSortOrderValid(sortOrder)) {
if (column.sortOrder !== sortOrder) {
options.sortOrder = sortOrder
}
} else if ("none" === sortOrder) {
if (column.sortOrder) {
options.sortIndex = void 0;
options.sortOrder = void 0
}
} else {
! function(column) {
if ("ctrl" === sortOrder) {
if (!("sortOrder" in column && "sortIndex" in column)) {
return false
}
options.sortOrder = void 0;
options.sortIndex = void 0
} else if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) {
options.sortOrder = "desc" === column.sortOrder ? "asc" : "desc"
} else {
options.sortOrder = "asc"
}
return true
}(column)
}
}
this.columnOption(column.index, options)
},
getSortDataSourceParameters: function(useLocalSelector) {
var sortColumns = [];
var sort = [];
(0, _iterator.each)(this._columns, (function() {
if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) {
sortColumns[this.sortIndex] = this
}
}));
(0, _iterator.each)(sortColumns, (function() {
var sortOrder = this && this.sortOrder;
if (isSortOrderValid(sortOrder)) {
var sortItem = {
selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,
desc: "desc" === this.sortOrder
};
if (this.sortingMethod) {
sortItem.compare = this.sortingMethod.bind(this)
}
sort.push(sortItem)
}
}));
return sort.length > 0 ? sort : null
},
getGroupDataSourceParameters: function(useLocalSelector) {
var group = [];
(0, _iterator.each)(this.getGroupColumns(), (function() {
var selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;
if (selector) {
var groupItem = {
selector: selector,
desc: "desc" === this.sortOrder,
isExpanded: !!this.autoExpandGroup
};
if (this.sortingMethod) {
groupItem.compare = this.sortingMethod.bind(this)
}
group.push(groupItem)
}
}));
return group.length > 0 ? group : null
},
refresh: function(updateNewLookupsOnly) {
var deferreds = [];
(0, _iterator.each)(this._columns, (function() {
var lookup = this.lookup;
if (lookup && !this.calculateDisplayValue) {
if (updateNewLookupsOnly && lookup.valueMap) {
return
}
if (lookup.update) {
deferreds.push(lookup.update())
}
}
}));
return _deferred.when.apply(_renderer.default, deferreds).done(resetColumnsCache.bind(null, this))
},
_updateColumnOptions: function(column, columnIndex) {
column.selector = column.selector || function(data) {
return column.calculateCellValue(data)
};
(0, _iterator.each)(["calculateSortValue", "calculateGroupValue", "calculateDisplayValue"], (function(_, calculateCallbackName) {
var calculateCallback = column[calculateCallbackName];
if ((0, _type.isFunction)(calculateCallback)) {
if (!calculateCallback.originalCallback) {
var context = {
column: column
};
column[calculateCallbackName] = function(data) {
return calculateCallback.call(context.column, data)
};
column[calculateCallbackName].originalCallback = calculateCallback;
column[calculateCallbackName].columnIndex = columnIndex;
column[calculateCallbackName].context = context
} else {
column[calculateCallbackName].context.column = column
}
}
}));
if ((0, _type.isString)(column.calculateDisplayValue)) {
column.displayField = column.calculateDisplayValue;
column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField)
}
if (column.calculateDisplayValue) {
column.displayValueMap = column.displayValueMap || {}
}
updateSerializers(column, column.dataType);
var lookup = column.lookup;
if (lookup) {
updateSerializers(lookup, lookup.dataType)
}
var dataType = lookup ? lookup.dataType : column.dataType;
if (dataType) {
column.alignment = column.alignment || function(dataType, isRTL) {
switch (dataType) {
case "number":
return "right";
case "boolean":
return "center";
default:
return (0, _position.getDefaultAlignment)(isRTL)
}
}(dataType, this.option("rtlEnabled"));
column.format = column.format || _uiGrid_core2.default.getFormatByDataType(dataType);
column.customizeText = column.customizeText || getCustomizeTextByDataType(dataType);
column.defaultFilterOperations = column.defaultFilterOperations || !lookup && DATATYPE_OPERATIONS[dataType] || [];
if (!(0, _type.isDefined)(column.filterOperations)) {
setFilterOperationsAsDefaultValues(column)
}
column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || "=";
column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : "boolean" === dataType && !column.cellTemplate
}
},
updateColumnDataTypes: function(dataSource) {
var that = this;
var dateSerializationFormat = that.option("dateSerializationFormat");
var firstItems = that._getFirstItems(dataSource);
var isColumnDataTypesUpdated = false;
(0, _iterator.each)(that._columns, (function(index, column) {
var i;
var value;
var dataType;
var lookupDataType;
var valueDataType;
var lookup = column.lookup;
if (_uiGrid_core2.default.isDateType(column.dataType) && void 0 === column.serializationFormat) {
column.serializationFormat = dateSerializationFormat
}
if (lookup && _uiGrid_core2.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {
lookup.serializationFormat = dateSerializationFormat
}
if (column.calculateCellValue && firstItems.length) {
if (!column.dataType || lookup && !lookup.dataType) {
for (i = 0; i < firstItems.length; i++) {
value = column.calculateCellValue(firstItems[i]);
if (!column.dataType) {
valueDataType = getValueDataType(value);
dataType = dataType || valueDataType;
if (dataType && valueDataType && dataType !== valueDataType) {
dataType = "string"
}
}
if (lookup && !lookup.dataType) {
valueDataType = getValueDataType(_uiGrid_core2.default.getDisplayValue(column, value, firstItems[i]));
lookupDataType = lookupDataType || valueDataType;
if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {
lookupDataType = "string"
}
}
}
if (dataType || lookupDataType) {
if (dataType) {
column.dataType = dataType
}
if (lookup && lookupDataType) {
lookup.dataType = lookupDataType
}
isColumnDataTypesUpdated = true
}
}
if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {
for (i = 0; i < firstItems.length; i++) {
value = column.calculateCellValue(firstItems[i], true);
if (void 0 === column.serializationFormat) {
column.serializationFormat = getSerializationFormat(column.dataType, value)
}
if (lookup && void 0 === lookup.serializationFormat) {
lookup.serializationFormat = getSerializationFormat(lookup.dataType, lookup.calculateCellValue(value, true))
}
}
}
}
that._updateColumnOptions(column, index)
}));
return isColumnDataTypesUpdated
},
_customizeColumns: function(columns) {
var customizeColumns = this.option("customizeColumns");
if (customizeColumns) {
var hasOwnerBand = columns.some((function(column) {
return (0, _type.isObject)(column.ownerBand)
}));
if (hasOwnerBand) {
updateIndexes(this)
}
customizeColumns(columns);
assignColumns(this, createColumnsFromOptions(this, columns))
}
},
updateColumns: function(dataSource, forceApplying) {
var _this = this;
if (!forceApplying) {
this.updateSortingGrouping(dataSource)
}
if (!dataSource || dataSource.isLoaded()) {
var sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();
var groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();
var filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;
this._customizeColumns(this._columns);
updateIndexes(this);
var columns = this._columns;
return (0, _deferred.when)(this.refresh(true)).always((function() {
if (_this._columns !== columns) {
return
}
_this._updateChanges(dataSource, {
sorting: sortParameters,
grouping: groupParameters,
filtering: filterParameters
});
fireColumnsChanged(_this)
}))
}
},
_updateChanges: function(dataSource, parameters) {
if (dataSource) {
this.updateColumnDataTypes(dataSource);
this._dataSourceApplied = true
}
if (!_uiGrid_core2.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {
updateColumnChanges(this, "sorting")
}
if (!_uiGrid_core2.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {
updateColumnChanges(this, "grouping")
}
var dataController = this.getController("data");
if (dataController && !_uiGrid_core2.default.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {
updateColumnChanges(this, "filtering")
}
updateColumnChanges(this, "columns")
},
updateSortingGrouping: function(dataSource, fromDataSource) {
var that = this;
var sortParameters;
var isColumnsChanged;
var updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {
(0, _iterator.each)(columns, (function(index, column) {
delete column[indexParameterName];
if (sortParameters) {
for (var i = 0; i < sortParameters.length; i++) {
var selector = sortParameters[i].selector;
var isExpanded = sortParameters[i].isExpanded;
if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {
column.sortOrder = column.sortOrder || (sortParameters[i].desc ? "desc" : "asc");
if (void 0 !== isExpanded) {
column.autoExpandGroup = isExpanded
}
column[indexParameterName] = i;
break
}
}
}
}))
};
if (dataSource) {
sortParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.sort());
var groupParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group());
var columnsGroupParameters = that.getGroupDataSourceParameters();
var columnsSortParameters = that.getSortDataSourceParameters();
if (!that._columns.length) {
(0, _iterator.each)(groupParameters, (function(index, group) {
that._columns.push(group.selector)
}));
(0, _iterator.each)(sortParameters, (function(index, sort) {
that._columns.push(sort.selector)
}));
assignColumns(that, createColumnsFromOptions(that, that._columns))
}
if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters)) {
updateSortGroupParameterIndexes(that._columns, groupParameters, "groupIndex");
if (fromDataSource) {
updateColumnChanges(that, "grouping");
isColumnsChanged = true
}
}
if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(sortParameters, columnsSortParameters)) {
updateSortGroupParameterIndexes(that._columns, sortParameters, "sortIndex");
if (fromDataSource) {
updateColumnChanges(that, "sorting");
isColumnsChanged = true
}
}
if (isColumnsChanged) {
fireColumnsChanged(that)
}
}
},
updateFilter: function(filter, remoteFiltering, columnIndex, filterValue) {
if (!Array.isArray(filter)) {
return filter
}
filter = (0, _extend.extend)([], filter);
columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;
filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;
if ((0, _type.isString)(filter[0]) && "!" !== filter[0]) {
var column = this.columnOption(filter[0]);
if (remoteFiltering) {
if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {
filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], "filter")
}
} else if (column && column.selector) {
filter[0] = column.selector;
filter[0].columnIndex = column.index
}
} else if ((0, _type.isFunction)(filter[0])) {
filter[0].columnIndex = columnIndex;
filter[0].filterValue = filterValue
}
for (var i = 0; i < filter.length; i++) {
filter[i] = this.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)
}
return filter
},
columnCount: function() {
return this._columns ? this._columns.length : 0
},
columnOption: function(identifier, option, value, notFireEvent) {
var that = this;
var columns = that._columns.concat(that._commandColumns);
var column = findColumn(columns, identifier);
if (column) {
if (1 === arguments.length) {
return (0, _extend.extend)({}, column)
}
if ((0, _type.isString)(option)) {
if (2 === arguments.length) {
return columnOptionCore(that, column, option)
} else {
columnOptionCore(that, column, option, value, notFireEvent)
}
} else if ((0, _type.isObject)(option)) {
(0, _iterator.each)(option, (function(optionName, value) {
columnOptionCore(that, column, optionName, value, notFireEvent)
}))
}
fireColumnsChanged(that)
}
},
clearSorting: function() {
var columnCount = this.columnCount();
this.beginUpdate();
for (var i = 0; i < columnCount; i++) {
this.columnOption(i, "sortOrder", void 0)
}
this.endUpdate()
},
clearGrouping: function() {
var columnCount = this.columnCount();
this.beginUpdate();
for (var i = 0; i < columnCount; i++) {
this.columnOption(i, "groupIndex", void 0)
}
this.endUpdate()
},
getVisibleIndex: function(index, rowIndex) {
var columns = this.getVisibleColumns(rowIndex);
for (var i = columns.length - 1; i >= 0; i--) {
if (columns[i].index === index) {
return i
}
}
return -1
},
getVisibleIndexByColumn: function(column, rowIndex) {
var visibleColumns = this.getVisibleColumns(rowIndex);
var visibleColumn = visibleColumns.filter((function(col) {
return col.index === column.index && col.command === column.command
}))[0];
return visibleColumns.indexOf(visibleColumn)
},
getVisibleColumnIndex: function(id, rowIndex) {
var index = this.columnOption(id, "index");
return this.getVisibleIndex(index, rowIndex)
},
addColumn: function(options) {
var column = createColumn(this, options);
var index = this._columns.length;
this._columns.push(column);
if (column.isBand) {
this._columns = createColumnsFromOptions(this, this._columns);
column = this._columns[index]
}
column.added = options;
updateIndexes(this, column);
this.updateColumns(this._dataSource);
this._checkColumns()
},
deleteColumn: function(id) {
var column = this.columnOption(id);
if (column && column.index >= 0) {
columns = this._columns, void columns.forEach((function(column) {
if ((0, _type.isDefined)(column.ownerBand)) {
column.ownerBand = columns[column.ownerBand]
}
}));
this._columns.splice(column.index, 1);
if (column.isBand) {
var childIndexes = this.getChildrenByBandColumn(column.index).map((function(column) {
return column.index
}));
this._columns = this._columns.filter((function(column) {
return childIndexes.indexOf(column.index) < 0
}))
}
updateIndexes(this);
this.updateColumns(this._dataSource)
}
var columns
},
addCommandColumn: function(options) {
var commandColumn = this._commandColumns.filter((function(column) {
return column.command === options.command
}))[0];
if (!commandColumn) {
commandColumn = options;
this._commandColumns.push(commandColumn)
}
},
getUserState: function() {
var columns = this._columns;
var result = [];
var i;
function handleStateField(index, value) {
if (void 0 !== columns[i][value]) {
result[i][value] = columns[i][value]
}
}
for (i = 0; i < columns.length; i++) {
result[i] = {};
(0, _iterator.each)(USER_STATE_FIELD_NAMES, handleStateField)
}
return result
},
setName: function(column) {
column.name = column.name || column.dataField || column.type
},
setUserState: function(state) {
var dataSource = this._dataSource;
var ignoreColumnOptionNames = this.option("stateStoring.ignoreColumnOptionNames");
null === state || void 0 === state ? void 0 : state.forEach(this.setName);
if (!ignoreColumnOptionNames) {
ignoreColumnOptionNames = [];
var commonColumnSettings = this.getCommonSettings();
if (!this.option("columnChooser.enabled")) {
ignoreColumnOptionNames.push("visible")
}
if ("none" === this.option("sorting.mode")) {
ignoreColumnOptionNames.push("sortIndex", "sortOrder")
}
if (!commonColumnSettings.allowGrouping) {
ignoreColumnOptionNames.push("groupIndex")
}
if (!commonColumnSettings.allowFixing) {
ignoreColumnOptionNames.push("fixed", "fixedPosition")
}
if (!commonColumnSettings.allowResizing) {
ignoreColumnOptionNames.push("width", "visibleWidth")
}
var isFilterPanelHidden = !this.option("filterPanel.visible");
if (!this.option("filterRow.visible") && isFilterPanelHidden) {
ignoreColumnOptionNames.push("filterValue", "selectedFilterOperation")
}
if (!this.option("headerFilter.visible") && isFilterPanelHidden) {
ignoreColumnOptionNames.push("filterValues", "filterType")
}
}
this._columnsUserState = state;
this._ignoreColumnOptionNames = ignoreColumnOptionNames;
this._hasUserState = !!state;
updateColumnChanges(this, "filtering");
this.init();
if (dataSource) {
dataSource.sort(this.getSortDataSourceParameters());
dataSource.group(this.getGroupDataSourceParameters())
}
},
_checkColumns: function() {
var usedNames = {};
var hasEditableColumnWithoutName = false;
var duplicatedNames = [];
this._columns.forEach((function(column) {
var _column$columns;
var name = column.name;
var isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length;
var isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;
if (name) {
if (usedNames[name]) {
duplicatedNames.push('"'.concat(name, '"'))
}
usedNames[name] = true
} else if (isEditable) {
hasEditableColumnWithoutName = true
}
}));
if (duplicatedNames.length) {
_ui.default.log("E1059", duplicatedNames.join(", "))
}
if (hasEditableColumnWithoutName) {
_ui.default.log("E1060")
}
},
_createCalculatedColumnOptions: function(columnOptions, bandColumn) {
var calculatedColumnOptions = {};
var dataField = columnOptions.dataField;
if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {
calculatedColumnOptions.isBand = true;
dataField = null
}
if (dataField) {
if ((0, _type.isString)(dataField)) {
var getter = (0, _data.compileGetter)(dataField);
calculatedColumnOptions = {
caption: (0, _inflector.captionize)(dataField),
calculateCellValue: function(data, skipDeserialization) {
var value = getter(data);
return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value
},
setCellValue: defaultSetCellValue,
parseValue: function(text) {
var result;
var parsedValue;
if ("number" === this.dataType) {
if ((0, _type.isString)(text) && this.format) {
result = function(text, format) {
var parsedValue = _number.default.parse(text, format);
if ((0, _type.isNumeric)(parsedValue)) {
var formattedValue = _number.default.format(parsedValue, format);
var formattedValueWithDefaultFormat = _number.default.format(parsedValue, "decimal");
if (formattedValue === text || formattedValueWithDefaultFormat === text) {
return parsedValue
}
}
}(text.trim(), this.format)
} else if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) {
result = Number(text)
}
} else if ("boolean" === this.dataType) {
if (text === this.trueText) {
result = true
} else if (text === this.falseText) {
result = false
}
} else if (_uiGrid_core2.default.isDateType(this.dataType)) {
parsedValue = _date.default.parse(text, this.format);
if (parsedValue) {
result = parsedValue
}
} else {
result = text
}
return result
}
}
}
calculatedColumnOptions.allowFiltering = true
} else {
calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression
}
calculatedColumnOptions.calculateFilterExpression = function() {
return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments)
};
calculatedColumnOptions.createFilterExpression = function(filterValue) {
var result;
if (this.calculateFilterExpression) {
result = this.calculateFilterExpression.apply(this, arguments)
}
if ((0, _type.isFunction)(result)) {
result = [result, "=", true]
}
if (result) {
result.columnIndex = this.index;
result.filterValue = filterValue
}
return result
};
if (!dataField || !(0, _type.isString)(dataField)) {
(0, _extend.extend)(true, calculatedColumnOptions, {
allowSorting: false,
allowGrouping: false,
calculateCellValue: function() {
return null
}
})
}
if (bandColumn) {
calculatedColumnOptions.allowFixing = false
}
if (columnOptions.dataType) {
calculatedColumnOptions.userDataType = columnOptions.dataType
}
if (columnOptions.selectedFilterOperation && !("defaultSelectedFilterOperation" in calculatedColumnOptions)) {
calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation
}
if (columnOptions.lookup) {
calculatedColumnOptions.lookup = {
calculateCellValue: function(value, skipDeserialization) {
if (this.valueExpr) {
value = this.valueMap && this.valueMap[value]
}
return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value
},
updateValueMap: function() {
this.valueMap = {};
if (this.items) {
var calculateValue = (0, _data.compileGetter)(this.valueExpr);
var calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr);
for (var i = 0; i < this.items.length; i++) {
var item = this.items[i];
var displayValue = calculateDisplayValue(item);
this.valueMap[calculateValue(item)] = displayValue;
this.dataType = this.dataType || getValueDataType(displayValue)
}
}
},
update: function() {
var that = this;
var dataSource = that.dataSource;
if (dataSource) {
if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) {
dataSource = dataSource({})
}
if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) {
if (that.valueExpr) {
var dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource);
dataSourceOptions.paginate = false;
dataSource = new _data_source.DataSource(dataSourceOptions);
return dataSource.load().done((function(data) {
that.items = data;
that.updateValueMap && that.updateValueMap()
}))
}
} else {
_ui.default.log("E1016")
}
} else {
that.updateValueMap && that.updateValueMap()
}
}
}
}
calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)();
if (columnOptions.resized) {
calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))
}(0, _iterator.each)(calculatedColumnOptions, (function(optionName) {
if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf("default")) {
var defaultOptionName = "default" + optionName.charAt(0).toUpperCase() + optionName.substr(1);
calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]
}
}));
return calculatedColumnOptions
},
getRowCount: function() {
this._rowCount = this._rowCount || function(that) {
var rowCount = 1;
var bandColumnsCache = that.getBandColumnsCache();
var columnParentByIndex = bandColumnsCache.columnParentByIndex;
that._columns.forEach((function(column) {
var parents = getParentBandColumns(column.index, columnParentByIndex);
var invisibleParents = parents.filter((function(column) {
return !column.visible
}));
if (column.visible && !invisibleParents.length) {
rowCount = Math.max(rowCount, parents.length + 1)
}
}));
return rowCount
}(this);
return this._rowCount
},
getRowIndex: function(columnIndex, alwaysGetRowIndex) {
var column = this._columns[columnIndex];
var bandColumnsCache = this.getBandColumnsCache();
return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex).length : 0
},
getChildrenByBandColumn: function(bandColumnIndex, onlyVisibleDirectChildren) {
var bandColumnsCache = this.getBandColumnsCache();
var result = _getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);
if (onlyVisibleDirectChildren) {
return result.filter((function(column) {
return column.visible && !column.command
})).sort((function(column1, column2) {
return column1.visibleIndex - column2.visibleIndex
}))
}
return result
},
isParentBandColumn: function(columnIndex, bandColumnIndex) {
var result = false;
var column = this._columns[columnIndex];
var bandColumnsCache = this.getBandColumnsCache();
var parentBandColumns = column && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);
if (parentBandColumns) {
(0, _iterator.each)(parentBandColumns, (function(_, bandColumn) {
if (bandColumn.index === bandColumnIndex) {
result = true;
return false
}
}))
}
return result
},
isParentColumnVisible: function(columnIndex) {
var result = true;
var bandColumnsCache = this.getBandColumnsCache();
var bandColumns = columnIndex >= 0 && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);
bandColumns && (0, _iterator.each)(bandColumns, (function(_, bandColumn) {
result = result && bandColumn.visible;
return result
}));
return result
},
getColumnId: function(column) {
if (column.command && column.type === GROUP_COMMAND_COLUMN_NAME) {
if (isCustomCommandColumn(this, column)) {
return "type:" + column.type
}
return "command:" + column.command
}
return column.index
},
getCustomizeTextByDataType: getCustomizeTextByDataType,
getHeaderContentAlignment: function(columnAlignment) {
var rtlEnabled = this.option("rtlEnabled");
if (rtlEnabled) {
return "left" === columnAlignment ? "right" : "left"
}
return columnAlignment
}
}
}())
}
};
exports.columnsControllerModule = columnsControllerModule;