Как получить родительскую ячейку из дочерней ячейки в mxgraph

Я хочу удалить все ребра, связанные с источником, от родителя, поэтому есть ли какая-либо функция, которая может удалить все ребра, подключенные от родителя к дочернему элементу, ссылаясь на ячейку.

Как получить родительскую ячейку из дочерней в 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. И используйте разделение массива и получайте ячейку из ее идентификатора, но я не доволен этим, так как у меня будет много работы, когда несколько ребер соединены. Итак, нужно самое простое решение. Жду с нетерпением, если кто-нибудь столкнулся с подобной проблемой и преодолел ее?


person Mithun Shreevatsa    schedule 07.08.2019    source источник
comment
в jquery есть функция с именем parent. Вы можете попробовать это   -  person tuhin47    schedule 07.08.2019
comment
это не работает, нужно ссылаться только на график   -  person Mithun Shreevatsa    schedule 07.08.2019


Ответы (2)


Во-первых, давайте рассмотрим следующие два:

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 [];
}
}
person NickAth    schedule 04.09.2019
comment
Спасибо, что нашли время ответить на этот вопрос, но я уже нашел решение на том же самом, и его сокращение ниже - person Mithun Shreevatsa; 04.09.2019
comment
У меня есть еще один важный вопрос о mxgraph, который я когда-нибудь опубликую, если возможно, попробуйте ответить на тот, который меня мучает... - person Mithun Shreevatsa; 04.09.2019
comment
stackoverflow.com/questions/57793857/ - person Mithun Shreevatsa; 04.09.2019

Отказался от отладки под: graph.model.getParent(cell)

Родитель относится к региону и является общим со всеми вершинами. Следовательно, наткнулся на ссылку на родительскую ячейку с помощью: cell.edges[0].source для соединения с одним ребром, если есть несколько краев, соединенных от разных родителей, cell.edges[...n].source должно быть на ваше усмотрение, как вы хотите их адресовать.

person Mithun Shreevatsa    schedule 08.08.2019