انتقل إلى المحتوى

Pivotick API ​

قائمة الطرق متاحة أون لاين.

الحصول على العقد والحواف ​

يوفر Pivotick طرقًا متعددة للوصول إلى العقد والحواف. يتم سرد طرق العقد أدناه (تعمل الحواف بنفس الطريقة):

الطريقةالمرتجعاتالوصف
getNode(id: string | Node)Node | undefinedتقوم بإرجاع نسخة عميقة من العقدة بالمعرف المحدد.
getNodes()Node[]إرجاع نسخة عميقة لجميع العقد.
getMutableNode(id: string | Node)Node | undefinedتُرجع كائن العقدة الفعلي المستخدم داخليًا بواسطة Pivotick.
getMutableNodes()Node[]إرجاع جميع كائنات العقدة الداخلية.

نصيحة

استخدم الحروف القياسية (getNode / getNodes) كلما أمكن ذلك. إنها توفر نسخًا آمنة يمكن تعديلها دون التأثير على الحالة الداخلية للمحرك.

خطر

قد يؤدي تعديل العقد أو الحواف مباشرة عبر الحروف القابلة للتغيير إلى سلوك غير متوقع. استخدم الوصول القابل للتغيير فقط إذا كنت تفهم آليات المحرك الداخلية؛ خلاف ذلك، تفضل الإصدارات المستنسخة.

إضافة العقد والحواف ​

يمكنك استخدام الدالتين 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. يلقي إذا تم أخذ الهوية. يُرجع undefined بينما UI.notes.enabled يساوي false.
setNotes(notes: NoteOptions[])Note[]يستبدل الملاحظات، ويترك العقد والحواف وحدها. تتم مطابقة الملاحظات حسب المعرف: يتم تحديث الملاحظة الموجودة بالفعل على اللوحة القماشية في مكانها، وتتم إزالة الملاحظة المفقودة من القائمة، وإضافة ملاحظة جديدة.
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 في إصدار المتصفح.