2016-10-28 40 views
1

我有2個Bootstrap列(每個寬度是12箇中的6個),左邊的那個有一些按鈕,右邊的那個包含用5個節點初始化的Cytoscape圖形。以後不能顯示隱藏的Cytoscape圖形

最初,當頁面加載完成時,Cytoscape圖形被設置爲隱藏。

$('.cyto_div').hide(); 

我的意圖是,當單擊「顯示」按鈕時,應出現Cytoscape圖形。

$('.cyto_div').show(); 

但是,只有覆蓋Cytoscape圖形的面板出現,圖形本身不會出現。當我調整瀏覽器的大小時,出現5個節點的Cytograph。

我懷疑與cy.resize()有關,但我不知道如何以及在哪裏做。

我很欣賞你的解決方案非常

完整的代碼是在這裏:

<!doctype html> 
<html> 
<head> 
<title>Cytoscape with Bootstrap</title> 
<script src="cytoscape.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

<style type="text/css"> 
#cy 
{ 
     border: solid; 
     border-width: 1; 
     height: 500px;   
} 
</style> 

</head> 

<body> 

<div class="col-lg-6"> 
    <button id="remove">Remove node a</button> 
    <button id="show">Show the cytograph</button> 
</div> 

<div class="col-lg-6 cyto_div"> 

    <div class="panel panel-primary"> 
     <div class="panel-heading">Graph Area</div> 

     <div id="cy"> 
     <p> This area is for graph </p>    
     </div> 

     <p> End of cyto </p> 
     <button id = "test" class="btn  active" style="white-space:normal;"> Test adding a new node </button> 
    </div>  

</div> 

<script type="text/javascript"> 

$(document).ready(function() {  

var cy = cytoscape({ 
    wheelSensitivity: 0.05, 
    minZoom: 0.9, 
    maxZoom: 20, 
    container: document.getElementById('cy'), 
    elements: [{ data: { id: 'a' } }, 
       { data: { id: 'b' } }, 
       { data: { id: 'c' } }, 
       { data: { id: 'd' } }, 
       { data: { id: 'e' } }, 
       { 
       data: { 
        id: 'ab', 
        source: 'a', 
        target: 'b' 
       } 
      }], 
    style: [ 
      { 
       selector: 'node', 
       style: {       
        label: 'data(id)'       
       } 
      } 
      ] 
    }); 

$('.cyto_div').hide(); 

$('#test').on('click', function(e) { 

alert('Button clicked'); 
cy.add({ 
    group: "nodes", 
    data: { id: 'x' }, 
    position: { x: 190 , y: 190 } 
}); 
}); 

$('#show').on('click', function(e) { 

$('.cyto_div').show(); 
$('cy').show(); 
}); 
}); 
</script> 

</body> 
</html> 

回答

1

你必須打電話.resize()告訴你了。 Cytoscape可以自動調整自己的幾種樣式/重排變化,但它無法全部檢測到它們。在Cytoscape自動修復之後,一些外部庫(如選項卡)可能會覆蓋調整大小。

如果您的選項卡有問題,您可能需要將調整大小放入去抖動中。