UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

86 lines (85 loc) 4.45 kB
/** * DevExtreme (cjs/__internal/scheduler/utils/resource_manager/appointment_groups_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/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setAppointmentGroupValues = exports.groupAppointmentsByGroupLeafs = exports.getSafeGroupValues = exports.getResourceItemById = exports.getRawAppointmentGroupValues = exports.getAppointmentResources = exports.getAppointmentGroupValues = exports.getAppointmentGroupIndex = void 0; var _m_array = require("../../../core/utils/m_array"); var _m_common = require("../../../core/utils/m_common"); const getResourceItemById = (resource, resourceId) => resource.items.find((item => (0, _m_common.equalByValue)(item.id, resourceId))); exports.getResourceItemById = getResourceItemById; const getAppointmentGroupValues = (rawAppointment, resources) => resources.reduce(((result, resource) => { const ids = resource.idsGetter(rawAppointment); if (ids.length) { result[resource.resourceIndex] = ids } return result }), {}); exports.getAppointmentGroupValues = getAppointmentGroupValues; const getRawAppointmentGroupValues = (rawAppointment, resources) => resources.reduce(((result, resource) => { const ids = resource.idsGetter(rawAppointment); if (ids.length) { result[resource.resourceIndex] = resource.allowMultiple ? ids : ids[0] } return result }), {}); exports.getRawAppointmentGroupValues = getRawAppointmentGroupValues; const getSafeGroupValues = groupValues => Object.entries(groupValues).reduce(((result, _ref) => { let [key, value] = _ref; result[key] = (0, _m_array.wrapToArray)(value); return result }), {}); exports.getSafeGroupValues = getSafeGroupValues; const getAppointmentResources = (appointmentGroupValues, resourceById) => Object.entries(appointmentGroupValues).reduce(((result, _ref2) => { let [resourceIndex, resourceIds] = _ref2; const resource = resourceById[resourceIndex]; const values = resourceIds.map((id => { var _getResourceItemById; return null === (_getResourceItemById = getResourceItemById(resource, id)) || void 0 === _getResourceItemById ? void 0 : _getResourceItemById.text })).filter(Boolean); if (values.length) { result.push({ label: resource.resourceName, values: values }) } return result }), []); exports.getAppointmentResources = getAppointmentResources; const setAppointmentGroupValues = function(item, resourceById) { let groups = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; Object.entries(groups).forEach((_ref3 => { let [resourceIndex, resourceId] = _ref3; const resource = resourceById[resourceIndex]; const value = resource.allowMultiple ? [resourceId] : resourceId; resource.idsSetter(item, value) })) }; exports.setAppointmentGroupValues = setAppointmentGroupValues; const getAppointmentGroupIndex = (appointmentGroupValues, groupLeafs) => groupLeafs.filter((leaf => Object.entries(leaf.grouped).every((_ref4 => { var _appointmentGroupValu; let [resourceIndex, resourceId] = _ref4; return null === (_appointmentGroupValu = appointmentGroupValues[resourceIndex]) || void 0 === _appointmentGroupValu ? void 0 : _appointmentGroupValu.includes(resourceId) })))).map((leaf => leaf.groupIndex)); exports.getAppointmentGroupIndex = getAppointmentGroupIndex; const groupAppointmentsByGroupLeafs = (resourceById, groupLeafs, appointments) => { if (!groupLeafs.length) { return [appointments] } return groupLeafs.map((leaf => appointments.filter((item => { const appointmentGroupValues = getAppointmentGroupValues(item, Object.values(resourceById)); return Object.entries(leaf.grouped).every((_ref5 => { var _appointmentGroupValu2; let [resourceIndex, resourceId] = _ref5; return null === (_appointmentGroupValu2 = appointmentGroupValues[resourceIndex]) || void 0 === _appointmentGroupValu2 ? void 0 : _appointmentGroupValu2.includes(resourceId) })) })))) }; exports.groupAppointmentsByGroupLeafs = groupAppointmentsByGroupLeafs;