mirror of
https://github.com/projectstorm/react-diagrams.git
synced 2026-03-13 09:50:09 +08:00
more stuff we no longer need
This commit is contained in:
@@ -1,115 +0,0 @@
|
||||
import { Toolkit } from "./Toolkit";
|
||||
import * as _ from "lodash";
|
||||
import { DiagramEngine } from "./DiagramEngine";
|
||||
|
||||
/**
|
||||
* @author Dylan Vorster
|
||||
*/
|
||||
export interface BaseEvent<T extends BaseEntity = any> {
|
||||
entity: BaseEntity<BaseListener>;
|
||||
stopPropagation: () => any;
|
||||
firing: boolean;
|
||||
id: string;
|
||||
}
|
||||
|
||||
export interface BaseListener<T extends BaseEntity = any> {
|
||||
lockChanged?(event: BaseEvent<T> & { locked: boolean }): void;
|
||||
}
|
||||
|
||||
export type BaseEntityType = "node" | "link" | "port" | "point";
|
||||
|
||||
export class BaseEntity<T extends BaseListener = BaseListener> {
|
||||
public listeners: { [s: string]: T };
|
||||
public id: string;
|
||||
public locked: boolean;
|
||||
|
||||
constructor(id?: string) {
|
||||
this.listeners = {};
|
||||
this.id = id || Toolkit.UID();
|
||||
this.locked = false;
|
||||
}
|
||||
|
||||
getID() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
doClone(lookupTable: { [s: string]: any } = {}, clone: any) {
|
||||
/*noop*/
|
||||
}
|
||||
|
||||
clone(lookupTable: { [s: string]: any } = {}) {
|
||||
// try and use an existing clone first
|
||||
if (lookupTable[this.id]) {
|
||||
return lookupTable[this.id];
|
||||
}
|
||||
let clone = _.clone(this);
|
||||
clone.id = Toolkit.UID();
|
||||
clone.clearListeners();
|
||||
lookupTable[this.id] = clone;
|
||||
|
||||
this.doClone(lookupTable, clone);
|
||||
return clone;
|
||||
}
|
||||
|
||||
clearListeners() {
|
||||
this.listeners = {};
|
||||
}
|
||||
|
||||
public deSerialize(data: { [s: string]: any }, engine: DiagramEngine) {
|
||||
this.id = data.id;
|
||||
}
|
||||
|
||||
public serialize() {
|
||||
return {
|
||||
id: this.id
|
||||
};
|
||||
}
|
||||
|
||||
public iterateListeners(cb: (t: T, event: BaseEvent) => any) {
|
||||
let event: BaseEvent = {
|
||||
id: Toolkit.UID(),
|
||||
firing: true,
|
||||
entity: this,
|
||||
stopPropagation: () => {
|
||||
event.firing = false;
|
||||
}
|
||||
};
|
||||
|
||||
for (var i in this.listeners) {
|
||||
if (this.listeners.hasOwnProperty(i)) {
|
||||
// propagation stopped
|
||||
if (!event.firing) {
|
||||
return;
|
||||
}
|
||||
cb(this.listeners[i], event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public removeListener(listener: string) {
|
||||
if (this.listeners[listener]) {
|
||||
delete this.listeners[listener];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public addListener(listener: T): string {
|
||||
var uid = Toolkit.UID();
|
||||
this.listeners[uid] = listener;
|
||||
return uid;
|
||||
}
|
||||
|
||||
public isLocked(): boolean {
|
||||
return this.locked;
|
||||
}
|
||||
|
||||
public setLocked(locked: boolean = true) {
|
||||
this.locked = locked;
|
||||
this.iterateListeners((listener, event) => {
|
||||
if (listener.lockChanged) {
|
||||
listener.lockChanged({ ...event, locked: locked });
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,53 +1,27 @@
|
||||
import { BaseEntity, BaseListener } from "./BaseEntity";
|
||||
import { DiagramModel } from "./models/DiagramModel";
|
||||
import * as _ from "lodash";
|
||||
import { NodeModel } from "./models/NodeModel";
|
||||
import { PointModel } from "./models/PointModel";
|
||||
import { PortModel } from "./models/PortModel";
|
||||
import { ROUTING_SCALING_FACTOR } from "./routing/PathFinding";
|
||||
import { Toolkit } from "./Toolkit";
|
||||
import { CanvasEngine } from "@projectstorm/react-canvas";
|
||||
/**
|
||||
* @author Dylan Vorster
|
||||
*/
|
||||
export interface DiagramEngineListener extends BaseListener {
|
||||
portFactoriesUpdated?(): void;
|
||||
import {DefaultLabelFactory, DefaultLinkFactory, DefaultNodeFactory, DefaultPortFactory} from "storm-react-diagrams";
|
||||
|
||||
nodeFactoriesUpdated?(): void;
|
||||
|
||||
linkFactoriesUpdated?(): void;
|
||||
|
||||
labelFactoriesUpdated?(): void;
|
||||
|
||||
repaintCanvas?(): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Passed as a parameter to the DiagramWidget
|
||||
*/
|
||||
export class DiagramEngine extends CanvasEngine {
|
||||
export class DiagramEngine extends CanvasEngine<DiagramModel> {
|
||||
paintableWidgets: {};
|
||||
linksThatHaveInitiallyRendered: {};
|
||||
nodesRendered: boolean;
|
||||
maxNumberPointsPerLink: number;
|
||||
smartRouting: boolean;
|
||||
model: DiagramModel;
|
||||
|
||||
// calculated only when smart routing is active
|
||||
canvasMatrix: number[][] = [];
|
||||
routingMatrix: number[][] = [];
|
||||
// used when at least one element has negative coordinates
|
||||
hAdjustmentFactor: number = 0;
|
||||
vAdjustmentFactor: number = 0;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.paintableWidgets = null;
|
||||
this.linksThatHaveInitiallyRendered = {};
|
||||
this.smartRouting = false;
|
||||
}
|
||||
|
||||
installDefaults() {
|
||||
super.installDefaults();
|
||||
this.registerElementFactory(new DefaultLabelFactory());
|
||||
this.registerElementFactory(new DefaultLinkFactory());
|
||||
this.registerElementFactory(new DefaultNodeFactory());
|
||||
this.registerElementFactory(new DefaultPortFactory());
|
||||
}
|
||||
|
||||
clearRepaintEntities() {
|
||||
@@ -68,7 +42,7 @@ export class DiagramEngine extends CanvasEngine {
|
||||
}
|
||||
|
||||
isSmartRoutingEnabled() {
|
||||
return !!this.smartRouting;
|
||||
return this.smartRouting;
|
||||
}
|
||||
|
||||
setSmartRoutingStatus(status: boolean) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import * as _ from "lodash";
|
||||
import { DiagramEngine } from "../DiagramEngine";
|
||||
import { Rectangle, CanvasElementModel, GraphModel } from "@projectstorm/react-canvas";
|
||||
|
||||
export class NodeModel<T extends PortModel> extends CanvasElementModel {
|
||||
export class NodeModel<T extends PortModel = PortModel> extends CanvasElementModel {
|
||||
protected dimensions: Rectangle;
|
||||
protected ports: GraphModel<null, T>;
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
.srd-link-layer{
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
transform-origin: 0 0;
|
||||
overflow: visible !important;
|
||||
top:0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
.srd-node-layer{
|
||||
top:0;
|
||||
left:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
transform-origin: 0 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
@import "DiagramWidget";
|
||||
@import "LinkLayerWidget";
|
||||
@import "NodeLayerWidget";
|
||||
@import "NodeWidget";
|
||||
@import "PortWidget";
|
||||
|
||||
@@ -8,4 +6,4 @@
|
||||
@import "defaults/DefaultNodeWidget";
|
||||
@import "defaults/DefaultPortWidget";
|
||||
@import "defaults/DefaultLabelWidget";
|
||||
@import "defaults/DefaultLinkWidget";
|
||||
@import "defaults/DefaultLinkWidget";
|
||||
|
||||
Reference in New Issue
Block a user