Skip to content

Commit 1708290

Browse files
committed
feat: add sample for layout model
1 parent 76c1e75 commit 1708290

File tree

5 files changed

+28
-10
lines changed

5 files changed

+28
-10
lines changed

docs/feakin.uml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,10 @@ interface Renderer {
117117
SvgRenderer --|> Renderer
118118
CanvasRenderer --|> Renderer
119119

120+
interface Layer {
121+
}
122+
123+
' paper can be a layer ??
124+
interface Paper {}
125+
120126
@enduml
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1-
export interface LayoutAlgorithm {
1+
import { Graph } from "./element";
2+
3+
/**
4+
* Algorithm is a class that represents an algorithm for Graph objects.
5+
* like: BreadthFirstSearch, DepthFirstSearch, PageRank, K-Clustering, etc.
6+
*/
7+
8+
export interface Algorithm {
29
name: string;
10+
transform(graph: any): Graph;
311
}

packages/exporter/src/model/element.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
// http://js.cytoscape.org/#notation/functions
1717
// TypeScript Version: 2.3
1818

19-
export interface ElementsDefinition {
20-
nodes: NodeDefinition[];
21-
edges: EdgeDefinition[];
19+
export type Graph = Elements;
20+
21+
export interface Elements {
22+
nodes: Node[];
23+
edges: Edge[];
2224
}
2325

2426
interface Position {
@@ -89,18 +91,20 @@ interface ElementDataDefinition {
8991
position?: Position | undefined;
9092
}
9193

92-
export interface NodeDefinition extends ElementDefinition {
94+
export interface Node extends ElementDefinition {
9395
data: NodeDataDefinition;
9496
}
9597

9698
export interface NodeDataDefinition extends ElementDataDefinition {
9799
id?: string | undefined;
98100
parent?: string | undefined;
101+
// children's Node ids
102+
children?: string[];
99103

100104
[key: string]: any;
101105
}
102106

103-
export interface EdgeDefinition extends ElementDefinition {
107+
export interface Edge extends ElementDefinition {
104108
data: EdgeDataDefinition;
105109
}
106110

packages/exporter/src/model/layout.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ElementsDefinition } from "./element";
1+
import { Elements } from "./element";
22

33
export interface LayoutLifecycle {
44
/**
@@ -8,7 +8,7 @@ export interface LayoutLifecycle {
88
/**
99
* transition layout.
1010
*/
11-
transform?: (element: ElementsDefinition) => void;
11+
transform?: (element: Elements) => void;
1212
/**
1313
* Called when the layout is stopped.
1414
*/

packages/exporter/src/model/renderer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EdgeDataDefinition, ElementsDefinition, NodeDataDefinition } from "./element";
1+
import { EdgeDataDefinition, Elements, NodeDataDefinition } from "./element";
22

33
export interface RendererContext {
44
elementId?: string;
@@ -7,7 +7,7 @@ export interface RendererContext {
77
// inspired by cytoscape.js
88
export interface Renderer {
99
arrowShapes: () => void;
10-
drawingElements: (context: RendererContext, elements: ElementsDefinition) => void;
10+
drawingElements: (context: RendererContext, elements: Elements) => void;
1111

1212
drawingEdges: (edges: EdgeDataDefinition) => void;
1313
drawingNodes: (nodes: NodeDataDefinition[]) => void;

0 commit comments

Comments
 (0)