all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] ui: improve activeTab selection from fragment and state
@ 2020-11-10 13:16 Dominik Csapak
  0 siblings, 0 replies; only message in thread
From: Dominik Csapak @ 2020-11-10 13:16 UTC (permalink / raw)
  To: pbs-devel

handle invalid fragments for tabs, as well as not rendered tabpanels

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/datastore/DataStoreList.js | 16 +++++++++++++++-
 www/datastore/Panel.js         | 11 ++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/www/datastore/DataStoreList.js b/www/datastore/DataStoreList.js
index 12d311a6..284a6340 100644
--- a/www/datastore/DataStoreList.js
+++ b/www/datastore/DataStoreList.js
@@ -186,8 +186,13 @@ Ext.define('PBS.datastore.DataStores', {
 
     applyState: function(state) {
 	let me = this;
-	if (state.tab !== undefined) {
+	if (state.tab !== undefined && me.rendered) {
 	    me.setActiveTab(state.tab);
+	} else if (state.tab) {
+	    // if we are not rendered yet, defer setting the activetab
+	    setTimeout(function() {
+		me.setActiveTab(state.tab);
+	    }, 10);
 	}
     },
 
@@ -228,4 +233,13 @@ Ext.define('PBS.datastore.DataStores', {
 	    aclPath: '/datastore',
 	},
     ],
+
+    initComponent: function() {
+	let me = this;
+	// remove invalid activeTab settings
+	if (me.activeTab && !me.items.some((item) => item.itemId === me.activeTab)) {
+	    delete me.activeTab;
+	}
+	me.callParent();
+    },
 });
diff --git a/www/datastore/Panel.js b/www/datastore/Panel.js
index f0d1317c..d767656e 100644
--- a/www/datastore/Panel.js
+++ b/www/datastore/Panel.js
@@ -17,8 +17,13 @@ Ext.define('PBS.DataStorePanel', {
 
     applyState: function(state) {
 	let me = this;
-	if (state.tab !== undefined) {
+	if (state.tab !== undefined && me.rendered) {
 	    me.setActiveTab(state.tab);
+	} else if (state.tab) {
+	    // if we are not rendered yet, defer setting the activetab
+	    setTimeout(function() {
+		me.setActiveTab(state.tab);
+	    }, 10);
 	}
     },
 
@@ -101,6 +106,10 @@ Ext.define('PBS.DataStorePanel', {
     initComponent: function() {
 	let me = this;
 	me.title = `${gettext("Datastore")}: ${me.datastore}`;
+	// remove invalid activeTab settings
+	if (me.activeTab && !me.items.some((item) => item.itemId === me.activeTab)) {
+	    delete me.activeTab;
+	}
 	me.callParent();
     },
 });
-- 
2.20.1





^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-11-10 13:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-10 13:16 [pbs-devel] [PATCH proxmox-backup] ui: improve activeTab selection from fragment and state Dominik Csapak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal