Библиотека Mind.js предоставляет гибкую модель для работы с
интеллектуальными графами и ментальными картами в JavaScript.
Центральным элементом является объект Mind, представляющий
собой структуру данных для хранения узлов, связей и атрибутов карты.
Понимание внутренней структуры этого объекта критично для эффективного
использования библиотеки, особенно при динамическом создании и
редактировании графов.
Объект Mind организован в виде иерархической структуры,
где ключевыми элементами являются:
nodes — массив узлов, каждый из которых представляет отдельную точку или идею на карте. Узел имеет следующие свойства:
id — уникальный идентификатор узла, обычно строка.topic — текстовая метка узла, описывающая содержание
идеи.parent — идентификатор родительского узла, используется
для построения иерархии.children — массив идентификаторов дочерних узлов.data — дополнительная информация, которую можно хранить
произвольно, например, цвет, иконка, примечания.root — ссылка на корневой узел карты, обычно
объект узла с полями id и topic.
connections — массив связей между узлами. Каждый элемент содержит:
source — идентификатор узла-источника.target — идентификатор узла-приемника.type — тип связи (например, ассоциация, логическая
последовательность, ссылка).metadata — объект с информацией о карте в целом:
title — название карты.author — автор или владелец карты.created — дата создания.modified — дата последнего изменения.version — версия структуры или формата карты.Узлы являются основой модели. Каждый узел может иметь произвольное количество дочерних элементов, что позволяет создавать деревья и сложные графовые структуры. Важно понимать различие между parent и children:
parent используется для быстрого доступа к
узлу-родителю и навигации вверх по дереву.children хранит ссылки на все дочерние узлы, позволяя
обходить дерево вниз.Идентификаторы узлов должны быть уникальными в пределах одной карты. Рекомендуется использовать строковые идентификаторы, чтобы избежать конфликтов при динамическом создании элементов.
Связи (connections) расширяют возможности структуры,
позволяя строить не только иерархические, но и сетевые модели. Каждая
связь строго определяет источник и цель, а также может содержать
дополнительную информацию о типе и свойствах. Например, связь типа
"reference" может указывать на внешний ресурс или документ,
а "dependency" — на зависимость между узлами.
Библиотека предоставляет ряд методов для работы с объектом
Mind:
addNode(parentId, topic, data) — добавляет новый узел в
указанный родительский узел, автоматически обновляя массив
children.removeNode(nodeId) — удаляет узел и все его дочерние
элементы, а также очищает связи, связанные с этим узлом.updateNode(nodeId, properties) — изменяет свойства
узла, включая topic и data.addConnection(sourceId, targetId, type) — создает новую
связь между двумя узлами.removeConnection(sourceId, targetId) — удаляет
существующую связь.Эти методы обеспечивают согласованность структуры и позволяют легко управлять сложными ментальными картами.
data позволяют
хранить произвольную информацию, включая цветовые схемы, иконки, метки
приоритетов, пользовательские объекты.Mind можно
сериализовать в JSON, что упрощает сохранение карты и ее последующую
загрузку.Объект Mind тесно интегрирован с визуальными
компонентами Mind.js. Узлы и связи из структуры автоматически
отображаются на холсте, а методы изменения объекта напрямую влияют на
визуализацию. Это позволяет строить интерактивные карты, где любые
изменения в данных сразу отражаются на графике.
data для хранения всех вспомогательных
свойств, чтобы основная структура оставалась чистой.children при добавлении или
удалении узлов для сохранения целостности дерева.Структура объекта Mind обеспечивает мощный каркас для
работы с ментальными картами, позволяя гибко управлять иерархиями и
сетями, хранить метаданные и обеспечивать динамическое взаимодействие с
пользователем.