From 05b74fc090aebe270dffa39f40533a5903ccf7f6 Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Fri, 17 Mar 2017 20:14:34 +0100 Subject: [PATCH] Add running simulator detection --- src/api/rest-api.js | 2 +- src/data-managers/simulators-data-manager.js | 30 ++++++++++++++--- src/stores/simulator-store.js | 34 +++++++++++--------- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/api/rest-api.js b/src/api/rest-api.js index 2709d05..be14376 100644 --- a/src/api/rest-api.js +++ b/src/api/rest-api.js @@ -13,7 +13,7 @@ import Promise from 'es6-promise'; class RestAPI { get(url, token) { return new Promise(function (resolve, reject) { - var req = request.get(url).set('Access-Control-Allow-Origin', '*'); + var req = request.get(url); if (token != null) { req.set('x-access-token', token); diff --git a/src/data-managers/simulators-data-manager.js b/src/data-managers/simulators-data-manager.js index 94c8bac..933d73a 100644 --- a/src/data-managers/simulators-data-manager.js +++ b/src/data-managers/simulators-data-manager.js @@ -9,7 +9,7 @@ import RestDataManager from './rest-data-manager'; import RestAPI from '../api/rest-api'; -//import AppDispatcher from '../app-dispatcher'; +import AppDispatcher from '../app-dispatcher'; class SimulatorsDataManager extends RestDataManager { constructor() { @@ -17,10 +17,32 @@ class SimulatorsDataManager extends RestDataManager { } isRunning(simulator) { - RestAPI.get('http://localhost/nodes.json').then(response => { - console.log(response); + // get path and name + var path = simulator.endpoint.substring(0, simulator.endpoint.lastIndexOf('/')); + path += '/nodes.json'; + + var name = simulator.endpoint.substring(simulator.endpoint.lastIndexOf('/') + 1); + + // send request + RestAPI.get('http://' + path).then(response => { + // check if simulator is running + var running = false; + + response.forEach(sim => { + if (sim.name === name) { + running = true; + } + }); + + simulator.running = running; + + AppDispatcher.dispatch({ + type: 'simulators/running', + simulator: simulator, + running: running + }); }).catch(error => { - console.log(error); + //console.log(error); }); } } diff --git a/src/stores/simulator-store.js b/src/stores/simulator-store.js index 5b9fde4..98d3b1b 100644 --- a/src/stores/simulator-store.js +++ b/src/stores/simulator-store.js @@ -16,24 +16,26 @@ class SimulatorStore extends ArrayStore { } reduce(state, action) { - // handle action - state = super.reduce(state, action); + switch (action.type) { + case 'simulators/loaded': + // get simulator running state + if (Array.isArray(action.data)) { + action.data.forEach((simulator) => { + SimulatorsDataManager.isRunning(simulator); + }); + } else { + SimulatorsDataManager.isRunning(action.data); + } - if (action.type === 'simulators/loaded') { - // get simulator running state - if (Array.isArray(action.data)) { - action.data.forEach((simulator) => { - //SimulatorsDataManager.isRunning(simulator); - }); - } else { - //SimulatorsDataManager.isRunning(action.data); - } - } else if (action.type === 'simulators/running') { - // set running state - console.log(action); + return super.reduce(state, action); + + case 'simulators/running': + // update simulator + return this.updateElements(state, [ action.simulator ]); + + default: + return super.reduce(state, action); } - - return state; } }