devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
93 lines (91 loc) • 3.61 kB
JavaScript
/**
* DevExtreme (cjs/ui/scheduler/instanceFactory.js)
* Version: 21.2.4
* Build date: Mon Dec 06 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
exports.getTimeZoneCalculator = exports.getModelProvider = exports.generateKey = exports.disposeFactoryInstances = exports.createModelProvider = exports.createInstance = exports.createFactoryInstances = void 0;
var _type = require("../../core/utils/type");
var _modelProvider = require("./modelProvider");
var _utils = require("../../renovation/ui/scheduler/timeZoneCalculator/utils");
var _utils2 = _interopRequireDefault(require("./utils.timeZone"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
var Names = {
timeZoneCalculator: "timeZoneCalculator",
appointmentDataProvider: "appointmentDataProvider",
model: "model",
modelProvider: "modelProvider"
};
var factoryInstances = {};
var tailIndex = -1;
var generateKey = function(key) {
return (0, _type.isDefined)(key) ? key : ++tailIndex
};
exports.generateKey = generateKey;
var createFactoryInstances = function(options) {
var key = generateKey(options.key);
createModelProvider(key, options.model);
createTimeZoneCalculator(key, options.timeZone);
return key
};
exports.createFactoryInstances = createFactoryInstances;
var createInstance = function(name, key, callback) {
if (!(0, _type.isDefined)(factoryInstances[name])) {
factoryInstances[name] = {}
}
var result = callback();
factoryInstances[name][key] = result;
return result
};
exports.createInstance = createInstance;
var getInstance = function(name, key) {
return factoryInstances[name] ? factoryInstances[name][key] : void 0
};
var removeInstance = function(name, key) {
if (getInstance(name, key)) {
factoryInstances[name] = null
}
};
var createTimeZoneCalculator = function(key, currentTimeZone) {
return createInstance(Names.timeZoneCalculator, key, (function() {
return new _utils.TimeZoneCalculator({
getClientOffset: function(date) {
return _utils2.default.getClientTimezoneOffset(date)
},
getCommonOffset: function(date, timeZone) {
return _utils2.default.calculateTimezoneByValue(timeZone || currentTimeZone, date)
},
getAppointmentOffset: function(date, appointmentTimezone) {
return _utils2.default.calculateTimezoneByValue(appointmentTimezone, date)
}
})
}))
};
var createModelProvider = function(key, model) {
return createInstance(Names.modelProvider, key, (function() {
var modelProvider = getInstance(Names.modelProvider, key);
return (0, _type.isDefined)(modelProvider) ? modelProvider : new _modelProvider.ModelProvider(model)
}))
};
exports.createModelProvider = createModelProvider;
var disposeFactoryInstances = function(key) {
Object.getOwnPropertyNames(Names).forEach((function(name) {
removeInstance(name, key)
}))
};
exports.disposeFactoryInstances = disposeFactoryInstances;
var getTimeZoneCalculator = function(key) {
return getInstance(Names.timeZoneCalculator, key)
};
exports.getTimeZoneCalculator = getTimeZoneCalculator;
var getModelProvider = function(key) {
return getInstance(Names.modelProvider, key)
};
exports.getModelProvider = getModelProvider;