G6框架Dagre流程图第三个自左向右的 Dagre 上对齐改造,对齐结点和边添加样式,并添加修改节点和展示结点详细信息交互

这篇具有很好参考价值的文章主要介绍了G6框架Dagre流程图第三个自左向右的 Dagre 上对齐改造,对齐结点和边添加样式,并添加修改节点和展示结点详细信息交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​​G6框架Dagre流程图第三个自左向右的 Dagre 上对齐改造,对齐结点和边添加样式,并添加修改节点和展示结点详细信息交互文章来源地址https://www.toymoban.com/news/detail-499353.html

标题修改具体项

  • 设置结点的样式
  • 设置边的样式
  • 添加修改结点名称功能
  • 添加展示结点详细信息功能

参考链接

  • 基本图形:https://g6.antv.vision/zh/examples/net/dagreFlow#lrDagreUL
  • 展示结点详细信息功能:https://g6.antv.vision/zh/examples/tool/tooltip#tooltipClick
  • 修改结点名称功能:https://g6.antv.vision/zh/examples/interaction/label#update

完整代码(直接建一个html文件拷进去就能用)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Tutorial Demo</title>
  </head>
  <body>
    <!-- 图的画布容器 -->
    <div id="container"></div>

    <!--  引入 G6  -->
    <script src="https://gw.alipayobjects.com/os/lib/antv/g6/4.3.11/dist/g6.min.js"></script>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

    <script>
      // 定义数据源
      const data = {
        // 点集
        nodes: [
          {
            id: '0',
            label: '硅材料',
            style: {
              lineDash: [6],
            },
            description: ['text1','text2','text3','text4',],
          },
          {
            id: '1',
            label: '光伏级单晶硅片',
            description: ['text1','text2','text3','text4',],
          },
          {
            id: '2',
            label: '组件',
            description: ['text1','text2','text3','text4',],
          },
          {
            id: '3',
            label: '半导体硅片',
            style: {
              lineDash: [6],
            },
            description: ['text1','text2','text3','text4',],
          },
          {
            id: '4',
            label: 'IGBT芯片',
            style: {
              fill: '#00FF00', //填充颜色
            },
          },
          {
            id: '5',
            label: 'IGBT模块1700V及以上',
            style: {
              fill: '#00FF00', //填充颜色
            },
          },
          {
            id: '6',
            label: 'IGBT模块1700V及以下',
          },
          {
            id: '7',
            label: '变流器',
          },
          {
            id: '8',
            label: '换流阀',
          },
          {
            id: '9',
            label: '中车',
          },
          {
            id: '10',
            label: '轨道交通',
            type: 'rect',
          },
          {
            id: '11',
            label: '智能电网',
            type: 'rect',
          },
          {
            id: '12',
            label: '逆变器',
            style: {
              lineDash: [6],
            },
          },
          {
            id: '13',
            label: '电机控制器',
          },
          {
            id: '14',
            label: '新能源汽车',
            type: 'rect',
          },
        ],
        // 边集
        edges: [
          {
            source: '0',
            target: '1',
            description: ['text1','text2','text3','text4',],
          },
          {
            source: '1',
            target: '2',
            description: ['text1','text2','text3','text4',],
          },
          {
            source: '0',
            target: '3',
            style: {
              lineDash: [6],
            },
            description: ['text1','text2','text3','text4',],
          },
          {
            source: '3',
            target: '4',
            style: {
              lineDash: [6],
            },
          },
          {
            source: '4',
            target: '5',
            style: {
              lineDash: [3],
            },
          },
          {
            source: '4',
            target: '6',
          },
          {
            source: '5',
            target: '7',
            style: {
              lineDash: [6],
            },
          },
          {
            source: '5',
            target: '8',
            style: {
              lineDash: [6],
            },
          },
          {
            source: '7',
            target: '9',
          },
          {
            source: '9',
            target: '10',
          },
          {
            source: '8',
            target: '11',
          },
          {
            source: '6',
            target: '12',
            style: {
              lineDash: [6],
            },
          },
          {
            source: '12',
            target: '13',
            style: {
              lineDash: [6],
            },
          },
          {
            source: '13',
            target: '14',
          },
        ],
      };

      // 定义提示文本框--结点详细信息描述
      const tooltip = new G6.Tooltip({
        offsetX: 10,
        offsetY: 10,
        // v4.2.1 起支持配置 trigger,click 代表点击后出现 tooltip。默认为 mouseenter
        trigger: 'dbclick',
        // the types of items that allow the tooltip show up
        // 允许出现 tooltip 的 item 类型
        itemTypes: ['node', 'edge'],
        // custom the tooltip's content
        // 自定义 tooltip 内容
        getContent: (e) => {
          const outDiv = document.createElement('div');
          outDiv.style.width = 'fit-content';
          //outDiv.style.padding = '0px 0px 20px 0px';
          outDiv.innerHTML = `
            <h4>Custom Content</h4>
            <ul>
              <li>Label: ${e.item.getModel().description[0]}</li>
              <li>Label: ${e.item.getModel().description[1]}</li>
              <li>Label: ${e.item.getModel().description[2]}</li>
              <li>Label: ${e.item.getModel().description[3]}</li>
            </ul>`;
          return outDiv;
        },
      });

      // 定义修改文本框--结点名称修改
      const tooltip1 = new G6.Tooltip({
        offsetX: 10,
        offsetY: 10,
        // v4.2.1 起支持配置 trigger,click 代表点击后出现 tooltip。默认为 mouseenter
        trigger: 'click',
        // the types of items that allow the tooltip show up
        // 允许出现 tooltip 的 item 类型
        itemTypes: ['node', 'edge'],
        // custom the tooltip's content
        // 自定义 tooltip 内容
        getContent: (e) => {
          const outDiv = document.createElement('div');
          outDiv.style.width = 'fit-content';
          //outDiv.style.padding = '0px 0px 20px 0px';
          outDiv.innerHTML = `
            <input type="text" id="newLabel" value="${e.item.getModel().label}"/>
            <button type="submit" id="btn_submit" οnclick="btnAction()">确定</button>`;
          return outDiv;
        },
      });

      const container = document.getElementById('container');
      const width = container.scrollWidth;
      const height = container.scrollHeight || 500;
      // 创建 G6 图实例
      const graph = new G6.Graph({
        container: 'container', // 指定图画布的容器 id,与第 9 行的容器对应
        // 画布宽高
        // width: 800,
        // height: 500,
        width,
        height,
        fitView: true,  //自适应布局
        plugins: [tooltip,tooltip1],   //两个文本插件
        modes: {
          default: ['drag-canvas', 'drag-node'],
          edit: ['click-select'],
        },
        layout: {
          type: 'dagre',
          rankdir: 'LR',
          align: 'UL',
          controlPoints: true,
          nodesepFunc: () => 1,
          ranksepFunc: () => 1,
        },
        defaultNode: {
          size: [120, 60],
          type: 'ellipse',
          style: {
            lineWidth: 0.5,
            stroke: '#000000', //边框颜色
            fill: '#FFFFFF', //填充颜色
          },
        },
        defaultEdge: {
          type: 'polyline',
          size: 1,
          color: '#e2e2e2',
          style: {
            endArrow: {
              path: 'M 0,0 L 8,4 L 8,-4 Z',
              fill: '#e2e2e2',
            },
            radius: 20,
          },
        },
      });
      // 读取数据
      graph.data(data);
      // 渲染图
      graph.render();

      //针对结点和边的详细信息提示
      graph.on('node:mouseenter', (e) => {
        graph.setItemState(e.item, 'active', true);
      });
      graph.on('node:mouseleave', (e) => {
        graph.setItemState(e.item, 'active', false);
      });
      graph.on('edge:mouseenter', (e) => {
        graph.setItemState(e.item, 'active', true);
      });
      graph.on('edge:mouseleave', (e) => {
        graph.setItemState(e.item, 'active', false);
      });

      //针对结点的名称修改
      var cur_e;
      graph.on('node:click', (e) => {
        cur_e = e;
      });

      //针对结点的名称修改确定按钮调用函数
      function btnAction(){
        console.log($("#newLabel").val());
        console.log(cur_e);
        graph.updateItem(cur_e.item, {
          label: $("#newLabel").val(),
        });
      }
      
      if (typeof window !== 'undefined')
        window.onresize = () => {
          if (!graph || graph.get('destroyed')) return;
          if (!container || !container.scrollWidth || !container.scrollHeight) return;
          graph.changeSize(container.scrollWidth, container.scrollHeight);
      };
    </script>
  </body>
</html>

到了这里,关于G6框架Dagre流程图第三个自左向右的 Dagre 上对齐改造,对齐结点和边添加样式,并添加修改节点和展示结点详细信息交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue2中实现Antv g6 流程图 以及自定义节点

    本案例 antv g6版本: \\\"@antv/g6\\\": \\\"^3.4.8\\\", 效果: 1.引入antv g6和echarts差不多 一定记得给盒子设置宽高 初学者一个,以上如有问题或者错误,多谢指出

    2024年02月13日
    浏览(38)
  • 【大数据开发】数据开发必要知识及框架流程图

    数据传输组件: ①Kafka是用Scala编写的分布式消息处理平台。 ②Logstash是用JRuby编写的一种分布式日志收集框架。 ③Flume是用Java编写的分布式实时日志收集框架。 数据存储组件: HDFS (Hadoop Distributed File System)用Java编写,是谷歌的GFS(Google File S ystem)的一种开源实现。 Redis是用

    2024年02月16日
    浏览(27)
  • 详解《基于 javascript 的流程图编辑框架LogicFlow》

    1、LogicFlow 是什么 LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow 支持前端研发自定义开发各种逻辑编排场景,如流程图、ER 图、BPMN 流程等。在工作审批配置、机器人逻辑编排、无代码平台流程配

    2024年02月05日
    浏览(37)
  • Vue实现流程图,借鉴vue-tree-color 实现流程框架技术

    实现组织架构图(vue-org-tree) 如果向使用原来的依赖可以使用这个人的,因为我也是根据这个博客大佬仿照Vue-org-tree实现的方案 对此有几点不惑,问了大佬,大佬也没有回复我 className 貌似不起作用,看了文章底部,她也意识到这个问题,但是没有给出详细的解决方案 node.js中

    2024年02月06日
    浏览(29)
  • 前端流程图框架11个:开发组态图、思维导图、拓扑图必备

    在前端开发中,实现流程图通常涉及以下几个方面: HTML 结构 :使用 HTML 标签来定义流程图的结构,如使用 div 元素表示节点,使用 svg 元素表示连接线等。 CSS 样式 :使用 CSS 样式来定义流程图的外观,包括节点的样式、连接线的样式、文本的样式等。可以使用 CSS 属性来设

    2024年04月15日
    浏览(55)
  • 用C语言解决三个整数比大小,x,y,z三个整数求最小整数,从键盘上输入3个不同的整数×,y,Z,请设计一个算法找出其中最小的数,并画出流程图。

    用C语言解决三个整数比大小,x,y,z三个整数求最小整数,从键盘上输入3个不同的整数×,y,Z,请设计一个算法找出其中最小的数,并画出流程图。 以下是一个用C语言解决三个整数比大小的示例代码: 流程图如下所示: 开始 输入三个不同的整数 x, y, z 设 min = x 如果 y min,则 m

    2024年02月07日
    浏览(35)
  • 流程图实现,基于vue2实现的流程图

    flex布局 + 伪元素实现竖直的连接线+组件递归 2.1基础的(未截全,大致长这样)  2.2带有收缩功能的,可以展开和收缩并显示数量     4.项目源码地址 GitHub - yft-code/flow: 流程图 纯css实现流程图

    2024年02月16日
    浏览(31)
  • 流程图如何制作?5步快速画出好看的流程图!

    流程图是一种图形化工具,描述某个过程或者操作的步骤,以及某种业务系统的具体流程。流程图通常由各种图形符号、形状、箭头组成,可以清晰的表示出流程或系统中各种步骤、每个环节之间的关系、条件判断、数据的流动和处理过程等。           对于负责策划的职场

    2024年02月14日
    浏览(36)
  • Qt (高仿Visio)流程图组件开发(七) 流程图 简单操作界面搭建

    Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思 Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制 Qt (高仿Visio)流程图组件开发(三) 图元基类如何定义,流程图多种图元类型实现 Qt (高仿Visio)流程图组件开发(四) 流程图 图元

    2023年04月25日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包