• G6 自定义 DOM 节点


    效果:

     代码:

      1 import G6 from "@antv/g6";
      2 
      3 // 模拟数据
      4 const data = {
      5   nodes: [
      6     {
      7       x: 0,
      8       y: 0,
      9       label: "等级1",
     10       color: "#2196f3",
     11       meta: [
     12         { name: "任务1任务1任务1任务1任务1任务1", node: "zxj1.212" },
     13         { name: "任务2", node: "zxj1.212" },
     14         { name: "任务3", node: "zxj1.212" },
     15         { name: "任务4", node: "zxj1.212" },
     16         { name: "任务5", node: "zxj1.212" },
     17         { name: "任务6", node: "zxj1.212" },
     18         { name: "任务7", node: "zxj1.212" },
     19         { name: "任务8", node: "zxj1.212" },
     20         { name: "任务9", node: "zxj1.212" },
     21         { name: "任务10", node: "zxj1.212" },
     22         { name: "任务11", node: "zxj1.212" },
     23         { name: "任务12", node: "zxj1.212" },
     24         { name: "任务11", node: "zxj1.212" }
     25       ],
     26       id: "0"
     27     },
     28     {
     29       x: 0,
     30       y: 400,
     31       label: "等级1",
     32       color: "#2196f3",
     33       meta: [
     34         { name: "任务1任务1任务1任务1任务1任务1", node: "zxj1.212" },
     35         { name: "任务2", node: "zxj1.212" },
     36         { name: "任务3", node: "zxj1.212" },
     37         { name: "任务4", node: "zxj1.212" },
     38         { name: "任务5", node: "zxj1.212" },
     39         { name: "任务6", node: "zxj1.212" },
     40         { name: "任务7", node: "zxj1.212" },
     41         { name: "任务8", node: "zxj1.212" },
     42         { name: "任务9", node: "zxj1.212" },
     43         { name: "任务10", node: "zxj1.212" },
     44         { name: "任务11", node: "zxj1.212" },
     45         { name: "任务12", node: "zxj1.212" },
     46         { name: "任务11", node: "zxj1.212" }
     47       ],
     48       id: "1"
     49     },
     50     {
     51       x: 0,
     52       y: 800,
     53       label: "等级1",
     54       color: "#2196f3",
     55       meta: [
     56         { name: "任务1任务1任务1任务1任务1任务1", node: "zxj1.212" },
     57         { name: "任务2", node: "zxj1.212" },
     58         { name: "任务3", node: "zxj1.212" },
     59         { name: "任务4", node: "zxj1.212" },
     60         { name: "任务5", node: "zxj1.212" },
     61         { name: "任务6", node: "zxj1.212" },
     62         { name: "任务7", node: "zxj1.212" },
     63         { name: "任务8", node: "zxj1.212" },
     64         { name: "任务9", node: "zxj1.212" },
     65         { name: "任务10", node: "zxj1.212" },
     66         { name: "任务11", node: "zxj1.212" },
     67         { name: "任务12", node: "zxj1.212" },
     68         { name: "任务11", node: "zxj1.212" }
     69       ],
     70       id: "2"
     71     }
     72   ],
     73   edges: [
     74     {
     75       id: "edge0",
     76       source: "0",
     77       target: "1"
     78     },
     79     {
     80       id: "edge1",
     81       source: "1",
     82       target: "2"
     83     }
     84   ]
     85 };
     86 // 定义 Dom 节点
     87 G6.registerNode("dom-node-1", {
     88   draw: (cfg, group) => {
     89     const children = cfg.meta
     90       .map(
     91         (val) =>
     92           `<div style="flex: 1; border: 1px solid #2196f3; padding: 5px;margin:5px;font-size:12px;min-100px;max-200px">
     93         <p style="padding:0;margin:0;text-overflow:ellipsis;overflow: hidden;white-space: nowrap;">任务名称:${val.name}</p>
     94         <p style="padding:0;margin:0;">节点:${val.node}</p>
     95       </div>`
     96       )
     97       .join("");
     98     return group.addShape("dom", {
     99       attrs: {
    100          500,
    101         height: 316,
    102         html: `
    103         <div style="border:1px solid #2196f3;border-radius:5px;">
    104         <div style="text-align:center;background:#2196f3;font-size:18px;color:#fff;font-weight:bold;">${cfg.label}</div>
    105         <div style="display:flex;padding:10px; flex-wrap:wrap;">
    106         ${children}
    107         </div>
    108         </div> 
    109           `
    110       },
    111       draggable: true
    112     });
    113   },
    114   getAnchorPoints() {
    115     return [
    116       [0.5, 0],
    117       [0.5, 1]
    118     ];
    119   }
    120 });
    121 
    122 const width = 1000;
    123 const height = 1000;
    124 const graph = new G6.Graph({
    125   container: "container",
    126   width,
    127   height,
    128   modes: {
    129     default: ["zoom-canvas", "drag-canvas"]
    130   },
    131   renderer: "svg", // 使用 Dom node 的时候需要使用 svg 的渲染形势
    132   defaultNode: {
    133     type: "dom-node-1"
    134   },
    135   defaultEdge: {
    136     style: {
    137       endArrow: true,
    138       offset: 45,
    139       stroke: "#2196f3",
    140       lineWidth: 2
    141     }
    142   },
    143   fitCenter: true
    144 });
    145 
    146 graph.data(data);
    147 graph.render();
    148 graph.fitView();
    View Code

    地址:https://codesandbox.io/s/small-cloud-3ykjf?file=/index.js:0-3808

  • 相关阅读:
    关于CSS网页布局id与class命名的问题
    JavaScript弹出层技术探讨文章收藏
    Jquery实现弹窗
    Asp.net中时间格式化的几种方法
    新建商品时,导入商品,随机文件名称的形成
    Linux问题:Crontab 执行shell脚本时相对路径的问题,不能识别。
    linux环境php扩展pdo_mysq安装l错误
    测试php代码的运行时间
    Apache的工作方式
    PHP时间处理
  • 原文地址:https://www.cnblogs.com/z-one/p/13998102.html
Copyright © 2020-2023  润新知