devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
93 lines (90 loc) • 3.65 kB
JavaScript
/**
* DevExtreme (cjs/__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/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AppointmentDataAccessor = void 0;
var _data = require("../../../../core/utils/data");
var _date_serialization = _interopRequireDefault(require("../../../../core/utils/date_serialization"));
var _data_accessor = require("./data_accessor");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
const isDateField = field => "startDate" === field || "endDate" === field;
class AppointmentDataAccessor extends _data_accessor.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: (0, _data.compileGetter)(expr),
setter: (0, _data.compileSetter)(expr)
}
}
getDateFieldAccessExpressions(expr) {
const {
getter: commonGetter,
setter: commonSetter
} = this.getCommonAccessExpressions(expr);
let serializationFormatCache;
return {
getter: object => this.forceIsoDateParsing ? _date_serialization.default.deserializeDate(commonGetter(object)) : commonGetter(object),
setter: (object, value) => {
if (this.dateSerializationFormat) {
serializationFormatCache = this.dateSerializationFormat
} else if (this.forceIsoDateParsing && !serializationFormatCache) {
const oldValue = commonGetter(object);
serializationFormatCache = _date_serialization.default.getDateSerializationFormat(oldValue)
}
const newValue = _date_serialization.default.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
}
}
exports.AppointmentDataAccessor = AppointmentDataAccessor;