2016-10-28 58 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自动修复之后,一些外部库(如选项卡)可能会覆盖调整大小。

如果您的选项卡有问题,您可能需要将调整大小放入去抖动中。