@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
79 lines (78 loc) • 3.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PivotDetailsPopoup = void 0;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const InfiniteTable_1 = require("../../components/InfiniteTable");
const AdaptableContext_1 = require("../AdaptableContext");
const tableDOMProps = {
style: {
height: '100%',
minWidth: '10rem',
minHeight: 300,
},
};
const columnTypes = {
default: {
defaultFlex: 1,
},
};
const PivotDetailsPopoup = (props) => {
const adaptable = (0, AdaptableContext_1.useAdaptable)();
const adaptableApi = adaptable.api;
const primaryKey = adaptableApi.optionsApi.getPrimaryKey();
const { hasPivotValue, rows, rowGroups, columnId, layout, aggColumn, pivotValue, pivotColumnId, } = props.popupProps;
let data = rows;
const columns = React.useMemo(() => {
const getFriendlyName = (columnId) => adaptableApi.columnApi.getFriendlyNameForColumnId(columnId);
const pivotPreviewOptionColumn = adaptableApi.optionsApi.getLayoutOptions()?.pivotPreviewColumns;
let pivotPreviewExtraColumns = [];
if (typeof pivotPreviewOptionColumn === 'function') {
const pivotPreviewColumnsContext = {
layout: layout,
columnId: columnId,
...adaptableApi.internalApi.buildBaseContext(),
};
pivotPreviewExtraColumns = pivotPreviewOptionColumn(pivotPreviewColumnsContext);
}
else if (Array.isArray(pivotPreviewOptionColumn)) {
pivotPreviewExtraColumns = pivotPreviewOptionColumn;
}
let columns = {
[primaryKey]: { field: primaryKey, header: getFriendlyName(primaryKey) },
};
if (hasPivotValue) {
// pivot_license_MIT License_stargazers_count
// splitting by _ does not work
columns = {
...columns,
[aggColumn]: { field: aggColumn, header: getFriendlyName(aggColumn) },
[pivotColumnId]: { field: pivotColumnId, header: getFriendlyName(pivotColumnId) },
};
data = rows.filter((row) => row?.[pivotColumnId] === pivotValue);
}
else {
columns = {
...columns,
[columnId]: { field: columnId, header: getFriendlyName(columnId) },
};
}
const extraColumns = [];
if (Array.isArray(rowGroups) && rowGroups.length > 0) {
extraColumns.push(...rowGroups);
}
if (Array.isArray(pivotPreviewExtraColumns) && pivotPreviewExtraColumns.length > 0) {
extraColumns.push(...pivotPreviewExtraColumns);
}
return {
...columns,
...extraColumns.reduce((acc, colId) => ({
...acc,
[colId]: { field: colId, header: getFriendlyName(colId) },
}), {}),
};
}, [props.popupProps]);
return (React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: columnId },
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: columnTypes, domProps: tableDOMProps, columns: columns })));
};
exports.PivotDetailsPopoup = PivotDetailsPopoup;