devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
37 lines (36 loc) • 1.48 kB
JavaScript
/**
* DevExtreme (esm/__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/
*/
import timeZoneUtils from "../../m_utils_time_zone";
import {
setOptionHour
} from "./base";
export const calculateStartViewDate = (currentDate, startDayHour) => {
const validCurrentDate = new Date(currentDate);
return setOptionHour(validCurrentDate, startDayHour)
};
const getDayStart = date => new Date(date).setUTCHours(0, 0, 0, 0);
export const calculateRows = (appointments, agendaDuration, currentDate, groupCount) => {
const dayMs = getDayStart(timeZoneUtils.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
};