From a819cb31a896d29cedeabc3c7c285903faa735ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Tue, 14 Jul 2015 11:10:45 +0200 Subject: [PATCH] Feature #3748: Info panels can save their state when the refresh button is clicked --- src/sunstone/public/app/sunstone.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/sunstone/public/app/sunstone.js b/src/sunstone/public/app/sunstone.js index b31a59eb23..69fb6e050b 100644 --- a/src/sunstone/public/app/sunstone.js +++ b/src/sunstone/public/app/sunstone.js @@ -536,10 +536,22 @@ define(function(require) { var activaTabHref = activaTab.attr('href'); } + var isRefresh = (activaTabHref != undefined); + var prevPanelInstances = SunstoneCfg['tabs'][tabName]["panelInstances"]; + var prevPanelStates = {}; + + if(isRefresh && prevPanelInstances != undefined){ + $.each(prevPanelInstances, function(panelName, panel) { + if(panel.getState){ + prevPanelStates[panelName] = panel.getState(context); + } + }); + } + var panels = SunstoneCfg['tabs'][tabName].panels; var active = false; var templatePanelsParams = [] - var panelInstances = [] + SunstoneCfg['tabs'][tabName]["panelInstances"] = {}; $.each(panels, function(panelName, Panel) { if (Config.isTabPanelEnabled((contextTabId||tabName), panelName)) { @@ -554,7 +566,7 @@ define(function(require) { try { var panelInstance = new Panel(info, contextTabId); - panelInstances.push(panelInstance); + SunstoneCfg['tabs'][tabName]["panelInstances"][panelName] = panelInstance; templatePanelsParams.push({ 'panelName': panelName, 'icon': panelInstance.icon, @@ -578,9 +590,13 @@ define(function(require) { context.html(html); - $.each(panelInstances, function(index, panel) { + $.each(SunstoneCfg['tabs'][tabName]["panelInstances"], function(panelName, panel) { panel.setup(context); + if(isRefresh && prevPanelStates[panelName] && panel.setState){ + panel.setState( prevPanelStates[panelName], context ); + } + if (panel.onShow) { context.off('click', '[href="#' + panel.panelId + '"]'); context.on('click', '[href="#' + panel.panelId + '"]', function(){