如何从mxgraph

时间:2019-08-07 05:33:42

标签: javascript mxgraph jgraph

我想从父级删除所有与源连接的边,所以有什么功能可以删除单元格引用的从父级到子级连接的所有边。

如何在mxgraph中从子单元获取父单元。

我正在尝试使用连接器实现拖放操作,对吗?

mxConnectionHandler.prototype.connect = function(source, target, evt, dropTarget){
   // First ill connect the target and source edges
   // Later ill remove all connected edges from parent to source
}

source.parent.getValue('value')现在未定义。

我需要父引用,以便也可以帮助保存到数据库。请提供合适的链接引用。

我可以从文档中看到:mxCell.prototype.getParent = function(),但是如何使用呢?请举一个小例子。

尝试使用cell.getParent()

也:graph.model.getParent(cell)

但是它返回:mxCell {value: undefined, geometry: undefined, style: undefined, parent: mxCell, id: "1", …}

,其值为undefined。我在做什么错或如何完美获取其父单元格引用?

我通过将parentid附加到cellid来解决这个问题的唯一方法。并使用数组拆分并从其ID中获取单元格,但是我不乐意这样做,因为连接多个边缘时我会做很多工作。因此,需要一个最简单的解决方案。期待听到有人遇到类似的挑战并克服吗?

2 个答案:

答案 0 :(得分:1)

首先,让我们考虑以下两项:

1)单元格的子级:

一个单元格指向我们感兴趣的单元格。

代码

function getChildrenOfCell(cell){
if(cell != undefined){
    let children = [];
    let edges = cell.edges;
    if(edges != null){
        for(let i = 0; i < edges.length; i++){
            if(edges[i].target.value == cell.value){
                let cellCopy = edges[i].source.clone();
                children.push(cellCopy);
            }
        }
    }
    return children;
}
else{
    return [];
}
}

2)单元格的父级:

我们感兴趣的单元格指向的单元格。

代码

function getParentsOfCell(cell){
if(cell != undefined){
    let parents = [];
    let edges = cell.edges;
    if(edges != null){
        for(let i = 0; i < edges.length; i++){
            if(edges[i].source.value == cell.value){
                let cellCopy;
                if(!parents.includes(edges[i].target)){
                    cellCopy = edges[i].target
                }
                parents.push(cellCopy);
            }
        }
    }
    return parents;
}
else{
    return [];
}
}

答案 1 :(得分:0)

放弃了在graph.model.getParent(cell)

下进行调试的想法

父级是指该区域及其与所有顶点共享的区域。因此,借助cell.edges[0].source的单边连接遇到了父单元参考,如果有来自不同父节点的多个边连接,则cell.edges[...n].source取决于您如何解决它们。