devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
48 lines (46 loc) • 1.86 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/r1/utils/agenda.js)
* Version: 25.2.8
* Build date: Mon Jun 08 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.calculateStartViewDate = exports.calculateRows = 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 calculateRows = (appointments, agendaDuration, currentDate, groupCount) => {
const dayMs = getDayStart(_m_utils_time_zone.default.createUTCDateWithLocalOffset(currentDate));
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 day = new Date(dayMs);
intervalsStartMap.set(day.setUTCDate(day.getUTCDate() + i), 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;