2017-08-08 31 views
0

CYTOSCAPE.JScytoscape.jsでクラスごとにノードを選択する方法は?

Iは、ノードデータ(clLevel0)で定義されたクラスにスタイルを適用するために管理することはできません。私はこの問題を回避する関数を書いた。

{ 
    selector: ".clLevel0", 
    style: { 
    'background-color': '#EAA', 
    } 
}, 

適用する正しい方法は何ですか:だから、機能も;-)

function setNodesClassStyles(cy, clas, styleobject) 
{ 
    var all = cy.nodes(); 
    for (i = 0; i < all.length; i++) { 
     the_node = all[i]; 
     all_classes = the_node.data().classes; 
     //alert(all_classes); 
     if (all_classes != undefined) { 
      all_classes = all_classes.split(' '); 
      for (i = 0; i < all_classes.length; i++) { 
       alert(all_classes[i]); 
       if (clas == all_classes[i]) { 
        the_node.style(styleobject) 
       } 

      } 
     } 
    } 
}; 
setNodesClassStyles(cy, "clLevel0", {'background-color':'#00E'}); 

ですはるかに簡単な方法で、私は(動作していない)、これを試してみました、私は何をしたいかを説明しますクラス 'clas'を持つノードのスタイル? もっとコード:

var cy = cytoscape({ 

     container: document.getElementById('cy'), // container to render in 

     elements: [ // list of graph elements to start with 
     // LEVEL 0 NODE 
     { // node 
      data: { id: 'me', name: 'Dirk\[email protected]', classes: 'clLevel0 clRoot', weight: 10000}, 

      "position": { 
      "x": 600, 
      "y": 400 }, 

     }, 

    // LEVEL 1 NODES 
     { 
      data: { id: 'skills', name: 'Skills', } 
     }, 
     { 
      data: { id: 'education', name: 'School' } 
     }, 
     { 
      data: { id: 'work', name: 'Jobs\nProjects' } 
     }, 
     { 
      data: { id: 'passion', name: 'Passions' } 
     }, 

// .... 
    style: [ 
    { 
     selector: 'node', 
     style: { 
     'height': 40, 
     'width': 40, 
     //'height': 20, 
     //'width': 20, 
     'background-color': '#EE0', 
// .... 

    { 
     selector: ".clLevel0", 
     style: { 
     'background-color': '#EAA', 
     } 
    }, 

    ], 
//... 
+0

(1)あなたのノードが複数重なったスタイルプロパティを持っている場合(ノード内の例えば背景、.clLevel0、...)のみ最後に定義されたプロパティは を適用します(2)クラスがあります (3).style(stylesheet)はノードでは動作しません。node.addClass( '..')、.removeClass( '..')、.hasClass( '..'しかし、コアサイトスコープのインスタンスでは、 –

+2

Thanx Tomは、問題が(WRONG) '' data:{id: 'me'、名前: 'Dirk'、クラス: 'clLevel0'、weight:10000} '' RIGHT: ' 'data:{id: 'me'、名前: 'Dirk'}、クラス: 'clLevel0'、重み:10000'' –

答えて

1
document.addEventListener("DOMContentLoaded", function() { 

    var cy = cytoscape({ 
    container: document.getElementById('cy'), 
    elements: { 
     nodes: [ 
      { data: { id: 'n', label: 'Olo' } }, 
      { data: { id: 'c'}, classes: 'className'} 
    ]} 
    }); 
    cy.style.fromJson([ 
     { 
     selector: 'node', 
     style: { 
      'color': 'red' 
     } 
     },{ 
     selector: '.className', 
     style: { 
      'label': 'this has a class', 
      'color': 'blue' 
     } 
     } 
    ]) 
}); 
関連する問題