1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/web/ synced 2025-03-09 00:00:01 +01:00

Change widget value to new simulator data

This commit is contained in:
Markus Grigull 2017-07-11 19:46:45 +02:00
parent 259c512040
commit 6a535a5338
8 changed files with 52 additions and 37 deletions

View file

@ -28,7 +28,7 @@ class EditWidgetSignalControl extends Component {
this.state = {
widget: {
simulator: ''
simulator: {}
}
};
}
@ -43,10 +43,10 @@ class EditWidgetSignalControl extends Component {
if (this.props.simulation) {
// get selected simulation model
const simulationModel = this.props.simulation.models.find( model => model.simulator === this.state.widget.simulator );
const simulationModel = this.props.simulation.models.find( model => model.simulator.node === this.state.widget.simulator.node && model.simulator.simulator === this.state.widget.simulator.simulator );
// If simulation model update the signals to render
signalsToRender = simulationModel? simulationModel.mapping : [];
signalsToRender = simulationModel ? simulationModel.mapping : [];
}
return (
@ -68,4 +68,4 @@ class EditWidgetSignalControl extends Component {
}
}
export default EditWidgetSignalControl;
export default EditWidgetSignalControl;

View file

@ -28,7 +28,7 @@ class EditWidgetSimulatorControl extends Component {
this.state = {
widget: {
simulator: ''
simulator: {}
}
};
}
@ -39,17 +39,16 @@ class EditWidgetSimulatorControl extends Component {
}
render() {
return (
<FormGroup controlId="simulator">
<ControlLabel>Simulator</ControlLabel>
<FormControl componentClass="select" placeholder="Select simulator" value={this.state.widget.simulator || '' } onChange={(e) => this.props.handleChange(e)}>
<ControlLabel>Simulation Model</ControlLabel>
<FormControl componentClass="select" placeholder="Select simulation model" value={JSON.stringify(this.state.widget.simulator) || '' } onChange={(e) => this.props.handleChange(e)}>
{
this.props.simulation.models.length === 0? (
<option disabled value style={{ display: 'none' }}> No simulators available. </option>
<option disabled value style={{ display: 'none' }}> No simulation models available. </option>
) : (
this.props.simulation.models.map((model, index) => (
<option key={index} value={model.simulator}>{model.name}</option>
<option key={index} value={JSON.stringify(model.simulator)}>{model.name}</option>
)))
}
</FormControl>
@ -58,4 +57,4 @@ class EditWidgetSimulatorControl extends Component {
}
}
export default EditWidgetSimulatorControl;
export default EditWidgetSimulatorControl;

View file

@ -41,7 +41,7 @@ class EditWidgetDialog extends Component {
this.state = {
temporal: {
name: '',
simulator: '',
simulator: {},
signal: 0
}
};
@ -58,7 +58,16 @@ class EditWidgetDialog extends Component {
handleChange(e) {
if (e.constructor === Array) {
// Every property in the array will be updated
let changes = e.reduce( (changesObject, event) => { changesObject[event.target.id] = event.target.value; return changesObject }, {});
let changes = e.reduce( (changesObject, event) => {
if (event.target.id === 'simulator') {
changesObject[event.target.id] = JSON.parse(event.target.value);
} else {
changesObject[event.target.id] = event.target.value;
}
return changesObject;
}, {});
this.setState({ temporal: Object.assign({}, this.state.temporal, changes ) });
} else {
let changeObject = {};
@ -87,7 +96,7 @@ class EditWidgetDialog extends Component {
}
render() {
let controls = null;
if (this.props.widget) {
controls = createControls(

View file

@ -48,6 +48,7 @@ class NewSimulationModelDialog extends Component {
onClose(canceled) {
if (canceled === false) {
console.log(this.state);
this.props.onClose(this.state);
} else {
this.props.onClose();
@ -69,8 +70,8 @@ class NewSimulationModelDialog extends Component {
}
if (e.target.id === 'simulator') {
var value = e.target.value.split("/");
this.setState({ simulator: { node: value[0], simulator: value[1] } });
console.log(e.target.value);
this.setState({ simulator: JSON.parse(e.target.value) });
} else {
this.setState({ [e.target.id]: e.target.value });
}
@ -91,7 +92,7 @@ class NewSimulationModelDialog extends Component {
resetState() {
this.setState({
name: '',
simulator: { node: this.props.nodes[0] ? this.props.nodes[0].name : '', simulator: this.props.nodes[0].simulators[0] ? this.props.nodes[0].simulators[0].name : '' },
simulator: { node: this.props.nodes[0] ? this.props.nodes[0]._id : '', simulator: this.props.nodes[0].simulators[0] ? 0 : '' },
length: '1',
mapping: [ { name: 'Signal', type: 'Type' } ]
});
@ -138,7 +139,7 @@ class NewSimulationModelDialog extends Component {
<FormControl componentClass="select" placeholder="Select simulator" value={this.state.simulator.node + '/' + this.state.simulator.simulator} onChange={(e) => this.handleChange(e)}>
{this.props.nodes.map(node => (
node.simulators.map((simulator, index) => (
<option key={node._id + index} value={node.name + '/' + simulator.name}>{node.name}/{simulator.name}</option>
<option key={node._id + index} value={JSON.stringify({ node: node._id, simulator: index })}>{node.name}/{simulator.name}</option>
))
))}
</FormControl>

View file

@ -32,15 +32,18 @@ class WidgetValue extends Component {
componentWillReceiveProps(nextProps) {
// update value
const simulator = nextProps.widget.simulator;
const simulator = nextProps.widget.simulator.simulator;
const node = nextProps.widget.simulator.node;
if (nextProps.data == null || nextProps.data[simulator] == null || nextProps.data[simulator].values == null) {
//console.log(nextProps.widget.simulator);
if (nextProps.data == null || nextProps.data[node] == null || nextProps.data[node][simulator] == null || nextProps.data[node][simulator].values == null) {
this.setState({ value: '' });
return;
}
// check if value has changed
const signal = nextProps.data[simulator].values[nextProps.widget.signal];
const signal = nextProps.data[node][simulator].values[nextProps.widget.signal];
if (this.state.value !== signal[signal.length - 1].y) {
this.setState({ value: signal[signal.length - 1].y });
}

View file

@ -120,7 +120,15 @@ class Simulation extends Component {
}
getSimulatorName(simulator) {
return simulator.node + '/' + simulator.simulator;
var name = "undefined";
this.state.nodes.forEach(node => {
if (node._id === simulator.node) {
name = node.name + '/' + node.simulators[simulator.simulator].name;
}
});
return name;
}
render() {

View file

@ -65,13 +65,13 @@ class Visualization extends Component {
editModal: prevState.editModal || false,
modalData: prevState.modalData || null,
modalIndex: prevState.modalIndex || null,
maxWidgetHeight: prevState.maxWidgetHeight || 0,
dropZoneHeight: prevState.dropZoneHeight || 0,
last_widget_key: prevState.last_widget_key || 0
};
}
componentWillMount() {
AppDispatcher.dispatch({
type: 'visualizations/start-load'
@ -154,6 +154,7 @@ class Visualization extends Component {
NotificationsDataManager.addNotification(NotificationsFactory.NO_SIM_MODEL_AVAILABLE);
} else {
defaultSimulator = this.state.simulation.models[0].simulator;
console.log(defaultSimulator);
}
// create new widget
@ -167,7 +168,7 @@ class Visualization extends Component {
var visualization = Object.assign({}, this.state.visualization, {
widgets: new_widgets
});
this.increaseHeightWithWidget(widget);
this.setState({ visualization: visualization });
}
@ -185,7 +186,7 @@ class Visualization extends Component {
var visualization = Object.assign({}, this.state.visualization, {
widgets: new_widgets
});
// Check if the height needs to be increased, the section may have shrunk if not
if (!this.increaseHeightWithWidget(updated_widget)) {
this.computeHeightWithWidgets(visualization.widgets);
@ -201,12 +202,12 @@ class Visualization extends Component {
let maxHeight = Object.keys(widgets).reduce( (maxHeightSoFar, widgetKey) => {
let thisWidget = widgets[widgetKey];
let thisWidgetHeight = thisWidget.y + thisWidget.height;
return thisWidgetHeight > maxHeightSoFar? thisWidgetHeight : maxHeightSoFar;
}, 0);
this.setState({
maxWidgetHeight: maxHeight,
this.setState({
maxWidgetHeight: maxHeight,
dropZoneHeight: maxHeight + 40
});
}
@ -219,8 +220,8 @@ class Visualization extends Component {
let thisWidgetHeight = widget.y + widget.height;
if (thisWidgetHeight > this.state.maxWidgetHeight) {
increased = true;
this.setState({
maxWidgetHeight: thisWidgetHeight,
this.setState({
maxWidgetHeight: thisWidgetHeight,
dropZoneHeight: thisWidgetHeight + 40
});
}

View file

@ -45,12 +45,6 @@ class SimulationDataStore extends ReduceStore {
case 'simulatorData/opened':
// create entry for simulator
/*state[action.identifier] = { signals: action.signals, values: [], sequence: null, timestamp: null };
for (i = 0; i < action.signals; i++) {
state[action.identifier].values.push([]);
}*/
state[action.node._id] = {};
action.node.simulators.forEach(simulator => {