UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

153 lines (151 loc) 5.78 kB
/** * DevExtreme (cjs/__internal/scheduler/m_appointment_adapter.js) * Version: 24.2.6 * Build date: Mon Mar 17 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.default = exports.createAppointmentAdapter = void 0; var _extend = require("../../core/utils/extend"); var _object = require("../../core/utils/object"); var _ui = _interopRequireDefault(require("../../ui/widget/ui.errors")); var _m_expression_utils = require("./m_expression_utils"); var _m_recurrence = require("./m_recurrence"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const PROPERTY_NAMES = { startDate: "startDate", endDate: "endDate", allDay: "allDay", text: "text", description: "description", startDateTimeZone: "startDateTimeZone", endDateTimeZone: "endDateTimeZone", recurrenceRule: "recurrenceRule", recurrenceException: "recurrenceException", disabled: "disabled" }; class AppointmentAdapter { constructor(rawAppointment, dataAccessors, timeZoneCalculator, options) { this.rawAppointment = rawAppointment; this.dataAccessors = dataAccessors; this.timeZoneCalculator = timeZoneCalculator; this.options = options } get duration() { return this.endDate ? this.endDate - this.startDate : 0 } get startDate() { const result = this.getField(PROPERTY_NAMES.startDate); return void 0 === result ? result : new Date(result) } set startDate(value) { this.setField(PROPERTY_NAMES.startDate, value) } get endDate() { const result = this.getField(PROPERTY_NAMES.endDate); return void 0 === result ? result : new Date(result) } set endDate(value) { this.setField(PROPERTY_NAMES.endDate, value) } get allDay() { return this.getField(PROPERTY_NAMES.allDay) } set allDay(value) { this.setField(PROPERTY_NAMES.allDay, value) } get text() { return this.getField(PROPERTY_NAMES.text) } set text(value) { this.setField(PROPERTY_NAMES.text, value) } get description() { return this.getField(PROPERTY_NAMES.description) } set description(value) { this.setField(PROPERTY_NAMES.description, value) } get startDateTimeZone() { return this.getField(PROPERTY_NAMES.startDateTimeZone) } get endDateTimeZone() { return this.getField(PROPERTY_NAMES.endDateTimeZone) } get recurrenceRule() { return this.getField(PROPERTY_NAMES.recurrenceRule) } set recurrenceRule(value) { this.setField(PROPERTY_NAMES.recurrenceRule, value) } get recurrenceException() { return this.getField(PROPERTY_NAMES.recurrenceException) } set recurrenceException(value) { this.setField(PROPERTY_NAMES.recurrenceException, value) } get disabled() { return !!this.getField(PROPERTY_NAMES.disabled) } get isRecurrent() { return (0, _m_recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(this.recurrenceRule) } getField(property) { return _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, property, this.rawAppointment) } setField(property, value) { return _m_expression_utils.ExpressionUtils.setField(this.dataAccessors, property, this.rawAppointment, value) } calculateStartDate(pathTimeZoneConversion) { if (!this.startDate || isNaN(this.startDate.getTime())) { throw _ui.default.Error("E1032", this.text) } return this.calculateDate(this.startDate, this.startDateTimeZone, pathTimeZoneConversion) } calculateEndDate(pathTimeZoneConversion) { return this.calculateDate(this.endDate, this.endDateTimeZone, pathTimeZoneConversion) } calculateDate(date, appointmentTimeZone, pathTimeZoneConversion) { if (!date) { return } return this.timeZoneCalculator.createDate(date, { appointmentTimeZone: appointmentTimeZone, path: pathTimeZoneConversion }) } clone(options) { const result = new AppointmentAdapter((0, _object.deepExtendArraySafe)({}, this.rawAppointment, false, false, false, true), this.dataAccessors, this.timeZoneCalculator, options); if (null !== options && void 0 !== options && options.pathTimeZone) { result.calculateDates(options.pathTimeZone) } return result } calculateDates(pathTimeZoneConversion) { this.startDate = this.calculateStartDate(pathTimeZoneConversion); this.endDate = this.calculateEndDate(pathTimeZoneConversion); return this } source() { let serializeDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; if (serializeDate) { const clonedAdapter = this.clone(); clonedAdapter.startDate = this.startDate; clonedAdapter.endDate = this.endDate; return clonedAdapter.source() } return (0, _extend.extend)({}, this.rawAppointment) } } var _default = exports.default = AppointmentAdapter; const createAppointmentAdapter = (rawAppointment, dataAccessors, timeZoneCalculator, options) => new AppointmentAdapter(rawAppointment, dataAccessors, timeZoneCalculator, options); exports.createAppointmentAdapter = createAppointmentAdapter;