GoJS

Сайт: gojs.net

GoJS — это библиотека на JavaScript и TypeScript для создания интерактивных диаграмм, графов и визуализаций связей в веб-приложениях. Она предоставляет инструменты для построения и рендеринга узлов, ссылок и групп, управления моделью данных диаграммы, выполнения операций перетаскивания, редактирования на месте и динамического обновления представления при изменении данных. Библиотека ориентирована на создание сложных редакторов диаграмм с поддержкой пользовательских шаблонов элементов, кастомных визуальных представлений и расширяемой логики взаимодействия.

Разработанная как компонент для клиентской части приложений, GoJS включает в себя механизмы для определения логики компоновки (layout), автоматической маршрутизации связей, работы с масштабированием и панорамированием, а также возможности экспортирования и сохранения состояния модели. Архитектура разделяет визуальные представления и модель данных, что упрощает интеграцию с существующими хранилищами и фреймворками. Библиотека поддерживает как декларативное описание шаблонов узлов, так и программное формирование графов в рантайме.

  • Кастомные узлы: возможность задавать произвольные шаблоны узлов с использованием фигур, текста и вложенных элементов, а также привязок к полям модели.
  • Связи и маршрутизация: поддержка направленных и ненаправленных связей, кривых и ортогональных маршрутов с настраиваемым поведением при коллизиях и изменениях расположения узлов.
  • Модели данных: разделение на модель и представление с поддержкой сериализации/десериализации, слоев и привязок свойств для синхронизации UI и данных.
  • Layouts: встроенные алгоритмы компоновки (деревья, круговые, радиальные и др.) и возможность создания пользовательских layout'ов.
  • Интерактивность: перетаскивание, выделение, группировка, масштабирование, редактирование текста in-place и контекстные действия через события.
  • Производительность: оптимизации для работы с большими графами, виртуализация рендеринга и управление производительностью при динамических обновлениях.
  • Расширяемость: API для добавления собственных инструментов, поведения мыши и клавиатуры, а также интеграции с внешними компонентами приложения.
  • Визуальные стили: поддержка темизации, стилизации элементов и детальной настройки визуальных атрибутов узлов и связей.
  • Экспорт и импорт: механизмы для экспорта диаграмм в форматы данных и сохранения состояния, пригодные для интеграции с серверами и средствами хранения.
  • Документация и примеры: набор примеров использования и описаний API для типичных сценариев построения редакторов и визуальных инструментов.
Подробнее