UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

75 lines (74 loc) 2.99 kB
/** * DevExtreme (esm/__internal/scheduler/utils/data_accessor/appointment_data_accessor.js) * Version: 24.2.7 * Build date: Mon Apr 28 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import _extends from "@babel/runtime/helpers/esm/extends"; import { compileGetter, compileSetter } from "../../../../core/utils/data"; import dateSerialization from "../../../../core/utils/date_serialization"; import { DataAccessor } from "./data_accessor"; const isDateField = field => "startDate" === field || "endDate" === field; export class AppointmentDataAccessor extends DataAccessor { constructor(fields) { let forceIsoDateParsing = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; let dateSerializationFormat = arguments.length > 2 ? arguments[2] : void 0; super(); this.forceIsoDateParsing = forceIsoDateParsing; this.dateSerializationFormat = dateSerializationFormat; this.expr = _extends({}, fields); this.updateExpressions(fields) } getCommonAccessExpressions(expr) { return { getter: compileGetter(expr), setter: compileSetter(expr) } } getDateFieldAccessExpressions(expr) { const { getter: commonGetter, setter: commonSetter } = this.getCommonAccessExpressions(expr); let serializationFormatCache; return { getter: object => this.forceIsoDateParsing ? dateSerialization.deserializeDate(commonGetter(object)) : commonGetter(object), setter: (object, value) => { if (this.dateSerializationFormat) { serializationFormatCache = this.dateSerializationFormat } else if (this.forceIsoDateParsing && !serializationFormatCache) { const oldValue = commonGetter(object); serializationFormatCache = dateSerialization.getDateSerializationFormat(oldValue) } const newValue = dateSerialization.serializeDate(value, serializationFormatCache); commonSetter(object, newValue) } } } getAccessExpressions(name, expr) { return isDateField(name) ? this.getDateFieldAccessExpressions(expr) : this.getCommonAccessExpressions(expr) } updateExpression(field, expr) { const name = field.replace("Expr", ""); if (!expr) { delete this.getter[name]; delete this.setter[name]; delete this.expr[field]; return } const { getter: getter, setter: setter } = this.getAccessExpressions(name, expr); this.getter[name] = getter; this.setter[name] = setter; this.expr[field] = expr } }