UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

238 lines • 12.2 kB
"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); }; Object.defineProperty(exports, "__esModule", { value: true }); var omit = require("lodash/omit"); var agGridUtils_1 = require("./agGridUtils"); var agGridColumnSizing_1 = require("./agGridColumnSizing"); var PivotTable_1 = require("../../../interfaces/PivotTable"); var omitBy = require("lodash/omitBy"); function isColumnWidthAuto(columnWidth) { return columnWidth.value === "auto"; } exports.isColumnWidthAuto = isColumnWidthAuto; var ResizedColumnsStore = /** @class */ (function () { function ResizedColumnsStore(manuallyResizedColumns, allMeasureColumnWidth, weakMeasuresColumnWidths) { if (manuallyResizedColumns === void 0) { manuallyResizedColumns = {}; } if (allMeasureColumnWidth === void 0) { allMeasureColumnWidth = null; } if (weakMeasuresColumnWidths === void 0) { weakMeasuresColumnWidths = {}; } this.manuallyResizedColumns = manuallyResizedColumns; this.allMeasureColumnWidth = allMeasureColumnWidth; this.weakMeasuresColumnWidths = weakMeasuresColumnWidths; } ResizedColumnsStore.prototype.getManuallyResizedColumn = function (item) { var colId = agGridUtils_1.getColumnIdentifier(item); if (this.manuallyResizedColumns[colId]) { return this.convertItem(this.manuallyResizedColumns[colId]); } var weakColumnWidth = this.getMatchedWeakMeasuresColumnWidth(item); if (weakColumnWidth) { return this.getWeakMeasureColumMapItem(weakColumnWidth); } if (agGridUtils_1.isMeasureColumn(item) && this.isAllMeasureColumWidthUsed()) { return this.getAllMeasureColumMapItem(); } }; ResizedColumnsStore.prototype.isColumnManuallyResized = function (item) { return !!this.getManuallyResizedColumn(item); }; ResizedColumnsStore.prototype.addToManuallyResizedColumn = function (column, allowGrowToFit) { if (allowGrowToFit === void 0) { allowGrowToFit = false; } this.manuallyResizedColumns[agGridUtils_1.getColumnIdentifier(column)] = { width: __assign({ value: column.getActualWidth() }, agGridColumnSizing_1.getAllowGrowToFitProp(allowGrowToFit)), }; column.getColDef().suppressSizeToFit = !allowGrowToFit; }; ResizedColumnsStore.prototype.addAllMeasureColumn = function (columnWidth, allColumns) { var _this = this; this.allMeasureColumnWidth = columnWidth; allColumns.forEach(function (col) { if (agGridUtils_1.isMeasureColumn(col)) { var colId = agGridUtils_1.getColumnIdentifier(col); if (_this.manuallyResizedColumns[colId]) { _this.manuallyResizedColumns = omit(_this.manuallyResizedColumns, colId); } col.getColDef().suppressSizeToFit = true; } }); this.weakMeasuresColumnWidths = {}; }; ResizedColumnsStore.prototype.addWeekMeasureColumn = function (column) { var width = column.getActualWidth(); var measureHeaderLocalIdentifier = agGridUtils_1.getMappingHeaderMeasureItemLocalIdentifier(column); if (measureHeaderLocalIdentifier) { this.weakMeasuresColumnWidths[measureHeaderLocalIdentifier] = { measureColumnWidthItem: { width: { value: width, }, locator: { measureLocatorItem: { measureIdentifier: measureHeaderLocalIdentifier, }, }, }, }; var shouldBeRemoved = function (resizedColumnItem) { return resizedColumnItem.measureIdentifier === measureHeaderLocalIdentifier; }; this.manuallyResizedColumns = omitBy(this.manuallyResizedColumns, shouldBeRemoved); } }; ResizedColumnsStore.prototype.removeAllMeasureColumns = function () { this.allMeasureColumnWidth = null; var shouldBeRemoved = function (resizedColumnItem) { return isColumnWidthAuto(resizedColumnItem.width); }; this.manuallyResizedColumns = omitBy(this.manuallyResizedColumns, shouldBeRemoved); this.weakMeasuresColumnWidths = {}; }; ResizedColumnsStore.prototype.removeWeakMeasureColumn = function (column) { var _this = this; var weakColumnWidth = this.getMatchedWeakMeasuresColumnWidth(column); if (weakColumnWidth) { this.weakMeasuresColumnWidths = omit(this.weakMeasuresColumnWidths, weakColumnWidth.measureColumnWidthItem.locator.measureLocatorItem.measureIdentifier); var shouldBeRemoved = function (resizedColumnItem) { return (isColumnWidthAuto(resizedColumnItem.width) && _this.isMatchingWeakWidth(resizedColumnItem, weakColumnWidth) && !_this.isAllMeasureColumWidthUsed()); }; this.manuallyResizedColumns = omitBy(this.manuallyResizedColumns, shouldBeRemoved); } }; ResizedColumnsStore.prototype.removeFromManuallyResizedColumn = function (column) { var colId = agGridUtils_1.getColumnIdentifier(column); var item = this.manuallyResizedColumns[colId]; if (item) { this.manuallyResizedColumns = omit(this.manuallyResizedColumns, colId); if (!this.isAllMeasureColumWidthUsed() || !agGridUtils_1.isMeasureColumn(column)) { column.getColDef().suppressSizeToFit = false; } } if (agGridUtils_1.isMeasureColumn(column) && (this.isAllMeasureColumWidthUsed() || this.getMatchedWeakMeasuresColumnWidth(column))) { // TODO INE: consider creating weakItem with width: "auto" when alt+DC over allMeasure this.manuallyResizedColumns[colId] = this.getAutoSizeItem(column); column.getColDef().suppressSizeToFit = false; } }; ResizedColumnsStore.prototype.getColumnWidthsFromMap = function (execution) { var result = agGridColumnSizing_1.getColumnWidthsFromMap(this.manuallyResizedColumns, execution); if (this.isAllMeasureColumWidthUsed()) { result.push(this.getAllMeasureColumnWidth()); } var weakColumnWidthItems = agGridColumnSizing_1.getWeakColumnWidthsFromMap(this.weakMeasuresColumnWidths); return result.concat(weakColumnWidthItems); }; ResizedColumnsStore.prototype.updateColumnWidths = function (columnWidths, executionResponse) { var allMeasureWidthItem = this.filterAllMeasureColumnWidthItem(columnWidths); if (PivotTable_1.isAllMeasureColumnWidthItem(allMeasureWidthItem)) { var validatedAllMeasureColumnWidth = agGridColumnSizing_1.defaultWidthValidator(allMeasureWidthItem.measureColumnWidthItem.width); this.allMeasureColumnWidth = PivotTable_1.isAbsoluteColumnWidth(validatedAllMeasureColumnWidth) ? validatedAllMeasureColumnWidth.value : null; } else { this.allMeasureColumnWidth = null; } this.weakMeasuresColumnWidths = this.filterWeakColumnWidthItems(columnWidths); var columnWidthItems = this.filterStrongColumnWidthItems(columnWidths); var columnWidthsByField = agGridColumnSizing_1.convertColumnWidthsToMap(columnWidthItems, executionResponse); this.manuallyResizedColumns = columnWidthsByField; }; ResizedColumnsStore.prototype.getMatchingColumnsByMeasure = function (targetColumn, allColumns) { var targetMeasureLocalIdentifier = agGridUtils_1.getMappingHeaderMeasureItemLocalIdentifier(targetColumn); if (targetMeasureLocalIdentifier) { return allColumns.filter(function (col) { var measureLocalIdentifier = agGridUtils_1.getMappingHeaderMeasureItemLocalIdentifier(col); return targetMeasureLocalIdentifier === measureLocalIdentifier; }); } return []; }; ResizedColumnsStore.prototype.getMatchedWeakMeasuresColumnWidth = function (item) { var measureHeaderLocalIdentifier = agGridUtils_1.getMappingHeaderMeasureItemLocalIdentifier(item); if (measureHeaderLocalIdentifier) { return this.weakMeasuresColumnWidths[measureHeaderLocalIdentifier]; } }; ResizedColumnsStore.prototype.filterAllMeasureColumnWidthItem = function (columnWidths) { if (columnWidths) { return columnWidths.filter(PivotTable_1.isAllMeasureColumnWidthItem)[0]; } }; ResizedColumnsStore.prototype.filterStrongColumnWidthItems = function (columnWidths) { if (columnWidths) { return columnWidths.filter(function (item) { return PivotTable_1.isAttributeColumnWidthItem(item) || PivotTable_1.isMeasureColumnWidthItem(item); }); } return []; }; ResizedColumnsStore.prototype.filterWeakColumnWidthItems = function (columnWidths) { if (columnWidths) { var onlyWeakWidthItems = columnWidths.filter(PivotTable_1.isWeakMeasureColumnWidthItem); return onlyWeakWidthItems.reduce(function (map, weakWidthItem) { var _a; var validatedWidth = agGridColumnSizing_1.defaultWidthValidator(weakWidthItem.measureColumnWidthItem.width); if (PivotTable_1.isAbsoluteColumnWidth(validatedWidth)) { return __assign({}, map, (_a = {}, _a[weakWidthItem.measureColumnWidthItem.locator.measureLocatorItem .measureIdentifier] = { measureColumnWidthItem: __assign({}, weakWidthItem.measureColumnWidthItem, { width: __assign({}, weakWidthItem.measureColumnWidthItem.width, { value: validatedWidth.value }) }), }, _a)); } return map; }, {}); } return {}; }; ResizedColumnsStore.prototype.convertItem = function (item) { // columns with width.value = auto are hidden if (PivotTable_1.isAbsoluteColumnWidth(item.width)) { var width = item.width; return __assign({ width: width.value }, agGridColumnSizing_1.getAllowGrowToFitProp(width.allowGrowToFit)); } }; ResizedColumnsStore.prototype.getWeakMeasureColumMapItem = function (item) { return { width: item.measureColumnWidthItem.width.value, }; }; ResizedColumnsStore.prototype.isAllMeasureColumWidthUsed = function () { return this.allMeasureColumnWidth !== null; }; ResizedColumnsStore.prototype.getAutoSizeItem = function (column) { var measureHeaderLocalIdentifier = agGridUtils_1.getMappingHeaderMeasureItemLocalIdentifier(column); var result = { width: { value: "auto" } }; if (measureHeaderLocalIdentifier) { result.measureIdentifier = measureHeaderLocalIdentifier; } return result; }; ResizedColumnsStore.prototype.getAllMeasureColumMapItem = function () { return { width: this.allMeasureColumnWidth }; }; ResizedColumnsStore.prototype.getAllMeasureColumnWidth = function () { return { measureColumnWidthItem: { width: { value: this.allMeasureColumnWidth, }, }, }; }; ResizedColumnsStore.prototype.isMatchingWeakWidth = function (item, weakColumnWidth) { return (item.measureIdentifier === weakColumnWidth.measureColumnWidthItem.locator.measureLocatorItem.measureIdentifier); }; return ResizedColumnsStore; }()); exports.ResizedColumnsStore = ResizedColumnsStore; //# sourceMappingURL=ResizedColumnsStore.js.map