13693261870
2022-09-16 354b3dbfbffb3df45212a2a44dbbf48b4acc2594
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>The source code</title>
  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
  <style type="text/css">
    .highlight { display: block; background-color: #ddd; }
  </style>
  <script type="text/javascript">
    function highlight() {
      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
    }
  </script>
</head>
<body onload="prettyPrint(); highlight();">
  <pre class="prettyprint lang-js"><span id='Ext-state-LocalStorageProvider'>/**
</span> * @class Ext.state.LocalStorageProvider
 * A Provider implementation which saves and retrieves state via the HTML5 localStorage object.
 * If the browser does not support local storage, there will be no attempt to read the state.
 * Before creating this class, a check should be made to {@link Ext.supports#LocalStorage}.
 */
 
Ext.define('Ext.state.LocalStorageProvider', {
    /* Begin Definitions */
    
    extend: 'Ext.state.Provider',
    
    alias: 'state.localstorage',
    
<span id='Ext-state-LocalStorageProvider-method-constructor'>    /* End Definitions */
</span>   
    constructor: function(){
        var me = this;
        me.callParent(arguments);
        me.store = me.getStorageObject();
        if (me.store) {
            me.state = me.readLocalStorage();
        } else {
            me.state = {};
        }
    },
    
<span id='Ext-state-LocalStorageProvider-method-readLocalStorage'>    readLocalStorage: function(){
</span>        var store = this.store,
            i = 0,
            len = store.length,
            prefix = this.prefix,
            prefixLen = prefix.length,
            data = {},
            key;
            
        for (; i &lt; len; ++i) {
            key = store.key(i);
            if (key.substring(0, prefixLen) == prefix) {
                data[key.substr(prefixLen)] = this.decodeValue(store.getItem(key));
            }            
        }
        return data;
    },
    
<span id='Ext-state-LocalStorageProvider-method-set'>    set : function(name, value){
</span>        var me = this;
        
        me.clear(name);
        if (typeof value == &quot;undefined&quot; || value === null) {
            return;
        }
        me.store.setItem(me.prefix + name, me.encodeValue(value));
        me.callParent(arguments);
    },
 
<span id='Ext-state-LocalStorageProvider-method-clear'>    // private
</span>    clear : function(name){
        this.store.removeItem(this.prefix + name);
        this.callParent(arguments);
    },
    
<span id='Ext-state-LocalStorageProvider-method-getStorageObject'>    getStorageObject: function(){
</span>        if (Ext.supports.LocalStorage) {
            return window.localStorage;
        }
        //&lt;debug&gt;
        Ext.Error.raise('LocalStorage is not supported by the current browser');
        //&lt;/debug&gt;
        return false;
    }    
});
</pre>
</body>
</html>