luci-base: ui.js: use session data api to persist tab selection state

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2020-04-15 22:18:13 +02:00
parent adeb0f3aa6
commit 51186355ea

View file

@ -2,6 +2,7 @@
'require validation'; 'require validation';
'require baseclass'; 'require baseclass';
'require request'; 'require request';
'require session';
'require poll'; 'require poll';
'require dom'; 'require dom';
'require rpc'; 'require rpc';
@ -3463,16 +3464,14 @@ var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ {
/** @private */ /** @private */
getActiveTabState: function() { getActiveTabState: function() {
var page = document.body.getAttribute('data-page'); var page = document.body.getAttribute('data-page'),
state = session.getLocalData('tab');
try { if (L.isObject(state) && state.page === page && L.isObject(state.paths))
var val = JSON.parse(window.sessionStorage.getItem('tab')); return state;
if (val.page === page && L.isObject(val.paths))
return val; session.setLocalData('tab', null);
}
catch(e) {}
window.sessionStorage.removeItem('tab');
return { page: page, paths: {} }; return { page: page, paths: {} };
}, },
@ -3484,17 +3483,12 @@ var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ {
/** @private */ /** @private */
setActiveTabId: function(pane, tabIndex) { setActiveTabId: function(pane, tabIndex) {
var path = this.getPathForPane(pane); var path = this.getPathForPane(pane),
state = this.getActiveTabState();
try { state.paths[path] = tabIndex;
var state = this.getActiveTabState();
state.paths[path] = tabIndex;
window.sessionStorage.setItem('tab', JSON.stringify(state)); return session.setLocalData('tab', state);
}
catch (e) { return false; }
return true;
}, },
/** @private */ /** @private */