当前位置: 首页 > news >正文

antv/x6 自定义html节点并且支持动态更新节点内容

antv/x6 自定义html节点

    • 效果图
    • 定义一个连接桩公共方法
    • 注册图形节点
    • 创建html节点
    • 动态更新节点内容

效果图

在这里插入图片描述

定义一个连接桩公共方法

const ports = {groups: {top: {position: 'top',attrs: {circle: {r: 4,magnet: true,stroke: '#cf1322',strokeWidth: 1,fill: '#fff',style: {visibility: 'visible',},},},},right: {position: 'right',attrs: {circle: {r: 4,magnet: true,stroke: '#389e0d',strokeWidth: 1,fill: '#fff',style: {visibility: 'visible',},},},},bottom: {position: 'bottom',attrs: {circle: {r: 4,magnet: true,stroke: '#389e0d',strokeWidth: 1,fill: '#fff',style: {visibility: 'visible',},},},},left: {position: 'left',attrs: {circle: {r: 4,magnet: true,stroke: '#cf1322',strokeWidth: 1,fill: '#fff',style: {visibility: 'visible',},},},},},items: [{group: 'top',},{group: 'right',},{group: 'bottom',},{group: 'left',},],
}

注册图形节点

Shape.HTML.register({shape: 'html',width: 70,height: 36,effect: ['data'],html(cell) {const { label, props } = cell.getData()const div = document.createElement('div')div.style.width = 70const titleDiv = document.createElement('div')titleDiv.style.width = '70px'titleDiv.style.height = '36px'titleDiv.style.background = '#eb2f96'titleDiv.style.color = 'white'titleDiv.style.fontSize = '14px'titleDiv.style.textAlign = 'center'titleDiv.style.lineHeight = '36px'titleDiv.style.boxSizing = 'border-box'titleDiv.style.fontSize = '12px'titleDiv.style.borderRadius = '6px'titleDiv.style.whiteSpace = 'nowrap'titleDiv.style.overflow = 'hidden'titleDiv.style.textOverflow = 'ellipsis'titleDiv.setAttribute('title', label)titleDiv.textContent = labeldiv.append(titleDiv)return div},ports: { ...ports,items: [{group: 'left'},{group: 'right'}]},})
  1. effect 是当前节点的 prop 数组,当 effect 包含的 prop 有变动时,会重新执行 html 方法,返回新的 dom,更新节点内容;
  2. ports 是此节点的连接桩;此节点只用到了左右两个连接桩;

创建html节点

const r2 = this.graph.createNode({shape: 'html',data: {props:{desc: ''},label: '自定义html',},
})
  1. shape 要和注册节点里的名称一致;

动态更新节点内容

let cell = this.graph.getCellById(id)
cell.prop('data/label', '文字')
cell.prop('data/props/voice', 'desc')
  • id 是要更改内容的cell的id;
http://www.lryc.cn/news/222468.html

相关文章:

  • 设计模式之命令模式
  • Linux学习笔记--高级
  • 在Java中操作Redis
  • 【服务器】fiber协程模块
  • SparkML
  • 实时定位与路径优化:跑腿App系统开发中的地理信息技术
  • Tomcat的HTTP Connector
  • 将Pytorch搭建的ViT模型转为onnx模型
  • 图神经网络(GNN)性能优化方案汇总,附37个配套算法模型和代码
  • 国科大移动互联网考试资料(2023+2020+2018真题+答案)
  • ModStart系统安全规范建议
  • 【漏洞复现】Django_debug page_XSS漏洞(CVE-2017-12794)
  • Redis性能调优:深度剖析与示例解析
  • oracle查询前几条数据的方法
  • c#弹性和瞬态故障处理库Polly
  • 20231107-前端学习炫酷菜单效果和折叠侧边栏
  • 基于CLIP的图像分类、语义分割和目标检测
  • python爬虫(数据获取——selenium)
  • [wp]NewStarCTF 2023 WEEK5|WEB
  • 未将对象引用设置到对象实例
  • 网络的地址簿:Linux DNS服务的全面指南
  • 输电线路AR可视化巡检降低作业风险
  • 18. 四数之和
  • 排序:堆排序(未完待续)
  • 小米智能电视投屏方法
  • 保外就医罪犯收到指定医院《罪犯病情诊断书》及检测、检查报告等其他医疗文书后,应当在规定时限内提交( ),或者受委托司法所审查。
  • pytorh模型训练、测试
  • MySQL 8.0 Clone Plugin 详解
  • 掌握未来技术趋势:深度学习与量子计算的融合
  • 京东数据分析:2023年9月京东笔记本电脑行业品牌销售排行榜