发现一个很N且免费的html5拓扑图 关系图 生成组件

demo代码
<!doctype html>
<html>
<head>
<title>vis.js newwork Demo</title>
<script src="http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script src="../vis.js"></script>
<link href="../vis.css" rel="stylesheet" type="text/css" />
<style type="text/css">
#mynetwork {
width: 100%;
height: 600px;
border: 1px solid lightgray;
}
#hisLog {
width: 100%;
height: 200px;
border: 1px solid red;
}
</style>
</head>
<body>
<div id="mynetwork"></div>
<button id='addTo' value="Begin AddTo">Begin AddTo</button>
<button id='stop_addTo' value="Stop AddTo">Stop AddTo</button>
<button id='add_edge'>Begin Add Edge</button>
<button id='stop_edge'>Stop Add Edge</button>
<div id="hisLog"></div>
<script src="./demo.js"></script>
</body>
</html>
var nodes = new vis.DataSet();
var edges = new vis.DataSet();
var container = document.getElementById('mynetwork');
var data = {
nodes: nodes,
edges: edges
};
var options = {};
var network = new vis.Network(container, data, options);
function addNode(id, label, title) {
nodes.add({
id: id,
label: id
})
this.addHisLog('node:' + id + ' add to container.');
}
function addEdge(fromId, toId, type) {
var edge = {
from: fromId,
to: toId,
}
if (type === 1) {
edge['label'] = 'releation'
edge.arrows = 'to'
edge.color = 'red'
edge.length = 400
} else {
edge['label'] = 'arrows:circle'
edge.arrows = {
to: {
type: 'circle'
}
}
edge.length = 200
}
edges.add(edge);
this.addHisLog('edge:' + fromId + ' ---> ' + toId + ' .type:' + type + ' add to container.');
}
function randomGetNodeId() {
var names = Object.getOwnPropertyNames(nodes._data);
var len = names.length;
var index = Math.floor(Math.random() * len);
return names[index];
}
function randomAddNode() {
var type = 0
if (Math.random() > 0.7)
type = 1
var id = Date.now();
var fId = this.randomGetNodeId()
this.addNode(id, id, null)
this.addEdge(fId, id, type)
}
function randomAddEdge() {
var fId = this.randomGetNodeId()
var tId = this.randomGetNodeId()
if (fId == tId)
return;
var type = 0
if (Math.random() > 0.7)
type = 1
this.addEdge(fId, tId, type)
}
function addHisLog(message) {
$('#hisLog').prepend('<div>' + message + '</div>')
$('#hisLog div').remove('div:gt(8)')
}
network.on("click", function(params) {
// randomAddNode()
// if (params.nodes.length == 0)
// return;
// var names = Object.getOwnPropertyNames(nodes._data);
// var len = names.length;
// var index = Math.floor(Math.random() * len);
// var _edgeId = names[index]
// var id = Date.now();
// nodes.add({
// id: id,
// label: id
// })
// var edge = {
// from: params.nodes[0],
// to: id,
// }
// if (Math.random() > 0.5) {
// edge['label'] = 'releation'
// edge.arrows = 'to'
// edge.color = 'red'
// } else {
// edge['label'] = '父子'
// edge.arrows = {
// to: {
// type: 'circle'
// }
// }
// }
// edges.add(edge);
});
$('#addTo').click(function() {
_setIntervalId = setInterval(randomAddNode, 400)
})
$('#stop_addTo').click(function() {
clearInterval(_setIntervalId)
})
$('#add_edge').click(function() {
_setIntervalId2 = setInterval(randomAddEdge, 400)
})
$('#stop_edge').click(function() {
clearInterval(_setIntervalId2)
})
发现一个很N且免费的html5拓扑图 关系图 生成组件的更多相关文章
- 如何实现 Https拦截进行 非常规“抓包” 珍惜Any 看雪学院 今天 前段时间在自己做开发的时候发现一个很好用的工具,OKHttp的拦截器(何为拦截器?就是在每次发送网络请求的时候都会走的一个回调)大概效果如下:
如何实现 Https拦截进行 非常规“抓包” 珍惜Any 看雪学院 今天 前段时间在自己做开发的时候发现一个很好用的工具,OKHttp的拦截器(何为拦截器?就是在每次发送网络请求的时候都会走的一个回调 ...
- 翻了翻element-ui源码,发现一个很实用的指令clickoutside
前言 指令(directive)在 vue 开发中是一项很实用的功能,指令可以绑定到某一元素或组件,使功能的颗粒度更精细.今天在翻 element-ui 的源码时,发现一个还挺实用的工具指令,跟大伙分 ...
- 发现一个很好的android开发笔记库
http://linux.linuxidc.com/ 密码和用户名都是www.linuxidc.com android基础教程到高手进阶,游戏开发,数据存储,android架构等.谢谢网站主分享!
- 发现DELL笔记本一个很弱智的问题
以前用联想的笔记本,最近联想笔记本坏了,用的是公司的DELL笔记本,发现DELL笔记本一个很弱智的问题. 关于禁用触摸板的问题. 起因: 由于要经常写程序,我配置的有有线鼠标,但是打字时经常碰到触摸板 ...
- 平时没有怎么用Excel做 加减乘除 计算,猛地发现,其实Excel 是一个很好的简单计算器
平时没有怎么用Excel做 加减乘除 计算,猛地发现,其实Excel 是一个很好的简单计算器
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的
发现一个比ack更快更好用的: https://github.com/ggreer/the_silver_searcher , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...
- [前端开发] 8 个很有用的免费CSS的UI工具箱
搞web开发的不能不提到前端,下面就和大家分享下8个很有用的免费CSS的UI工具箱 1) UI CSS ui.css 是一个用来创建简洁的 Web 用户界面的工具,下载的文件只包含一个 css 文件. ...
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
随机推荐
- gp数据库停止
greenplum是2(master)+7(segment)的集群规模 系统刚准备上线,是用来做统计数据库的,正在帮忙一个hadoop集群核对其数据的准确性,在这个greenplum库中入了清单数据 ...
- CentOS 7下启动、关闭、重启、查看MySQL服务
1.启动命令 [root@xufeng Desktop]# service mysqld startRedirecting to /bin/systemctl start mysqld.service ...
- Oracle 空间查询, 数据类型为 sdo_geometry
因网上搜索到的相关资料大部分都是关于sdo_geometry的介绍和以及通过sql语句添加要素,查询要素等等.没有找到存储过程相关的例子,所以只好自己动手啦. 准备 环境:windowsxp系统,安装 ...
- JavaScript的DOM操作获取元素实际大小
clientWidth 和 clientHeight 这组属性可以获取元素可视区的大小,可以得到元素内容及内边距所占据的空间大小. 返回了元素大小,但没有单位,默认单位是 px,如果你强行设置了单位, ...
- Extjs TreePanel API详解
转自:http://web.qhwins.com/CSS-JS-XML/2011091312092944999107.html config定义{ animate : Boolean, contain ...
- 关于Python常用框架学习
我对Python不是特别熟悉,我仅仅只知道它在Web自动化领域挺牛逼的,还有爬虫.当然了,现在的人工智能和机器学习用到它也很多. 记得六月还是七月份的时候,那个时候,突然心血来潮就开始学起了Pytho ...
- Docker实战(三)之访问Docker仓库
仓库是集中存放镜像的地方,分为公共仓库和私有仓库.一个容易与之混肴的概念是注册服务器.实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像.从这方面来说 ...
- 初识Qt鼠标、键盘事件及定时器和随机数
1.新建Qt Gui应用,项目名称为“myEvent”,基类名称为QWidget,类名称为Widget. 2.widget.h文件中添加以下代码,该段代码中包含了三个事件函数和一个槽函数 privat ...
- ZooKeeper(一)基本介绍
本文转载自LDB's Blog,原文链接 ZooKeeper原理及其在Hadoop和HBase中的应用 目录 一.简介 二.基本概念 1. 集群角色 2. 会话(Session) 3. 数据节点(ZN ...
- NYOJ 18 The Triangle 填表法,普通dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=18 The Triangle 时间限制:1000 ms | 内存限制:6553 ...