Библиотека Mind.js предоставляет мощный инструмент для создания и управления интеллектуальными графами, где каждый элемент представлен узлом, а связи между ними — рёбрами. Узлы являются основой структуры, и эффективная работа с ними требует понимания доступных методов и возможностей.
Узел создаётся с использованием класса MindNode или
через функции графа. Основные параметры:
id — уникальный идентификатор узла.data — объект с пользовательскими данными.position — координаты для визуализации
({x, y}).type — тип узла, влияющий на визуальное представление и
поведение.Пример создания узла:
const node = new MindNode({
id: 'node1',
data: { label: 'Главная идея' },
position: { x: 100, y: 50 },
type: 'central'
});
Важно: уникальный идентификатор обеспечивает корректное построение графа и предотвращает дублирование.
Методы добавления и удаления узлов реализованы через объект графа:
graph.addNode(node); // добавление
graph.removeNode('node1'); // удаление по идентификатору
addNode(node) автоматически обновляет внутренние
структуры данных.removeNode(id) удаляет узел и все связанные с ним
рёбра.Удаление узла требует внимательности: если на него ссылаются другие узлы, важно корректно обработать связи, чтобы избежать «висячих» рёбер.
Mind.js позволяет искать узлы по идентификатору, типу или условиям на данные:
const nodeById = graph.getNode('node1');
const centralNodes = graph.findNodes(node => node.type === 'central');
getNode(id) возвращает узел с указанным идентификатором
или null, если узел не найден.findNodes(callback) позволяет использовать произвольные
функции фильтрации.Совет: использование фильтров по типу узла облегчает построение визуальных интерфейсов и управление группами узлов.
Для изменения содержимого узла используется метод
updateData:
node.updateData({ label: 'Новая идея', importance: 5 });
Позиция узла управляется через свойства position и метод
setPosition:
node.setPosition({ x: 200, y: 150 });
Узлы соединяются рёбрами с помощью методов графа:
graph.connectNodes('node1', 'node2', { weight: 3 });
weight задаёт вес связи, который может
использоваться алгоритмами поиска пути или визуализации.Удаление связи выполняется методом:
graph.disconnectNodes('node1', 'node2');
При этом структура данных графа обновляется автоматически, предотвращая ошибки при дальнейшем обходе.
Mind.js поддерживает обход графа с помощью различных алгоритмов:
Пример DFS:
graph.depthFirstTraversal('node1', node => {
console.log(node.data.label);
});
Узлы генерируют события при изменении состояния:
onUpdate — при обновлении данных или позиции.onConnect / onDisconnect — при добавлении
или удалении связи.onRemove — при удалении узла.Подписка на события осуществляется через метод
subscribe:
node.subscribe('onUpdate', updatedNode => {
console.log('Узел обновлён:', updatedNode.data);
});
Это позволяет реализовать динамические интерфейсы, автоматически реагирующие на изменения в графе.
Для создания идентичных узлов с сохранением данных используется метод
clone:
const cloneNode = node.clone({ id: 'node3' });
graph.addNode(cloneNode);
При большом объёме данных рекомендуется:
Методы работы с узлами в Mind.js обеспечивают гибкость, точный контроль и масштабируемость графов. Комплексное использование этих функций позволяет строить как простые интеллект-карты, так и сложные системы для анализа данных.