# d3ForceEasy
**Repository Path**: bob-wu/d3-force-easy
## Basic Information
- **Project Name**: d3ForceEasy
- **Description**: 方便生成力导向图的工具,基于d3
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-06-15
- **Last Updated**: 2022-06-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## d3ForceEasy(更新时间2022年3月28日)
--------------------------------------
>#### **更新记录:**
> * 修改增加附加功能的方式
> * demo新增刷选
> * demo新增缩略图
> * 修复了曲率和容器element语义化问题
> * 配置项增加clamp
> * 优化文字居中逻辑
> * 新增回到中心功能
> * 新增连线文字和优化新增节点逻辑
***
# **D3js force力导向图 简单使用的工具**
> 依赖d3.js >v5.0.0

## 演示d3ForceEasy
demo代码位于
>/demo
## 使用方法
1.下载d3ForceEasy
2.引入
import d3ForceEasy from 'd3_force_easy'
import 'd3ForceEasy.css'
***
# 简单开始
数据为nodes数组和links数组组成,
其中nodes为节点列表,需要id。
links为连线列表,source和target的值为节点的id,代表点到点的连线关系。
```js
//数据
const nodes = [
{name:'2.2.2.2',id:12,type:'ip'},
...
]
const links = [
{source:12,target:13,relation:'长期'},
{source:17,target:14},
...
]
//配置项
const option = {
element:document.getElementById('app'),
color:'#00a8ff',
zoom:true,
key:'id',
icons:[
{type:'ip',icon:'M512 64C...'},
...
],
currentClick:currentClickCallBack,
}
//初始化
let charts = d3ForceEasy.initForce(option);
//注入数据
charts.update({nodes,links});
```
***
# 配置项
* **element**
容器定义
```js
element: document.getElementsByTagName('body')
```
---------------
* **color**
全局颜色
***
* **key**
数据唯一标识,默认为 id
***
* **icons**
图标集,对应数据中type各类型,使用svg path的d路径
```
[
{type:'ip',icon:'M512 64C...'},
...
]
```
***
* **zoom**
缩放开关,默认开
***
* **zoomRange**
缩放范围,默认[0.5, 8]
***
* **fixed**
拖动锁定开关,Boolean类型
***
* **clamp**
drag拖动范围限制开关,默认false关闭
***
* **linkLabel**
连线文字
```
linkLabel:{
//开关
show:true,
//标识
key:'relation'
}
```
***
* **curvature**
连线曲率,范围【0-1】,默认0.7,0最直,1最弯
***
* **currentClick**
节点点击回调,返回鼠标事件信息和节点信息
```js
/*
* 返回选中数据
* */
let current = '';
function currentClickCallBack(e,d){
current = d;
})
```
***
# API
### **更新节点**
包括新增和删除,仅需修改数据后即可
```js
charts.update({nodes,links});
```
### **显示/隐藏名称**
```js
d3ForceEasy.toggleName()
```
### **返回中心**
```js
d3ForceEasy.forceToCenter()
```
----------------
# 附加功能 addPlugin
可以利用新增插件,让关联图功能丰富。
利用`d3ForceEasy.addPlugin(plugin)`
**例如:载入刷取功能**
``` js
import d3ForceEasy from "@/d3ForceEasy/d3ForceEasy";
import brushArea from "@/d3ForceEasy/brushArea";
...
d3ForceEasy.addPlugin(brushArea);
```
## **最短路径规划**
需引入`getShortRoad.js`
获取两个节点id,得出路径
灰色线代表反向
>详细请查看demo
```js
import getShortRoad from "@/d3ForceEasy/getShortRoad";
d3ForceEasy.addPlugin(getShortRoad);
d3ForceEasy.getShotRoad([id1,id2]);
```
## **缩略图**
需要引入 `thumbnail.js`
需要html中自建thumb容器,并把id配置到option中
>详细请查看demo
``` html