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') {