Skip to content

Commit 3dd329b

Browse files
migrate to new six version
1 parent 6396abc commit 3dd329b

File tree

9 files changed

+375
-513
lines changed

9 files changed

+375
-513
lines changed

demos/demo-right-angles-routing/index.tsx

Lines changed: 0 additions & 78 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import createEngine, {
2+
DiagramModel,
3+
DefaultNodeModel,
4+
DefaultPortModel,
5+
RightAngleLinkFactory,
6+
} from '@projectstorm/react-diagrams';
7+
import * as React from 'react';
8+
import { DemoButton, DemoWorkspaceWidget } from '../helpers/DemoWorkspaceWidget';
9+
import { action } from '@storybook/addon-actions';
10+
import { CanvasWidget } from '@projectstorm/react-canvas-core';
11+
import { DemoCanvasWidget } from '../helpers/DemoCanvasWidget';
12+
13+
export default () => {
14+
// setup the diagram engine
15+
const engine = createEngine();
16+
engine.getLinkFactories().registerFactory(new RightAngleLinkFactory());
17+
18+
// setup the diagram model
19+
const model = new DiagramModel();
20+
21+
// create four nodes in a way that straight links wouldn't work
22+
const node1 = new DefaultNodeModel("Node A", "rgb(0,192,255)");
23+
const port1 = node1.addPort(new DefaultPortModel(false, "out-1", "Out"));
24+
node1.setPosition(340, 350);
25+
26+
const node2 = new DefaultNodeModel("Node B", "rgb(255,255,0)");
27+
const port2 = node2.addPort(new DefaultPortModel(false, "out-1", "Out"));
28+
node2.setPosition(240, 80);
29+
const node3 = new DefaultNodeModel("Node C", "rgb(192,255,255)");
30+
const port3 = node3.addPort(new DefaultPortModel(true, "in-1", "In"));
31+
node3.setPosition(540, 180);
32+
const node4 = new DefaultNodeModel("Node D", "rgb(192,0,255)");
33+
const port4 = node4.addPort(new DefaultPortModel(true, "in-1", "In"));
34+
node4.setPosition(95, 185);
35+
36+
const rightAngleLink = engine.getLinkFactories().getFactory<RightAngleLinkFactory>(RightAngleLinkFactory.NAME);
37+
38+
// linking things together
39+
const link1 = port1.link(port4, rightAngleLink);
40+
const link2 = port2.link(port3, rightAngleLink);
41+
42+
// add all to the main model
43+
model.addAll(node1, node2, node3, node4, link1, link2);
44+
45+
// load model into engine and render
46+
engine.setModel(model);
47+
48+
return (
49+
<DemoWorkspaceWidget
50+
buttons={
51+
<DemoButton
52+
onClick={() => {
53+
action('Serialized Graph')(JSON.stringify(model.serialize(), null, 2));
54+
}}>
55+
Serialize Graph
56+
</DemoButton>
57+
}>
58+
<DemoCanvasWidget>
59+
<CanvasWidget engine={engine} />
60+
</DemoCanvasWidget>
61+
</DemoWorkspaceWidget>
62+
);
63+
};

packages/diagrams-demo-gallery/index.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,15 @@ import demo_adv_ser_des from './demos/demo-serializing';
5050
import demo_adv_prog from './demos/demo-mutate-graph';
5151
import demo_adv_dnd from './demos/demo-drag-and-drop';
5252
import demo_smart_routing from './demos/demo-smart-routing';
53+
import demo_right_angles_routing from './demos/demo-right-angles-routing';
5354

5455
storiesOf('Advanced Techniques', module)
5556
.add('Clone Selected', demo_adv_clone_selected)
5657
.add('Serializing and de-serializing', demo_adv_ser_des)
5758
.add('Programatically modifying graph', demo_adv_prog)
5859
.add('Drag and drop', demo_adv_dnd)
59-
.add('Smart routing', demo_smart_routing);
60+
.add('Smart routing', demo_smart_routing)
61+
.add('Right angles routing', demo_right_angles_routing);
6062

6163
import demo_cust_nodes from './demos/demo-custom-node1';
6264
import demo_cust_links from './demos/demo-custom-link1';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
export * from './src/link/PathFindingLinkFactory';
22
export * from './src/link/PathFindingLinkModel';
33
export * from './src/link/PathFindingLinkWidget';
4+
export * from './src/link/RightAngleLinkWidget';
5+
export * from './src/link/RightAngleLinkFactory';
6+
export * from './src/link/RightAngleLinkModel';
47

58
export * from './src/engine/PathFinding';
69
export * from './src/dagre/DagreEngine';
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import * as React from "react";
2+
import { RightAngleLinkWidget } from "./RightAngleLinkWidget";
3+
import { DiagramEngine } from '@projectstorm/react-diagrams-core';
4+
import { DefaultLinkFactory, DefaultLinkModel } from '@projectstorm/react-diagrams-defaults';
5+
import {RightAngleLinkModel} from "./RightAngleLinkModel";
6+
7+
/**
8+
* @author Daniel Lazar
9+
*/
10+
export class RightAngleLinkFactory extends DefaultLinkFactory<RightAngleLinkModel> {
11+
12+
static NAME = 'rightAngle';
13+
14+
constructor() {
15+
super(RightAngleLinkFactory.NAME);
16+
}
17+
18+
generateModel(event): RightAngleLinkModel {
19+
return new RightAngleLinkModel();
20+
}
21+
22+
generateReactWidget(event): JSX.Element {
23+
return <RightAngleLinkWidget diagramEngine={this.engine} link={event.model} factory={this}/>
24+
}
25+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { DefaultLinkModel, DefaultLinkModelOptions } from '@projectstorm/react-diagrams-defaults';
2+
import {RightAngleLinkFactory} from "./RightAngleLinkFactory";
3+
4+
export class RightAngleLinkModel extends DefaultLinkModel {
5+
constructor(options: DefaultLinkModelOptions = {}) {
6+
super({
7+
type: RightAngleLinkFactory.NAME,
8+
...options
9+
});
10+
}
11+
12+
performanceTune() {
13+
return false;
14+
}
15+
}

0 commit comments

Comments
 (0)