Маппинг схем в API Радарио
Как принять схему события из шлюза с Радарио
Структура схемы

Схема состоит из следующих типов блоков:
  • SCENE ("scene") - сцена;
  • TEXT_BLOCK ("textBlock") - текстовые блоки;
  • ROW_BLOCK ("rowBlock") - ряды и места;
  • PATH_BLOCK ("pathBlock") - навигационные элементы;
  • ENTRANCE_BLOCK ("entranceBlock") - входные зоны;
  • SECTOR_BLOCK ("sectorBlock") - блок сектора;
  • TABLE_BLOCK ("TableBlock") - блок стола.

Базовые поля блоков

Все блоки содержат:
- "id": "integer" - уникальный идентификатор;
- "type": "string" - тип блока (scene, rowBlock и т.д.);
- "x", "y": "number" - координаты блока.

В зависимости от типа у объекта могут быть дополнительные свойства, необходимые для его отрисовки, они задаются в "label": { <label options> } .
ROW_BLOCK ("rowBlock")

  • В ответе могут быть как места с координатами ("position"), так и без них.
  • При отсутствии координат места передаются в строго упорядоченном виде.
  • Поле "type": "noseat" указывает на несидячее место.
  • "lablePosition": "both" - позиция подписи рядов.
  • Названия чувствительны к регистру, синхронизация и маппинг сработает только при 100% совпадении.
Примеры блоков:
-Места с координатами: 

{ 
"id": 1, 
"type": "rowBlock", 
"x": 0, "y": 0, 
"name": "Амфитеатр", 
"rows": [ 
      { 
      "id": 32, 
      "name": "1", 
      "seats": [ 
         { 
         "id": 2, 
         "name": "1", 
         "position": {"x": 410, "y": 832} 
         } 
       ] 
     } 
  ] 
}
-Места без координат:

{
  "id": 21,
  "type": "rowBlock",
  "x": 130, "y": 450,
  "name": "ПАРТЕР",
  "rows": [
      {
      "name": "1",
      "seats": [
          {"name": "x", "type": "noseat", "id": 33}
         ]
     }
   ]
 }
}
Версия 3: 

{ 
  "id": 9816362, 
  "type": "rowBlock", 
  "name": "Премиум бокс", 
  "x": 0, "y": 0, 
  "rows": [ 
         { 
         "id": 63573666, 
         "name": "1", 
         "seats": [ 
             { 
             "id": 761331934, 
             "name": "13", 
             "position": {"x": 1251, "y": 831} 
             } 
           ] 
         } 
      ] 
}
ENTRANCE_BLOCK ("entranceBlock")

  • Обозначает зоны общего доступа (танцпол, фан-зона).
  • Не содержит отдельных мест.
  • В "shape" может указываться один из вариантов: polygon, path. Для "shape": "polygon" в поле "points" хранятся координаты точек многоугольника в виде x,y x,y x,y x,y.
  • Для "shape": "path" в поле "points" хранится произвольный path в виде набора точек.
  • Названия чувствительны к регистру, синхронизация и маппинг сработает только при 100% совпадении.
{ 
  "name": "Входные",
  "type": "entranceBlock",
  "color": "#fff",
  "x": 295,
  "y": 120,
  "shape": "polygon", 
  "points": "0,0 150,0 150,50 0,50",
  "label": {
        "visible": false,
        "fontSize": "30px",
        "color": "white"
      }
}

PATH_BLOCK ("pathBlock")

  • Линии и элементы навигации
  • Определяет границы балконов, лестницы и т.д.
  • Используется для визуального ориентирования
  • Отрисовывается с использованием SVG (параметр "points")
{
      "type": "pathBlock",
      "color": "#dadada",
      "x": 630,
      "y": 315,
      "rotation": 0,
      "points": "M110.42,122.17c0.04,0.13,0.05,0.31,0.05,0.44v1.01c0,0.17-0.01,0.31-0.05,0.46c-0.19,0.79-0.84,1.26-1.55,1.26 c-1.14,0-1.72-0.97-1.72-2.15c0-1.28,0.65-2.24,1.74-2.24C109.69,120.94,110.26,121.5,110.42,122.17z M356,0v287H0V0H356z",
      "fill": {
        "color": "#dadada",
        "opacity": 1
      }
    }

TEXT_BLOCK ("textBlock")

  • Используется для подписей на схеме.
  • Влияет только на визуальную составляющую схемы, не влияет на маппинг и итог синхронизации.
{
      "type": "textBlock",
      "color": "#423F3F",
      "text": "Партер",
      "fontSize": "20px",
      "rotation": 0,
      "x": 370,
      "y": -10,
      "id": 604
    }
SCENE ("scene")

  • Определяет расположение сцены.
  • Может отрисовываться с использованием SVG (поле "points"), или задается фигурой в "shape".
  • Выполняет ту же роль, что и pathBlock, но название явно показывает, что это блок сцены.
{
      "type": "scene",
      "color": "#423F3F",
      "x": 230,
      "y": 320,
      "rotation": 0,
      "points": "",
      "shape": "rect",
      "width": 330,
      "height": 60
    }
SECTOR_BLOCK ("sectorBlock")

  • Обозначает сектор.
  • В entities может находится все то же самое, что и в entities схемы (и другие секторы тоже).
  • "shape" может задаваться как: polygon, path.
  • Названия чувствительны к регистру, синхронизация и маппинг сработает только при 100% совпадении.
{
  "name": "Сектор D",
  "id": 1224,
  "type": "sectorBlock",
  "color": "#F4A460",
  "x": 495,
  "y": 320и ,
  "points": "0,0 150,0 150,50 0,50",
  "shape": "polygon", 
  "entities": [] 
}
TABLE_BLOCK ("TableBlock")

  • Обозначает стол.
  • Используется редко. Чаще столы задаются rowBlock'ами.
  • Названия чувствительны к регистру, синхронизация и маппинг сработает только при 100% совпадении.
{
  "id": 14,
  "type": "tableBlock",
  "name": "Название стола",
  "x": 470,
  "y": 200,
  "seats": [
    {
      "id": 15,
      "name": "1"
    },
    {
      "id": 16,
      "name": "2"
    },
    {
      "id": 17,
      "name": "3"
    }
  ]
}
Ряд без обозначения ("") использовать нельзя (исключение - пустой ряд без мест, необходимый для визуального разделения рядов на схеме).
Ряд в виде пробела (" ") можно использовать в том случае, если наименование места уникальное для текущей схемы.

Например, такие названия мест приемлемы для одной схемы:
"Стол 1, место 1"
"Стол 2, место 1"
или
"1"
"2"

А такие нельзя использовать в одной схеме:
"Стол 1, место 1"
"Стол 1, место 1"
или
"1"
"1".

Возможно использование букв в названии рядов и мест.
Возможно использование нуля "0" в обозначении ряда.