UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

73 lines (72 loc) 3.07 kB
/** * DevExtreme (esm/__internal/scheduler/utils/resource_manager/group_utils.js) * Version: 25.1.3 * Build date: Wed Jun 25 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import _extends from "@babel/runtime/helpers/esm/extends"; export 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 => _extends({}, node, { grouped: _extends({}, node.grouped, leaf.grouped) }))); nextLeafs.push(...leaf.children) })); leafs = nextLeafs })); const groupLeafs = leafs.map(((leaf, index) => _extends({}, leaf, { groupIndex: index }))); return { groupTree: head[0].children, groupLeafs: groupLeafs } }; export const getAllGroupValues = groupsLeafs => groupsLeafs.map((group => group.grouped)); export 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) ?? {} }; export 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 }; export 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 _extends({}, resource, { items: resource.items.filter((item => item.id === leafGroups[resourceIndex])) }) })) };