import * as React from "react"; import * as _ from "lodash"; import { TrayWidget } from "./TrayWidget"; import { Application } from "../Application"; import { TrayItemWidget } from "./TrayItemWidget"; import { DefaultNodeModel, DiagramWidget } from "storm-react-diagrams"; export interface BodyWidgetProps { app: Application; } export interface BodyWidgetState {} /** * @author Dylan Vorster */ export class BodyWidget extends React.Component { constructor(props: BodyWidgetProps) { super(props); this.state = {}; } render() { return (
Storm React Diagrams - Demo 5
{ var data = JSON.parse(event.dataTransfer.getData("storm-diagram-node")); var nodesCount = _.keys( this.props.app .getDiagramEngine() .getDiagramModel() .getNodes() ).length; var node = null; if (data.type === "in") { node = new DefaultNodeModel("Node " + (nodesCount + 1), "rgb(192,255,0)"); node.addInPort("In"); } else { node = new DefaultNodeModel("Node " + (nodesCount + 1), "rgb(0,192,255)"); node.addOutPort("Out"); } var points = this.props.app.getDiagramEngine().getRelativeMousePoint(event); node.x = points.x; node.y = points.y; this.props.app .getDiagramEngine() .getDiagramModel() .addNode(node); this.forceUpdate(); }} onDragOver={event => { event.preventDefault(); }} >
); } }