moved calls isCellCollapsed and others from mxGraph to mxCell
parent
f8d762c849
commit
6f9c47802b
|
@ -157,7 +157,7 @@ export default Ports;
|
|||
// processing wrt the parent label)
|
||||
return '';
|
||||
}
|
||||
else if (this.isCellCollapsed(cell))
|
||||
else if (cell.isCollapsed())
|
||||
{
|
||||
let index = tmp.indexOf('</h1>');
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ export default Scrollbars;
|
|||
// Overrides connectable state
|
||||
graph.isCellConnectable = function(cell)
|
||||
{
|
||||
return !this.isCellCollapsed(cell);
|
||||
return !cell.isCollapsed();
|
||||
};
|
||||
|
||||
// Enables HTML markup in all labels
|
||||
|
@ -371,7 +371,7 @@ export default Scrollbars;
|
|||
{
|
||||
if (cell.isVertex())
|
||||
{
|
||||
if (this.isCellCollapsed(cell))
|
||||
if (cell.isCollapsed())
|
||||
{
|
||||
return '<table style="overflow:hidden;" width="100%" height="100%" border="1" cellpadding="4" class="title" style="height:100%;">' +
|
||||
'<tr><th>Customers</th></tr>' +
|
||||
|
@ -473,7 +473,7 @@ export default Scrollbars;
|
|||
{
|
||||
y = start.getCenterY() - div.scrollTop;
|
||||
|
||||
if (mxUtils.isNode(edge.cell.value) && !this.graph.isCellCollapsed(start.cell))
|
||||
if (mxUtils.isNode(edge.cell.value) && !start.cell.isCollapsed())
|
||||
{
|
||||
let attr = (source) ? 'sourceRow' : 'targetRow';
|
||||
let row = parseInt(edge.cell.value.getAttribute(attr));
|
||||
|
|
|
@ -356,7 +356,7 @@ export default Touch;
|
|||
|
||||
// Only show connector image on one cell and do not show on containers
|
||||
if (this.graph.connectionHandler.isEnabled() &&
|
||||
this.graph.isCellConnectable(this.state.cell) &&
|
||||
this.state.cell.isConnectable() &&
|
||||
this.graph.getSelectionCount() == 1)
|
||||
{
|
||||
this.connectorImg = mxUtils.createImage(connectorSrc);
|
||||
|
|
|
@ -1885,7 +1885,7 @@ Graph.prototype.init = function(container)
|
|||
Graph.prototype.isRecursiveVertexResize = function(state)
|
||||
{
|
||||
return !this.isSwimlane(state.cell) && state.cell.getChildCount() > 0 &&
|
||||
!this.isCellCollapsed(state.cell) && mxUtils.getValue(state.style, 'recursiveResize', '1') == '1' &&
|
||||
!state.cell.isCollapsed() && mxUtils.getValue(state.style, 'recursiveResize', '1') == '1' &&
|
||||
mxUtils.getValue(state.style, 'childLayout', null) == null;
|
||||
}
|
||||
|
||||
|
@ -3120,18 +3120,18 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
|
|||
|
||||
// Uses connectable parent vertex if one exists
|
||||
// TODO: Fix using target as parent for swimlane
|
||||
if (target != null && !this.isCellConnectable(target) && !this.isSwimlane(target))
|
||||
if (target != null && !target.isConnectable() && !this.isSwimlane(target))
|
||||
{
|
||||
let parent = target.getParent();
|
||||
|
||||
if (parent.isVertex() && this.isCellConnectable(parent))
|
||||
if (parent.isVertex() && parent.isConnectable())
|
||||
{
|
||||
target = parent;
|
||||
}
|
||||
}
|
||||
|
||||
if (target == source || target.isEdge() ||
|
||||
!this.isCellConnectable(target) &&
|
||||
!target.isConnectable() &&
|
||||
!this.isSwimlane(target))
|
||||
{
|
||||
target = null;
|
||||
|
@ -3398,7 +3398,7 @@ Graph.prototype.getCellStyle = function(cell)
|
|||
{
|
||||
let parent = cell.getParent();
|
||||
|
||||
if (parent.isVertex() && this.isCellCollapsed(cell))
|
||||
if (parent.isVertex() && cell.isCollapsed())
|
||||
{
|
||||
let layout = this.layoutManager.getLayout(parent);
|
||||
|
||||
|
@ -4480,7 +4480,7 @@ HoverIcons.prototype.repaint = function()
|
|||
// Cell was deleted
|
||||
if (this.currentState != null &&
|
||||
this.currentState.cell.isVertex() &&
|
||||
this.graph.isCellConnectable(this.currentState.cell))
|
||||
this.currentState.cell.isConnectable())
|
||||
{
|
||||
let bds = mxRectangle.fromRectangle(this.currentState);
|
||||
|
||||
|
@ -4692,11 +4692,11 @@ HoverIcons.prototype.getState = function(state)
|
|||
else
|
||||
{
|
||||
// Uses connectable parent vertex if child is not connectable
|
||||
if (cell.isVertex() && !this.graph.isCellConnectable(cell))
|
||||
if (cell.isVertex() && !cell.isConnectable())
|
||||
{
|
||||
let parent = this.cell.getParent();
|
||||
|
||||
if (parent.isVertex() && this.graph.isCellConnectable(parent))
|
||||
if (parent.isVertex() && parent.isConnectable())
|
||||
{
|
||||
cell = parent;
|
||||
}
|
||||
|
@ -5151,7 +5151,7 @@ TableLayout.prototype.isHorizontal = function()
|
|||
TableLayout.prototype.isVertexIgnored = function(vertex)
|
||||
{
|
||||
return !vertex.isVertex() ||
|
||||
!this.graph.isCellVisible(vertex);
|
||||
!vertex.isVisible();
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -10282,7 +10282,7 @@ if (typeof mxVertexHandler != 'undefined')
|
|||
mxVertexHandler.prototype.isCenteredEvent = function(state, me)
|
||||
{
|
||||
return (!(!this.graph.isSwimlane(state.cell) && state.cell.getChildCount() > 0 &&
|
||||
!this.graph.isCellCollapsed(state.cell) &&
|
||||
!state.cell.isCollapsed() &&
|
||||
mxUtils.getValue(state.style, 'recursiveResize', '1') == '1' &&
|
||||
mxUtils.getValue(state.style, 'childLayout', null) == null) &&
|
||||
mxEvent.isControlDown(me.getEvent())) ||
|
||||
|
|
|
@ -3444,13 +3444,13 @@ Sidebar.prototype.createDragSource = function(elt, dropHandler, preview, cells,
|
|||
}) : null;
|
||||
|
||||
// Uses connectable parent vertex if one exists
|
||||
if (cell != null && !this.graph.isCellConnectable(cell) &&
|
||||
if (cell != null && !cell.isConnectable() &&
|
||||
!cell.isEdge())
|
||||
{
|
||||
let parent = this.cell.getParent();
|
||||
|
||||
if (parent.isVertex() &&
|
||||
this.graph.isCellConnectable(parent))
|
||||
parent.isConnectable())
|
||||
{
|
||||
cell = parent;
|
||||
}
|
||||
|
@ -3641,9 +3641,9 @@ Sidebar.prototype.createDragSource = function(elt, dropHandler, preview, cells,
|
|||
state = currentStyleTarget;
|
||||
}
|
||||
|
||||
let validTarget = (firstVertex == null || graph.isCellConnectable(cells[firstVertex])) &&
|
||||
let validTarget = (firstVertex == null || cells[firstVertex].isConnectable()) &&
|
||||
((cell.isEdge() && firstVertex != null) ||
|
||||
(cell.isVertex() && graph.isCellConnectable(cell)));
|
||||
(cell.isVertex() && cell.isConnectable()));
|
||||
|
||||
// Drop arrows shown after this.dropTargetDelay, hidden after 5 secs, switches arrows after 500ms
|
||||
if ((currentTargetState != null && timeOnTarget >= 5000) ||
|
||||
|
|
|
@ -305,7 +305,7 @@ class mxDefaultToolbar {
|
|||
target == null ||
|
||||
target.isEdge() ||
|
||||
!this.connectOnDrop ||
|
||||
!graph.isCellConnectable(target)
|
||||
!target.isConnectable()
|
||||
) {
|
||||
while (
|
||||
target != null &&
|
||||
|
@ -363,7 +363,7 @@ class mxDefaultToolbar {
|
|||
|
||||
if (
|
||||
source != null &&
|
||||
graph.isCellConnectable(vertex) &&
|
||||
vertex.isCellConnectable() &&
|
||||
graph.isEdgeValid(null, source, vertex)
|
||||
) {
|
||||
let edge = null;
|
||||
|
|
|
@ -596,12 +596,12 @@ class mxConnectionHandler extends mxEventSource {
|
|||
}
|
||||
|
||||
// Uses connectable parent vertex if one exists
|
||||
if (cell != null && !self.graph.isCellConnectable(cell)) {
|
||||
if (cell != null && !cell.isConnectable()) {
|
||||
const parent = self.cell.getParent();
|
||||
|
||||
if (
|
||||
parent.isVertex() &&
|
||||
self.graph.isCellConnectable(parent)
|
||||
parent.isConnectable()
|
||||
) {
|
||||
cell = parent;
|
||||
}
|
||||
|
@ -1206,7 +1206,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
// are not equal (due to grid snapping) and there is no hit on shape or highlight
|
||||
// but ignores cases where parent is used for non-connectable child cells
|
||||
if (
|
||||
this.graph.isCellConnectable(me.getCell()) &&
|
||||
me.getCell().isConnectable() &&
|
||||
this.marker.getValidState() !== me.getState()
|
||||
) {
|
||||
this.marker.highlight.shape.stroke = 'transparent';
|
||||
|
|
|
@ -205,18 +205,22 @@ class mxConstraintHandler {
|
|||
}
|
||||
|
||||
// Uses connectable parent vertex if one exists
|
||||
if (cell != null && !this.graph.isCellConnectable(cell)) {
|
||||
if (cell != null && !cell.isConnectable()) {
|
||||
const parent = this.cell.getParent();
|
||||
|
||||
if (
|
||||
parent.isVertex() &&
|
||||
this.graph.isCellConnectable(parent)
|
||||
parent.isConnectable()
|
||||
) {
|
||||
cell = parent;
|
||||
}
|
||||
}
|
||||
|
||||
return this.graph.isCellLocked(cell) ? null : cell;
|
||||
if (cell) {
|
||||
return this.graph.isCellLocked(cell) ? null : cell;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -385,7 +389,7 @@ class mxConstraintHandler {
|
|||
this.constraints =
|
||||
state != null &&
|
||||
!this.isStateIgnored(state, source) &&
|
||||
this.graph.isCellConnectable(state.cell)
|
||||
state.cell.isConnectable()
|
||||
? this.isEnabled()
|
||||
? this.graph.getAllConnectionConstraints(state, source) || []
|
||||
: []
|
||||
|
|
|
@ -601,12 +601,12 @@ class mxEdgeHandler {
|
|||
}
|
||||
|
||||
// Uses connectable parent vertex if one exists
|
||||
if (cell != null && !this.graph.isCellConnectable(cell)) {
|
||||
if (cell != null && !cell.isConnectable()) {
|
||||
const parent = this.cell.getParent();
|
||||
|
||||
if (
|
||||
parent.isVertex() &&
|
||||
this.graph.isCellConnectable(parent)
|
||||
parent.isConnectable()
|
||||
) {
|
||||
cell = parent;
|
||||
}
|
||||
|
@ -632,7 +632,7 @@ class mxEdgeHandler {
|
|||
cell = null;
|
||||
}
|
||||
|
||||
if (!this.graph.isCellConnectable(cell)) {
|
||||
if (cell && !cell.isConnectable()) {
|
||||
cell = null;
|
||||
}
|
||||
return cell;
|
||||
|
@ -1523,7 +1523,7 @@ class mxEdgeHandler {
|
|||
this.marker.highlight.repaint();
|
||||
} else if (this.marker.hasValidState()) {
|
||||
this.marker.highlight.shape.stroke =
|
||||
this.graph.isCellConnectable(me.getCell()) &&
|
||||
me.getCell().isConnectable() &&
|
||||
this.marker.getValidState() !== me.getState()
|
||||
? 'transparent'
|
||||
: mxConstants.DEFAULT_VALID_COLOR;
|
||||
|
@ -1661,7 +1661,7 @@ class mxEdgeHandler {
|
|||
} else if (
|
||||
terminalState != null &&
|
||||
terminalState !== me.getState() &&
|
||||
this.graph.isCellConnectable(me.getCell()) &&
|
||||
me.getCell().isConnectable() &&
|
||||
this.marker.highlight.shape != null
|
||||
) {
|
||||
this.marker.highlight.shape.stroke = 'transparent';
|
||||
|
|
|
@ -1109,7 +1109,7 @@ class mxGraphHandler {
|
|||
cell != null &&
|
||||
this.cells.length === 1 &&
|
||||
cell.isVertex() &&
|
||||
graph.isCellConnectable(cell)
|
||||
cell.isConnectable()
|
||||
) {
|
||||
state = graph.getView().getState(cell);
|
||||
|
||||
|
@ -1603,9 +1603,10 @@ class mxGraphHandler {
|
|||
this.target == null &&
|
||||
cell != null &&
|
||||
cell.isVertex() &&
|
||||
graph.isCellConnectable(cell) &&
|
||||
cell.isConnectable() &&
|
||||
graph.isEdgeValid(null, this.cell, cell)
|
||||
) {
|
||||
alert("CONNECT")
|
||||
graph.connectionHandler.connect(this.cell, cell, me.getEvent());
|
||||
} else {
|
||||
const clone =
|
||||
|
@ -1615,9 +1616,10 @@ class mxGraphHandler {
|
|||
const { scale } = graph.getView();
|
||||
const dx = this.roundLength(this.currentDx / scale);
|
||||
const dy = this.roundLength(this.currentDy / scale);
|
||||
const { target } = this;
|
||||
const target = this.target;
|
||||
|
||||
if (
|
||||
target &&
|
||||
graph.isSplitEnabled() &&
|
||||
graph.isSplitTarget(target, this.cells, me.getEvent())
|
||||
) {
|
||||
|
|
|
@ -1223,7 +1223,7 @@ class mxVertexHandler {
|
|||
|
||||
// Shifts the children according to parent offset
|
||||
if (
|
||||
!this.graph.isCellCollapsed(this.state.cell) &&
|
||||
!this.state.cell.isCollapsed() &&
|
||||
(dx3 !== 0 || dy3 !== 0)
|
||||
) {
|
||||
this.childOffsetX = this.state.x - this.bounds.x + dx5;
|
||||
|
|
|
@ -265,7 +265,7 @@ class mxHierarchicalLayout extends mxGraphLayout {
|
|||
try {
|
||||
this.run(parent);
|
||||
|
||||
if (this.resizeParent && !this.graph.isCellCollapsed(parent)) {
|
||||
if (this.resizeParent && !parent.isCollapsed()) {
|
||||
this.graph.updateGroupBounds(
|
||||
[parent],
|
||||
this.parentBorder,
|
||||
|
@ -314,7 +314,7 @@ class mxHierarchicalLayout extends mxGraphLayout {
|
|||
for (const i in vertices) {
|
||||
const cell = vertices[i];
|
||||
|
||||
if (cell.isVertex() && this.graph.isCellVisible(cell)) {
|
||||
if (cell.isVertex() && cell.isVisible()) {
|
||||
const conns = this.getEdges(cell);
|
||||
let fanOut = 0;
|
||||
let fanIn = 0;
|
||||
|
@ -368,7 +368,7 @@ class mxHierarchicalLayout extends mxGraphLayout {
|
|||
|
||||
const { model } = this.graph;
|
||||
let edges = [];
|
||||
const isCollapsed = this.graph.isCellCollapsed(cell);
|
||||
const isCollapsed = cell.isCollapsed();
|
||||
const childCount = cell.getChildCount();
|
||||
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
|
@ -376,7 +376,7 @@ class mxHierarchicalLayout extends mxGraphLayout {
|
|||
|
||||
if (this.isPort(child)) {
|
||||
edges = edges.concat(model.getEdges(child, true, true));
|
||||
} else if (isCollapsed || !this.graph.isCellVisible(child)) {
|
||||
} else if (isCollapsed || !child.isVisible()) {
|
||||
edges = edges.concat(model.getEdges(child, true, true));
|
||||
}
|
||||
}
|
||||
|
@ -577,14 +577,14 @@ class mxHierarchicalLayout extends mxGraphLayout {
|
|||
if (
|
||||
cell.isVertex() &&
|
||||
cell !== this.parent &&
|
||||
this.graph.isCellVisible(cell)
|
||||
cell.isVisible()
|
||||
) {
|
||||
result[mxObjectIdentity.get(cell)] = cell;
|
||||
}
|
||||
|
||||
if (
|
||||
this.traverseAncestors ||
|
||||
(cell === this.parent && this.graph.isCellVisible(cell))
|
||||
(cell === this.parent && cell.isVisible())
|
||||
) {
|
||||
const childCount = cell.getChildCount();
|
||||
|
||||
|
|
|
@ -286,7 +286,7 @@ class mxSwimlaneLayout extends mxGraphLayout {
|
|||
try {
|
||||
this.run(parent);
|
||||
|
||||
if (this.resizeParent && !this.graph.isCellCollapsed(parent)) {
|
||||
if (this.resizeParent && !parent.isCollapsed()) {
|
||||
this.graph.updateGroupBounds(
|
||||
[parent],
|
||||
this.parentBorder,
|
||||
|
@ -429,7 +429,7 @@ class mxSwimlaneLayout extends mxGraphLayout {
|
|||
if (
|
||||
cell != null &&
|
||||
cell.isVertex() &&
|
||||
this.graph.isCellVisible(cell) &&
|
||||
cell.isVisible() &&
|
||||
model.isAncestor(parent, cell)
|
||||
) {
|
||||
const conns = this.getEdges(cell);
|
||||
|
@ -490,7 +490,7 @@ class mxSwimlaneLayout extends mxGraphLayout {
|
|||
|
||||
const { model } = this.graph;
|
||||
let edges = [];
|
||||
const isCollapsed = this.graph.isCellCollapsed(cell);
|
||||
const isCollapsed = cell.isCollapsed();
|
||||
const childCount = cell.getChildCount();
|
||||
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
|
@ -498,7 +498,7 @@ class mxSwimlaneLayout extends mxGraphLayout {
|
|||
|
||||
if (this.isPort(child)) {
|
||||
edges = edges.concat(model.getEdges(child, true, true));
|
||||
} else if (isCollapsed || !this.graph.isCellVisible(child)) {
|
||||
} else if (isCollapsed || !child.isVisible()) {
|
||||
edges = edges.concat(model.getEdges(child, true, true));
|
||||
}
|
||||
}
|
||||
|
@ -713,14 +713,14 @@ class mxSwimlaneLayout extends mxGraphLayout {
|
|||
cell.isVertex() &&
|
||||
cell !== this.parent &&
|
||||
cell.getParent() !== this.parent &&
|
||||
this.graph.isCellVisible(cell)
|
||||
cell.isVisible()
|
||||
) {
|
||||
result[mxObjectIdentity.get(cell)] = cell;
|
||||
}
|
||||
|
||||
if (
|
||||
this.traverseAncestors ||
|
||||
(cell === this.parent && this.graph.isCellVisible(cell))
|
||||
(cell === this.parent && cell.isVisible())
|
||||
) {
|
||||
const childCount = cell.getChildCount();
|
||||
|
||||
|
|
|
@ -214,7 +214,7 @@ class mxGraphLayout {
|
|||
isVertexIgnored(vertex) {
|
||||
return (
|
||||
!vertex.isVertex() ||
|
||||
!this.graph.isCellVisible(vertex)
|
||||
!vertex.isVisible()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -230,7 +230,7 @@ class mxGraphLayout {
|
|||
|
||||
return (
|
||||
!edge.isEdge() ||
|
||||
!this.graph.isCellVisible(edge) ||
|
||||
!edge.isVisible() ||
|
||||
edge.getTerminal(true) == null ||
|
||||
edge.getTerminal(false) == null
|
||||
);
|
||||
|
|
|
@ -456,7 +456,7 @@ class mxStackLayout extends mxGraphLayout {
|
|||
this.resizeParent &&
|
||||
pgeo != null &&
|
||||
last != null &&
|
||||
!this.graph.isCellCollapsed(parent)
|
||||
!parent.isCollapsed()
|
||||
) {
|
||||
this.updateParentGeometry(parent, pgeo, last);
|
||||
} else if (
|
||||
|
|
|
@ -10,6 +10,8 @@ import mxConstants from '../../util/mxConstants';
|
|||
import mxGeometry from '../../util/datatypes/mxGeometry';
|
||||
import mxCellOverlay from './mxCellOverlay';
|
||||
import { clone } from '../../util/mxCloneUtils';
|
||||
import mxPoint from "../../util/datatypes/mxPoint";
|
||||
import mxCellPath from "./mxCellPath";
|
||||
|
||||
/**
|
||||
* Cells are the elements of the graph model. They represent the state
|
||||
|
@ -707,6 +709,289 @@ class mxCell {
|
|||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the nearest common ancestor for the specified cells to `this`.
|
||||
*
|
||||
* @param {mxCell} cell2 that specifies the second cell in the tree.
|
||||
*/
|
||||
// getNearestCommonAncestor(cell1: mxCell, cell2: mxCell): mxCell;
|
||||
getNearestCommonAncestor(cell2: mxCell | null): mxCell | null {
|
||||
|
||||
// Creates the cell path for the second cell
|
||||
let path = mxCellPath.create(<mxCell>cell2);
|
||||
|
||||
if (path != null && path.length > 0) {
|
||||
// Bubbles through the ancestors of the first
|
||||
// cell to find the nearest common ancestor.
|
||||
let cell: mxCell | null = this;
|
||||
let current: string | null = mxCellPath.create(<mxCell>cell);
|
||||
|
||||
// Inverts arguments
|
||||
if (path.length < current.length) {
|
||||
cell = cell2;
|
||||
const tmp = current;
|
||||
current = path;
|
||||
path = tmp;
|
||||
}
|
||||
|
||||
while (cell != null) {
|
||||
const parent = <mxCell>cell.getParent();
|
||||
|
||||
// Checks if the cell path is equal to the beginning of the given cell path
|
||||
if (
|
||||
path.indexOf(current + mxCellPath.PATH_SEPARATOR) === 0 &&
|
||||
parent != null
|
||||
) {
|
||||
return cell;
|
||||
}
|
||||
|
||||
current = mxCellPath.getParentPath(<string>current);
|
||||
cell = parent;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the given parent is an ancestor of the given child. Note
|
||||
* returns true if child == parent.
|
||||
*
|
||||
* @param {mxCell} child that specifies the child.
|
||||
*/
|
||||
// isAncestor(parent: mxCell, child: mxCell): boolean;
|
||||
isAncestor(child: mxCell | null): boolean {
|
||||
|
||||
while (child != null && child !== this) {
|
||||
child = <mxCell>child.getParent();
|
||||
}
|
||||
return child === this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the child vertices of the given parent.
|
||||
*/
|
||||
// getChildVertices(parent: mxCell): Array<mxCell>;
|
||||
getChildVertices() {
|
||||
return this.getChildCells(true, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the child edges of the given parent.
|
||||
*/
|
||||
// getChildEdges(parent: mxCell): Array<mxCell>;
|
||||
getChildEdges(): mxCell[] {
|
||||
return this.getChildCells(false, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the children of the given cell that are vertices and/or edges
|
||||
* depending on the arguments.
|
||||
*
|
||||
* @param vertices Boolean indicating if child vertices should be returned.
|
||||
* Default is false.
|
||||
* @param edges Boolean indicating if child edges should be returned.
|
||||
* Default is false.
|
||||
*/
|
||||
// getChildCells(parent: mxCell, vertices: boolean, edges: boolean): Array<mxCell>;
|
||||
getChildCells(vertices: boolean=false,
|
||||
edges: boolean=false): mxCell[] {
|
||||
|
||||
const childCount = this.getChildCount();
|
||||
const result = [];
|
||||
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
const child = <mxCell>this.getChildAt(i);
|
||||
|
||||
if (
|
||||
(!edges && !vertices) ||
|
||||
(edges && child.isEdge()) ||
|
||||
(vertices && child.isVertex())
|
||||
) {
|
||||
result.push(child);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of incoming or outgoing edges, ignoring the given
|
||||
* edge.
|
||||
*
|
||||
* @param outgoing Boolean that specifies if the number of outgoing or
|
||||
* incoming edges should be returned.
|
||||
* @param {mxCell} ignoredEdge that represents an edge to be ignored.
|
||||
*/
|
||||
// getDirectedEdgeCount(cell: mxCell, outgoing: boolean, ignoredEdge: boolean): number;
|
||||
getDirectedEdgeCount(outgoing: boolean,
|
||||
ignoredEdge: mxCell | null=null): number {
|
||||
let count = 0;
|
||||
const edgeCount = this.getEdgeCount();
|
||||
|
||||
for (let i = 0; i < edgeCount; i += 1) {
|
||||
const edge = this.getEdgeAt(i);
|
||||
if (edge !== ignoredEdge && edge && edge.getTerminal(outgoing) === this) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all edges of the given cell without loops.
|
||||
*/
|
||||
// getConnections(cell: mxCell): Array<mxCell>;
|
||||
getConnections() {
|
||||
return this.getEdges(true, true, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the incoming edges of the given cell without loops.
|
||||
*/
|
||||
// getIncomingEdges(cell: mxCell): Array<mxCell>;
|
||||
getIncomingEdges(): mxCell[] {
|
||||
return this.getEdges(true, false, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the outgoing edges of the given cell without loops.
|
||||
*/
|
||||
// getOutgoingEdges(cell: mxCell): Array<mxCell>;
|
||||
getOutgoingEdges(): mxCell[] {
|
||||
return this.getEdges(false, true, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all distinct edges connected to this cell as a new array of
|
||||
* {@link mxCell}. If at least one of incoming or outgoing is true, then loops
|
||||
* are ignored, otherwise if both are false, then all edges connected to
|
||||
* the given cell are returned including loops.
|
||||
*
|
||||
* @param incoming Optional boolean that specifies if incoming edges should be
|
||||
* returned. Default is true.
|
||||
* @param outgoing Optional boolean that specifies if outgoing edges should be
|
||||
* returned. Default is true.
|
||||
* @param includeLoops Optional boolean that specifies if loops should be returned.
|
||||
* Default is true.
|
||||
*/
|
||||
// getEdges(cell: mxCell, incoming?: boolean, outgoing?: boolean, includeLoops?: boolean): Array<mxCell>;
|
||||
getEdges(incoming: boolean=true,
|
||||
outgoing: boolean=true,
|
||||
includeLoops: boolean=true) {
|
||||
|
||||
const edgeCount = this.getEdgeCount();
|
||||
const result = [];
|
||||
|
||||
for (let i = 0; i < edgeCount; i += 1) {
|
||||
const edge = <mxCell>this.getEdgeAt(i);
|
||||
const source = edge.getTerminal(true);
|
||||
const target = edge.getTerminal(false);
|
||||
|
||||
if (
|
||||
(includeLoops && source === target) ||
|
||||
(source !== target &&
|
||||
((incoming && target === this) || (outgoing && source === this)))
|
||||
) {
|
||||
result.push(edge);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the absolute, accumulated origin for the children inside the
|
||||
* given parent as an {@link mxPoint}.
|
||||
*/
|
||||
// getOrigin(cell: mxCell): mxPoint;
|
||||
getOrigin(): mxPoint {
|
||||
let result = null;
|
||||
|
||||
if (this != null) {
|
||||
result = (<mxCell>this.getParent()).getOrigin();
|
||||
|
||||
if (!this.isEdge()) {
|
||||
const geo = this.getGeometry();
|
||||
|
||||
if (geo != null) {
|
||||
result.x += geo.x;
|
||||
result.y += geo.y;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
result = new mxPoint();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all descendants of the given cell and the cell itself in an array.
|
||||
*/
|
||||
// getDescendants(parent: mxCell): Array<mxCell>;
|
||||
getDescendants(): mxCell[] {
|
||||
return this.filterDescendants(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Visits all cells recursively and applies the specified filter function
|
||||
* to each cell. If the function returns true then the cell is added
|
||||
* to the resulting array. The parent and result paramters are optional.
|
||||
* If parent is not specified then the recursion starts at {@link root}.
|
||||
*
|
||||
* Example:
|
||||
* The following example extracts all vertices from a given model:
|
||||
* ```javascript
|
||||
* var filter(cell)
|
||||
* {
|
||||
* return model.isVertex(cell);
|
||||
* }
|
||||
* var vertices = model.filterDescendants(filter);
|
||||
* ```
|
||||
*
|
||||
* @param filter JavaScript function that takes an {@link mxCell} as an argument
|
||||
* and returns a boolean.
|
||||
*/
|
||||
// filterDescendants(filter: (...args: any) => boolean, parent?: mxCell): Array<mxCell>;
|
||||
filterDescendants(filter: Function | null): mxCell[] {
|
||||
let parent = this;
|
||||
|
||||
// Creates a new array for storing the result
|
||||
let result: mxCell[] = [];
|
||||
|
||||
// Recursion starts at the root of the model
|
||||
parent = parent || this.getRoot();
|
||||
|
||||
// Checks if the filter returns true for the cell
|
||||
// and adds it to the result array
|
||||
if (filter == null || filter(parent)) {
|
||||
result.push(parent);
|
||||
}
|
||||
|
||||
// Visits the children of the cell
|
||||
const childCount = parent.getChildCount();
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
const child = <mxCell>parent.getChildAt(i);
|
||||
result = result.concat(child.filterDescendants(filter));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the root of the model or the topmost parent of the given cell.
|
||||
*/
|
||||
// getRoot(cell?: mxCell): mxCell;
|
||||
getRoot(): mxCell {
|
||||
let root: mxCell = this;
|
||||
let cell: mxCell = this;
|
||||
|
||||
while (cell != null) {
|
||||
root = cell;
|
||||
cell = <mxCell>cell.getParent();
|
||||
}
|
||||
return root;
|
||||
}
|
||||
}
|
||||
|
||||
export default mxCell;
|
||||
|
|
|
@ -717,7 +717,7 @@ class mxCellRenderer {
|
|||
|
||||
return (evt: mxEventObject) => {
|
||||
if (this.forceControlClickHandler || graph.isEnabled()) {
|
||||
const collapse = !graph.isCellCollapsed(state.cell);
|
||||
const collapse = !state.cell.isCollapsed();
|
||||
graph.foldCells(collapse, false, [state.cell], false, evt);
|
||||
mxEvent.consume(evt);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ import mxCell from "./mxCell";
|
|||
import mxDictionary from "../../util/datatypes/mxDictionary";
|
||||
import mxObjectIdentity from "../../util/datatypes/mxObjectIdentity";
|
||||
|
||||
class mxCells<mxCell> extends Array<mxCell> {
|
||||
class mxCells extends Array<mxCell> {
|
||||
constructor(...items: mxCell[]) {
|
||||
super(...items);
|
||||
}
|
||||
|
|
|
@ -1330,7 +1330,7 @@ class mxGraph extends mxEventSource {
|
|||
let par = cells[i].getParent();
|
||||
|
||||
while (par != null && par !== this.getView().currentRoot) {
|
||||
if (this.isCellCollapsed(par) || !par.isVisible()) {
|
||||
if (par.isCollapsed() || !par.isVisible()) {
|
||||
removed.push(cells[i]);
|
||||
break;
|
||||
}
|
||||
|
@ -1374,7 +1374,7 @@ class mxGraph extends mxEventSource {
|
|||
const newParent = change.child.getParent();
|
||||
this.getView().invalidate(change.child, true, true);
|
||||
|
||||
if (!this.getModel().contains(newParent) || this.isCellCollapsed(newParent)) {
|
||||
if (!this.getModel().contains(newParent) || newParent.isCollapsed()) {
|
||||
this.getView().invalidate(change.child, true, true);
|
||||
this.removeStateForCell(change.child);
|
||||
|
||||
|
@ -4470,7 +4470,7 @@ class mxGraph extends mxEventSource {
|
|||
for (let i = 0; i < cells.length; i += 1) {
|
||||
if (
|
||||
(!checkFoldable || this.isCellFoldable(cells[i], collapse)) &&
|
||||
collapse !== this.isCellCollapsed(cells[i])
|
||||
collapse !== cells[i].isCollapsed()
|
||||
) {
|
||||
this.getModel().setCollapsed(cells[i], collapse);
|
||||
this.swapBounds(cells[i], collapse);
|
||||
|
@ -4678,7 +4678,7 @@ class mxGraph extends mxEventSource {
|
|||
let geo = cell.getGeometry();
|
||||
|
||||
if (size != null && geo != null) {
|
||||
const collapsed = this.isCellCollapsed(cell);
|
||||
const collapsed = cell.isCollapsed();
|
||||
geo = <mxGeometry>geo.clone();
|
||||
|
||||
if (this.isSwimlane(cell)) {
|
||||
|
@ -5186,7 +5186,7 @@ class mxGraph extends mxEventSource {
|
|||
const parent = <mxCell>cell.getParent();
|
||||
let p = parent.getGeometry();
|
||||
|
||||
if (parent != null && p != null && !this.isCellCollapsed(parent)) {
|
||||
if (parent != null && p != null && !parent.isCollapsed()) {
|
||||
const geo = cell.getGeometry();
|
||||
|
||||
if (
|
||||
|
@ -5640,7 +5640,7 @@ class mxGraph extends mxEventSource {
|
|||
if (max != null) {
|
||||
const cells = [cell];
|
||||
|
||||
if (!this.isCellCollapsed(cell)) {
|
||||
if (!cell.isCollapsed()) {
|
||||
const desc = this.getModel().getDescendants(cell);
|
||||
|
||||
for (let i = 0; i < desc.length; i += 1) {
|
||||
|
@ -7742,7 +7742,7 @@ class mxGraph extends mxEventSource {
|
|||
let warning = '';
|
||||
|
||||
// Adds error for invalid children if collapsed (children invisible)
|
||||
if (cell && this.isCellCollapsed(cell) && !isValid) {
|
||||
if (cell && cell.isCollapsed() && !isValid) {
|
||||
warning += `${mxResources.get(this.containsValidationErrorsResource) ||
|
||||
this.containsValidationErrorsResource}\n`;
|
||||
}
|
||||
|
@ -7859,7 +7859,7 @@ class mxGraph extends mxEventSource {
|
|||
this.foldingEnabled &&
|
||||
!state.cell.isEdge()
|
||||
) {
|
||||
const tmp = this.isCellCollapsed(<mxCell>state.cell);
|
||||
const tmp = (<mxCell>state.cell).isCollapsed();
|
||||
|
||||
if (this.isCellFoldable(state.cell, !tmp)) {
|
||||
return tmp ? this.collapsedImage : this.expandedImage;
|
||||
|
@ -9313,7 +9313,7 @@ class mxGraph extends mxEventSource {
|
|||
(cell == null && this.allowDanglingEdges) ||
|
||||
(cell != null &&
|
||||
(!cell.isEdge() || this.connectableEdges) &&
|
||||
this.isCellConnectable(cell))
|
||||
cell.isConnectable())
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -9666,7 +9666,7 @@ class mxGraph extends mxEventSource {
|
|||
(!cell.isEdge() &&
|
||||
(this.isSwimlane(cell) ||
|
||||
(cell.getChildCount() > 0 &&
|
||||
!this.isCellCollapsed(cell)))))
|
||||
!cell.isCollapsed()))))
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -9687,7 +9687,7 @@ class mxGraph extends mxEventSource {
|
|||
target.isEdge() &&
|
||||
cells != null &&
|
||||
cells.length == 1 &&
|
||||
this.isCellConnectable(cells[0]) &&
|
||||
cells[0].isConnectable() &&
|
||||
this.getEdgeValidationError(
|
||||
target,
|
||||
target.getTerminal(true),
|
||||
|
@ -10142,7 +10142,7 @@ class mxGraph extends mxEventSource {
|
|||
recurse: boolean=false): mxCell[] {
|
||||
|
||||
let edges: mxCell[] = [];
|
||||
const isCollapsed = this.isCellCollapsed(cell);
|
||||
const isCollapsed = cell.isCollapsed();
|
||||
const childCount = cell.getChildCount();
|
||||
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
|
|
|
@ -345,76 +345,20 @@ class mxGraphModel extends mxEventSource {
|
|||
return new mxCells(...cells).filterCells(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all descendants of the given cell and the cell itself in an array.
|
||||
*
|
||||
* @param {mxCell} parent whose descendants should be returned.
|
||||
*/
|
||||
// getDescendants(parent: mxCell): Array<mxCell>;
|
||||
getDescendants(parent: mxCell): mxCell[] {
|
||||
return this.filterDescendants(null, parent);
|
||||
// SLATED FOR DELETION
|
||||
return parent.getDescendants();
|
||||
}
|
||||
|
||||
/**
|
||||
* Visits all cells recursively and applies the specified filter function
|
||||
* to each cell. If the function returns true then the cell is added
|
||||
* to the resulting array. The parent and result paramters are optional.
|
||||
* If parent is not specified then the recursion starts at {@link root}.
|
||||
*
|
||||
* Example:
|
||||
* The following example extracts all vertices from a given model:
|
||||
* ```javascript
|
||||
* var filter(cell)
|
||||
* {
|
||||
* return model.isVertex(cell);
|
||||
* }
|
||||
* var vertices = model.filterDescendants(filter);
|
||||
* ```
|
||||
*
|
||||
* @param filter JavaScript function that takes an {@link mxCell} as an argument
|
||||
* and returns a boolean.
|
||||
* @param parent Optional {@link mxCell} that is used as the root of the recursion.
|
||||
*/
|
||||
// filterDescendants(filter: (...args: any) => boolean, parent?: mxCell): Array<mxCell>;
|
||||
filterDescendants(filter: Function | null,
|
||||
parent: mxCell): mxCell[] {
|
||||
// Creates a new array for storing the result
|
||||
let result: mxCell[] = [];
|
||||
|
||||
// Recursion starts at the root of the model
|
||||
parent = parent || this.getRoot();
|
||||
|
||||
// Checks if the filter returns true for the cell
|
||||
// and adds it to the result array
|
||||
if (filter == null || filter(parent)) {
|
||||
result.push(parent);
|
||||
}
|
||||
|
||||
// Visits the children of the cell
|
||||
const childCount = parent.getChildCount();
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
const child = <mxCell>parent.getChildAt(i);
|
||||
result = result.concat(this.filterDescendants(filter, child));
|
||||
}
|
||||
|
||||
return result;
|
||||
// SLATED FOR DELETION
|
||||
return parent.filterDescendants(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the root of the model or the topmost parent of the given cell.
|
||||
*
|
||||
* @param cell Optional {@link mxCell} that specifies the child.
|
||||
*/
|
||||
// getRoot(cell?: mxCell): mxCell;
|
||||
getRoot(cell: mxCell | null = null): mxCell | null {
|
||||
let root = cell || this.root;
|
||||
if (cell != null) {
|
||||
while (cell != null) {
|
||||
root = cell;
|
||||
cell = cell.getParent();
|
||||
}
|
||||
}
|
||||
return root;
|
||||
// SLATED FOR DELETION
|
||||
return cell ? cell.getRoot() : this.root;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -479,21 +423,10 @@ class mxGraphModel extends mxEventSource {
|
|||
return this.isRoot(cell.getParent());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the given parent is an ancestor of the given child. Note
|
||||
* returns true if child == parent.
|
||||
*
|
||||
* @param {mxCell} parent that specifies the parent.
|
||||
* @param {mxCell} child that specifies the child.
|
||||
*/
|
||||
// isAncestor(parent: mxCell, child: mxCell): boolean;
|
||||
isAncestor(parent: mxCell | null,
|
||||
child: mxCell | null): boolean {
|
||||
|
||||
while (child != null && child !== parent) {
|
||||
child = <mxCell>child.getParent();
|
||||
}
|
||||
return child === parent;
|
||||
// SLATED FOR DELETION
|
||||
return parent?.isAncestor(child) || false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -700,8 +633,8 @@ class mxGraphModel extends mxEventSource {
|
|||
if (this.isAncestor(root, source) && this.isAncestor(root, target)) {
|
||||
if (source === target) {
|
||||
cell = source ? source.getParent() : null;
|
||||
} else {
|
||||
cell = this.getNearestCommonAncestor(source, target);
|
||||
} else if (source) {
|
||||
cell = source.getNearestCommonAncestor(target);
|
||||
}
|
||||
|
||||
if (
|
||||
|
@ -728,75 +661,15 @@ class mxGraphModel extends mxEventSource {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the absolute, accumulated origin for the children inside the
|
||||
* given parent as an {@link mxPoint}.
|
||||
*/
|
||||
// getOrigin(cell: mxCell): mxPoint;
|
||||
getOrigin(cell: mxCell): mxPoint {
|
||||
let result = null;
|
||||
|
||||
if (cell != null) {
|
||||
result = this.getOrigin(<mxCell>cell.getParent());
|
||||
|
||||
if (!cell.isEdge()) {
|
||||
const geo = cell.getGeometry();
|
||||
|
||||
if (geo != null) {
|
||||
result.x += geo.x;
|
||||
result.y += geo.y;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
result = new mxPoint();
|
||||
}
|
||||
return result;
|
||||
// SLATED FOR DELETION
|
||||
return cell.getOrigin();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the nearest common ancestor for the specified cells.
|
||||
*
|
||||
* @param {mxCell} cell1 that specifies the first cell in the tree.
|
||||
* @param {mxCell} cell2 that specifies the second cell in the tree.
|
||||
*/
|
||||
// getNearestCommonAncestor(cell1: mxCell, cell2: mxCell): mxCell;
|
||||
getNearestCommonAncestor(cell1: mxCell | null,
|
||||
cell2: mxCell | null): mxCell | null {
|
||||
|
||||
// Creates the cell path for the second cell
|
||||
let path = mxCellPath.create(<mxCell>cell2);
|
||||
|
||||
if (path != null && path.length > 0) {
|
||||
// Bubbles through the ancestors of the first
|
||||
// cell to find the nearest common ancestor.
|
||||
let cell = cell1;
|
||||
let current: string | null = mxCellPath.create(<mxCell>cell);
|
||||
|
||||
// Inverts arguments
|
||||
if (path.length < current.length) {
|
||||
cell = cell2;
|
||||
const tmp = current;
|
||||
current = path;
|
||||
path = tmp;
|
||||
}
|
||||
|
||||
while (cell != null) {
|
||||
const parent = <mxCell>cell.getParent();
|
||||
|
||||
// Checks if the cell path is equal to the beginning of the given cell path
|
||||
if (
|
||||
path.indexOf(current + mxCellPath.PATH_SEPARATOR) === 0 &&
|
||||
parent != null
|
||||
) {
|
||||
return cell;
|
||||
}
|
||||
|
||||
current = mxCellPath.getParentPath(<string>current);
|
||||
cell = parent;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
getNearestCommonAncestor(cell1: mxCell,
|
||||
cell2: mxCell): mxCell | null {
|
||||
// SLATED FOR DELETION
|
||||
return cell1.getNearestCommonAncestor(cell2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -912,56 +785,21 @@ class mxGraphModel extends mxEventSource {
|
|||
return cell.children || [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the child vertices of the given parent.
|
||||
*
|
||||
* @param {mxCell} cell whose child vertices should be returned.
|
||||
*/
|
||||
// getChildVertices(parent: mxCell): Array<mxCell>;
|
||||
getChildVertices(parent: mxCell) {
|
||||
return this.getChildCells(parent, true, false);
|
||||
// SLATED FOR DELETION
|
||||
return parent.getChildVertices();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the child edges of the given parent.
|
||||
*
|
||||
* @param {mxCell} cell whose child edges should be returned.
|
||||
*/
|
||||
// getChildEdges(parent: mxCell): Array<mxCell>;
|
||||
getChildEdges(parent: mxCell): mxCell[] {
|
||||
return this.getChildCells(parent, false, true);
|
||||
// SLATED FOR DELETION
|
||||
return parent.getChildEdges();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the children of the given cell that are vertices and/or edges
|
||||
* depending on the arguments.
|
||||
*
|
||||
* @param {mxCell} cell the represents the parent.
|
||||
* @param vertices Boolean indicating if child vertices should be returned.
|
||||
* Default is false.
|
||||
* @param edges Boolean indicating if child edges should be returned.
|
||||
* Default is false.
|
||||
*/
|
||||
// getChildCells(parent: mxCell, vertices: boolean, edges: boolean): Array<mxCell>;
|
||||
getChildCells(parent: mxCell,
|
||||
vertices: boolean=false,
|
||||
edges: boolean=false): mxCell[] {
|
||||
|
||||
const childCount = parent.getChildCount();
|
||||
const result = [];
|
||||
|
||||
for (let i = 0; i < childCount; i += 1) {
|
||||
const child = <mxCell>parent.getChildAt(i);
|
||||
|
||||
if (
|
||||
(!edges && !vertices) ||
|
||||
(edges && child.isEdge()) ||
|
||||
(vertices && child.isVertex())
|
||||
) {
|
||||
result.push(child);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
// SLATED FOR DELETION
|
||||
return parent.getChildCells(vertices, edges);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1073,102 +911,34 @@ class mxGraphModel extends mxEventSource {
|
|||
return cell.getEdgeAt(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of incoming or outgoing edges, ignoring the given
|
||||
* edge.
|
||||
*
|
||||
* @param {mxCell} cell whose edge count should be returned.
|
||||
* @param outgoing Boolean that specifies if the number of outgoing or
|
||||
* incoming edges should be returned.
|
||||
* @param {mxCell} ignoredEdge that represents an edge to be ignored.
|
||||
*/
|
||||
// getDirectedEdgeCount(cell: mxCell, outgoing: boolean, ignoredEdge: boolean): number;
|
||||
getDirectedEdgeCount(cell: mxCell,
|
||||
outgoing: boolean,
|
||||
ignoredEdge: mxCell | null=null): number {
|
||||
let count = 0;
|
||||
const edgeCount = cell.getEdgeCount();
|
||||
|
||||
for (let i = 0; i < edgeCount; i += 1) {
|
||||
const edge = cell.getEdgeAt(i);
|
||||
if (edge !== ignoredEdge && edge && edge.getTerminal(outgoing) === cell) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
// SLATED FOR DELETION
|
||||
return cell.getDirectedEdgeCount(outgoing, ignoredEdge)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all edges of the given cell without loops.
|
||||
*
|
||||
* @param {mxCell} cell whose edges should be returned.
|
||||
*
|
||||
*/
|
||||
// getConnections(cell: mxCell): Array<mxCell>;
|
||||
getConnections(cell: mxCell) {
|
||||
return this.getEdges(cell, true, true, false);
|
||||
// SLATED FOR DELETION
|
||||
return cell.getConnections();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the incoming edges of the given cell without loops.
|
||||
*
|
||||
* @param {mxCell} cell whose incoming edges should be returned.
|
||||
*
|
||||
*/
|
||||
// getIncomingEdges(cell: mxCell): Array<mxCell>;
|
||||
getIncomingEdges(cell: mxCell): mxCell[] {
|
||||
return this.getEdges(cell, true, false, false);
|
||||
// SLATED FOR DELETION
|
||||
return cell.getIncomingEdges();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the outgoing edges of the given cell without loops.
|
||||
*
|
||||
* @param {mxCell} cell whose outgoing edges should be returned.
|
||||
*
|
||||
*/
|
||||
// getOutgoingEdges(cell: mxCell): Array<mxCell>;
|
||||
getOutgoingEdges(cell: mxCell): mxCell[] {
|
||||
return this.getEdges(cell, false, true, false);
|
||||
// SLATED FOR DELETION
|
||||
return cell.getOutgoingEdges();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all distinct edges connected to this cell as a new array of
|
||||
* {@link mxCell}. If at least one of incoming or outgoing is true, then loops
|
||||
* are ignored, otherwise if both are false, then all edges connected to
|
||||
* the given cell are returned including loops.
|
||||
*
|
||||
* @param {mxCell} cell that specifies the cell.
|
||||
* @param incoming Optional boolean that specifies if incoming edges should be
|
||||
* returned. Default is true.
|
||||
* @param outgoing Optional boolean that specifies if outgoing edges should be
|
||||
* returned. Default is true.
|
||||
* @param includeLoops Optional boolean that specifies if loops should be returned.
|
||||
* Default is true.
|
||||
*/
|
||||
// getEdges(cell: mxCell, incoming?: boolean, outgoing?: boolean, includeLoops?: boolean): Array<mxCell>;
|
||||
getEdges(cell: mxCell,
|
||||
incoming: boolean=true,
|
||||
outgoing: boolean=true,
|
||||
includeLoops: boolean=true) {
|
||||
|
||||
const edgeCount = cell.getEdgeCount();
|
||||
const result = [];
|
||||
|
||||
for (let i = 0; i < edgeCount; i += 1) {
|
||||
const edge = <mxCell>cell.getEdgeAt(i);
|
||||
const source = edge.getTerminal(true);
|
||||
const target = edge.getTerminal(false);
|
||||
|
||||
if (
|
||||
(includeLoops && source === target) ||
|
||||
(source !== target &&
|
||||
((incoming && target === cell) || (outgoing && source === cell)))
|
||||
) {
|
||||
result.push(edge);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
// SLATED FOR DELETION
|
||||
return cell.getEdges(incoming, outgoing, includeLoops);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -859,7 +859,7 @@ class mxGraphView extends mxEventSource {
|
|||
this.validateCell(
|
||||
<mxCell>cell.getChildAt(i),
|
||||
visible &&
|
||||
(!this.isCellCollapsed(cell) || cell === this.currentRoot)
|
||||
(!cell.isCollapsed() || cell === this.currentRoot)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1020,7 +1020,8 @@ class mxGraphView extends mxEventSource {
|
|||
*/
|
||||
// isCellCollapsed(cell: mxCell): boolean;
|
||||
isCellCollapsed(cell: mxCell): boolean {
|
||||
return (<mxGraph>this.graph).isCellCollapsed(cell);
|
||||
// SLATED FOR DELETION
|
||||
return cell.isCollapsed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1837,7 +1838,7 @@ class mxGraphView extends mxEventSource {
|
|||
let best = result;
|
||||
|
||||
while (result != null && result != this.currentRoot) {
|
||||
if ((best && !best.isVisible()) || this.isCellCollapsed(result)) {
|
||||
if ((best && !best.isVisible()) || result.isCollapsed()) {
|
||||
best = result;
|
||||
}
|
||||
|
||||
|
|
|
@ -236,7 +236,7 @@ class SwimLanes extends React.Component {
|
|||
// Changes swimlane orientation while collapsed
|
||||
const getStyle = function() {
|
||||
let style = super.getStyle();
|
||||
if (this.isCellCollapsed()) {
|
||||
if (this.isCollapsed()) {
|
||||
if (style != null) {
|
||||
style += ';';
|
||||
} else {
|
||||
|
|
|
@ -188,7 +188,7 @@ class Tree extends React.Component {
|
|||
}
|
||||
|
||||
// Stops recursion if a collapsed cell is seen
|
||||
return vertex === cell || !this.isCellCollapsed(vertex);
|
||||
return vertex === cell || !vertex.isCollapsed();
|
||||
});
|
||||
|
||||
this.toggleCells(show, cells, true);
|
||||
|
|
Loading…
Reference in New Issue