跳转到内容

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。