devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
86 lines (85 loc) • 4.45 kB
JavaScript
/**
* 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/
*/
;
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;