之前有提到過建立基本的Cytoscape Web,而如果當我們幫node加上click Listener,並且呈現
tooltip的區塊,如此可以讓node提供額外的訊息。在此要說明的是如何搭配jQuery qTip plugin
做到較為強大且華麗的tip功能!
處理node click listener的程式碼如下:
注意!div_id, options變數主要在第一篇有講到,這邊就不帶出了。
currnode主要是針對當我點擊到的node,取其node object,這個node我們可以利用其x, y 屬性,
如此便可以設定tooltip block的position及label,而show的部分,主要是說明tip是在什麼情況下
出現,此設定為click,而時機是在$(currnode).qtip(...)這個範圍的情況下(click node),如果您
設定為$("body").qtip(...) 那麼當您點擊body的範圍,就會出現tip。
hide的設定為event unfocus,表示當您的node為unfocus就會隱藏起來!如點擊其他node時,原
本的node旁的tip便會消失,而.addListener("click", function(evt) {...這段是針對點擊到cytoscape
的區域就會觸發的情況。
而小弟使用了這段tooltipsapi.destroy();的意義是,如果不destroy的話,就會產生很多的tip
,當tip隱藏起來,在去點擊其他的node又會產生tip div,因此如果不間斷的點擊就會產生很
多div的隱藏tip,所以在這邊就會將其destroy。
tooltip的區塊,如此可以讓node提供額外的訊息。在此要說明的是如何搭配jQuery qTip plugin
做到較為強大且華麗的tip功能!
處理node click listener的程式碼如下:
vis = new org.cytoscapeweb.Visualization(div_id, options);
// callback when Cytoscape Web has finished drawing
var currnode;
var tooltipapi;
vis.ready(function() {
vis.addListener("click", "nodes", function(evt) {
if(typeof currnode == 'undefined'){
currnode = evt.target;
}else if(currnode != evt.target){
if(!tooltipsapi.destroyed)
tooltipsapi.destroy();
tooltipsapi = undefined;
currnode = evt.target;
}
var tooltips = $(currnode).qtip({
content: {
text:"<font color='#668866' size=2><b>"+currnode.data.label+"</b></font>",
title: {
text:currnode.data.label
}
},
position: {
target: [currnode.x+(currnode.width/2), currnode.y+40]
},
style: {
classes: 'qtip-light'
},
show: {
event:'click',
delay: 0 ,
effect: function(offset) {
$(this).slideDown(100);
},
solo: true,
ready: true
},
hide: {
event: 'unfocus',
fixed: true
}
});
tooltipsapi = tooltips.qtip('api');
}).addListener("click", function(evt) {
if(typeof tooltipsapi != 'undefined'){
tooltipsapi.destroy();
}
});
});
});
注意!div_id, options變數主要在第一篇有講到,這邊就不帶出了。
currnode主要是針對當我點擊到的node,取其node object,這個node我們可以利用其x, y 屬性,
如此便可以設定tooltip block的position及label,而show的部分,主要是說明tip是在什麼情況下
出現,此設定為click,而時機是在$(currnode).qtip(...)這個範圍的情況下(click node),如果您
設定為$("body").qtip(...) 那麼當您點擊body的範圍,就會出現tip。
hide的設定為event unfocus,表示當您的node為unfocus就會隱藏起來!如點擊其他node時,原
本的node旁的tip便會消失,而.addListener("click", function(evt) {...這段是針對點擊到cytoscape
的區域就會觸發的情況。
而小弟使用了這段tooltipsapi.destroy();的意義是,如果不destroy的話,就會產生很多的tip
,當tip隱藏起來,在去點擊其他的node又會產生tip div,因此如果不間斷的點擊就會產生很
多div的隱藏tip,所以在這邊就會將其destroy。
點擊node
若不destroy會出現的情況,如此qtip區塊會一直產生
基本上qTip有很多功能,細部的部分可以去官網上查詢!
留言
張貼留言