UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

60 lines (58 loc) 2.41 kB
/** * 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/ */ "use strict"; 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;