devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
812 lines (811 loc) • 36.9 kB
JavaScript
/**
* DevExtreme (cjs/__internal/grids/data_grid/export/module.js)
* Version: 22.1.9
* Build date: Tue Apr 18 2023
*
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
var __assign = this && this.__assign || function() {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) {
t[p] = s[p]
}
}
}
return t
};
return __assign.apply(this, arguments)
};
var __spreadArray = this && this.__spreadArray || function(to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {
to[j] = from[i]
}
return to
};
var __importDefault = this && this.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : {
default: mod
}
};
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ExportController = exports.DataProvider = void 0;
var renderer_1 = __importDefault(require("../../../../core/renderer"));
var class_1 = __importDefault(require("../../../../core/class"));
var type_1 = require("../../../../core/utils/type");
var extend_1 = require("../../../../core/utils/extend");
var position_1 = require("../../../../core/utils/position");
var exporter_1 = require("../../../../exporter");
var string_1 = require("../../../../core/utils/string");
var message_1 = __importDefault(require("../../../../localization/message"));
require("../../../../ui/button");
require("../../../../ui/drop_down_button");
var deferred_1 = require("../../../../core/utils/deferred");
var list_light_1 = __importDefault(require("../../../../ui/list_light"));
var ui_grid_core_export_1 = require("../../../../ui/grid_core/ui.grid_core.export");
var module_core_1 = __importDefault(require("../module_core"));
var DATAGRID_EXPORT_MENU_CLASS = "dx-datagrid-export-menu";
var DATAGRID_EXPORT_BUTTON_CLASS = "dx-datagrid-export-button";
var DATAGRID_EXPORT_TOOLBAR_BUTTON_NAME = "exportButton";
var DATAGRID_EXPORT_ICON = "export";
var DATAGRID_EXPORT_EXCEL_ICON = "xlsxfile";
var DATAGRID_EXPORT_SELECTED_ICON = "exportselected";
var DATAGRID_PDF_EXPORT_ICON = "pdffile";
exports.DataProvider = class_1.default.inherit({
ctor: function(exportController, initialColumnWidthsByColumnIndex, selectedRowsOnly) {
this._exportController = exportController;
this._initialColumnWidthsByColumnIndex = initialColumnWidthsByColumnIndex;
this._selectedRowsOnly = selectedRowsOnly
},
_getGroupValue: function(item) {
var key = item.key,
data = item.data,
rowType = item.rowType,
groupIndex = item.groupIndex,
summaryCells = item.summaryCells;
var groupColumn = this._options.groupColumns[groupIndex];
var value = module_core_1.default.getDisplayValue(groupColumn, groupColumn.deserializeValue ? groupColumn.deserializeValue(key[groupIndex]) : key[groupIndex], data, rowType);
var result = groupColumn.caption + ": " + module_core_1.default.formatValue(value, groupColumn);
if (summaryCells && summaryCells[0] && summaryCells[0].length) {
result += " " + module_core_1.default.getGroupRowSummaryText(summaryCells[0], this._options.summaryTexts)
}
return result
},
_correctCellIndex: function(cellIndex) {
return cellIndex
},
_initOptions: function() {
var exportController = this._exportController;
var groupColumns = exportController._columnsController.getGroupColumns();
var excelWrapTextEnabled = exportController.option("export.excelWrapTextEnabled");
this._options = {
columns: exportController._getColumns(this._initialColumnWidthsByColumnIndex),
groupColumns: groupColumns,
items: this._selectedRowsOnly || exportController._selectionOnly ? exportController._getSelectedItems() : exportController._getAllItems(),
getVisibleIndex: exportController._columnsController.getVisibleIndex.bind(exportController._columnsController),
isHeadersVisible: exportController.option("showColumnHeaders"),
summaryTexts: exportController.option("summary.texts"),
customizeExportData: exportController.option("customizeExportData"),
rtlEnabled: exportController.option("rtlEnabled"),
wrapTextEnabled: type_1.isDefined(excelWrapTextEnabled) ? excelWrapTextEnabled : !!exportController.option("wordWrapEnabled"),
customizeExcelCell: exportController.option("export.customizeExcelCell")
}
},
hasCustomizeExcelCell: function() {
return type_1.isDefined(this._options.customizeExcelCell)
},
customizeExcelCell: function(e, cellSourceData) {
if (this._options.customizeExcelCell) {
e.gridCell = cellSourceData;
if (type_1.isDefined(this._exportController) && type_1.isDefined(this._exportController.component)) {
e.component = this._exportController.component
}
this._options.customizeExcelCell(e)
}
},
getHeaderStyles: function() {
return [{
bold: true,
alignment: "center",
wrapText: true
}, {
bold: true,
alignment: "left",
wrapText: true
}, {
bold: true,
alignment: "right",
wrapText: true
}]
},
getGroupRowStyle: function() {
return {
bold: true,
wrapText: false,
alignment: position_1.getDefaultAlignment(this._options.rtlEnabled)
}
},
getColumnStyles: function() {
var wrapTextEnabled = this._options.wrapTextEnabled;
var columnStyles = [];
this.getColumns().forEach((function(column) {
columnStyles.push({
alignment: column.alignment || "left",
format: column.format,
wrapText: wrapTextEnabled,
dataType: column.dataType
})
}));
return columnStyles
},
getStyles: function() {
return __spreadArray(__spreadArray(__spreadArray([], this.getHeaderStyles()), this.getColumnStyles()), [this.getGroupRowStyle()])
},
_getTotalCellStyleId: function(cellIndex) {
var _a;
var alignment = (null === (_a = this.getColumns()[cellIndex]) || void 0 === _a ? void 0 : _a.alignment) || "right";
return this.getHeaderStyles().map((function(style) {
return style.alignment
})).indexOf(alignment)
},
getStyleId: function(rowIndex, cellIndex) {
if (rowIndex < this.getHeaderRowCount()) {
return 0
}
if (this.isTotalCell(rowIndex - this.getHeaderRowCount(), cellIndex)) {
return this._getTotalCellStyleId(cellIndex)
}
if (this.isGroupRow(rowIndex - this.getHeaderRowCount())) {
return this.getHeaderStyles().length + this.getColumns().length
}
return cellIndex + this.getHeaderStyles().length
},
getColumns: function(getColumnsByAllRows) {
var columns = this._options.columns;
return getColumnsByAllRows ? columns : columns[columns.length - 1]
},
getColumnsWidths: function() {
var columns = this.getColumns();
return type_1.isDefined(columns) ? columns.map((function(c) {
return c.width
})) : void 0
},
getRowsCount: function() {
return this._options.items.length + this.getHeaderRowCount()
},
getHeaderRowCount: function() {
if (this.isHeadersVisible()) {
return this._options.columns.length - 1
}
return 0
},
isGroupRow: function(rowIndex) {
return rowIndex < this._options.items.length && "group" === this._options.items[rowIndex].rowType
},
getGroupLevel: function(rowIndex) {
var item = this._options.items[rowIndex - this.getHeaderRowCount()];
var groupIndex = item && item.groupIndex;
if (item && "totalFooter" === item.rowType) {
return 0
}
return type_1.isDefined(groupIndex) ? groupIndex : this._options.groupColumns.length
},
getCellType: function(rowIndex, cellIndex) {
var columns = this.getColumns();
if (rowIndex < this.getHeaderRowCount()) {
return "string"
}
rowIndex -= this.getHeaderRowCount();
if (cellIndex < columns.length) {
var item = this._options.items.length && this._options.items[rowIndex];
var column = columns[cellIndex];
if (item && "data" === item.rowType) {
if (isFinite(item.values[this._correctCellIndex(cellIndex)]) && !type_1.isDefined(column.customizeText)) {
return type_1.isDefined(column.lookup) ? column.lookup.dataType : column.dataType
}
}
return "string"
}
},
ready: function() {
var that = this;
that._initOptions();
var options = that._options;
return deferred_1.when(options.items).done((function(items) {
options.customizeExportData && options.customizeExportData(that.getColumns(that.getHeaderRowCount() > 1), items);
options.items = items
})).fail((function() {
options.items = []
}))
},
_convertFromGridGroupSummaryItems: function(gridGroupSummaryItems) {
if (type_1.isDefined(gridGroupSummaryItems) && gridGroupSummaryItems.length > 0) {
return gridGroupSummaryItems.map((function(item) {
return {
value: item.value,
name: item.name
}
}))
}
},
getCellData: function(rowIndex, cellIndex, isExcelJS) {
var value;
var column;
var result = {
cellSourceData: {},
value: value
};
var columns = this.getColumns();
var correctedCellIndex = this._correctCellIndex(cellIndex);
if (rowIndex < this.getHeaderRowCount()) {
var columnsRow = this.getColumns(true)[rowIndex];
column = columnsRow[cellIndex];
result.cellSourceData.rowType = "header";
result.cellSourceData.column = column && column.gridColumn;
result.value = column && column.caption
} else {
rowIndex -= this.getHeaderRowCount();
var item = this._options.items.length && this._options.items[rowIndex];
if (item) {
var itemValues = item.values;
result.cellSourceData.rowType = item.rowType;
result.cellSourceData.column = columns[cellIndex] && columns[cellIndex].gridColumn;
switch (item.rowType) {
case "groupFooter":
case "totalFooter":
if (correctedCellIndex < itemValues.length) {
value = itemValues[correctedCellIndex];
if (type_1.isDefined(value)) {
result.cellSourceData.value = value.value;
result.cellSourceData.totalSummaryItemName = value.name;
result.value = module_core_1.default.getSummaryText(value, this._options.summaryTexts)
} else {
result.cellSourceData.value = void 0
}
}
break;
case "group":
result.cellSourceData.groupIndex = item.groupIndex;
if (cellIndex < 1) {
result.cellSourceData.column = this._options.groupColumns[item.groupIndex];
result.cellSourceData.value = item.key[item.groupIndex];
result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(item.summaryCells[0]);
result.value = this._getGroupValue(item)
} else {
var summaryItems = item.values[correctedCellIndex];
if (Array.isArray(summaryItems)) {
result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(summaryItems);
value = "";
for (var i = 0; i < summaryItems.length; i++) {
value += (i > 0 ? isExcelJS ? "\n" : " \n " : "") + module_core_1.default.getSummaryText(summaryItems[i], this._options.summaryTexts)
}
result.value = value
} else {
result.cellSourceData.value = void 0
}
}
break;
default:
column = columns[cellIndex];
if (column) {
var value_1 = itemValues[correctedCellIndex];
var displayValue = module_core_1.default.getDisplayValue(column, value_1, item.data, item.rowType);
if (!isFinite(displayValue) || type_1.isDefined(column.customizeText)) {
if (isExcelJS && type_1.isDefined(column.customizeText) && column.customizeText === this._exportController._columnsController.getCustomizeTextByDataType("boolean")) {
result.value = displayValue
} else {
result.value = module_core_1.default.formatValue(displayValue, column)
}
} else {
result.value = displayValue
}
result.cellSourceData.value = value_1
}
result.cellSourceData.data = item.data
}
}
}
return result
},
isHeadersVisible: function() {
return this._options.isHeadersVisible
},
isTotalCell: function(rowIndex, cellIndex) {
var items = this._options.items;
var item = items[rowIndex];
var correctCellIndex = this._correctCellIndex(cellIndex);
var isSummaryAlignByColumn = item.summaryCells && item.summaryCells[correctCellIndex] && item.summaryCells[correctCellIndex].length > 0 && item.summaryCells[correctCellIndex][0].alignByColumn;
return item && "groupFooter" === item.rowType || "totalFooter" === item.rowType || isSummaryAlignByColumn
},
getCellMerging: function(rowIndex, cellIndex) {
var columns = this._options.columns;
var column = columns[rowIndex] && columns[rowIndex][cellIndex];
return column ? {
colspan: (column.exportColspan || 1) - 1,
rowspan: (column.rowspan || 1) - 1
} : {
colspan: 0,
rowspan: 0
}
},
getFrozenArea: function() {
return {
x: 0,
y: this.getHeaderRowCount()
}
}
});
exports.ExportController = module_core_1.default.ViewController.inherit({}).inherit({
_getEmptyCell: function() {
return {
caption: "",
colspan: 1,
rowspan: 1
}
},
_updateColumnWidth: function(column, width) {
column.width = width
},
_getColumns: function(initialColumnWidthsByColumnIndex) {
var result = [];
var i;
var columns;
var columnsController = this._columnsController;
var rowCount = columnsController.getRowCount();
for (i = 0; i <= rowCount; i++) {
var currentHeaderRow = [];
columns = columnsController.getVisibleColumns(i, true);
var columnWidthsByColumnIndex = void 0;
if (i === rowCount) {
if (this._updateLockCount) {
columnWidthsByColumnIndex = initialColumnWidthsByColumnIndex
} else {
var columnWidths = this._getColumnWidths(this._headersView, this._rowsView);
if (columnWidths && columnWidths.length) {
columnWidthsByColumnIndex = {};
for (var i_1 = 0; i_1 < columns.length; i_1++) {
columnWidthsByColumnIndex[columns[i_1].index] = columnWidths[i_1]
}
}
}
}
for (var j = 0; j < columns.length; j++) {
var column = extend_1.extend({}, columns[j], {
dataType: "datetime" === columns[j].dataType ? "date" : columns[j].dataType,
gridColumn: columns[j]
});
if (this._needColumnExporting(column)) {
var currentColspan = this._calculateExportColspan(column);
if (type_1.isDefined(currentColspan)) {
column.exportColspan = currentColspan
}
if (columnWidthsByColumnIndex) {
this._updateColumnWidth(column, columnWidthsByColumnIndex[column.index])
}
currentHeaderRow.push(column)
}
}
result.push(currentHeaderRow)
}
columns = result[rowCount];
result = ui_grid_core_export_1.prepareItems(result.slice(0, -1), this._getEmptyCell());
result.push(columns);
return result
},
_calculateExportColspan: function(column) {
var _this = this;
if (!column.isBand) {
return
}
var childColumns = this._columnsController.getChildrenByBandColumn(column.index, true);
if (!type_1.isDefined(childColumns)) {
return
}
return childColumns.reduce((function(result, childColumn) {
if (_this._needColumnExporting(childColumn)) {
return result + (_this._calculateExportColspan(childColumn) || 1)
}
return result
}), 0)
},
_needColumnExporting: function(column) {
return !column.command && (column.allowExporting || void 0 === column.allowExporting)
},
_getFooterSummaryItems: function(summaryCells, isTotal) {
var result = [];
var estimatedItemsCount = 1;
var i = 0;
do {
var values = [];
for (var j = 0; j < summaryCells.length; j++) {
var summaryCell = summaryCells[j];
var itemsLength = summaryCell.length;
if (estimatedItemsCount < itemsLength) {
estimatedItemsCount = itemsLength
}
values.push(summaryCell[i])
}
result.push({
values: values,
rowType: isTotal ? "totalFooter" : "groupFooter"
})
} while (i++ < estimatedItemsCount - 1);
return result
},
_hasSummaryGroupFooters: function() {
var groupItems = this.option("summary.groupItems");
if (type_1.isDefined(groupItems)) {
for (var i = 0; i < groupItems.length; i++) {
if (groupItems[i].showInGroupFooter) {
return true
}
}
}
return false
},
_getItemsWithSummaryGroupFooters: function(sourceItems) {
var result = [];
var beforeGroupFooterItems = [];
var groupFooterItems = [];
for (var i = 0; i < sourceItems.length; i++) {
var item = sourceItems[i];
if ("groupFooter" === item.rowType) {
groupFooterItems = this._getFooterSummaryItems(item.summaryCells);
result = result.concat(beforeGroupFooterItems, groupFooterItems);
beforeGroupFooterItems = []
} else {
beforeGroupFooterItems.push(item)
}
}
return result.length ? result : beforeGroupFooterItems
},
_updateGroupValuesWithSummaryByColumn: function(sourceItems) {
var _a;
var summaryValues = [];
for (var i = 0; i < sourceItems.length; i++) {
var item = sourceItems[i];
var summaryCells = item.summaryCells;
if ("group" === item.rowType && summaryCells && summaryCells.length > 1) {
var groupColumnCount = item.values.length;
for (var j = 1; j < summaryCells.length; j++) {
for (var k = 0; k < summaryCells[j].length; k++) {
var summaryItem = summaryCells[j][k];
if (summaryItem && summaryItem.alignByColumn) {
if (!Array.isArray(summaryValues[j - groupColumnCount])) {
summaryValues[j - groupColumnCount] = []
}
summaryValues[j - groupColumnCount].push(summaryItem)
}
}
}
if (summaryValues.length > 0) {
(_a = item.values).push.apply(_a, summaryValues);
summaryValues = []
}
}
}
},
_processUnExportedItems: function(items) {
var columns = this._columnsController.getVisibleColumns(null, true);
var groupColumns = this._columnsController.getGroupColumns();
var values;
var summaryCells;
for (var i = 0; i < items.length; i++) {
var item = items[i];
var isCommand = false;
values = [];
summaryCells = [];
for (var j = 0; j < columns.length; j++) {
var column = columns[j];
isCommand || (isCommand = ["detailExpand", "buttons"].includes(column.type));
if (this._needColumnExporting(column)) {
if (item.values) {
if ("group" === item.rowType && !values.length) {
values.push(item.key[item.groupIndex])
} else {
values.push(item.values[j])
}
}
if (item.summaryCells) {
if ("group" === item.rowType && !summaryCells.length) {
var index = j - groupColumns.length + item.groupIndex;
summaryCells.push(item.summaryCells[isCommand ? index : index + 1])
} else {
summaryCells.push(item.summaryCells[j])
}
}
}
}
if (values.length) {
item.values = values
}
if (summaryCells.length) {
item.summaryCells = summaryCells
}
}
},
_getAllItems: function(data) {
var that = this;
var d = new deferred_1.Deferred;
var dataController = this.getController("data");
var footerItems = dataController.footerItems();
var totalItem = footerItems.length && footerItems[0];
var summaryTotalItems = that.option("summary.totalItems");
var summaryCells;
deferred_1.when(data).done((function(data) {
dataController.loadAll(data).done((function(sourceItems, totalAggregates) {
that._updateGroupValuesWithSummaryByColumn(sourceItems);
if (that._hasSummaryGroupFooters()) {
sourceItems = that._getItemsWithSummaryGroupFooters(sourceItems)
}
summaryCells = totalItem && totalItem.summaryCells;
if (type_1.isDefined(totalAggregates) && summaryTotalItems) {
summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates)
}
var summaryItems = totalItem && that._getFooterSummaryItems(summaryCells, true);
if (summaryItems) {
sourceItems = sourceItems.concat(summaryItems)
}
that._processUnExportedItems(sourceItems);
d.resolve(sourceItems)
})).fail(d.reject)
})).fail(d.reject);
return d
},
_getSummaryCells: function(summaryTotalItems, totalAggregates) {
var dataController = this.getController("data");
var columnsController = dataController._columnsController;
return dataController._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(null, true), (function(summaryItem, column) {
return dataController._isDataColumn(column) ? column.index : -1
}))
},
_getSelectedItems: function() {
var selectionController = this.getController("selection");
var selectedRowData = selectionController.getSelectedRowsData();
return this._getAllItems(selectedRowData)
},
_getColumnWidths: function(headersView, rowsView) {
return headersView && headersView.isVisible() ? headersView.getColumnWidths() : rowsView.getColumnWidths()
},
init: function() {
this._columnsController = this.getController("columns");
this._rowsView = this.getView("rowsView");
this._headersView = this.getView("columnHeadersView");
this.createAction("onExporting", {
excludeValidators: ["disabled", "readOnly"]
});
this.createAction("onExported", {
excludeValidators: ["disabled", "readOnly"]
});
this.createAction("onFileSaving", {
excludeValidators: ["disabled", "readOnly"]
})
},
callbackNames: function() {
return ["selectionOnlyChanged"]
},
getDataProvider: function(selectedRowsOnly) {
var columnWidths = this._getColumnWidths(this._headersView, this._rowsView);
var initialColumnWidthsByColumnIndex;
if (columnWidths && columnWidths.length) {
initialColumnWidthsByColumnIndex = {};
var columnsLastRowVisibleColumns = this._columnsController.getVisibleColumns(this._columnsController.getRowCount(), true);
for (var i = 0; i < columnsLastRowVisibleColumns.length; i++) {
initialColumnWidthsByColumnIndex[columnsLastRowVisibleColumns[i].index] = columnWidths[i]
}
}
return new exports.DataProvider(this, initialColumnWidthsByColumnIndex, selectedRowsOnly)
},
exportToExcel: function(selectedRowsOnly) {
this._selectionOnly = selectedRowsOnly;
exporter_1.export(this.component.getDataProvider(), {
fileName: this.option("export.fileName"),
proxyUrl: this.option("export.proxyUrl"),
format: "xlsx",
selectedRowsOnly: !!selectedRowsOnly,
autoFilterEnabled: !!this.option("export.excelFilterEnabled"),
rtlEnabled: this.option("rtlEnabled"),
ignoreErrors: this.option("export.ignoreExcelErrors"),
exportingAction: this.getAction("onExporting"),
exportedAction: this.getAction("onExported"),
fileSavingAction: this.getAction("onFileSaving")
}, exporter_1.excel.getData)
},
exportTo: function(selectedRowsOnly, format) {
this._selectionOnly = selectedRowsOnly;
var onExporting = this.getAction("onExporting");
var eventArgs = {
selectedRowsOnly: !!selectedRowsOnly,
format: format,
fileName: this.option("export.fileName"),
cancel: false
};
type_1.isFunction(onExporting) && onExporting(eventArgs)
},
publicMethods: function() {
return ["getDataProvider", "exportToExcel"]
},
selectionOnly: function(value) {
if (type_1.isDefined(value)) {
this._isSelectedRows = value;
this.selectionOnlyChanged.fire()
} else {
return this._isSelectedRows
}
}
});
module_core_1.default.registerModule("export", {
defaultOptions: function() {
return {
export: {
enabled: false,
fileName: "DataGrid",
excelFilterEnabled: false,
formats: ["xlsx"],
excelWrapTextEnabled: void 0,
proxyUrl: void 0,
allowExportSelectedData: false,
ignoreExcelErrors: true,
texts: {
exportTo: message_1.default.format("dxDataGrid-exportTo"),
exportAll: message_1.default.format("dxDataGrid-exportAll"),
exportSelectedRows: message_1.default.format("dxDataGrid-exportSelectedRows")
}
}
}
},
controllers: {
export: exports.ExportController
},
extenders: {
controllers: {
editing: {
callbackNames: function() {
var callbackList = this.callBase();
return type_1.isDefined(callbackList) ? callbackList.push("editingChanged") : ["editingChanged"]
},
_updateEditButtons: function() {
this.callBase();
this.editingChanged.fire(this.hasChanges())
}
}
},
views: {
headerPanel: {
_getToolbarItems: function() {
var items = this.callBase();
var exportButton = this._getExportToolbarButton();
if (exportButton) {
items.push(exportButton);
this._correctItemsPosition(items)
}
return items
},
_getExportToolbarButton: function() {
var _this = this;
var items = this._getExportToolbarItems();
if (0 === items.length) {
return null
}
var toolbarButtonOptions = {
name: DATAGRID_EXPORT_TOOLBAR_BUTTON_NAME,
location: "after",
locateInMenu: "auto",
sortIndex: 30,
options: {
items: items
}
};
if (1 === items.length) {
var widgetOptions = __assign(__assign({}, items[0]), {
hint: items[0].text,
elementAttr: {
class: DATAGRID_EXPORT_BUTTON_CLASS
}
});
toolbarButtonOptions.widget = "dxButton";
toolbarButtonOptions.showText = "inMenu";
toolbarButtonOptions.options = widgetOptions
} else {
widgetOptions = {
icon: DATAGRID_EXPORT_ICON,
displayExpr: "text",
items: items,
hint: this.option("export.texts.exportTo"),
elementAttr: {
class: DATAGRID_EXPORT_BUTTON_CLASS
},
dropDownOptions: {
width: "auto",
_wrapperClassExternal: DATAGRID_EXPORT_MENU_CLASS
}
};
toolbarButtonOptions.options = widgetOptions;
toolbarButtonOptions.widget = "dxDropDownButton";
toolbarButtonOptions.menuItemTemplate = function(_data, _index, container) {
_this._createComponent(renderer_1.default(container), list_light_1.default, {
items: items
})
}
}
return toolbarButtonOptions
},
_getExportToolbarItems: function() {
var _this = this;
var _a;
var exportOptions = this.option("export");
var texts = this.option("export.texts");
var formats = null !== (_a = this.option("export.formats")) && void 0 !== _a ? _a : [];
if (!exportOptions.enabled) {
return []
}
var items = [];
formats.forEach((function(formatType) {
var exportMethod = "exportTo";
var formatName = formatType.toUpperCase();
var exportAllIcon = DATAGRID_EXPORT_ICON;
var exportSelectedIcon = DATAGRID_EXPORT_SELECTED_ICON;
if ("xlsx" === formatType) {
exportMethod = "exportToExcel";
formatName = "Excel";
exportAllIcon = DATAGRID_EXPORT_EXCEL_ICON
}
if ("pdf" === formatType) {
exportAllIcon = DATAGRID_PDF_EXPORT_ICON
}
items.push({
text: string_1.format(texts.exportAll, formatName),
icon: exportAllIcon,
onClick: function() {
_this._exportController[exportMethod](false, formatType)
}
});
if (exportOptions.allowExportSelectedData) {
items.push({
text: string_1.format(texts.exportSelectedRows, formatName),
icon: exportSelectedIcon,
onClick: function() {
_this._exportController[exportMethod](true, formatType)
}
})
}
}));
return items
},
_correctItemsPosition: function(items) {
items.sort((function(itemA, itemB) {
return itemA.sortIndex - itemB.sortIndex
}))
},
_isExportButtonVisible: function() {
return this.option("export.enabled")
},
optionChanged: function(args) {
this.callBase(args);
if ("export" === args.name) {
args.handled = true;
this._invalidate()
}
},
init: function() {
var that = this;
this.callBase();
this._exportController = this.getController("export");
this._editingController = this.getController("editing");
this._editingController.editingChanged.add((function(hasChanges) {
that.setToolbarItemDisabled("exportButton", hasChanges)
}))
},
isVisible: function() {
return this.callBase() || this._isExportButtonVisible()
}
}
}
}
});