<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    HTML5復雜拓撲圖(二) 關系網圖

    Posted on 2015-05-22 17:06 TWaver 閱讀(3622) 評論(0)  編輯  收藏

    關系網圖的呈現方式多種多樣,今天我們給大家分享的是和弦式的關系網圖,先來看看效果: chord-1

    例子中我們展示的是各部門員工之間的復雜關系圖。在公司內部,不僅部門內部員工之間發生著關系往來,部門和部門之間的員工也在發生這各種往來關系。如果你還是用原先的那種表格來呈現,顯然很難直觀看出各種關系,用圖形化的拓撲呈現就會顯得一目了然。好了,我們就來分析一下這張圖如何用twaver實現它。

    首先我們要定義部門的網元,twaver矢量減少了我們很多定制UI的繁瑣,我們直接用矢量來描述這個小圓點部分,注意小圓點的顏色需要區分鼠標滑過時的效果,這里我們定義了是否需要高亮的屬性:highlighted,代碼如下:

     1 twaver.Util.registerImage('circle_node', {        
     2     w: 200,
     3     h: 200,
     4     lineWidth:1,
     5     lineColor: 'black',    
     6     v: [{
     7         shape: 'circle',        
     8         r: 6,
     9         fill: function(data, view){
    10             if(data.getClient('highlighted')){
    11                 return highlightedNodeColor;
    12             }else{                
    13                 return normalNodeColor;
    14             }
    15         }
    16     }]
    17 });

    第一步,小圓點描述好了,接下來就需要為圓點加上文字的顯示,文字如果按照默認的顯示方式顯然不太好,因為我們是要讓文字進行旋轉,而文字所處的位置需要根據角度來計算對其方式和偏移值,當然文字也需要鼠標滑過的效果:

     1 [code]
     2 {
     3     shape: 'text',
     4     text: '<%=getClient("text")%>',
     5     textAlign: function(data, view){
     6         var angle=data.getClient('angle'    )+ball.angle;
     7         angle=angle%360;
     8         if(angle<0){
     9             angle=angle+360;
    10         }
    11         if(angle>90 && angle<270){
    12             return 'right';
    13         }
    14         return 'left';
    15     },
    16     textBaseline: 'middle',
    17     font: '12px "Microsoft Yahei"',
    18     fill: function(data, view){
    19         if(data.getClient('highlighted')){
    20             return highlightedNodeColor;
    21         }else{                
    22             return 'black';
    23         }
    24     },
    25     x: function(data, view){
    26         var angle=data.getClient('angle'    )+ball.angle;
    27         angle=angle%360;
    28         if(angle<0){
    29             angle=angle+360;
    30         }
    31         if(angle>90 && angle<270){
    32             return -10
    33         }
    34         return 10;
    35     },            
    36 }

    好了,第三步需要讓整個節點能旋轉起來,因此我們還需要為node加上旋轉的矢量描述:

     1 rotate: function(data, view){
     2     var angle=data.getClient('angle')+ball.angle;
     3     angle=angle%360;
     4     if(angle<0){
     5         angle=angle+360;
     6     }
     7     if(angle>90 && angle<270){
     8         angle+=180;
     9     }
    10     return angle;
    11 }

    至此部門的節點就定制好了,是不是感覺復雜了一下,沒關系,如果想要這樣的功能,直接使用我們封裝好的這個就可以了。 接著我們還需要來定制連線,上圖中連線走向的那種方式在twaver產品中已經是很常見了,這里我們就不多描述了。 OK,準備好節點和連線的矢量描述之后就可以來填充數據了,創建好公司的所有部門以及員工之間的關系后,我們還需要給部門設置上旋轉的度數:

    1 for(var i=0;i<size;i++){
    2     var angle=Math.PI*2/size*i;
    3     var x=ball.cx+ball.width*Math.cos(angle);
    4     var y=ball.cy+ball.height*Math.sin(angle);
    5     var id='n'+i;
    6     var degree=parseInt(angle/Math.PI*180);
    7     var node=createNode(box, id, x, y, '部門'+i, degree);
    8 }

    這樣我們上面的那張圖的功能就差不多了。也許有人會覺得怎么都是呈現的是部門,如何才能看到部門下哪些員工和另外的部門有關系呢。是的,到此我們還只完成了一半,還有更精彩的內容呈現給大家。

    雙擊部門后,可以展開這個部門,并顯示部門下所有的員工。

    是不是很帥,注意這里是有動畫效果的,雙擊某個部門,這個部門會轉到頂部,然后展開這個部門。這個用twaver新增的動畫功能很容易來實現,這里就不多說了。下面錄制了一個視頻供大家欣賞。這樣我們就能更清楚的知道這個部門下的員工和哪個部門下的員工有業務往來關系了。下圖是一個gif圖片,下載有點慢,請耐心等待。


    chord

    或者直接點擊看視頻:



    想要demo的小伙伴們,給我們發郵件吧,我們會將完整代碼呈現給您。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲午夜在线播放| 亚洲AV无码乱码在线观看裸奔 | 久久久无码精品亚洲日韩蜜桃| 国产精品亚洲一区二区无码| 免费无码又爽又刺激高潮| 亚洲中文字幕久久久一区| 成年男女免费视频网站| 亚洲最大天堂无码精品区| 在线不卡免费视频| 成a人片亚洲日本久久| 亚洲A∨精品一区二区三区| 国产精品成人69XXX免费视频| 久久精品国产精品亚洲人人| 国产久爱免费精品视频 | 亚洲第一AV网站| 免费无码中文字幕A级毛片| 亚洲视频一区网站| 四虎成人免费观看在线网址| 春暖花开亚洲性无区一区二区| 亚洲av片一区二区三区| 国产一级婬片A视频免费观看| 亚洲最大成人网色| 一个人免费观看在线视频www| 亚洲精品无码专区在线| 国产L精品国产亚洲区久久| 精品成人免费自拍视频| 亚洲啪啪免费视频| 亚洲精品NV久久久久久久久久| 九九美女网站免费| 中文字幕在线观看亚洲视频| 免费人成在线观看网站品爱网日本 | 国产好大好硬好爽免费不卡| 亚洲av无码国产综合专区 | 成全高清在线观看免费| 亚洲国产精品yw在线观看| 国产特级淫片免费看| 黄色网址在线免费| 亚洲精品一卡2卡3卡四卡乱码| 久久亚洲中文字幕精品一区四| 最近免费中文字幕mv在线电影| 国产精品亚洲精品久久精品 |