]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/StateProvider.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / StateProvider.js
index a7fa46ae49783c31087a12420c60f7b50ba2ddb6..fafbb1126b2e966378a50aeb833f22aa884198b3 100644 (file)
@@ -1,12 +1,11 @@
-/* This state provider keeps part of the state inside
- * the browser history.
+/* This state provider keeps part of the state inside the browser history.
  *
- * We compress (shorten) url using dictionary based compression
- * i.e. use column separated list instead of url encoded hash:
- * #v\d*       version/format
- * :=          indicates string values
- * :\d+        lookup value in dictionary hash
- * #v1:=value1:5:=value2:=value3:...
+ * We compress (shorten) url using dictionary based compression, i.e., we use
+ * column separated list instead of url encoded hash:
+ *  #v\d*       version/format
+ *  :=          indicates string values
+ *  :\d+        lookup value in dictionary hash
+ *  #v1:=value1:5:=value2:=value3:...
 */
 
 Ext.define('PVE.StateProvider', {
@@ -14,16 +13,14 @@ Ext.define('PVE.StateProvider', {
 
     // private
     setHV: function(name, newvalue, fireEvents) {
-       var me = this;
+       let me = this;
 
-       var changes = false;
-       var oldtext = Ext.encode(me.UIState[name]);
-       var newtext = Ext.encode(newvalue);
-       if (newtext != oldtext) {
+       let changes = false;
+       let oldtext = Ext.encode(me.UIState[name]);
+       let newtext = Ext.encode(newvalue);
+       if (newtext !== oldtext) {
            changes = true;
            me.UIState[name] = newvalue;
-           //console.log("changed old " + name + " " + oldtext);
-           //console.log("changed new " + name + " " + newtext);
            if (fireEvents) {
                me.fireEvent("statechange", me, name, { value: newvalue });
            }
@@ -44,12 +41,13 @@ Ext.define('PVE.StateProvider', {
        ['pooltab', ''],
        ['kvmtab', ''],
        ['lxctab', ''],
-       ['dctab', '']
+       ['dctab', ''],
     ],
 
     hprefix: 'v1',
 
     compDict: {
+        tfa: 54,
        sdn: 53,
        cloudinit: 52,
        replication: 51,
@@ -59,7 +57,7 @@ Ext.define('PVE.StateProvider', {
        'ha-groups': 47,
        'ha-resources': 46,
        'ceph-log': 45,
-       'ceph-crushmap':44,
+       'ceph-crushmap': 44,
        'ceph-pools': 43,
        'ceph-osdtree': 42,
        'ceph-disklist': 41,
@@ -103,41 +101,35 @@ Ext.define('PVE.StateProvider', {
        clog: 3,
        storage: 2,
        folder: 1,
-       server: 0
+       server: 0,
     },
 
     decodeHToken: function(token) {
-       var me = this;
+       let me = this;
 
-       var state = {};
+       let state = {};
        if (!token) {
-           Ext.Array.each(me.hslist, function(rec) {
-               state[rec[0]] = rec[1];
-           });
+           me.hslist.forEach(([k, v]) => { state[k] = v; });
            return state;
        }
 
-       // return Ext.urlDecode(token);
-
-       var items = token.split(':');
-       var prefix = items.shift();
+       let [prefix, ...items] = token.split(':');
 
-       if (prefix != me.hprefix) {
+       if (prefix !== me.hprefix) {
            return me.decodeHToken();
        }
 
        Ext.Array.each(me.hslist, function(rec) {
-           var value = items.shift();
+           let value = items.shift();
            if (value) {
                if (value[0] === '=') {
                    value = decodeURIComponent(value.slice(1));
-               } else {
-                   Ext.Object.each(me.compDict, function(key, cv) {
-                       if (value == cv) {
-                           value = key;
-                           return false;
-                       }
-                   });
+               }
+               for (const [key, hash] of Object.entries(me.compDict)) {
+                   if (String(value) === String(hash)) {
+                       value = key;
+                       break;
+                   }
                }
            }
            state[rec[0]] = value;
@@ -147,111 +139,102 @@ Ext.define('PVE.StateProvider', {
     },
 
     encodeHToken: function(state) {
-       var me = this;
-
-       // return Ext.urlEncode(state);
+       let me = this;
 
-       var ctoken = me.hprefix;
+       let ctoken = me.hprefix;
        Ext.Array.each(me.hslist, function(rec) {
-           var value = state[rec[0]];
+           let value = state[rec[0]];
            if (!Ext.isDefined(value)) {
                value = rec[1];
            }
            value = encodeURIComponent(value);
            if (!value) {
                ctoken += ':';
+           } else if (Ext.isDefined(me.compDict[value])) {
+               ctoken += ":" + me.compDict[value];
            } else {
-               var comp = me.compDict[value];
-               if (Ext.isDefined(comp)) {
-                   ctoken += ":" + comp;
-               } else {
-                   ctoken += ":=" + value;
-               }
+               ctoken += ":=" + value;
            }
        });
 
        return ctoken;
     },
 
-    constructor: function(config){
-       var me = this;
+    constructor: function(config) {
+       let me = this;
 
        me.callParent([config]);
 
        me.UIState = me.decodeHToken(); // set default
 
-       var history_change_cb = function(token) {
-           //console.log("HC " + token);
+       let history_change_cb = function(token) {
            if (!token) {
-               var res = window.confirm(gettext('Are you sure you want to navigate away from this page?'));
-               if (res){
-                   // process text value and close...
-                   Ext.History.back();
-               } else {
-                   Ext.History.forward();
-               }
+               Ext.History.back();
                return;
            }
 
-           var newstate = me.decodeHToken(token);
+           let newstate = me.decodeHToken(token);
            Ext.Array.each(me.hslist, function(rec) {
-               if (typeof newstate[rec[0]] == "undefined") {
+               if (typeof newstate[rec[0]] === "undefined") {
                    return;
                }
                me.setHV(rec[0], newstate[rec[0]], true);
            });
        };
 
-       var start_token = Ext.History.getToken();
+       let start_token = Ext.History.getToken();
        if (start_token) {
            history_change_cb(start_token);
        } else {
-           var htext = me.encodeHToken(me.UIState);
+           let htext = me.encodeHToken(me.UIState);
            Ext.History.add(htext);
        }
 
        Ext.History.on('change', history_change_cb);
     },
 
-    get: function(name, defaultValue){
-       var me = this;
-       var data;
+    get: function(name, defaultValue) {
+       let me = this;
 
-       if (typeof me.UIState[name] != "undefined") {
+       let data;
+       if (typeof me.UIState[name] !== "undefined") {
            data = { value: me.UIState[name] };
        } else {
            data = me.callParent(arguments);
            if (!data && name === 'GuiCap') {
-               data = { vms: {}, storage: {}, access: {}, nodes: {}, dc: {}, sdn: {} };
+               data = {
+                   vms: {},
+                   storage: {},
+                   access: {},
+                   nodes: {},
+                   dc: {},
+                   sdn: {},
+               };
            }
        }
-
-       //console.log("GET " + name + " " + Ext.encode(data));
        return data;
     },
 
-    clear: function(name){
-       var me = this;
+    clear: function(name) {
+       let me = this;
 
-       if (typeof me.UIState[name] != "undefined") {
+       if (typeof me.UIState[name] !== "undefined") {
            me.UIState[name] = null;
        }
-
        me.callParent(arguments);
     },
 
-    set: function(name, value, fireevent){
-        var me = this;
+    set: function(name, value, fireevent) {
+        let me = this;
 
-       //console.log("SET " + name + " " + Ext.encode(value));
-       if (typeof me.UIState[name] != "undefined") {
+       if (typeof me.UIState[name] !== "undefined") {
            var newvalue = value ? value.value : null;
            if (me.setHV(name, newvalue, fireevent)) {
-               var htext = me.encodeHToken(me.UIState);
+               let htext = me.encodeHToken(me.UIState);
                Ext.History.add(htext);
            }
        } else {
            me.callParent(arguments);
        }
-    }
+    },
 });