基础库
节点
每个节点必须具有一个 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 还提供了一系列交互处理程序。