Pivotick API
方法列表可在在线获得。
获取节点和边
Pivotick提供了多种访问节点和边的方式。下面列出了节点的方法(边的工作方式相同):
| 方法 | 返回值 | 说明 |
|---|---|---|
getNode(id: string | Node) | Node | undefined | 返回具有给定 ID 的节点的深层副本。 |
getNodes() | Node[] | 返回所有节点的深层副本。 |
getMutableNode(id: string | Node) | Node | undefined | 返回Pivotick内部使用的实际节点对象。 |
getMutableNodes() | Node[] | 返回所有内部节点对象。 |
小费
尽可能使用标准 getter (getNode / getNodes)。它们提供安全的克隆,可以在不影响引擎内部状态的情况下进行修改。
危险
直接通过可变 getter 修改节点或边可能会导致意外行为。仅当您了解内部引擎机制时才使用可变访问;否则,更喜欢克隆版本。
添加节点和边
您可以在图实例上使用函数addNode()和addEdge()来创建新的节点和边。
js
async function addNode(counter, graph) {
const newNode = new Node(`n-${counter}`, { label: `Node ${counter}` })
const existingNodes = graph.getMutableNodes()
const randomIndex = Math.floor(Math.random() * existingNodes.length)
const randomNode = existingNodes[randomIndex]
const newEdge = new Edge(`e-${counter}`, randomNode, newNode)
graph.addNode(newNode)
graph.addEdge(newEdge)
// Restart physics by nudging the graph a bit
graph.simulation.reheat(0.7)
await graph.simulation.waitForSimulationStop()
graph.renderer.fitAndCenter()
}js
function loaded(graph) {
let i = graph.getMutableNodes().length
addNode(i++, graph)
setInterval(() => {
if (i < 10) {
addNode(i++, graph)
}
}, 1500)
}注释
注释采用普通选项,与data.notes相同的形状,因此可以随时绘制存储的集合,而不仅仅是在构建图形时绘制。
| 方法 | 返回值 | 说明 |
|---|---|---|
addNote(options: NoteOptions | Note) | Note | undefined | 添加并绘制音符,并发出 noteAdd。如果 id 被占用,则抛出异常。返回 undefined,而 UI.notes.enabled 为 false。 |
setNotes(notes: NoteOptions[]) | Note[] | 替换注释,保留节点和边。注释通过 id 进行匹配:画布上已有的注释会就地更新,列表中缺少的注释会被删除,并添加新的注释。 |
note.toJSON() | NoteOptions | 注释为普通选项:id、x、y、width、height、content、color、surface,如果有的话,attachedElement。 |
getNotes() / getNote(id) | Note[] / Note | undefined | 图表上的注释。 |
toJSON() 是 JSON.stringify 的名称,因此保存注释是一行,在另一张图表上绘制它们也是如此:
js
const saved = JSON.stringify(graph.getNotes())
other.setNotes(JSON.parse(saved))
// or one at a time
other.addNote(graph.getNote('n1').toJSON())当节点存在于另一个图上时,附加到该节点的注释会保留其链接。笔记是否隐藏是一个视图设置,不超过toJSON()。
Note 类也会导出,如浏览器构建中的 import { Note } from 'pivotick' 或 Pivotick.Note。