@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
238 lines • 12.2 kB
JavaScript
"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