hangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegram
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.8 KiB
75 lines
1.8 KiB
9 years ago
|
/**
|
||
|
* A Provider implementation which saves and retrieves state via the HTML5 localStorage API
|
||
|
* or IE `userData` storage. For details see `Ext.util.LocalStorage`.
|
||
|
*
|
||
|
* If the browser does not support local storage, there will be no attempt to read the state.
|
||
|
* Before creating this class, check {@link Ext.util.LocalStorage#supported}.
|
||
|
*/
|
||
|
Ext.define('Ext.state.LocalStorageProvider', {
|
||
|
extend: 'Ext.state.Provider',
|
||
|
requires: [
|
||
|
'Ext.util.LocalStorage'
|
||
|
],
|
||
|
|
||
|
alias: 'state.localstorage',
|
||
|
|
||
|
constructor: function () {
|
||
|
var me = this;
|
||
|
|
||
|
me.callParent(arguments);
|
||
|
|
||
|
me.store = me.getStorageObject();
|
||
|
if (me.store) {
|
||
|
me.state = me.readLocalStorage();
|
||
|
} else {
|
||
|
me.state = {};
|
||
|
}
|
||
|
},
|
||
|
|
||
|
readLocalStorage: function () {
|
||
|
var store = this.store,
|
||
|
data = {},
|
||
|
keys = store.getKeys(),
|
||
|
i = keys.length,
|
||
|
key;
|
||
|
|
||
|
while (i--) {
|
||
|
key = keys[i];
|
||
|
data[key] = this.decodeValue(store.getItem(key));
|
||
|
}
|
||
|
|
||
|
return data;
|
||
|
},
|
||
|
|
||
|
set: function (name, value) {
|
||
|
var me = this;
|
||
|
|
||
|
me.clear(name);
|
||
|
if (value != null) { // !== undefined && !== null
|
||
|
me.store.setItem(name, me.encodeValue(value));
|
||
|
me.callParent(arguments);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// private
|
||
|
clear: function (name) {
|
||
|
this.store.removeItem(name);
|
||
|
this.callParent(arguments);
|
||
|
},
|
||
|
|
||
|
getStorageObject: function () {
|
||
|
var prefix = this.prefix,
|
||
|
id = prefix,
|
||
|
n = id.length - 1;
|
||
|
|
||
|
if (id.charAt(n) === '-') {
|
||
|
id = id.substring(0, n);
|
||
|
}
|
||
|
|
||
|
return new Ext.util.LocalStorage({
|
||
|
id: id,
|
||
|
prefix: prefix
|
||
|
});
|
||
|
}
|
||
|
});
|