@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
91 lines (90 loc) • 3.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StyledColumnWizardColumnSection = exports.isValidStyledColumnColumn = exports.renderStyledColumnColumnSummary = void 0;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const rebass_1 = require("rebass");
const Tabs_1 = require("../../../components/Tabs");
const Tag_1 = require("../../../components/Tag");
const ColumnSelector_1 = require("../../Components/ColumnSelector");
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
const renderStyledColumnColumnSummary = (data) => {
const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
return (React.createElement(rebass_1.Text, { pr: 2, py: 2 },
"Styled Column column:",
' ',
React.createElement(Tag_1.Tag, null, data.ColumnId
? api.columnApi.getFriendlyNameForColumnId(data.ColumnId)
: 'No Column Selected')));
};
exports.renderStyledColumnColumnSummary = renderStyledColumnColumnSummary;
const isValidStyledColumnColumn = (data) => {
if (!data.ColumnId) {
return 'You have to select a Column for Styled Column';
}
return true;
};
exports.isValidStyledColumnColumn = isValidStyledColumnColumn;
const StyledColumnWizardColumnSection = (props) => {
const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
const sortableCols = React.useMemo(() => {
let sortableColumns = [];
if (data.SparklineStyle) {
sortableColumns = api.columnApi.getNumericArrayColumns();
}
else if (data.BadgeStyle) {
sortableColumns = [
...api.columnApi.getNumericColumns(),
...api.columnApi.getTextColumns(),
...api.columnApi.getTextArrayColumns(),
...api.columnApi.getNumberArrayColumns(),
];
}
else {
sortableColumns = api.columnApi.getNumericColumns();
}
const styledColumns = api.styledColumnApi.getStyledColumns();
const usedColumnIds = styledColumns
.map((styledColumn) => {
// filter out current styled column columnID
if (styledColumn.Uuid === data.Uuid) {
return null;
}
return styledColumn.ColumnId;
})
.filter(Boolean);
return sortableColumns.filter((column) => {
return usedColumnIds.every((usedColumnId) => {
return column.columnId !== usedColumnId;
});
});
}, [data]);
const handleColumnsChange = (columnIds) => {
const columnId = columnIds[0];
const emptyRanges = api.columnScopeApi.createCellColorRangesForScope({
ColumnIds: [columnId],
});
const newStyledColumn = {
...data,
ColumnId: columnId,
};
if (newStyledColumn.PercentBarStyle) {
newStyledColumn.PercentBarStyle = {
...newStyledColumn.PercentBarStyle,
CellRanges: emptyRanges,
};
}
if (newStyledColumn.GradientStyle) {
newStyledColumn.GradientStyle = {
...newStyledColumn.GradientStyle,
CellRanges: emptyRanges,
};
}
props.onChange(newStyledColumn);
};
return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
React.createElement(Tabs_1.Tabs.Tab, null, "Column"),
React.createElement(Tabs_1.Tabs.Content, null,
React.createElement(ColumnSelector_1.NewColumnSelector, { availableColumns: sortableCols, selected: data.ColumnId ? [data.ColumnId] : [], singleSelect: true, onChange: handleColumnsChange, allowReorder: false }))));
};
exports.StyledColumnWizardColumnSection = StyledColumnWizardColumnSection;