devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
75 lines (74 loc) • 2.99 kB
JavaScript
/**
* 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
}
}