Граф

Этот компонент отображает и динамически обновляет граф любого типа, например, граф топологии сети.

Так выглядит топология сети, представленная в виде графа:

Элементы графа

Графы, представленные компонентом Граф, состоят из узлов и ребер. Узлы - это вершины графа, ребра - связи между узлами. Например, в графе топологии сети хосты представлены узлами, а связи между ними - ребрами.

Два узла могут иметь более одной связи между собой. В этом случае, ребро берет начало в каком-либо интерфейсе одного узла и соединяется с другим интерфейсом второго узла.

Фон графа называется холстом.

Каждый узел графа имеет опорный объект. Это значит, что каждый отображенный узел представляет какой-либо контекст. Получить доступ к опорному объекту можно через действия с графом, описанные ниже. Например, узлы топологии сети могут представлять сетевые устройства.

Цветовое кодирование узлов

Цвет узлов графа указывает на состояние соответствующих объектов.

Пример: на графе топологии сети зеленый узел обозначает, что устройство сети подключено и не имеет проблем. Красные узлы - это неподключенные устройства или устройства, имеющие проблемы.

Метки узлов

Каждый узел графа имеет метку, описывающую соответствующий объект. Метки узлов задаются свойством Выражение описания узда.

Пример: на топологической карте сети метки узлов показывают описания контекстов устройств.

Ширина и цветовое кодирование ребер (связей)

Ширина ребер диаграммы может разниться в зависимости от типа опорного объекта.

Пример: на топологической карте сети более узкие ребра соответствуют низкой скорости соединения (например, соединение в 100 Мбит/с), в то время как широкие ребра представляют соединения высокой скорости (например, гигабит Ethernet).

Цвет ребра обозначает статус соединения узел к узлу.

Пример: на топологической карте сети каждое ребро может иметь различную окраску на противоположных сторонах. Зеленая сторона ребра указывает на то, что интерфейс сети, соответствующий этому соединению, находится в режиме онлайн, а красная сторона указывает на его офлайн режим.

Действия с графами

Открытие узла

Чтобы выполнить желаемое действие, можно дважды щелкнуть мышью по узлу графа. Например, можно открыть инструментальные панели устройств, соответствующих узлам графа.

Если Выражение имени предпочитаемого действия не указано, будет запущено действие по умолчанию контекста.

Меню действий с узлами и ребрами

Щелчок правой кнопкой мыши по элементу графа открывает меню действий.

Для узлов открывается меню, определенное свойством Всплывающее меню вершин. Для ребер открывается меню, определенное свойством Всплывающее меню связей.

Изменение масштаба и перемещение графа

Граф можно переместить, нажав на определенную точку и сбросив ее в другой точке карты. Это cоответственно переместит центр графа.

Перенос работает только тогда, когда граф находится в режиме Трансформация.

Если граф находится в режиме Выбор, можно кликнуть мышью по узлу с одновременным нажатием клавиши "Ctrl", чтобы центрировать граф на этом узле.

Изменить масштаб в месте текущего положения курсора, можно при помощи колесика мыши.

Вращение и поворот графа

Щелчок мышью с одновременным нажатием клавиши "Shift" в окне графа позволяет вращать граф.

Щелчок мышью с одновременным нажатием клавиши "Control" в окне графа позволяет поворачивать граф.

Вращение и поворот возможны только если граф находится в режиме Трансформация.

Выбор и перенос узлов

Если граф находится в режиме Выбор, ее узлы могут выбираться и перемещаться путем перетаскивания мышью.

Множество выбрать множество узлов:

  • Щелкнув за пределами узла и перетащив мышку с целью выбора определенной области графа, включающей несколько узлов.
  • Щелчком кнопки мыши с одновременным нажатием клавиши "Shift" на нескольких узлах.

Создание связей

Для создания новой связи, выберите группу узлов в режиме Выбор, кликнете правой кнопкой мыши по одному из них, наведите курсор на "Создать ненаправленную связь" и выберите новую связь.

Удаление ребер (связей)

Для удаления связи создайте действие  deleteEdge во Всплывающем меню связей. Затем кликните правой кнопкой мыши на ребро (связь) выберите опцию удаления.

Удаление узлов (вершин)

Для удаления узла (вершины) создайте действие deleteVertex во Всплывающем меню вершин. Затем кликните правой кнопкой мыши на узел и выберите опцию удаления.

Сохранение, удаление и восстановление компоновки (расположения) графа

Схемы расположение диаграммы определяются позицией их узлов.

Компонент Граф может сохранять текущую компоновку в базе данных SberMobile Server без вмешательства пользователя. Сохранение текущей компоновки является прозрачной операцией. Если пользователь открывает инструментальную панель или виджет с компонентом Граф, его расположение восстанавливается из базы данных в зависимости от провайдера топологии и типа компоновки графа. Если виджет или инструментальная панель с компонентом Граф закрывается, измененные узлы графа сохраняются в базе данных. Проконтролировать сохранение и восстановление можно при помощи меню контекста компонента, которое открывается при нажатии правой кнопкой мыши:

Элемент меню

Описание

Восстановить расположение

Восстановить позиции узлов в зависимости от имени выбранного  расположения диаграммы.

Сохранить расположение

Сохранить текущее расположение в базе данных сервера под выбранным именем.

Удалить расположение

Удалить выбранные расположения из базы данных.

Для восстановления ранее сохраненного расположения, нажмите правой кнопкой мыши на холст и выберите "Восстановить расположение". Затем выберите компоновку для восстановления.

Для сохранения расположения нажмите правой кнопкой мыши на холст и выберите "Сохранить расположение". После этого выберите компоновку для перезаписи или выберите "Создать новое расположение" и введите новое имя расположения. Этот функционал можно отключить при помощи свойства Только чтение.

Для удаления расположения нажмите правой кнопкой мыши на холст и выберите "Удалить расположение". После этого выберите компоновки для удаления, проставив галочки в соответствующих им полях. Этот функционал можно отключить при помощи свойства Только чтение.

Основные свойства

Общие свойства

Граф имеет следующие основные свойства, общие для всех виджетов:

Видимый, Фон, Рамка, Шрифт, Курсор, Точки прикрепления, Всплывающее меню.

Визуализация топологии

Граф наследует следующие базовые свойства Визуализации топологии:

Выражение имени предпочитаемого действия, Всплывающее меню вершин, Всплывающее меню связей, Только чтение.

Режим

Режимы графа: Трансформация, Выбор или Редактирование. В режиме Трансформации можно менять масштаб графа, перемещать, вращать и поворачивать. В режиме Выборы узлы графа можно перемещать по отдельности. В режиме Редактирование можно создавать связи между узлами.

Можно поменять режим графа, используя привязку, например, добавить к виджету выбор режима через Поле со списком.

Имя свойства: mode

Тип свойства: Integer

Период обновления

Период обновления графа. Используется для перечитывания информации о топологии с сервера и обновления графа.

Имя свойства: updatePeriod

Тип свойства: Long

Форма ребер (связей)

Определяет внешний вид ребер диаграммы. Возможные следующие варианты:

1. Линия

2. Клин

3. Четырехугольная кривая

4. Кубическая кривая

Имя свойства: edgeShape

Тип свойства: Integer

свойства размера и положения

Общие свойства

Граф имеет следующие свойства размера и положения, общие для всех виджетов:

Ширина, Высота.

Ограничения позиционирования

В зависимости от выбранного позиционирования виджета, граф может использовать ограничения либо абсолютного позиционирования, либо сетки.

свойства привязок

Граф использует свойство Привязки, общее для всех виджетов.

свойства топологии

Визуализация топологии

Граф наследует следующие свойства от Визуализации топологии:

Провайдерr, Узлы являются контекстами, Показывать несвязанные узлы, Выражение топологии, Выражение узлов, Выражение связей, Выражение идентификаторов связей, Выражение идентификаторов узлов, Выражение источника, Выражение назначения, Выражение цвета, Выражение типа, Выражения для получения изображения, Выражение интерфейса, Выражение направленности, Выражение ширины, Выражение описания связи, Показывать описания связи, Выражение цвета связи, Показывать граничащие узлы, Выражение подсказки узла, Выражение подсказки связи, Выражение описания узла.

Маска вершин

Маска контекстов, откуда берутся топологические данные. В большинстве случаев каждый контекст, соответствущий этой маске, появляется как отдельный узел графа (вершина).

Имя свойства: vertexMask

Тип свойства: String

Свойства компоновки

Визуализация топологии

Граф наследует следующие свойства компоновки от Визуализации топологии:

Выражение азимута, Выражение размера маркера.

Компоновка

Тип компоновки графа. Поддерживаемые компоновки:

  • Камада-Кавай
  • Фрухтерман-Рейнгольд
  • Круг
  • Самоорганизующийся Мэйера
  • Дерево
  • Круговая
  • Радиальная

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

Property name: layout

Property type: Integer

Притяжение

Коэффициент притяжения для компоновки Фрухтерман-Рейнгольд.

Имя свойства: attraction

Тип свойства: Double

Отталкивание

Коэффициент отталкивания для компоновки Фрухтерман-Рейнгольд.

Имя свойства: repulsion

Тип свойства: Double

Поправка на гравитацию

Флажок поправки на гравитацию, используемый компоновкой Камада-Кавай.

Имя свойства: adjustForGravity

Тип свойства: Boolean

Мультипликатор расстояния между несвязанными вершинами

Мультипликатор расстояния между несвязанными вершинами для компоновки Камада-Кавай.

Имя свойства: disconnectedDistanceMultiplier

Тип свойства: Double

Обмен вершинами

Флажок об обмене вершинами для компоновки Камада-Кавай.

Имя свойства: exchangeVertices

Тип свойства: Boolean

Фактор длины

Фактор длины для компоновки Камада-Кавай.

Имя свойства: lengthFactor

Тип свойства: Double

Удалённость вершин по горизонтали

Определяет расстояние между узами (вершинами) по горизонтали.

Имя свойства: horizontalVertexSpacing

Тип свойства: Integer

Удалённость вершин по вертикали

Определяет расстояние между узами (вершинами) по вертикали.

Имя свойства: verticalVertexSpacing

Тип свойства: Integer

Фоновое изображение

Фоновое изображение на холсте.

Имя свойства: backgroundImage

Тип свойства: Data Block

Фильтр

Фильтр узлов (вершин). Только те узлы, для которых данная строка указана в их метке, будут выделены на графе.

Имя свойства: filter

Тип свойства: String

Обратное направление ребер

Определяет направление стрелок для компоновок дерево, круговая и радиальная.

Имя свойства: revertEdges

Тип свойства: Boolean

Выражение x-координаты узла

Выражение, которое возвращает X-координату узла внутри Пользовательской раскладки.

Имя свойства: customLayoutNodeXExpression

Тип свойства: String

Выражение y-координаты узла

Выражение, которое возвращает Y-координату узла внутри Пользовательской раскладки.

Имя свойства: customLayoutNodeTExpression

Тип свойства: String

Выражение азимута

Выражение, используемое для определения ориентации изображения узла. Должно возвращать угол поворота в радианах.

Имя свойства: azimuthExpression

Тип свойства: String

Выражение размера маркера

Выражение, используемое для определения относительного размера изображения узла. Должно возвращать значения больше 1 для увеличения масштаба изображения, и значения меньше 1 для уменьшения масштаба изображения.

Имя свойства: ratioExpression

Тип свойства: String

Пользовательские свойства изображения

Это свойство позволяет настраивать свойства CSS-стилей, наследованных в изображениях SVG в результате Выражения для получения изображения.

Каждая строка в таблице Пользовательские свойства изображения позволяет настраивать одно динамическое свойство CSS:

  • Имя класса CSS. Имя класса CSS, используемого в SVG изображении узла.
  • Свойство CSS. Имя свойства класса CSS, которое будет динамически вычисляться.
  • Выражение значения свойства CSS. Выражение, которое должно возвращать строковое значение нового свойства.

Среда вычисления Выражения значения свойства CSS

Контекст по умолчанию

Контекст соответствующего узла графа, чье SVG-изображаение обрабатывается.

Таблица данных по умолчанию

Результат Выражения узлов.

Ряд по умолчанию

Обрабатываемый ряд таблицы по умолчанию.

Переменные среды

Только стандартные переменные.

Пользовательские функции

Граф имеет следующие пользовательские функции.

Восстановить расположение

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

Имя функции: restoreLayout

Имя поля

Тип поля

Описание поля

layoutName

String

Имя макета расположения.

Сохранить расположение

Сохраняет текущее расположение графа как макет расположения с указанным именем. Можно использовать эту функцию для создания пользовательских расположений.

Имя функции: saveLayout

Имя поля

Тип поля

Описание поля

layoutName

String

Имя макета расположения.

Удалить расположение

Удаляет определенный макет расположения графа. Можно использовать эту функцию для удаления существующих пользовательских расположений.

Имя функции: deleteLayout

Имя поля

Тип поля

Описание поля

layoutName

String

Имя макета расположения

Получить имена расположений

Возвращает список существующих макетов расположений.

Имя функции: getLayoutsNames

Эта функция не имеет входных параметров.

Выходной формат:

Имя поля

Тип поля

Описание поля

layoutsName

String

Имена существующих макетов расположений.

получить расположение

Возвращает расположение графа в виде таблицы с двумя подтаблицами: координаты точек и трансформации. Позднее эту таблицу можно использовать как аргумент функции Обновить расположение.

Имя функции: getLayout

Имя поля

Тип поля

Описание поля

layoutName

String

Имя макета расположения.

Обновить расположение

Обновляет расположение графа новыми параметрами расположения.

Имя функции: updateLayout

Имя поля

Тип поля

Описание поля

layoutName

String

Имя макета расположения.

layoutData

Data Table

Данные расположения. Обычно являются результатом функции Получить расположение.

Общие события

Скрытие, Показ, Перемещение, Изменение размеров, Клик мыши, Нажатие кнопки мыши, Отпускание кнопки мыши, Вход мыши, Выход мыши, Перемещение мыши, Вращение колесика мыши, Печать клавиши, Нажатие клавиши, Отпускание клавиши, Получение фокуса, Потеря фокуса

Пользовательские события

Нажатие на узел

Это событие формируется при нажатии на узел карты.

Имя события: nodeClicked

Поля события:

Поле

Имя

Тип

Описание

Node

node

String

Путь нажатого узла/контекста.

Это событие формируется, когда курсор мыши наведен на узел, отображенный на карте.

Имя события: nodeHover

Event fields:

Поле

Имя

Тип

Описание

Node

node

String

Путь узла/контекста, на который наведен курсор мыши.

Отведение курсора с узла

Это событие формируется, когда курсор мыши отводится от узла на карте.

Имя события: nodeUnhover

Поля события:

Поле

Имя

Тип

Описание

Node

node

String

Путь узла/контекста, от которого отведен курсор мыши.

Нажатие на связь

Это событие формируется при нажатии на связь между двумя узлами.

Имя события: edgeClicked

Поля события:

Поле

Имя

Тип

Описание

Source

source

String

Узел/контекст источника связи.

Destination

destination

String

Узел/контекст адресата связи.

Source Interface

sourceInterfaceId

String

Интерфейс источника связи. Необходимо когда между двумя узлами существует множество связей.

Destination Interface

destinationInterfaceId

String

Интерфейс адресата связи. Необходимо когда между двумя узлами существует множество связей.

Это событие формируется, когда указатель мыши расположен на связи между двумя узлами.

Имя события: edgeHover

Поля события:

Поле

Имя

Тип

Описание

Source

source

String

Узел/контекст источника связи.

Destination

destination

String

Узел/контекст адресата связи.

Source Interface

sourceInterfaceId

String

Интерфейс источника связи. Необходимо когда между двумя узлами существует множество связей.

Destination Interface

destinationInterfaceId

String

Интерфейс адресата связи. Необходимо когда между двумя узлами существует множество связей.

Отведение курсора от связи

Это событие формируется, когда курсор мыши отведен от связи между двумя узлами.  

Имя события: edgeUnhover

Поля события:

Поле

Имя

Тип

Описание

Source

source

String

Узел/контекст источника связи.

Destination

destination

String

Узел/контекст адресата связи.

Source Interface

sourceInterfaceId

String

Интерфейс источника связи. Необходимо когда между двумя узлами существует множество связей.

Destination Interface

destinationInterfaceId

String

Интерфейс адресата связи. Необходимо когда между двумя узлами существует множество связей.

Создать связь

Это событие формируется, когда в режиме редактирования курсор мыши перетаскивается с одного узла на другой. 

Имя события: edgeCreate

Поля события:

Поле

Имя

Тип

Описание

Source

source

String

Узел/контекст источника связи.

Destination

destination

String

Узел/контекст адресата связи.

Source Interface

sourceInterfaceId

String

Интерфейс источника связи. Необходимо когда между двумя узлами существует множество связей.

Destination Interface

destinationInterfaceId

String

Интерфейс адресата связи. Необходимо когда между двумя узлами существует множество связей.

Удалить связь

 Это специальное событие с дополнительными функциями генерируется при создании всплывающего меню deleteEdge.

Имя события: edgeDelete

Поля события:

Поле

Имя

Тип

Описание

Source

source

String

Узел/контекст источника связи.

Destination

destination

String

Узел/контекст адресата связи.

Source Interface

sourceInterfaceId

String

Интерфейс источника связи. Необходимо когда между двумя узлами существует множество связей.

Destination Interface

destinationInterfaceId

String

Интерфейс адресата связи. Необходимо когда между двумя узлами существует множество связей.

Показ контекстного меню узла

Событие возникает при вызове контекстного меню кликом правой кнопки мыши на узел.

Имя события: nodeShowPopup

Поля события:

Поле

Имя

Тип

Описание

Node

node

String

Путь узла/контекста, для которого отображается контекстное меню.

Показ контекстного меню связи

Событие возникает при вызове контекстного меню связи кликом правой кнопки мыши на связь между двумя узлами.

Имя события: edgeShowPopup

Поля события:

Поле

Имя

Тип

Описание

Source

source

String

Узел/контекст источника связи.

Destination

destination

String

Узел/контекст адресата связи.

Source Interface

sourceInterfaceId

String

Интерфейс источника связи. Необходимо когда между двумя узлами существует множество связей.

Destination Interface

destinationInterfaceId

String

Интерфейс адресата связи. Необходимо когда между двумя узлами существует множество связей.

Показ контекстного меню графа

Событие возникает при вызове контекстного меню графа кликом правой кнопки мыши на его холст.

Имя события: graphShowPopup

Событие не имеет полей.