From cfdef87d011dbba33d861eb7011244c89c157849 Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Fri, 4 May 2018 09:56:55 +0200 Subject: [PATCH] Add simulation model link to widget container --- src/components/widget-value.js | 15 +++------------ src/containers/widget.js | 28 ++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/components/widget-value.js b/src/components/widget-value.js index b0531c6..2a5c765 100644 --- a/src/components/widget-value.js +++ b/src/components/widget-value.js @@ -33,24 +33,15 @@ class WidgetValue extends Component { componentWillReceiveProps(nextProps) { // update value - if (nextProps.data == null || nextProps.data[nextProps.widget.simulator] == null || nextProps.data[nextProps.widget.simulator].output == null || nextProps.data[nextProps.widget.simulator].output.values == null) { + if (nextProps.data == null || nextProps.simulationModel == null || nextProps.data[nextProps.simulationModel.simulator] == null || nextProps.data[nextProps.simulationModel.simulator].output == null || nextProps.data[nextProps.simulationModel.simulator].output.values == null) { this.setState({ value: '' }); return; } - // get unit from simulation model - let unit = ''; - - if (nextProps.simulation) { - const simulationModel = nextProps.simulation.models.find(model => model.simulator === nextProps.widget.simulator); - - if (nextProps.widget.signal < simulationModel.outputMapping.length) { - unit = simulationModel.outputMapping[nextProps.widget.signal].type; - } - } + const unit = nextProps.simulationModel.outputMapping[nextProps.widget.signal].type; // check if value has changed - const signal = nextProps.data[nextProps.widget.simulator].output.values[nextProps.widget.signal]; + const signal = nextProps.data[nextProps.simulationModel.simulator].output.values[nextProps.widget.signal]; if (signal != null && this.state.value !== signal[signal.length - 1].y) { this.setState({ value: signal[signal.length - 1].y, unit }); } diff --git a/src/containers/widget.js b/src/containers/widget.js index bab9d79..3e74cef 100644 --- a/src/containers/widget.js +++ b/src/containers/widget.js @@ -28,6 +28,7 @@ import classNames from 'classnames'; import AppDispatcher from '../app-dispatcher'; import UserStore from '../stores/user-store'; import SimulatorDataStore from '../stores/simulator-data-store'; +import SimulationModelStore from '../stores/simulation-model-store'; import FileStore from '../stores/file-store'; import WidgetLamp from '../components/widget-lamp'; @@ -49,7 +50,7 @@ import '../styles/widgets.css'; class Widget extends React.Component { static getStores() { - return [ SimulatorDataStore, FileStore, UserStore ]; + return [ SimulatorDataStore, SimulationModelStore, FileStore, UserStore ]; } static calculateState(prevState, props) { @@ -70,14 +71,18 @@ class Widget extends React.Component { sessionToken, simulatorData, files: FileStore.getState(), - sequence: prevState.sequence + 1 + sequence: prevState.sequence + 1, + + simulationModels: SimulationModelStore.getState() }; } else { return { sessionToken, simulatorData, files: FileStore.getState(), - sequence: 0 + sequence: 0, + + simulationModels: SimulationModelStore.getState() }; } } @@ -96,6 +101,11 @@ class Widget extends React.Component { type: 'files/start-load', token: this.state.sessionToken }); + + AppDispatcher.dispatch({ + type: 'simulationModels/start-load', + token: this.state.sessionToken + }); } } @@ -171,11 +181,21 @@ class Widget extends React.Component { let borderedWidget = false; let element = null; + let simulationModel = null; + + for (let model of this.state.simulationModels) { + if (model._id !== widget.simulationModel) { + continue; + } + + simulationModel = model; + } + // dummy is passed to widgets to keep updating them while in edit mode if (widget.type === 'Lamp') { element = } else if (widget.type === 'Value') { - element = + element = } else if (widget.type === 'Plot') { element = } else if (widget.type === 'Table') {