2013-12-12 1 views
3

Я попытался перетащить узел по отдельности, получив позицию мыши, по-видимому, улавливается всем поведением захвата графа. Свойства выбранных узлов правильно изменены, но другие узлы перемещаются вместе, даже если я устанавливаю n.x и n.y.sigma.js: Есть ли способ перетащить один узел в отдельности

Вот моя попытка: http://jsfiddle.net/blt909/yhk3b/

jQuery(document).ready(function(){ 
    var sigRoot = document.getElementById('sig'); 
    var sigInst = sigma.init(sigRoot).position(0, 0, 1); 
    var mousePos = {}; 
    $(document).mousemove(function(e){ 
     var $div = $("#sig"); 
     mousePos = { 
      x: e.pageX, 
      y: e.pageY 
     }; 
    }); 

    function onNodeDown(evt) { 
     var sigmajs = evt.target; 
     var nodeId = evt.content[0]; 
     sigmajs.iterNodes(function(n){ 
      n.size = 5; 
      n.color = "#0000FF"; 
      n.displayX = mousePos.x; 
      n.displayY = mousePos.y; 
      console.log(n); 
     },[nodeId]);  

     sigmajs.draw(2,2,2, false); 

     sigmajs.refresh(); 
    }; 

    sigInst.graphProperties({ 
     minNodeSize: 2, 
     maxNodeSize: 5 
    }); 

    sigInst.addNode('000',{ 
     label: '000', 
     color: '#000000', 
      x: Math.random() * 100, 
      y: Math.random() * 100 
    }).addNode('111',{ 
     label: '111', 
     color: '#111111', 
      x: Math.random() * 100, 
      y: Math.random() * 100 
    }).addNode('222',{ 
     label: '222', 
     color: '#222222', 
      x: Math.random() * 100, 
      y: Math.random() * 100 
    }).addEdge('111222','111','222') 
     .addEdge('111000','111','000'); 

     sigInst.bind('downnodes',onNodeDown); 

     sigInst.draw(); 
    }) 

ли кто-нибудь пробовал тот же трюк на sigma.js?

Спасибо за вашу помощь

+0

Привет , вы решили решить эту проблему? – MrMins

+0

Я пока не нашел никакого решения, но я не пробовал новую версию sigma.js, опубликованную между моим вопросом и теперь ... – blt909

ответ

4

Нового sigma.js имеет dragNodes плагина sigma.plugins.dragNodes.js, но он работает только в холсте, просто включите файл плагина и передать объект сигмы:

<script src="./plugins/sigma.plugins.dragNodes/sigma.plugins.dragNodes.js"></script> 
let dragListener = sigma.plugins.dragNodes(sigInst, sigInst.renderers[0]) 
+0

Как только я перенесу свое приложение на новую версию, я попробую наконечник. – blt909