ui: improve activeTab selection from fragment and state
handle invalid fragments for tabs, as well as not rendered tabpanels Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
		
				
					committed by
					
						
						Thomas Lamprecht
					
				
			
			
				
	
			
			
			
						parent
						
							a86e703661
						
					
				
				
					commit
					240b2ffb9b
				
			@ -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();
 | 
			
		||||
    },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
    },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user