mirror of
https://github.com/projectstorm/react-diagrams.git
synced 2025-08-26 07:51:10 +08:00
performance fixes and additions
This commit is contained in:
@ -122,10 +122,12 @@ export class LinkModel extends BaseModel{
|
||||
}
|
||||
|
||||
setSourcePort(port: PortModel){
|
||||
port.addLink(this);
|
||||
this.sourcePort = port;
|
||||
}
|
||||
|
||||
setTargetPort(port: PortModel){
|
||||
port.addLink(this);
|
||||
this.targetPort = port;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import {NodeWidgetFactory, LinkWidgetFactory} from "./WidgetFactories";
|
||||
import {LinkModel, NodeModel, BaseModel, PortModel} from "./Common";
|
||||
import {LinkModel, NodeModel, BaseModel, PortModel, PointModel} from "./Common";
|
||||
import {BaseEnity, BaseListener} from "./BaseEntity";
|
||||
import {DiagramModel} from "./DiagramModel";
|
||||
import * as React from "react";
|
||||
@ -35,7 +35,7 @@ export class DiagramEngine extends BaseEnity<DiagramEngineListener>{
|
||||
}
|
||||
|
||||
clearRepaintEntities(){
|
||||
this.paintableWidgets = {};
|
||||
this.paintableWidgets = null;
|
||||
}
|
||||
|
||||
enableRepaintEntities(entities: BaseModel[]){
|
||||
@ -51,6 +51,10 @@ export class DiagramEngine extends BaseEnity<DiagramEngineListener>{
|
||||
});
|
||||
}
|
||||
|
||||
if (entity instanceof PointModel){
|
||||
this.paintableWidgets[entity.getLink().getID()] = true;
|
||||
}
|
||||
|
||||
this.paintableWidgets[entity.getID()] = true;
|
||||
});
|
||||
}
|
||||
|
@ -59,10 +59,11 @@ class MoveCanvasAction extends BaseAction{
|
||||
class MoveItemsAction extends BaseAction{
|
||||
selectionModels: SelectionModel[];
|
||||
moved:boolean;
|
||||
constructor(mouseX: number, mouseY: number, diagramModel: DiagramModel){
|
||||
constructor(mouseX: number, mouseY: number, diagramEngine: DiagramEngine){
|
||||
super(mouseX, mouseY);
|
||||
this.moved = false;
|
||||
this.selectionModels = diagramModel.getSelectedItems().map((item: PointModel | NodeModel) => {
|
||||
diagramEngine.enableRepaintEntities(diagramEngine.getDiagramModel().getSelectedItems());
|
||||
this.selectionModels = diagramEngine.getDiagramModel().getSelectedItems().map((item: PointModel | NodeModel) => {
|
||||
return {
|
||||
model: item,
|
||||
initialX: item.x,
|
||||
@ -247,6 +248,7 @@ export class DiagramWidget extends React.Component<DiagramProps, DiagramState> {
|
||||
}
|
||||
},
|
||||
onMouseDown: (event) =>{
|
||||
diagramEngine.clearRepaintEntities();
|
||||
|
||||
var model = this.getMouseElement(event);
|
||||
|
||||
@ -286,10 +288,10 @@ export class DiagramWidget extends React.Component<DiagramProps, DiagramState> {
|
||||
diagramModel.addLink(link);
|
||||
|
||||
this.setState({
|
||||
action: new MoveItemsAction(event.pageX, event.pageY,diagramModel)
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramEngine)
|
||||
});
|
||||
}
|
||||
//
|
||||
//its some or other element, probably want to move it
|
||||
else{
|
||||
|
||||
if (!event.shiftKey && !model.model.isSelected()){
|
||||
@ -299,7 +301,7 @@ export class DiagramWidget extends React.Component<DiagramProps, DiagramState> {
|
||||
model.model.setSelected(true);
|
||||
|
||||
this.setState({
|
||||
action: new MoveItemsAction(event.pageX, event.pageY,diagramModel)
|
||||
action: new MoveItemsAction(event.pageX, event.pageY,diagramEngine)
|
||||
});
|
||||
}
|
||||
},
|
||||
@ -323,6 +325,7 @@ export class DiagramWidget extends React.Component<DiagramProps, DiagramState> {
|
||||
}
|
||||
}
|
||||
|
||||
diagramEngine.clearRepaintEntities();
|
||||
this.setState({action: null});
|
||||
}
|
||||
},
|
||||
@ -332,7 +335,7 @@ export class DiagramWidget extends React.Component<DiagramProps, DiagramState> {
|
||||
event.stopPropagation();
|
||||
diagramModel.clearSelection(point);
|
||||
this.setState({
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramModel)
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramEngine)
|
||||
});
|
||||
}}):null,
|
||||
React.createElement(NodeLayerWidget, {diagramEngine: diagramEngine}),
|
||||
|
@ -20642,9 +20642,11 @@ var LinkModel = (function (_super) {
|
||||
return this.points[this.points.length - 1];
|
||||
};
|
||||
LinkModel.prototype.setSourcePort = function (port) {
|
||||
port.addLink(this);
|
||||
this.sourcePort = port;
|
||||
};
|
||||
LinkModel.prototype.setTargetPort = function (port) {
|
||||
port.addLink(this);
|
||||
this.targetPort = port;
|
||||
};
|
||||
LinkModel.prototype.getPoints = function () {
|
||||
@ -39934,7 +39936,7 @@ var DiagramEngine = (function (_super) {
|
||||
return _this;
|
||||
}
|
||||
DiagramEngine.prototype.clearRepaintEntities = function () {
|
||||
this.paintableWidgets = {};
|
||||
this.paintableWidgets = null;
|
||||
};
|
||||
DiagramEngine.prototype.enableRepaintEntities = function (entities) {
|
||||
var _this = this;
|
||||
@ -39948,6 +39950,9 @@ var DiagramEngine = (function (_super) {
|
||||
});
|
||||
});
|
||||
}
|
||||
if (entity instanceof Common_1.PointModel) {
|
||||
_this.paintableWidgets[entity.getLink().getID()] = true;
|
||||
}
|
||||
_this.paintableWidgets[entity.getID()] = true;
|
||||
});
|
||||
};
|
||||
@ -40167,10 +40172,11 @@ var MoveCanvasAction = (function (_super) {
|
||||
}(BaseAction));
|
||||
var MoveItemsAction = (function (_super) {
|
||||
__extends(MoveItemsAction, _super);
|
||||
function MoveItemsAction(mouseX, mouseY, diagramModel) {
|
||||
function MoveItemsAction(mouseX, mouseY, diagramEngine) {
|
||||
var _this = _super.call(this, mouseX, mouseY) || this;
|
||||
_this.moved = false;
|
||||
_this.selectionModels = diagramModel.getSelectedItems().map(function (item) {
|
||||
diagramEngine.enableRepaintEntities(diagramEngine.getDiagramModel().getSelectedItems());
|
||||
_this.selectionModels = diagramEngine.getDiagramModel().getSelectedItems().map(function (item) {
|
||||
return {
|
||||
model: item,
|
||||
initialX: item.x,
|
||||
@ -40319,6 +40325,7 @@ var DiagramWidget = (function (_super) {
|
||||
}
|
||||
},
|
||||
onMouseDown: function (event) {
|
||||
diagramEngine.clearRepaintEntities();
|
||||
var model = _this.getMouseElement(event);
|
||||
//its the canvas
|
||||
if (model === null) {
|
||||
@ -40347,7 +40354,7 @@ var DiagramWidget = (function (_super) {
|
||||
link.getLastPoint().setSelected(true);
|
||||
diagramModel.addLink(link);
|
||||
_this.setState({
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramModel)
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramEngine)
|
||||
});
|
||||
}
|
||||
else {
|
||||
@ -40357,7 +40364,7 @@ var DiagramWidget = (function (_super) {
|
||||
}
|
||||
model.model.setSelected(true);
|
||||
_this.setState({
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramModel)
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramEngine)
|
||||
});
|
||||
}
|
||||
},
|
||||
@ -40377,6 +40384,7 @@ var DiagramWidget = (function (_super) {
|
||||
});
|
||||
}
|
||||
}
|
||||
diagramEngine.clearRepaintEntities();
|
||||
_this.setState({ action: null });
|
||||
}
|
||||
}, this.state.renderedNodes ?
|
||||
@ -40385,7 +40393,7 @@ var DiagramWidget = (function (_super) {
|
||||
event.stopPropagation();
|
||||
diagramModel.clearSelection(point);
|
||||
_this.setState({
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramModel)
|
||||
action: new MoveItemsAction(event.pageX, event.pageY, diagramEngine)
|
||||
});
|
||||
}
|
||||
}) : null, React.createElement(NodeLayerWidget_1.NodeLayerWidget, { diagramEngine: diagramEngine }), this.state.action instanceof SelectingAction ?
|
||||
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user