From c5e4642797d30460bb9156b8242e329de31c118d Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Fri, 7 Jul 2017 10:25:07 +0200 Subject: [PATCH] Add simulators to nodes --- src/components/dialog/new-simulator.js | 18 +----- src/components/node-tree.js | 18 ++++-- src/containers/simulators.js | 89 ++++++++++++++++++++------ 3 files changed, 85 insertions(+), 40 deletions(-) diff --git a/src/components/dialog/new-simulator.js b/src/components/dialog/new-simulator.js index 395cf9e..8e22e3d 100644 --- a/src/components/dialog/new-simulator.js +++ b/src/components/dialog/new-simulator.js @@ -36,8 +36,7 @@ class NewSimulatorDialog extends Component { super(props); this.state = { - name: '', - endpoint: '' + name: '' }; } @@ -54,27 +53,21 @@ class NewSimulatorDialog extends Component { } resetState() { - this.setState({ name: '', endpoint: '' }); + this.setState({ name: '' }); } validateForm(target) { // check all controls - var endpoint = true; var name = true; if (this.state.name === '') { name = false; } - if (this.state.endpoint === '') { - endpoint = false; - } - - this.valid = endpoint && name; + this.valid = name; // return state to control if (target === 'name') return name ? "success" : "error"; - else return endpoint ? "success" : "error"; } render() { @@ -86,11 +79,6 @@ class NewSimulatorDialog extends Component { this.handleChange(e)} /> - - Endpoint - this.handleChange(e)} /> - - ); diff --git a/src/components/node-tree.js b/src/components/node-tree.js index ea79d6c..1cf8226 100644 --- a/src/components/node-tree.js +++ b/src/components/node-tree.js @@ -44,11 +44,15 @@ class NodeTree extends React.Component { var buttons = []; if (rowInfo.parentNode == null) { - buttons.push() + buttons.push(); + buttons.push(); + buttons.push(); + } else { + buttons.push(); + buttons.push(); } - buttons.push(); - buttons.push(); + console.log(rowInfo); return { buttons: buttons @@ -62,7 +66,13 @@ class NodeTree extends React.Component { var treeData = []; nextProps.data.forEach((node) => { - treeData.push({ title: node.name, subtitle: node.endpoint, id: node._id }); + var parent = { title: node.name, subtitle: node.endpoint, id: node._id, children: [], expanded: true }; + + node.simulators.forEach((simulator) => { + parent.children.push({ title: simulator.name }); + }); + + treeData.push(parent); }); this.setState({ treeData }); diff --git a/src/containers/simulators.js b/src/containers/simulators.js index a6024c5..8fd4a53 100644 --- a/src/containers/simulators.js +++ b/src/containers/simulators.js @@ -24,11 +24,11 @@ import { Container } from 'flux/utils'; import { Button, Modal, Glyphicon } from 'react-bootstrap'; import AppDispatcher from '../app-dispatcher'; -//import SimulatorStore from '../stores/simulator-store'; import NodeStore from '../stores/node-store'; import NewNodeDialog from '../components/dialog/new-node'; import EditNodeDialog from '../components/dialog/edit-node'; +import NewSimulatorDialog from '../components/dialog/new-simulator'; import NodeTree from '../components/node-tree'; class Simulators extends Component { @@ -40,10 +40,16 @@ class Simulators extends Component { return { nodes: NodeStore.getState(), - newModal: false, - deleteModal: false, - editModal: false, - modalData: {} + newNodeModal: false, + deleteNodeModal: false, + editNodeModal: false, + + addSimulatorModal: false, + editSimulatorModal: false, + deleteSimulatorModal: false, + + modalData: {}, + modalIndex: 0 }; } @@ -53,8 +59,8 @@ class Simulators extends Component { }); } - closeNewModal(data) { - this.setState({ newModal: false }); + closeNewNodeModal(data) { + this.setState({ newNodeModal: false }); if (data) { AppDispatcher.dispatch({ @@ -64,17 +70,17 @@ class Simulators extends Component { } } - showEditModal(data) { + showEditNodeModal(data) { // find node with id var node = this.state.nodes.find((element) => { return element._id === data.id; }); - this.setState({ editModal: true, modalData: node }); + this.setState({ editNodeModal: true, modalData: node }); } - closeEditModal(data) { - this.setState({ editModal: false }); + closeEditNodeModal(data) { + this.setState({ editNodeModal: false }); if (data) { AppDispatcher.dispatch({ @@ -84,16 +90,16 @@ class Simulators extends Component { } } - showDeleteModal(data) { + showDeleteNodeModal(data) { // find node with id var node = this.state.nodes.find((element) => { return element._id === data.id; }); - this.setState({ deleteModal: true, modalData: node }); + this.setState({ deleteNodeModal: true, modalData: node }); } - confirmDeleteModal() { + confirmDeleteNodeModal() { this.setState({ deleteModal: false }); AppDispatcher.dispatch({ @@ -102,30 +108,71 @@ class Simulators extends Component { }); } + showAddSimulatorModal(data) { + // find node with id + var node = this.state.nodes.find((element) => { + return element._id === data.id; + }); + + this.setState({ addSimulatorModal: true, modalData: node }); + } + + closeAddSimulatorModal(data) { + this.setState({ addSimulatorModal: false }); + + if (data) { + var node = this.state.modalData; + node.simulators.push(data); + + AppDispatcher.dispatch({ + type: 'nodes/start-edit', + data: node + }); + } + } + render() { return (

Simulators

- + - this.showDeleteModal(node)} onEdit={(node) => this.showEditModal(node)} /> + this.showDeleteNodeModal(node)} onNodeEdit={(node) => this.showEditNodeModal(node)} onNodeAdd={(node) => this.showAddSimulatorModal(node)} onSimulatorEdit={(index) => this.onSimulatorEdit(index)} onSimulatorDelete={(index) => this.onSimulatorDelete(index)} /> - this.closeNewModal(data)} /> - this.closeEditModal(data)} /> + this.closeNewNodeModal(data)} /> + this.closeEditNodeModal(data)} /> + this.closeAddSimulatorModal(data)} /> - + Delete Node Are you sure you want to delete the node '{this.state.modalData.name}'? +
+ This will delete all simulators assigned to this node.
- - + + + +
+ + + + Delete Simulator + + + + {/*Are you sure you want to delete the simulator '{this.state.modalData.simulators[this.state.modalIndex].name}'?*/} + + + + +