devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
98 lines (94 loc) • 2.7 kB
JavaScript
var Class = require("../core/class"),
inArray = require("../core/utils/array").inArray,
each = require("../core/utils/iterator").each;
var MemoryKeyValueStorage = Class.inherit({
ctor: function ctor() {
this.storage = {};
},
getItem: function getItem(key) {
return this.storage[key];
},
setItem: function setItem(key, value) {
this.storage[key] = value;
},
removeItem: function removeItem(key) {
delete this.storage[key];
}
});
/**
* @name StateManager
* @publicName StateManager
* @type object
* @module framework/state_manager
* @export default
*/
var StateManager = Class.inherit({
/**
* @name StateManageroptions.storage
* @publicName storage
* @type object
*/
ctor: function ctor(options) {
options = options || {};
this.storage = options.storage || new MemoryKeyValueStorage();
this.stateSources = options.stateSources || [];
},
/**
* @name StateManagerMethods.addStateSource
* @publicName addStateSource(stateSource)
* @type method
* @param1 stateSource:object
*/
addStateSource: function addStateSource(stateSource) {
this.stateSources.push(stateSource);
},
/**
* @name StateManagerMethods.removeStateSource
* @publicName removeStateSource(stateSource)
* @type method
* @param1 stateSource:object
*/
removeStateSource: function removeStateSource(stateSource) {
var index = inArray(stateSource, this.stateSources);
if (index > -1) {
this.stateSources.splice(index, 1);
stateSource.removeState(this.storage);
}
},
/**
* @name StateManagerMethods.saveState
* @publicName saveState()
* @type method
*/
saveState: function saveState() {
var that = this;
each(this.stateSources, function (index, stateSource) {
stateSource.saveState(that.storage);
});
},
/**
* @name StateManagerMethods.restoreState
* @publicName restoreState()
* @type method
*/
restoreState: function restoreState() {
var that = this;
each(this.stateSources, function (index, stateSource) {
stateSource.restoreState(that.storage);
});
},
/**
* @name StateManagerMethods.clearState
* @publicName clearState()
* @type method
*/
clearState: function clearState() {
var that = this;
each(this.stateSources, function (index, stateSource) {
stateSource.removeState(that.storage);
});
}
});
module.exports = StateManager;
module.exports.MemoryKeyValueStorage = MemoryKeyValueStorage;
;