2017-09-27 60 views
0

我使用cytoscape.js呈現在HTML頁面圖如何更新cytoscape.js圖。該圖表示一個RDF圖並且該內容通過ajax請求獲取到REST服務。此服務允許添加/刪除資源和語句,所以我想在每次更改後更新圖表。在運行時

我正確地配置Cytoscape的對象時,我接收到的數據,但是當我做一些改變RDF圖(添加/刪除資源),我無法更新圖表。現在,我嘗試這個辦法:

  • 重新定義的Cytoscape對象的所有設置,在這種情況下,如果我刪除一個元素的圖形被更新,但如果我添加新元素的圖形消失。用下面的函數,在這種情況下如果刪除一個元素的圖表被更新,但節點的位置被改變(所有的節點重疊)
  • 更新Cytoscape的對象。當我添加新元素時,圖形消失。

    function updateGraph(graph){ 
        console.log("update graph"); 
        cy.$('node').remove(); 
        cy.$('edge').remove(); 
        cy.add(graph); 
    } 
    
  • 添加和刪除唯一感興趣的元素,要做到這一點我創建了一個功能查找舊的和新的圖形,然後我調用以下函數之間的不同。在這種情況下,cy.remove(elem[j])在cytoscope.js文件中生成一個錯誤,但add方法起作用,該圖顯示新元素,但我無法選擇或移動元素。

    function addElements(elem){ 
        for (j in elem) { 
        cy.add(elem[j]); 
        } 
    } 
    
    function removeElements(elem){ 
        for (j in elem) { 
        cy.remove(elem[j]); 
        } 
    } 
    
  • 我也遵循這個答案Replace all elements and redraw graph softly in cytoscape.js但沒有成功。

我的問題是我如何在運行時更新圖形的元素而不改變樣式,位置和其他設置?

回答