Удаление и модификация узлов

Mind.js — библиотека для работы с ментальными картами и графовыми структурами в JavaScript. Основными элементами такой карты являются узлы (nodes) и связи (edges). Управление узлами включает их создание, модификацию и удаление. Этот раздел посвящен операциям изменения структуры и данных узлов.


Основные методы для работы с узлами

Удаление узлов

Удаление узла производится методом removeNode(id), где id — уникальный идентификатор узла. При удалении узла автоматически удаляются все связи, в которых он участвует.

const mind = new Mind();
mind.addNode({ id: '1', text: 'Главная идея' });
mind.addNode({ id: '2', text: 'Второстепенная идея' });
mind.addEdge('1', '2');

mind.removeNode('2'); // Узел 2 и все связи с ним удалены

Особенности удаления:

  • Если узел имеет дочерние элементы, они также могут быть удалены при использовании параметра recursive: true.
  • Без указания recursive дочерние узлы остаются, но связь с удаленным родителем теряется.
mind.removeNode('1', { recursive: true });

Модификация узлов

Модификация узлов включает изменение текста, цвета, размера и других параметров. Для этого используется метод updateNode(id, properties):

mind.updateNode('1', { text: 'Обновленная идея', color: '#FF0000' });

Доступные свойства для обновления:

  • text — содержимое узла.
  • color — цвет фона узла.
  • fontSize — размер текста.
  • shape — форма узла (rectangle, circle, ellipse).
  • data — произвольные пользовательские данные, связанные с узлом.
mind.updateNode('2', {
    text: 'Дополнительная идея',
    fontSize: 16,
    data: { importance: 'high' }
});

Массовое обновление

Для изменения нескольких узлов одновременно можно использовать метод updateNodes(nodesArray), где nodesArray — массив объектов с id и свойствами для обновления:

mind.updateNodes([
    { id: '1', text: 'Новая главная идея', color: '#00FF00' },
    { id: '2', text: 'Новая второстепенная идея', fontSize: 14 }
]);

Это особенно удобно при работе с большим количеством данных или при динамическом обновлении карты.


Взаимосвязь удаления и модификации

  • Удаление узла с связями: после удаления любого узла, все связи, включающие этот узел, автоматически удаляются. Это предотвращает появление “висящих” ссылок в структуре.
  • Модификация узла с дочерними элементами: изменения текста, цвета или данных узла не затрагивают дочерние элементы, что позволяет сохранять иерархическую структуру.
  • Удаление с рекурсией: удобно для полностью изолированных ветвей ментальной карты. Важно внимательно проверять, что рекурсивное удаление не затронет нужные узлы.

Практические сценарии

  1. Очистка карты от устаревших идей:
mind.removeNode('obsoleteNodeId', { recursive: true });
  1. Обновление дизайна карты для презентации:
mind.updateNodes([
    { id: 'root', color: '#FFD700', fontSize: 18 },
    { id: 'branch1', color: '#ADFF2F' },
    { id: 'branch2', color: '#1E90FF' }
]);
  1. Добавление пользовательских данных для аналитики:
mind.updateNode('idea123', {
    data: { priority: 5, completed: false }
});

Рекомендации по структуре

  • Для крупных ментальных карт рекомендуется отслеживать зависимости узлов перед их удалением, чтобы избежать потери важной информации.
  • Использование data в узлах позволяет хранить метаинформацию без необходимости изменения визуальной структуры.
  • Регулярное массовое обновление узлов помогает поддерживать консистентность дизайна и данных карты.

Управление узлами в Mind.js сочетает в себе гибкость и простоту. Методы removeNode, updateNode и updateNodes обеспечивают эффективное управление содержимым и структурой ментальной карты, сохраняя целостность связей и иерархии.