uniapp版pc端easyTopo拖拽生成拓扑版本,重新纯JS绘制,可自定义图标

easyTopo1.2.3可拖拽生成拓扑图

在这里插入图片描述
在这里插入图片描述

操作手册:(基于 uni-app,uniCloud 的 admin 管理项目模板。)

本人微信号:jays611(如有插件问题及时反馈)

web版展示地址:http://jstopo.top/ups/#/grid/gridMax【vue原生页面版本】

uniapp版:用户名:admin 密码:123456

网站实例:https://static-8e60622e-007d-44eb-a48f-3ad0c830810e.bspapp.com/topo/#/pages/jstopo/index

  1. 单击左侧排列整齐的五个小图标,
  2. 可拖动到画布的中间,
  3. 鼠标右键可弹窗出工具栏操作按钮组有 “连线” “绑定信息” “删除” 三个按钮
  4. 右上角有切换模式,查看模式有点动画不可拖拽图标,编辑模式可拖拽图标
  5. 保存数据按钮在vue文件函数中有具体说明。
配置信息api:
isEdit: false,//是否编辑模式还是查看模式
hoverAlert:{//鼠标移动到图标上hover 时弹窗
    isShow: false,
    indx: null,
    left: 0,
    top: 0,
    mes:{
        name:'未命名',
        company:'未填写'
    }
},
toolAlert:{//编辑时鼠标右键的弹窗
    isAlert: false,
    indx: null,
    left: 0,
    top: 0,
},
res: null,//canvas标签内含width,heihgt...
isPoint: null,
isToast: false,//提示缩放状态scale的值
activeImg: null,
createImg: null,
imgArray:[],//用于加载完毕后存储图标信息的变量
defaultPos:{x:15,y:10,distX:20,distY:10},
posImgArrDefault:[],
topoInfo:{
    lineTopoArray:[],//图标之间连线的数据信息
    imgTopoArray: [],//场景中图标的数据信息
    scale: 1,//画布缩放的尺寸值
    offset: {x:0,y:0},//画布偏移值
    maxSalce: 1.6,//最大缩放值
    scaleStep: 0.1,//每次缩放的值
    minSalce: 0.5,//缩放的最小值
    mouseStatus: "move",//鼠标的状态
},
dragPox: {//拖动状态记录坐标无需修改值
    x: 0,
    y: 0
},
w: 0,//画布的宽
h: 0,//画布的高
ctx: null,
n: 1,
speed: 200,//运动点的速度,值越大 越慢
moveDotColor: "green",//运动点的颜色
moveDotType: "more",//运动点的类型,单点:only,多点: more    
moveDotR: 3,//运动点的半径
timeR: null,//动画requestAnimationFrame的变量名
imgsArr:[//图标的信息数组
    {imgSrc:"power1.png",name:"雷电基地",ids:"power"},
    {imgSrc:"closeRoombg.png",name:"开关阀门",ids:"closeRoom"},
    {imgSrc:"guiZibg.png",name:"PC主机箱",ids:"guiZi"},
    {imgSrc:"room2.png",name:"闪电机房",ids:"machineRoom"},
    {imgSrc:"terminal3.png",name:"用电器",ids:"terminal"}
],

2.部分函数说明:

//初始化图标信息
loadImgs(arr){...},
//编辑模式切换
editClick(){...},
//绑定信息弹窗中的确定按钮
submitForm(){...},
//圆点动画动效
dotMove(){...},
//保存topo数据信息事件具体说明在vue文件方法中查看
saveTap(){...}
要使用D3.js实现拖拽生成拓扑图,你可以使用D3.js拖拽行为(drag behavior)和力导向图(layout)来实现。首先,你需要创建一个SVG容器来放置你的拓扑图。然后,使用D3.js拖拽行为来使节点可拖拽。你可以通过调用`d3.drag()`函数来创建一个拖拽行为,并将其应用到节点上。在拖拽行为的回调函数中,你可以更新节点的位置。接下来,你可以使用D3.js的力导向图布局(layout)来计算节点的位置。你可以使用`d3.forceSimulation()`函数创建一个力导向图布局,并设置力的参数,如引力、斥力等。然后,将节点和边添加到力导向图布局中,并在每一帧更新节点的位置。最后,你可以使用D3.js的选择集(selection)和绑定数据(data binding)来绘制节点和边。你可以使用`d3.select()`函数选择SVG容器,并使用`selection.data()`函数绑定节点和边的数据。然后,使用`selection.enter()`函数创建新的节点和边,并使用`selection.exit()`函数删除不需要的节点和边。通过设置节点和边的位置和样式,你可以绘制拖拽生成拓扑图。\[2\]\[3\] #### 引用[.reference_title] - *1* [【工具推荐】使用D3.js制作网页网络拓扑图,可拖转可跳转链接](https://blog.csdn.net/diandianxiyu/article/details/131003483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用 d3.js 绘制资源拓扑图](https://blog.csdn.net/weixin_38625669/article/details/103763186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值