jTopo入门 简单实现拓扑图

article/2025/8/15 4:37:24

最近项目中需要绘制拓扑图,于是研究了下绘制拓扑图的组件,jtopo是一款比较简单易上手的开发工具包,分享给大家。

jtopo特点

1、完全基于HTML5 Canvas开发,API平易近人、几乎简单到了极致。
2、不依赖任何其他库、执行仅需一个Canvas。
3、体积小,压缩后仅几十KB。
5、免费!

下载jtopo

大家可以去官网自行下载 http://www.jtopo.com/download/jtopo-0.4.8-min.js,目前版本是0.4.8,官网有API文档和案例。
在这里插入图片描述

jtopo官网地址:http://www.jtopo.com/

jQuery

目前我是vue项目中引入的jtopo,jtopo只支持在jQuery语言编写,需要项目中引入jQuery,不是vue项目的可以自行去官网下载jQuery.js,vue引入jQuery可参考https://blog.csdn.net/JQdazhuang/article/details/107152192

举例代码

html代码:

<template><divstyle="position: relative; width: 100%; height: 100%; margin: auto"id="topo_content"><canvas id="topology-canvas" width="1000" height="600"></canvas></div>
</template>

js代码:

var canvas = document.getElementById("topology-canvas");var stage = new JTopo.Stage(canvas);//创建一个画布var scene = new JTopo.Scene(stage);//创建一个背景_this.scene = scene;var childs = topoData;for (let i in childs) {var a = childs[i];if (a.elementType == "node") {//如果是拓扑节点//节点var node = new JTopo.Node(a.text);node.setLocation(a.x, a.y);node.setImage("/static/img/" + a.nodeImage, true);node.fontColor = "0,0,0";node.nodeId = a.nodeId;node.nodeType = a.nodeType;node.nodeImage = a.nodeImage;node.scaleX = a.scaleX;node.scaleY = a.scaleY;node.devIp = a.devIp;node.textPosition = a.textPosition;if (node) {node.alarm = a.alarm;node.alarmColor = "255,0,0";node.alarmAlpha = 0.5;}scene.add(node);} else if (a.elementType == "link") {//如果是连线var link = null;if (link == null) {var nodes = stage.find("node");var nodeA, nodeZ;if (a.nodeSrc && a.nodeDst) {nodes.forEach(function (nodeElement) {if (nodeElement.elementType == "node") {if (nodeElement.nodeId == a.nodeSrc) {nodeA = nodeElement; //起点}if (nodeElement.nodeId == a.nodeDst) {nodeZ = nodeElement; //终点}}});}//绘制折线var c = null;if (nodeA && nodeZ) {// 折线和直线绘制if (a["lineType"] == "line") {c = new JTopo.Link(nodeA, nodeZ);c.lineType = "line";}if (a["lineType"] == "foldLine") {c = new JTopo.FoldLink(nodeA, nodeZ);c.bundleOffset = 40;c.direction = a.direction;c.lineType = "foldLine";}if (a["lineType"] == "flexLine") {c = new JTopo.FlexionalLink(nodeA, nodeZ);c.offsetGap = 40;c.direction = a.direction;c.lineType = "flexLine";}if (a["lineType"] == "curveLine") {c = new JTopo.CurveLink(nodeA, nodeZ);c.lineType = "curveLine";}c.alpha = 1;c.shadow = false;c.font = "12px Consolas";c.arrowsRadius = 0;c.lineWidth = 1.5;c.bundleGap = 0;c.eagleEyeVsibleDefault = false;c.id = a.id;c.strokeColor = a.strokeColor;c.lineClass = a.lineClass;c.nodeSrc = nodeA.nodeId;c.nodeDst = nodeZ.nodeId;c.localDevId = a.localDevId;c.localDevIp = a.localDevIp;c.localDevIfindex = a.localDevIfindex;c.localDevIfname = a.localDevIfname;c.remoteDevId = a.remoteDevId;c.remoteDevIp = a.remoteDevIp;c.remoteDevIfindex = a.remoteDevIfindex;c.remoteDevIfname = a.remoteDevIfname;scene.add(c);}} else {link.strokeColor = a.strokeColor;}}}

代码运行效果图如下:
在这里插入图片描述
不懂可问,留言就行

具体完整代码可看我的码云,自行下载运行即可 https://gitee.com/niexiaohua/JTopo


http://chatgpt.dhexx.cn/article/0OILkZMK.shtml

相关文章

jtopo 实现一键布局

最近很忙、也很懒&#xff0c;一堆烦心事&#xff0c;jtopo后面不准备再深究了&#xff0c;本身东西也不多&#xff0c;做出的新功能&#xff0c;新特效也都写到博客中来了&#xff0c;今天给大家分享最近研究的一个新技能——jtopo一键布局&#xff0c;写给大家、也写给自己。…

jtopo简单实例

原贴地址 http://cn-arthurs.iteye.com/blog/2009345 说明: jtopo是一个基于canvas的js拓扑图形组件.比canvasexpress容易多了. 可以方便地加点,加连线,加鼠标事件,拖曳. 号称跨浏览器,不过实际上不支持ie678,加上excanvas.js也没用,除非像canvasexpress那样使用chrome插件. …

Vue — jTopo

近期在Vue项目中使用jTopo来制作集群节点拓扑图&#xff0c;官网http://www.jtopo.com/ 使用vue-cli搭建的模块化开发项目&#xff0c;使用第三方库最好的方式就是通过npm install xxx安装&#xff0c;然后在项目 里import xxx来使用&#xff1b;但是在JTopo官网上并没有发现有…

【Vue引入JTopo及所遇到的问题】

Vue引入JTopo及所遇到的问题 前言一、方案选型二、使用步骤三、总结 前言 项目过程中总是会遇到稀奇古怪的需求&#xff0c;这不&#xff0c;咱老大又让我画一个系统拓扑图放在首页&#xff0c;要求部分数据需从后端获取&#xff0c;动态展示在页面上。对于一个后端人猿来说&a…

Vue+JTopo(一)

1.下载js jtopo 更新下载 (不知道为什么网站被封禁了……在这提供下我现在用的 jtopo-1.4.4_trial-esm-min.js) 链接&#xff1a;https://pan.baidu.com/s/18V1HKwAuxzWM19RD4axGOg 提取码&#xff1a;0304 2.引用 文件放在public/js文件夹下&#xff0c;在index.hml内引用。…

jTopo(一)

jTopo(一) 一、jTopo是什么 jTopo&#xff08;Javascript Topology library)是一款完全基于HTML5 Canvas的关系、拓扑图形化界面开发工具包。 jTopo关注于数据的图形展示&#xff0c;它是面向开发人员的&#xff0c;需要进行二次开发。 使用jTopo很简单&#xff0c;可以快速…

windows10下安装MSYS2+MinGW64

1.下载msys2&#xff0c;官方地址&#xff1a;http://www.msys2.org/&#xff0c;这里选择64位的安装器 2.安装完成之后&#xff0c;先别启动msys2&#xff0c;在 安装根目录/etc/pacman.d/ 下找到mirrorlist.mingw32、mirrorlist.mingw64和mirrorlist.msys并进行修改。 mirr…

Win10 下安装 MSYS2

什么是 MSYS2 MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。同时它也是一个在Cygwin &#xff08;POSIX 兼容性层&#xff09; 和 MinGW-w64&#xff08;从"MinGW-生成"&#xff09;基础上…

【msys2】使用msys2下载工具的旧版本

背景 苯人在计组实验中使用了msys2来安装verilator工具&#xff0c;结果最新版本的verilator有bug&#xff0c;几经探索找到了利用msys2下载旧版本工具的方法&#xff08;还可以将现有工具更新为旧版本&#xff09; 步骤 现以安装旧版本的verilator为例讲解方法。 这是msys…

【Window环境下使用MSYS2搭建CMake + MinGW环境】

目录标题 安装CMakecmake 测试 MSYS2下载MSYS2安装MSYS2修改软件下载源 MSYS2下安装MinGW配置MinGW配置到环境变量 hello world测试 安装CMake Cmake下载地址:https://cmake.org/download/,下一个windows压缩包就好了&#xff0c;因为我比较喜欢自己来配置&#xff0c;免得不知…

用MSYS2安装mingw

文章目录 前言卸载mingw安装MSYS2 前言 安装MSYS2的原因是&#xff0c;在windows安装protobuf时&#xff0c;想用mingw编译protobuf的库&#xff0c;而protobuf的官方手册只给出一句&#xff1a; To build from source using Cygwin or MinGW, follow the Unix installation i…

【VSCode】【msys2】VS Code + msys2配置Windows下C/C++开发环境

【VSCode】【msys2】VS Code msys2配置Windows下C/C开发环境 一、Msys2配置 1. 下载msys2, 网址&#xff1a;https://www.msys2.org/ 2. 安装msys2-x86_64-xxxx.exe 这里没什难度&#xff0c;记住安装路径就好&#xff0c;一路next就装好了。 3. 安装gcc 3.1. 更新msys2…

Msys2记录

MSYS2 ​ MSYS2是MSYS的升级版&#xff0c;集成了pacman和Mingw-w64的Cygwin升级版&#xff0c;提供了Mingw-w64的GNU工具&#xff0c;包括GCC&#xff0c;同时移植了Arch Linux的软件包管理系统pacman&#xff0c;具备了Cygwin的POSIX API&#xff0c;理论上在Linux上的程序使…

msys2在windows10系统的安装

测试系统: windows 10 首先需要msys2的安装包,可以去官网下载安装包 官网地址: http://www.msys2.org/ 本次下载的是 msys2-x86_64-20180531.exe 注意:1.msys2不可以安装在FAT*分区    2.msys2不能安装在win XP系统上 1.双击msys2-x86_64-20180531.exe,并点击下一步选择安…

MSYS2使用教程——win10系统64位安装msys2最新版(msys2-x86_xxxx.exe)

一、安装 测试系统: windows 10 首先需要msys2的安装包,可以去官网下载安装包 官网地址: http://www.msys2.org/ 本次下载的是 msys2-x86_64-latest.exe 注意: 1. msys2不可以安装在FAT*分区 2. msys2不能安装在win XP系统上 指定好安装路径&#xff08;一般D根目录即可&#…

初步使用MSYS2

在此镜像站点下载&#xff0c; https://mirror.tuna.tsinghua.edu.cn/help/msys2/ 根据资料&#xff0c; MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。同时它也是一个在Cygwin &#xff08;POSIX …

超详细教程:windows安装MSYS2(mingw gcc)——更新于2021.11

目录 安装 MSYS2官网&#xff1a;https://www.msys2.org/ 安装 下载安装程序&#xff08;官网首页有&#xff09;&#xff1a;msys2-x86_64-20210725.exe 或 CSDN&#xff1a;https://download.csdn.net/download/ymzhu385/45988277运行安装程序。MSYS2 需要 64 位 Windows 7…

Argparse 教程

官方文档 argparse --- 命令行选项、参数和子命令解析器 — Python 3.10.2 文档 别人的笔记Argparse 教程 — Python 3.10.2 文档https://docs.python.org/zh-cn/3/howto/argparse.html#id1完整的argparse的API argparse --- 命令行选项、参数和子命令解析器 — Python 3.8…

python argparse

argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数&#xff0c;然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册&#xff0c;并在用户给程序传入无效参数时报出错误信息。 使用argparse从命令行传入参…

python argparse type_python argparse详解

1.argparse模块作用 用于解析命令行参数 2.位置参数和可选参数 运行以下代码: import argparse parser = argparse.ArgumentParser() args = parser.parse_args() 运行结果: 参数为-h或--help时,parser.parse_args()会输出命令行的位置参数position arguments和可选参数opti…