Как получить перетаскиваемые данные в mxGraph при перетаскивании из не mxGraph источника - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть дерево PrimeNG с некоторыми элементами и mxGraph Diagram / Editor.Я определяю обработчик перетаскивания для PrimeNg Tree

<p-tree [value]="files"  draggableNodes="True" (drag)="onDragStart($event);" ></p-tree>

и пытаюсь добавить свои данные к объекту DataTransfer

  onDragStart(event){
    event.preventDefault();
    console.log('Start dragging')
    event.dataTransfer.setData("text/plain","s1b1");
  }

В MxGraph я регистрирую обработчики для событий перетаскивания и отбрасывания

           mxEvent.addListener(container, 'dragover', function(evt)
            {
                if (container.graph.isEnabled())
                {
                    evt.stopPropagation();
                    evt.preventDefault();
                    console.log(mxEvent.getSource(evt));
                }
            });

            mxEvent.addListener(container, 'drop', function(this,evt)
            {
                if (container.graph.isEnabled())
                {
                    evt.stopPropagation();
                    evt.preventDefault();
                    // Gets drop location point for vertex
                    var pt = mxUtils.convertPoint(container, mxEvent.getClientX(evt), mxEvent.getClientY(evt));
                    var tr = container.graph.view.translate;
                    var scale = container.graph.view.scale;
                    var x = pt.x / scale - tr.x;
                    var y = pt.y / scale - tr.y;
                    if (evt.dataTransfer != null){
                        var items = evt.dataTransfer.items; 
                        for (let item of items) 
                        {
                          console.log('DATATYPE ' + item.type);
                            console.log('data ' + evt.dataTransfer.getData("text/plain"));
                        }
                    }
                    // Insert default vertex to check drop working
                    container.graph.insertVertex(container.graph.getDefaultParent(),null,'label1',x,y,100,100);
                }
            });

Проблема в том, что передача данных evt объектов в mxGraph отличается от передачи данных, генерируемой PrimeNg Tree.

Есть ли какое-либо решение для передачи данных через события из primengtree в mxgraph?

...