devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
60 lines (58 loc) • 2.41 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/r1/utils/agenda.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.getDateByIndex = exports.calculateStartViewDate = exports.calculateRows = exports.calculateEndViewDate = void 0;
var _m_utils_time_zone = _interopRequireDefault(require("../../m_utils_time_zone"));
var _base = require("./base");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const calculateStartViewDate = (currentDate, startDayHour) => {
const validCurrentDate = new Date(currentDate);
return (0, _base.setOptionHour)(validCurrentDate, startDayHour)
};
exports.calculateStartViewDate = calculateStartViewDate;
const getDayStart = date => new Date(date).setUTCHours(0, 0, 0, 0);
const getDateByIndex = (startViewDate, index) => {
const date = new Date(startViewDate);
date.setDate(date.getDate() + index);
return date
};
exports.getDateByIndex = getDateByIndex;
const calculateEndViewDate = (startViewDate, endDayHour, agendaDuration) => {
const lastVisibleDate = getDateByIndex(startViewDate, Math.max(agendaDuration - 1, 0));
const endViewDate = (0, _base.setOptionHour)(lastVisibleDate, endDayHour);
return new Date(endViewDate.getTime() - 6e4)
};
exports.calculateEndViewDate = calculateEndViewDate;
const calculateRows = (appointments, agendaDuration, startViewDate, groupCount) => {
const intervalsStartMap = new Map;
const result = Array.from({
length: groupCount || 1
}, () => new Array(agendaDuration).fill(0));
for (let i = 0; i < agendaDuration; i += 1) {
const date = getDateByIndex(startViewDate, i);
const dayStart = getDayStart(_m_utils_time_zone.default.createUTCDateWithLocalOffset(date));
intervalsStartMap.set(dayStart, i)
}
appointments.forEach(appointment => {
const appointmentStart = getDayStart(appointment.startDateUTC);
const intervalIndex = intervalsStartMap.get(appointmentStart);
if (void 0 !== intervalIndex) {
result[appointment.groupIndex][intervalIndex] += 1
}
});
return result
};
exports.calculateRows = calculateRows;