基础库
节点
每个节点都必须有一个 ID,它可以是任何唯一的字符串。此外,还可以提供以下可选属性:
属性 |
定义 |
|
标题对齐方式 |
|
标题文本大小 |
|
标题文本和字体样式 |
|
用于节点的颜色。支持所有有效的网页颜色。 |
|
当前节点是否被禁用 |
|
当前节点是否被悬停 |
|
在节点内显示的图标 |
|
当前节点的 ID,在所有节点和关系中必须唯一,且必须是字符串,不能为空。 |
|
当前节点是否被固定 |
|
当前节点是否被选中 |
|
节点的大小 |
关系
关系必须有一个唯一的 ID,以及一个 from 和一个 to 属性,这些属性必须对应图中现有的节点 ID。此外,还可以指定以下属性:
属性 |
定义 |
|
标题对齐方式 |
|
标题文本大小 |
|
标题文本和字体样式 |
|
用于关系的颜色。支持所有有效的网页颜色。 |
|
当前关系是否被禁用 |
|
关系开始的节点 ID |
|
当前关系是否被悬停 |
|
当前关系的 ID,在所有节点和关系中必须唯一,且必须是字符串,不能为空。 |
|
关系指向的节点 ID |
|
关系的宽度 |
选项
以下是可指定的选定选项列表。
属性 |
定义 |
|
是否动态允许在当前图在最小缩放级别下无法完全显示时,减小最小缩放值。请注意,当设置为 true 时,如果图无法完全显示,缩放和适应操作将允许缩放出比最小缩放值更远的范围。当设置为 false 时,缩放和适应操作将停在最小缩放值,即使整个图在该缩放级别下无法完全显示。默认值为 |
|
当前视口的缩放值 |
|
要使用的图布局算法。 |
|
允许的最大缩放级别。默认值为 10。 |
|
允许的最小缩放级别。默认值为 0.075。 |
|
用于渲染小地图的 DOM 容器 |
|
视口的初始平移 X 值 |
|
视口的初始平移 Y 值 |
|
要使用的渲染器方法 |
回调
可以指定以下回调:
属性 |
定义 |
|
NVL 初始化后抛出错误时触发 |
|
当异步布局计算开始/停止时触发 |
|
布局移动完成后触发 |
|
在布局的每一步触发 |
|
WebGL 上下文丢失时触发 |
交互性
为了与图进行交互,NVL 提供了方法来获取被指针事件命中的节点和关系。该方法接受一个事件,并返回带有 HitTargets
属性的事件,其中包含被事件命中的节点和关系。这是一个基本示例:
import { NVL } from '@neo4j-nvl/base'
const container = document.getElementById('frame')
const nodes = [{ id: '1' }, { id: '2' }]
const relationships = [{ id: '12', from: '1', to: '2' }]
const nvl = new NVL(container, nodes, relationships)
// Get the nodes and relationships that have been hit by a pointer event.
container.addEventListener('click', (evt) => {
const { nvlTargets } = nvl.getHits(evt)
console.log('clicked elements:', nvlTargets)
})
根据事件类型,您可以通过方法对 NVL 进行更新。以下 NVL 方法可用:
方法 |
定义 |
|
向 NVL 添加节点和关系,并更新现有节点和关系 |
|
在当前场景中添加节点和关系 |
|
返回当前选项 |
|
取消选择所有节点和关系 |
|
从 DOM 中移除图可视化并清理所有内容 |
|
更新平移和缩放以使指定节点适应视口 |
|
提供图表渲染所在的 DOM 容器元素 |
|
返回当前选项 |
|
获取被事件命中的节点和关系 |
|
返回给定 ID 当前存储在场景中的节点数据 |
|
获取并返回所有节点的当前位置,作为坐标数组 |
|
返回当前存储在场景中的数据 |
|
返回当前场景中的节点 |
|
返回视口当前平移值 |
|
返回给定 ID 当前存储在场景中的节点位置 |
|
返回给定 ID 当前存储在场景中的关系数据 |
|
返回当前场景中的关系 |
|
获取视口当前的缩放级别 |
|
获取当前选中的节点 |
|
获取当前选中的关系 |
|
检查并返回当前布局是否仍在调整中 |
|
固定指定节点,使其不受布局力影响 |
|
从当前场景中移除指定节点 |
|
从当前场景中移除指定关系 |
|
将视口缩放重置回默认缩放级别 0.75 |
|
重启 NVL 实例 |
|
将整个场景保存为 .png 文件到客户端 |
|
将场景的当前视图保存为 .png 文件到客户端 |
|
更改布局类型 |
|
更新当前布局的配置 |
|
根据提供的数据设置节点位置 |
|
将视口的缩放设置为特定值 |
|
在 WebGL 和 Canvas 渲染之间切换 |
|
将视口的缩放设置为特定值 |
|
将视口的缩放和平移设置为特定值 |
|
取消固定指定节点,使其再次受布局力影响 |
|
使用提供的节点和关系数组更新当前场景中的关系 |
以下是一个示例,展示了在点击节点时选中节点,以及在点击场景空白区域时取消选中节点。
const nodes = [{ id: '0' }, { id: '1' }]
const rels = [{ id: '10', from: '0', to: '1' }]
const myNvl = new NVL(parentContainer, nodes, rels)
parentContainer.addEventListener('click', (e) => {
const { nvlTargets } = myNvl.getHits(e)
if (nvlTargets.nodes.length > 0) {
myNvl.addAndUpdateElementsInGraph([{ id: nvlTargets.nodes[0].data.id, selected: true }], [])
} else {
myNvl.addAndUpdateElementsInGraph(
nodes.map((node) => ({ ...node, selected: false })),
[]
)
}
})
如果您不想从头开始实现传统的图交互行为,NVL 还提供了一系列交互处理程序。