From 4fd53e3ae9cbb2372d9835e72b07fd8988e8e898 Mon Sep 17 00:00:00 2001 From: David Kaltschmidt Date: Tue, 8 Sep 2015 00:11:18 +0200 Subject: [PATCH] Refresh should keep topology options fixes #457 --- .../stores/__tests__/app-store-test.js | 28 +++++++++++++++++++ client/app/scripts/stores/app-store.js | 9 ++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/client/app/scripts/stores/__tests__/app-store-test.js b/client/app/scripts/stores/__tests__/app-store-test.js index b7035cf78..1fae1e04d 100644 --- a/client/app/scripts/stores/__tests__/app-store-test.js +++ b/client/app/scripts/stores/__tests__/app-store-test.js @@ -178,6 +178,34 @@ describe('AppStore', function() { expect(AppStore.getAppState().topologyOptions.option1).toBeUndefined(); }); + it('sets topology options from route', function() { + RouteAction.state = { + "topologyId":"topo1", + "selectedNodeId": null, + "topologyOptions": {'option1': 'on'}}; + registeredCallback(RouteAction); + expect(AppStore.getActiveTopologyOptions().option1).toBe('on'); + expect(AppStore.getAppState().topologyOptions.option1).toBe('on'); + + // stay same after topos have been received + registeredCallback(ReceiveTopologiesAction); + registeredCallback(ClickTopologyAction); + expect(AppStore.getActiveTopologyOptions().option1).toBe('on'); + expect(AppStore.getAppState().topologyOptions.option1).toBe('on'); + }); + + it('uses default topology options from route', function() { + RouteAction.state = { + "topologyId":"topo1", + "selectedNodeId": null, + "topologyOptions": null}; + registeredCallback(RouteAction); + registeredCallback(ReceiveTopologiesAction); + registeredCallback(ClickTopologyAction); + expect(AppStore.getActiveTopologyOptions().option1).toBe('off'); + expect(AppStore.getAppState().topologyOptions.option1).toBe('off'); + }); + // nodes delta it('replaces adjacency on update', function() { diff --git a/client/app/scripts/stores/app-store.js b/client/app/scripts/stores/app-store.js index 7640505ed..81f601083 100644 --- a/client/app/scripts/stores/app-store.js +++ b/client/app/scripts/stores/app-store.js @@ -43,7 +43,7 @@ function makeNode(node) { // Initial values -let activeTopologyOptions = {}; +let activeTopologyOptions = null; let currentTopology = null; let currentTopologyId = 'containers'; let errorUrl = null; @@ -62,8 +62,8 @@ function setTopology(topologyId) { } function setDefaultTopologyOptions() { - activeTopologyOptions = {}; if (currentTopology) { + activeTopologyOptions = {}; _.each(currentTopology.options, function(items, option) { _.each(items, function(item) { if (item.default === true) { @@ -301,7 +301,10 @@ AppStore.registeredCallback = function(payload) { topologies = payload.topologies; if (!currentTopology) { setTopology(currentTopologyId); - setDefaultTopologyOptions(); + // only set on first load + if (activeTopologyOptions === null) { + setDefaultTopologyOptions(); + } } AppStore.emit(AppStore.CHANGE_EVENT); break;