mirror of
https://git.rwth-aachen.de/acs/public/villas/web/
synced 2025-03-09 00:00:01 +01:00
Add simulation model link to widget container
This commit is contained in:
parent
a9c0c04397
commit
cfdef87d01
2 changed files with 27 additions and 16 deletions
|
@ -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 });
|
||||
}
|
||||
|
|
|
@ -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 = <WidgetLamp widget={widget} data={this.state.simulatorData} dummy={this.state.sequence} simulation={this.props.simulation} />
|
||||
} else if (widget.type === 'Value') {
|
||||
element = <WidgetValue widget={widget} data={this.state.simulatorData} dummy={this.state.sequence} simulation={this.props.simulation} />
|
||||
element = <WidgetValue widget={widget} data={this.state.simulatorData} dummy={this.state.sequence} simulationModel={simulationModel} />
|
||||
} else if (widget.type === 'Plot') {
|
||||
element = <WidgetPlot widget={widget} data={this.state.simulatorData} dummy={this.state.sequence} simulation={this.props.simulation} paused={this.props.paused} />
|
||||
} else if (widget.type === 'Table') {
|
||||
|
|
Loading…
Add table
Reference in a new issue