]> git.proxmox.com Git - pve-manager.git/commitdiff
correct handle history state for ceph sub-config
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 20 Nov 2013 08:21:34 +0000 (09:21 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 20 Nov 2013 08:21:34 +0000 (09:21 +0100)
www/manager/node/Ceph.js
www/manager/node/Config.js
www/manager/panel/ConfigPanel.js

index 44e769b45d6e080d4faedb92cf0b428a262af34d..505a4745d0d6b572bb8126ec12a51f639ce29d0c 100644 (file)
@@ -882,6 +882,21 @@ Ext.define('PVE.node.Ceph', {
            throw "no node name specified";
        }
 
+       if (!me.phstateid) {
+           throw "no parent history state specified";
+       }
+
+       var sp = Ext.state.Manager.getProvider();
+       var state = sp.get(me.phstateid);
+       var hsregex =  /^ceph-(\S+)$/;
+
+       if (state && state.value) {
+           var res = hsregex.exec(state.value);
+           if (res && res[1]) {
+               me.activeTab = res[1];
+           }
+       }
+
        Ext.apply(me, {
            plain: true,
            tabPosition: 'bottom',
@@ -938,11 +953,38 @@ Ext.define('PVE.node.Ceph', {
                    if (first) {
                        first.fireEvent('show', first);
                    }
+               },
+               tabchange: function(tp, newcard, oldcard) {
+                   var first =  tp.items.get(0);
+                   var ntab;
+
+                   // Note: '' is alias for first tab.
+                   if (newcard.itemId === first.itemId) {
+                       ntab = 'ceph';
+                   } else {
+                       ntab = 'ceph-' + newcard.itemId;
+                   }
+
+                   var state = { value: ntab };
+                   sp.set(me.phstateid, state);
                }
            }
        });
 
        me.callParent();
 
+       var statechange = function(sp, key, state) {
+           if ((key === me.phstateid) && state) {
+               var first = me.items.get(0);
+               var atab = me.getActiveTab().itemId;
+               var res = hsregex.exec(state.value);
+               var ntab = (res && res[1]) ? res[1] : first.itemId;
+               if (ntab && (atab != ntab)) {
+                   me.setActiveTab(ntab);
+               }
+           }
+       };
+
+       me.mon(sp, 'statechange', statechange);
     }
 });
\ No newline at end of file
index fb18c2d49c6e7dbf9e467c581725e7ae330e5316..564cf2690769cf1a002cd9b7f06e7b6b15d71e35 100644 (file)
@@ -158,6 +158,7 @@ Ext.define('PVE.node.Config', {
                title: 'Ceph',
                itemId: 'ceph',
                xtype: 'pveNodeCeph',
+               phstateid: me.hstateid,
                nodename: nodename
            }]);
        }
index d7c3f3b005d5d65944f07b052b94b30215ff7794..36ecad3fec62dc7fccf198a7c4a97af66f177502 100644 (file)
@@ -11,10 +11,15 @@ Ext.define('PVE.panel.Config', {
 
        var activeTab;
 
+       var hsregex =  /^([^\-\s]+)(-\S+)?$/;
+
        if (stateid) {
            var state = sp.get(stateid);
            if (state && state.value) {
-               activeTab = state.value;
+               var res = hsregex.exec(state.value);
+               if (res && res[1]) {
+                   activeTab = res[1];
+               }
            }
        }
 
@@ -70,13 +75,14 @@ Ext.define('PVE.panel.Config', {
                },
                tabchange: function(tp, newcard, oldcard) {
                    var ntab = newcard.itemId;
+
                    // Note: '' is alias for first tab.
                    // First tab can be 'search' or something else
                    if (newcard.itemId === items[0].itemId) {
                        ntab = '';
                    }
                    var state = { value: ntab };
-                   if (stateid) {
+                   if (stateid && !newcard.phstateid) {
                        sp.set(stateid, state);
                    }
                }
@@ -91,10 +97,11 @@ Ext.define('PVE.panel.Config', {
        me.callParent();
 
        var statechange = function(sp, key, state) {
-           if (stateid && key === stateid) {
+           if (stateid && (key === stateid) && state) {
                var atab = tab.getActiveTab().itemId;
-               var ntab = state.value || items[0].itemId;
-               if (state && ntab && (atab != ntab)) {
+               var res = hsregex.exec(state.value);
+               var ntab = (res && res[1]) ? res[1] : items[0].itemId;
+               if (ntab && (atab != ntab)) {
                    tab.setActiveTab(ntab);
                }
            }