Триггеры
Триггеры позволяют динамически обновлять наборы данных или элементы графических примитивов при выполнении заданных условий. Когда выражение trigger, обычно ссылающееся на один или несколько сигналов, возвращает истинное значение, выполняются операции обновления данных: insert, remove, toggle и/или modify.
Триггеры могут обновлять объекты внутри набора данных или свойства элементов примитивов (только через modify) в определении примитива. Для производных наборов данных триггеры не поддерживаются: заданные в таком наборе триггеры не подействуют.
Свойства объекта триггера
| Свойство | Тип | Описание |
|---|---|---|
| trigger | Выражение | Обязательно. Выражение, задающее условие срабатывания. Когда оно вычисляется и возвращает истинное значение, условие выполнено и обновления данных применяются. |
| insert | Выражение | Выражение, возвращающее объекты данных для добавления. Операция доступна только для наборов данных, но не для примитивов. |
| remove | Выражение | Boolean | Выражение, указывающее объекты для удаления. Логическое true удаляет все существующие объекты. Если результат — существующий объект данных или массив таких объектов, удаляются именно они. Иначе результат-объект считается условием отбора: удаляются все объекты, чьи свойства совпадают со свойствами переданного объекта. Операция доступна только для наборов данных, но не для примитивов. |
| toggle | Выражение | Выражение, указывающее объекты для переключения. Результат считается условием отбора: переключаются все объекты, чьи свойства совпадают со свойствами переданного объекта. В зависимости от того, входят ли объекты в набор, они добавляются или удаляются. Операция доступна только для наборов данных, но не для примитивов. |
| modify | Выражение | Выражение, возвращающее объекты данных для изменения. Это должны быть один или несколько объектов, уже существующих в потоке данных. Операция доступна и для наборов данных, и для примитивов. Если указано modify, свойство values также обязательно. |
| values | Выражение | Выражение, возвращающее объект с парами «имя — значение»: эти значения записываются в поля объектов данных, возвращённых выражением modify. |
Использование
Обновление набора выбранных элементов при щелчках с клавишей Shift. Сигнал shift показывает, нажата ли клавиша Shift во время щелчка, а сигнал clicked ссылается на объект данных элемента примитива, по которому щёлкнули. Определения сигналов в примерах не показаны. Если щелчок произошёл без нажатой Shift, все выбранные элементы удаляются. При щелчке по элементу без Shift его объект данных добавляется в набор. При щелчке с Shift объект переключается: добавляется или удаляется.
"data": [
...
{
"name": "selected",
"on": [
{"trigger": "!shift", "remove": true},
{"trigger": "!shift && clicked", "insert": "clicked"},
{"trigger": "shift && clicked", "toggle": "clicked"}
]
}
]
Установка свойств fx и fy у элементов примитива, на которые ссылается сигнал dragged, в текущие координаты указателя мыши:
{
"type": "symbol",
"from": {"data": "nodes"},
"encode": {...},
"on": [
{
"trigger": "dragged",
"modify": "dragged",
"values": "{fx: x(), fy: y()}"
}
]
}