]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/src/state/LocalStorageProvider.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / src / state / LocalStorageProvider.js
CommitLineData
6527f429
DM
1/**\r
2 * A Provider implementation which saves and retrieves state via the HTML5 localStorage API\r
3 * or IE `userData` storage. For details see `Ext.util.LocalStorage`.\r
4 * \r
5 * If the browser does not support local storage, there will be no attempt to read the state.\r
6 * Before creating this class, check {@link Ext.util.LocalStorage#supported}.\r
7 */\r
8Ext.define('Ext.state.LocalStorageProvider', {\r
9 extend: 'Ext.state.Provider',\r
10 requires: [\r
11 'Ext.util.LocalStorage'\r
12 ],\r
13 \r
14 alias: 'state.localstorage',\r
15 \r
16 constructor: function () {\r
17 var me = this;\r
18\r
19 me.callParent(arguments);\r
20\r
21 me.store = me.getStorageObject();\r
22 if (me.store) {\r
23 me.state = me.readLocalStorage();\r
24 } else {\r
25 me.state = {};\r
26 }\r
27 },\r
28 \r
29 readLocalStorage: function () {\r
30 var store = this.store,\r
31 data = {},\r
32 keys = store.getKeys(),\r
33 i = keys.length,\r
34 key;\r
35 \r
36 while (i--) {\r
37 key = keys[i];\r
38 data[key] = this.decodeValue(store.getItem(key));\r
39 }\r
40\r
41 return data;\r
42 },\r
43 \r
44 set: function (name, value) {\r
45 var me = this;\r
46 \r
47 me.clear(name);\r
48 if (value != null) { // !== undefined && !== null\r
49 me.store.setItem(name, me.encodeValue(value));\r
50 me.callParent(arguments);\r
51 }\r
52 },\r
53\r
54 /**\r
55 * @private\r
56 */\r
57 clear: function (name) {\r
58 this.store.removeItem(name);\r
59 this.callParent(arguments);\r
60 },\r
61 \r
62 getStorageObject: function () {\r
63 var prefix = this.prefix,\r
64 id = prefix,\r
65 n = id.length - 1;\r
66\r
67 if (id.charAt(n) === '-') {\r
68 id = id.substring(0, n);\r
69 }\r
70\r
71 return new Ext.util.LocalStorage({\r
72 id: id,\r
73 prefix: prefix\r
74 });\r
75 } \r
76});\r