GraphVis图可视化分析组件库 GraphVis图可视化分析组件库
  • 基础介绍
  • 基础功能
  • 交互功能
  • 全局统一配置
  • 标准数据格式定义
  • 组件接口导航
  • 应用开发介绍

    • 快速上手
    • 应用开发步骤
    • VUE框架中应用
    • 业务应用基础流程
  • 事件注册

    • 节点事件
    • 连线事件
    • 场景事件
  • 右键菜单

    • 右键菜单的定义
  • 图布局算法应用

    • 布局算法类型
    • 布局参数说明
    • 布局参数默认配置
  • 图分析算法应用

    • 图的路径分析
    • 节点中心性分析
    • 聚类分析
  • 关系扩线

    • 关系扩线
  • 节点模板配置

    • 自定义节点模板
    • 使用字体图标
  • 关系图类型

    • 层级关系图
    • 流程图
    • 弧线关系图
    • Sankey桑基图
  • 树图类型

    • 径向辐射树图
    • 紧凑树图
    • 缩进树图
    • 打包树图
    • 组织结构图
    • 类思维脑图
应用案例
商用授权
在线示例 (opens new window)
  • 基础介绍
  • 基础功能
  • 交互功能
  • 全局统一配置
  • 标准数据格式定义
  • 组件接口导航
  • 应用开发介绍

    • 快速上手
    • 应用开发步骤
    • VUE框架中应用
    • 业务应用基础流程
  • 事件注册

    • 节点事件
    • 连线事件
    • 场景事件
  • 右键菜单

    • 右键菜单的定义
  • 图布局算法应用

    • 布局算法类型
    • 布局参数说明
    • 布局参数默认配置
  • 图分析算法应用

    • 图的路径分析
    • 节点中心性分析
    • 聚类分析
  • 关系扩线

    • 关系扩线
  • 节点模板配置

    • 自定义节点模板
    • 使用字体图标
  • 关系图类型

    • 层级关系图
    • 流程图
    • 弧线关系图
    • Sankey桑基图
  • 树图类型

    • 径向辐射树图
    • 紧凑树图
    • 缩进树图
    • 打包树图
    • 组织结构图
    • 类思维脑图
应用案例
商用授权
在线示例 (opens new window)
  • 事件注册

    • 节点事件
    • 连线事件
    • 场景事件
  • 右键菜单

    • 右键菜单定义
      • 支持绑定右键的元素
      • 右键菜单的实现
      • 右键菜单的应用示例
      • 右键菜单示例效果
  • 图布局算法应用

    • 布局算法类型
    • 布局参数说明
    • 布局算法参数配置
  • 图分析算法应用

    • 路径分析
    • 中心性分析
    • 聚类分析
  • 关系扩线

    • 关系扩线
  • 节点模板配置

    • 节点模板配置
    • 使用字体图标
  • 应用开发
  • 右键菜单
dubaopeng
2023-02-05
目录

右键菜单定义

提示

图中的节点、连线和场景空白区域,均支持右键菜单的注册。
业务负责定义右键菜单和菜单的项的具体实现,将右键的触发机制交给组件库管理,无需关注右键的事件底层实现,只需关注菜单样式的定义和具体菜单的事件实现。

# 支持绑定右键的元素

元素类型 元素名称 说明
node 节点 图中所有可视化节点对象可触发右键菜单显示
link 连线 图中所有可视化连线对象可触发右键菜单显示
scene 场景 画布空白区域可触发右键菜单显示
group 分组 节点的分组区域可触发右键菜单显示

# 右键菜单的实现

组件库提供了统一的邮件注册接口 registRightMenu(elementType,{show:function(){},hide:function(){}}) 来进行对应元素类型的右键菜单注册。

参数 参数名 说明
elementType 元素类型 类型:node、link、scene、group
Menu 菜单对象 需要实现show和hide两个方法,控制菜单的显示和隐藏

# 右键菜单的应用示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>右键菜单配置示例</title>
    <style type="text/css">
        .contextMenu{position:absolute;padding:10px 0;background-color: #f7f7f7; border: 1px solid #cec5c5;width:100px;border-radius: 2px;}
        .contextMenu > li{list-style:none;height:25px;line-height:25px;cursor:pointer;text-align: center;}
        .contextMenu > li:hover{background-color:#d5d7db;}
    </style>
</head>
<body>
    <div id="graph-container" style="width:100%;height:500px;"></div>
    
    <!--节点右键菜单-->
    <menu id="nodeContextMenu" class="contextMenu" style="display:none;position:absolute;">
        <li class="menu-item" data-type="showDetail">查看详细</li>
        <li class="menu-item" data-type="delete">删除节点</li>
    </menu>
    
    <!--连线右键菜单-->
    <menu id="linkContextMenu" class="contextMenu" style="display:none;position:absolute;">
        <li class="menu-item" data-type="showDetail">查看详细</li>
        <li class="menu-item" data-type="delete">删除连线</li>
    </menu>

    <!--画布空白区域右键菜单-->
    <menu id="sceneContextMenu" class="contextMenu" style="display:none;position:absolute;">
        <li class="menu-item" data-type="saveImage">保存图片</li>
        <li class="menu-item" data-type="clearAll">清空画布</li>
    </menu>
</body>

<script src="graphvis.min.js"></script>
<script src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
    let graphVis = new GraphVis({
        container:document.getElementById('graph-container'), //画布层
        licenseKey:'licensekey' //授权license
    });

    //注册节点右键菜单
    graphVis.registRightMenu('node',{
        show : function(e,graphvis,node){
            $("#nodeContextMenu").css({top:e.pageY-10,left:e.pageX+10}).show();
        },
        hide : function(){
            $("#nodeContextMenu").hide();
        }
    }); 

    //注册连线右键菜单
    graphVis.registRightMenu('link',{
        show : function(e,graphvis,link){
            $("#linkContextMenu").css({top:e.pageY-20,left:e.pageX+10}).show();
        },
        hide : function(){
            $("#linkContextMenu").hide();
        }
    }); 

    //注册场景画布的右键菜单
    graphVis.registRightMenu('scene',{
        show : function(e,graphvis){
            $("#sceneContextMenu").css({top:e.pageY-20,left:e.pageX+10}).show();
        },
        hide : function(){
            $("#sceneContextMenu").hide();
        }
    }); 

    //节点右键菜单项点击触发实现逻辑
    $("#nodeContextMenu .menu-item").on('click',function(){
        var optType = $(this).attr('data-type');
        if(optType=='delete'){
            graphVis.deleteNode(graphVis.currentNode);
        }else{
            console.log(graphVis.currentNode.label);
        }
        $("#nodeContextMenu").hide();
    });

    //连线右键菜单项点击触发实现逻辑
    $('#linkContextMenu .menu-item').on('click',function(){
        var optType = $(this).attr('data-type');
        if(optType=='delete'){
            graphVis.deleteLink(graphVis.currentLink);
        }else{
            console.log(graphVis.currentLink.label);
        }
        $("#linkContextMenu").hide();
    });

    //场景右键菜单项点击触发实现逻辑
    $('#sceneContextMenu .menu-item').on('click',function(){
        var optType = $(this).attr('data-type');
         if(optType=='saveImage'){
            graphVis.saveImage();
        }else if(optType=='clearAll'){
            graphVis.clearAll();
        }
        $("#sceneContextMenu").hide();
    });
</script>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

# 右键菜单示例效果

右键菜单示例效果

场景事件
布局算法类型

← 场景事件 布局算法类型→

Theme by Vdoing | Copyright © 2020-2023 www.graphvis.cn. All rights reserved.
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式