devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
82 lines (81 loc) • 3.47 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/utils/resource_manager/group_utils.js)
* Version: 25.2.3
* Build date: Fri Dec 12 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.groupResources = exports.getResourcesByGroupIndex = exports.getLeafGroupValues = exports.getGroupTexts = exports.getAllGroupValues = void 0;
const groupResources = (resourceById, groups) => {
if (!groups.length || 0 === Object.keys(resourceById).length) {
return {
groupTree: [],
groupLeafs: []
}
}
const head = [{}];
let leafs = head;
groups.filter((group => resourceById[group])).forEach((group => {
const resource = resourceById[group];
const nodes = resource.items.map((item => ({
resourceText: item.text,
resourceIndex: resource.resourceIndex,
grouped: {
[resource.resourceIndex]: item.id
},
children: []
})));
const nextLeafs = [];
leafs.forEach((leaf => {
leaf.children = nodes.map((node => Object.assign({}, node, {
grouped: Object.assign({}, node.grouped, leaf.grouped)
})));
nextLeafs.push(...leaf.children)
}));
leafs = nextLeafs
}));
const groupLeafs = leafs.map(((leaf, index) => Object.assign({}, leaf, {
groupIndex: index
})));
return {
groupTree: head[0].children,
groupLeafs: groupLeafs
}
};
exports.groupResources = groupResources;
const getAllGroupValues = groupsLeafs => groupsLeafs.map((group => group.grouped));
exports.getAllGroupValues = getAllGroupValues;
const getLeafGroupValues = (groupsLeafs, groupIndex) => {
var _groupsLeafs$find;
return (null === (_groupsLeafs$find = groupsLeafs.find((group => group.groupIndex === groupIndex))) || void 0 === _groupsLeafs$find ? void 0 : _groupsLeafs$find.grouped) ?? {}
};
exports.getLeafGroupValues = getLeafGroupValues;
const getGroupTexts = (groups, groupsLeafs, resourceById, groupIndex) => {
const leafGroups = getLeafGroupValues(groupsLeafs, groupIndex);
const textPath = groups.map((resourceIndex => {
var _resource$items$find;
const resourceId = leafGroups[resourceIndex];
const resource = resourceById[resourceIndex];
return null === resource || void 0 === resource || null === (_resource$items$find = resource.items.find((item => item.id === resourceId))) || void 0 === _resource$items$find ? void 0 : _resource$items$find.text
})).filter(Boolean);
return textPath
};
exports.getGroupTexts = getGroupTexts;
const getResourcesByGroupIndex = (groupsLeafs, resourceById, groupIndex) => {
const leafGroups = getLeafGroupValues(groupsLeafs, groupIndex);
return Object.entries(resourceById).filter((_ref => {
let [resourceIndex] = _ref;
return void 0 !== leafGroups[resourceIndex]
})).map((_ref2 => {
let [resourceIndex, resource] = _ref2;
return Object.assign({}, resource, {
items: resource.items.filter((item => item.id === leafGroups[resourceIndex]))
})
}))
};
exports.getResourcesByGroupIndex = getResourcesByGroupIndex;