import * as React from "react"; import * as _ from "lodash"; import { TrayWidget } from "./TrayWidget"; import { DiagramWidget } from "../../../src/main"; import { Application } from "../Application"; import { TrayItemWidget } from "./TrayItemWidget"; import { DefaultNodeModel, DefaultPortModel } from "../../../src/main"; 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.addPort(new DefaultPortModel(true, "in-1", "In")); } else { node = new DefaultNodeModel("Node " + (nodesCount + 1), "rgb(0,192,255)"); node.addPort(new DefaultPortModel(false, "out-1", "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(); }} >
); } }