devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
71 lines (70 loc) • 2.98 kB
JavaScript
/**
* DevExtreme (cjs/__internal/grids/data_grid/ai_assistant/commands/grouping.js)
* Version: 26.1.3
* Build date: Wed Jun 10 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.groupingCommand = exports.clearGroupingCommand = void 0;
var _defineGridCommand = require("../../../../grids/grid_core/ai_assistant/commands/defineGridCommand");
var _zod = require("zod");
const groupingCommandSchema = _zod.z.object({
dataField: _zod.z.string(),
groupIndex: _zod.z.number().int().nonnegative().nullable()
}).strict();
const getGroupingDefaultMessage = (args, column) => {
const columnName = (null === column || void 0 === column ? void 0 : column.caption) ?? args.dataField;
if (null === args.groupIndex) {
return `Ungroup data against "${columnName}".`
}
return `Group data against "${columnName}".`
};
const groupingCommand = exports.groupingCommand = (0, _defineGridCommand.defineGridCommand)({
name: "grouping",
description: "Group rows by a column at the given level (0 = outermost). Setting groupIndex to an in-use value shifts the existing column down; gaps auto-collapse. Pass null to ungroup. To replace existing grouping, ungroup each currently grouped column, then group new ones at consecutive indices 0, 1, 2, ...",
schema: groupingCommandSchema,
execute: (component, _ref) => {
let {
success: success,
failure: failure
} = _ref;
return args => {
const columnsController = component.getController("columns");
const column = columnsController.columnOption(args.dataField);
const defaultMessage = getGroupingDefaultMessage(args, column);
if (!column || false === column.allowGrouping) {
return Promise.resolve(failure(defaultMessage))
}
try {
columnsController.columnOption(column.index, "groupIndex", args.groupIndex ?? void 0);
return Promise.resolve(success(defaultMessage))
} catch {
return Promise.resolve(failure(defaultMessage))
}
}
}
});
const clearGroupingCommand = exports.clearGroupingCommand = (0, _defineGridCommand.defineGridCommand)({
name: "clearGrouping",
description: "Remove grouping from all columns",
schema: _zod.z.object({}).strict(),
execute: (component, _ref2) => {
let {
success: success,
failure: failure
} = _ref2;
return () => {
try {
component.getController("columns").clearGrouping();
return Promise.resolve(success("Clear grouping."))
} catch {
return Promise.resolve(failure("Clear grouping."))
}
}
}
});