Добавление ссылок в таблицы
Инструментальная панель SberMobile, представляющая обзор инфраструктуры устройств, обычно содержит несколько таблиц, в которых можно найти:
- Устройства, имеющие некоторые неполадки в данный момент
- Устройства, имеющие чрезвычайно высокие или низкие показатели производительности
- Другие ресурсы, такие как группы устройств, сегменты сети и т.д.
Такие таблицы полезны сами по себе, но операторам хотелось бы, чтобы при нажатии на определенном ряду с именем устройства в таблице могло вызываться определенное действие, ассоциирующееся с этим устройством, т.е. открытие его "персональной" инструментальной панели.
Этот урок объясняет, как добавлять ссылки к таблице.
Теория
Тема ссылок ячеек довольна сложна, поэтому можно опустить эту часть, если вашей целью является добавление ссылок без понимания того, как они работают.
Технически ссылки отрисовываются в ячейках таблицы, использующей Отрисовщик ссылок. Значение, содержащееся в ячейке, будет отображаться как привязка ссылки (т.е. текст ссылки). Текст ссылки, т.е. действие, которое вызывается при нажатии на ссылку, содержится в опциях редактора.
Однако если мы зададим опции статического редактора для поля этой таблицы, каждая ссылка в ряду приведет к той же цели. Нужно, чтобы у каждой ссылки была собственная цель, поэтому мы используем следующий метод, чтобы динамически задать опции редктора:
- Добавьте новую колонку к таблице. Значение этой колонки в каждом ряду содержит цель ссылки для ссылки, содержащейся в другой ссылке того же ряда.
- Скройте вышеобозначенную колонку, чтобы она не отображалась в таблице.
- Используйте привязку для получения значения вышеобозначенного скрытого поля и настройте опции редактора поля ссылки. Эта привязка работает по рядам, предлагая отдельные опции редактирования для всех ссылок.
Реализация
Предположим, у нас есть таблица, отображающая показатели температуры разных устройств. Она имеет две колонки: Устройство (имя устройства: device
) и Температура (имя поля: temperature
). Мы хотим, чтобы по колонке Устройство можно было кликать, открывая ассоциируемую с ним инструментальную панель (например, график температур).
1. Добавление скрытых колонок
Значения в колонке Устройства являются описаниями устройств, не их системных идентификаторов. Таким образом, нужно добавить новую скрытую колонку context
, в которой будет обозначен путь контекстов устройств. Существует множество способов это сделать. Например, если мы делаем привязку запроса, мы может добавить ссылку к полю CONTEXT_ID:
|
Обратите внимание, что запрос будет иметь результатом таблицу с пятью колонками:
- Путь первой колонки контекста устройства, который будет скрыт.
- Вторая и третья колонки содержат основные идентификаторы иконки и статуса устройства. Они будут использоваться для отображения иконки статуса устройства рядом со ссылкой. Эти колонки будут также скрыты.
- Четвертая и пятая колонки будут отображать ссылку устройства и чтение температуры устройства.
Результат запроса будет следующим:
2. Добавление привязки ссылки
Привязка, которую нужно добавить к формату Таблица данных и которая имеет результатом вышеобозначенный запрос, выглядит следующим образом:
device#options='action/'+{context}+':configure$' + {icon} + ({status} != null ? '_' + {status} : '')
Цель привязки - device#options
. Она задает параметры редактора в каждой ячейке колонки device
.
Выражение привязки - 'action/'+{context}+':configure$' + {icon} + ({status} != null ? '_' + {status} : '')
. Она формирует строку редакторских опций, которая является ссылкой на действие, которое нужно запускать при нажатии на ссылку.
Актуальный текст параметров редактора, возвращенный вышеобозначенным выражением, будет выглядеть следующим образом (пример): action/users.admin.devices.thermometer1:configure$device_21
.
Вышеобозначенные опции заставляют систему запустить действие configure
из контекста users.admin.devices.thermometer1
, соответствующее устройству термометр. Строка device_21
обозначает идентификатор иконки, представляющей состояние текущего устройства. Действие конфигурирования открывает инструментальную панель(и) устройства.
Значения для контекстного имени и статуса/иконки устройств берутся из скрытых полей, определеных в нашем запросе.
Если вам не нужны иконки рядом со ссылками, вы можете убрать вторую и третью линии из пункта SELECT этого запроса и использовать простую привязку:
|
Запросы SberMobile имеют свойство Формат выхода, который был разработан для добавления необходимых отметок к результатам запроса. Можно использовать следующий формат выхода, чтобы скрыть наши дополнительные колонки и добавить привязки ссылок:
|
Этот формат выхода вносит следующие необходимые исправления в формат выхода запроса по умолчанию:
- Настраивает скрытый флажок в колонках
context
,icon
иstatus
- Настраивает редактор
reference
в колонкеdevice
- Добавляет привязку ссылки
Вот и все! Теперь можно ссылаться на запрос из инструментальной панели для просмотра статистики температуры на интерфейсе оператора первой линии.
Финальная таблица со ссылками: