@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
86 lines (85 loc) • 3.47 kB
JavaScript
import * as React from 'react';
import { PivotRowGroupSummaryView, TableRowGroupSummaryView, } from '../../../View/Wizard/rowGroupSummaryTags';
export const ROW_GROUP_DISPLAY_TYPE_LABELS = {
single: 'Single Column',
multi: 'Multiple Columns',
groupRows: 'Full Width Group Rows',
};
export const ROW_GROUP_DISPLAY_TYPE_DESCRIPTIONS = {
single: 'All Row Grouped Columns display in one hierarchical Column',
multi: 'Each Row Grouped Column displays in its own, separate, Column',
groupRows: 'Row groups display as full-width rows (no group column and no aggregations)',
};
export const ROW_GROUP_BEHAVIOR_LABELS = {
'always-collapsed': 'All Collapsed',
'always-expanded': 'All Expanded',
expanded: 'Mostly Expanded',
collapsed: 'Mostly Collapsed',
};
export const ROW_GROUP_BEHAVIOR_DESCRIPTIONS = {
'always-collapsed': 'All Grouped Rows are always collapsed',
'always-expanded': 'All Grouped Rows are always expanded',
expanded: 'All Grouped Rows expanded, other than those collapsed when Layout last displayed',
collapsed: 'All Grouped Rows collapsed, other than those expanded when Layout last displayed',
};
export function getRowGroupDisplayTypeLabel(layout) {
const displayType = layout.RowGroupDisplayType ?? 'single';
return ROW_GROUP_DISPLAY_TYPE_LABELS[displayType];
}
export function getRowGroupDisplayTypeDescription(layout) {
const displayType = layout.RowGroupDisplayType ?? 'single';
return ROW_GROUP_DISPLAY_TYPE_DESCRIPTIONS[displayType];
}
export function getRowGroupBehaviorLabel(layout) {
const behavior = layout.RowGroupValues?.RowGroupDefaultBehavior ?? 'always-collapsed';
return ROW_GROUP_BEHAVIOR_LABELS[behavior];
}
export function getRowGroupBehaviorDescription(layout) {
const behavior = layout.RowGroupValues?.RowGroupDefaultBehavior ?? 'always-collapsed';
return ROW_GROUP_BEHAVIOR_DESCRIPTIONS[behavior];
}
export function getTableRowGroupSummaryValues(layout, api) {
const columnIdToFriendlyName = (columnId) => api.columnApi.getFriendlyNameForColumnId(columnId);
const values = [];
if (!layout.RowGroupedColumns?.length) {
values.push('No Row Grouped Columns');
}
else {
layout.RowGroupedColumns.forEach((colId) => {
values.push(columnIdToFriendlyName(colId));
});
}
values.push(`Display Type: ${getRowGroupDisplayTypeLabel(layout)}`);
values.push(`Behaviour: ${getRowGroupBehaviorLabel(layout)}`);
return values;
}
export function getLayoutTableRowGroupViewItems(layout, api) {
return [
{
name: 'Row Groups',
view: () => React.createElement(TableRowGroupSummaryView, { layout, api }),
},
];
}
export function getPivotRowGroupSummaryValues(layout, api) {
const columnIdToFriendlyName = (columnId) => api.columnApi.getFriendlyNameForColumnId(columnId);
const values = [];
if (!layout.PivotGroupedColumns?.length) {
values.push('No Row Grouped Columns');
}
else {
layout.PivotGroupedColumns.forEach((colId) => {
values.push(columnIdToFriendlyName(colId));
});
}
values.push(`Behaviour: ${getRowGroupBehaviorLabel(layout)}`);
return values;
}
export function getLayoutPivotRowGroupViewItems(layout, api) {
return [
{
name: 'Row Groups',
view: () => React.createElement(PivotRowGroupSummaryView, { layout, api }),
},
];
}