From 3ed9c607c482e2a730eaa2f24f92861b4de8bb83 Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Tue, 21 Mar 2017 10:14:56 +0100 Subject: [PATCH] Fix detection of simulator running state change --- src/containers/app.js | 8 ++++---- src/data-managers/simulators-data-manager.js | 4 +++- src/stores/simulator-store.js | 12 +++++++++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/containers/app.js b/src/containers/app.js index be25566..ee162c6 100644 --- a/src/containers/app.js +++ b/src/containers/app.js @@ -32,7 +32,7 @@ class App extends Component { static calculateState(prevState) { // get list of running simulators var simulators = SimulatorStore.getState().filter(simulator => { - return simulator.running; + return simulator.running === true; }); // check if running simulators changed @@ -99,7 +99,7 @@ class App extends Component { const requiredSimulators = this.requiredSimulatorsBySimulations(); requiredSimulators.forEach(simulator => { - this.connectSimulator(simulator); + this.connectSimulator(nextState, simulator); }); } @@ -126,9 +126,9 @@ class App extends Component { return simulators; } - connectSimulator(data) { + connectSimulator(state, data) { // get simulator object - const simulator = this.state.runningSimulators.find(element => { + const simulator = state.runningSimulators.find(element => { return element._id === data.simulator; }); diff --git a/src/data-managers/simulators-data-manager.js b/src/data-managers/simulators-data-manager.js index d0f169b..f9c2c97 100644 --- a/src/data-managers/simulators-data-manager.js +++ b/src/data-managers/simulators-data-manager.js @@ -52,7 +52,9 @@ class SimulatorsDataManager extends RestDataManager { this._timers = []; } - startRunningDetection(simulator) { + startRunningDetection(obj) { + const simulator = JSON.parse(JSON.stringify(obj)); + // check if timer is already running const index = this._timers.findIndex(timer => { return timer.simulator === simulator._id; diff --git a/src/stores/simulator-store.js b/src/stores/simulator-store.js index 2bf0971..c2ac8e9 100644 --- a/src/stores/simulator-store.js +++ b/src/stores/simulator-store.js @@ -33,7 +33,17 @@ class SimulatorStore extends ArrayStore { return super.reduce(state, action); case 'simulators/running': - return this.updateElements(state, [ action.simulator ]); + // check if simulator running state changed + simulator = state.find(element => { + return element._id === action.simulator._id; + }); + + // only update if state changed + if (simulator.running == null || simulator.running !== action.simulator.running) { + state = this.updateElements(state, [ action.simulator ]); + } + + return state; case 'simulatorData/opened': // get simulator