UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

67 lines (66 loc) 3.13 kB
/** * DevExtreme (cjs/__internal/scheduler/r1/utils/get_appointment_data_items.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/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceIncorrectEndDate = exports.getAppointmentDataItems = void 0; var _type = require("../../../../core/utils/type"); var _date = require("../../../core/utils/date"); var _m_date = require("../../../core/utils/m_date"); var _appointment_adapter = require("../../utils/appointment_adapter/appointment_adapter"); const toMs = _m_date.dateUtils.dateToMilliseconds; const replaceIncorrectEndDate = (rawAppointment, appointmentMinDuration, dataAccessors) => { const startDate = dataAccessors.get("startDate", rawAppointment); const endDate = dataAccessors.get("endDate", rawAppointment); if (!_date.dateUtilsTs.isValidDate(startDate)) { return false } const isEndDateIncorrect = !_date.dateUtilsTs.isValidDate(endDate) || startDate.getTime() > endDate.getTime(); if (isEndDateIncorrect) { const isAllDay = dataAccessors.get("allDay", rawAppointment); const correctedEndDate = isAllDay ? _m_date.dateUtils.setToDayEnd(new Date(startDate)) : new Date(startDate.getTime() + appointmentMinDuration * toMs("minute")); dataAccessors.set("endDate", rawAppointment, correctedEndDate) } return true }; exports.replaceIncorrectEndDate = replaceIncorrectEndDate; const getAppointmentDataItems = (dataItems, dataAccessors, cellDurationInMinutes, timeZoneCalculator) => { const result = []; null === dataItems || void 0 === dataItems || dataItems.forEach((rawAppointment => { const isAppointmentSafe = replaceIncorrectEndDate(rawAppointment, cellDurationInMinutes, dataAccessors); if (!isAppointmentSafe) { return } const adapter = new _appointment_adapter.AppointmentAdapter(rawAppointment, dataAccessors); const { startDate: startDate, endDate: endDate } = adapter.getCalculatedDates(timeZoneCalculator, "toGrid"); const { recurrenceRule: recurrenceRule } = adapter; const hasRecurrenceRule = adapter.isRecurrent; const visible = (0, _type.isDefined)(rawAppointment.visible) ? Boolean(rawAppointment.visible) : true; result.push({ allDay: Boolean(adapter.allDay), startDate: startDate, startDateTimeZone: rawAppointment.startDateTimeZone, endDate: endDate, endDateTimeZone: rawAppointment.endDateTimeZone, recurrenceRule: recurrenceRule, recurrenceException: adapter.recurrenceException, hasRecurrenceRule: hasRecurrenceRule, visible: visible, rawAppointment: rawAppointment }) })); return result }; exports.getAppointmentDataItems = getAppointmentDataItems;