Simulators
-
-
+
+ this.onSimulatorChecked(index, event)} width='30' />
+
+
+
+
+
+
+ this.setState({ editModal: true, modalSimulator: this.state.simulators[index], modalIndex: index })}
+ onExport={index => this.exportSimulator(index)}
+ onDelete={index => this.setState({ deleteModal: true, modalSimulator: this.state.simulators[index], modalIndex: index })}
+ />
+
-
-
Hint: Node names must be unique. Simulator names must be unique on a node.
+
+ this.setRunAction(index)}>
+
+
+
- this.onTreeDataChange(treeData)}
- onNodeDelete={(node) => this.showDeleteNodeModal(node)}
- onNodeEdit={(node) => this.showEditNodeModal(node)}
- onNodeAdd={(node) => this.showAddSimulatorModal(node)}
- onNodeExport={node => this.exportNode(node)}
- onSimulatorEdit={(node, index) => this.showEditSimulatorModal(node, index)}
- onSimulatorDelete={(node, index) => this.showDeleteSimulatorModal(node, index)}
- />
+
+
-
this.closeNewNodeModal(data)} nodes={this.state.nodes} />
- this.closeEditNodeModal(data)} nodes={this.state.nodes} />
- this.closeAddSimulatorModal(data)} node={this.state.modalData}/>
- this.closeImportNodeModal(data)} nodes={this.state.nodes} />
+
+
+
+
- {this.state.editSimulatorModal &&
- this.closeEditSimulatorModal(data)} node={this.state.modalData} />
- }
+ this.closeNewModal(data)} />
+ this.closeEditModal(data)} simulator={this.state.modalSimulator} />
+ this.closeImportModal(data)} />
- this.setState({ deleteNodeModal: false })} onKeyPress={this.onNodeModalKeyPress}>
-
- Delete Node
-
-
-
- Are you sure you want to delete the node '{this.state.modalData.name}'?
-
- This will delete all simulators assigned to this node.
-
-
-
-
-
-
-
-
- this.setState({ deleteSimulatorModal: false })} onKeyPress={this.onSimulatorModalKeyPress}>
+ this.setState({ deleteModal: false })} onKeyPress={this.onModalKeyPress}>
Delete Simulator
- Are you sure you want to delete the simulator '{this.state.modalName}'?
+ Are you sure you want to delete the simulator'{_.get(this.state.modalSimulator, 'properties.name') || _.get(this.state.modalSimulator, 'rawProperties.name') || 'Unknown'}'?
-
-
+
+
diff --git a/src/data-managers/simulations-data-manager.js b/src/data-managers/simulations-data-manager.js
index bb9a6ba..4ded924 100644
--- a/src/data-managers/simulations-data-manager.js
+++ b/src/data-managers/simulations-data-manager.js
@@ -29,13 +29,23 @@ class SimulationsDataManager extends RestDataManager {
this.onLoad = this.onSimulationsLoad;
}
- onSimulationsLoad(simulation) {
+ onSimulationsLoad(data) {
+ if (Array.isArray(data)) {
+ for (let simulation of data) {
+ this.loadSimulationData(simulation);
+ }
+ } else {
+ this.loadSimulationData(data);
+ }
+ }
+
+ loadSimulationData(simulation) {
for (let model of simulation.models) {
AppDispatcher.dispatch({
type: 'simulatorData/prepare',
inputLength: parseInt(model.inputLength, 10),
outputLength: parseInt(model.outputLength, 10),
- node: model.simulator
+ id: model.simulator
});
}
}
diff --git a/src/data-managers/simulator-data-data-manager.js b/src/data-managers/simulator-data-data-manager.js
index eee8e03..c697f36 100644
--- a/src/data-managers/simulator-data-data-manager.js
+++ b/src/data-managers/simulator-data-data-manager.js
@@ -30,22 +30,17 @@ class SimulatorDataDataManager {
this._sockets = {};
}
- open(endpoint, node) {
+ open(endpoint, identifier) {
// pass signals to onOpen callback
- if (this._sockets[node._id] != null) {
- if (this._sockets[node._id].url !== WebsocketAPI.getURL(node)) {
+ if (this._sockets[identifier] != null) {
+ if (this._sockets[identifier].url !== WebsocketAPI.getURL(endpoint)) {
// replace connection, since endpoint changed
this._sockets.close();
- this._sockets[node._id] = WebsocketAPI.addSocket(node, { onOpen: (event) => this.onOpen(event, node), onClose: (event) => this.onClose(event, node), onMessage: (event) => this.onMessage(event, node), onError: (error) => this.onError(error, node) });
+ this._sockets[identifier] = WebsocketAPI.addSocket(endpoint, { onOpen: (event) => this.onOpen(event, identifier), onClose: (event) => this.onClose(event, identifier), onMessage: (event) => this.onMessage(event, identifier), onError: (error) => this.onError(error, identifier) });
}
} else {
- // set flag if a socket to this simulator was already create before
- if (this._sockets[node._id] === null) {
- this._sockets[node._id] = WebsocketAPI.addSocket(node, { onOpen: (event) => this.onOpen(event, node, false), onClose: (event) => this.onClose(event, node), onMessage: (event) => this.onMessage(event, node), onError: (error) => this.onError(error, node) });
- } else {
- this._sockets[node._id] = WebsocketAPI.addSocket(node, { onOpen: (event) => this.onOpen(event, node, true), onClose: (event) => this.onClose(event, node), onMessage: (event) => this.onMessage(event, node), onError: (error) => this.onError(error, node) });
- }
+ this._sockets[identifier] = WebsocketAPI.addSocket(endpoint, { onOpen: (event) => this.onOpen(event, identifier, false), onClose: (event) => this.onClose(event, identifier), onMessage: (event) => this.onMessage(event, identifier), onError: (error) => this.onError(error, identifier) });
}
}
@@ -59,8 +54,8 @@ class SimulatorDataDataManager {
}
}
- send(message, nodeId) {
- const socket = this._sockets[nodeId];
+ send(message, identifier) {
+ const socket = this._sockets[identifier];
if (socket == null) {
return false;
}
@@ -68,40 +63,42 @@ class SimulatorDataDataManager {
const data = this.messageToBuffer(message);
socket.send(data);
+ console.log(data);
+
return true;
}
- onOpen(event, node, firstOpen) {
+ onOpen(event, identifier, firstOpen) {
AppDispatcher.dispatch({
type: 'simulatorData/opened',
- node: node,
+ id: identifier,
firstOpen: firstOpen
});
}
- onClose(event, node) {
+ onClose(event, identifier) {
AppDispatcher.dispatch({
type: 'simulatorData/closed',
- node: node,
+ id: identifier,
notification: (event.code !== 4000)
});
// remove from list, keep null reference for flag detection
- delete this._sockets[node._id];
+ delete this._sockets[identifier];
}
- onError(error, node) {
- console.error('Error on ' + node._id + ':' + error);
+ onError(error, identifier) {
+ console.error('Error on ' + identifier + ':' + error);
}
- onMessage(event, node) {
+ onMessage(event, identifier) {
var msgs = this.bufferToMessageArray(event.data);
if (msgs.length > 0) {
AppDispatcher.dispatch({
type: 'simulatorData/data-changed',
data: msgs,
- node: node
+ id: identifier
});
}
}
diff --git a/src/data-managers/simulators-data-manager.js b/src/data-managers/simulators-data-manager.js
new file mode 100644
index 0000000..42ddec3
--- /dev/null
+++ b/src/data-managers/simulators-data-manager.js
@@ -0,0 +1,46 @@
+/**
+ * File: simulator-data-manager.js
+ * Author: Markus Grigull