SAYMON документация

Skip to end of metadata
Go to start of metadata

Введение.

Данная инструкция-пример состоит из 2 частей - создания шаблона и его применения ко вновь создаваемым аналогичным объектам.

В любом случае начинаем с открытия сессии и сохранения cookie:

curl --cookie-jar cookies.txt -H "Content-Type: application/json" -X POST --data '{"login": "demo", "password": "demo"}' http://192.168.1.101/node/api/users/session

Часть 1. Создание шаблона.

Создаем объект:

Запрос
curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"name": "Template","parent_id": 1,"class_id": 24}' http://192.168.1.101/node/api/objects
Ответ
{
"parent_id":1,
"name":"Result",
"object_groups":[],
"geoposition":[],
"child_ref_ids":[],
"child_link_ids":[],
"child_ids":[],
"tags":[],
"state_id":1,
"class_id":24,
"properties":[],
"id":"59948ce54aca6d6aaf87ee45"
}

Берем его id из ответа:

59948ce54aca6d6aaf87ee45

Отправляем данные в объект:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "59948ce54aca6d6aaf87ee45","entityType": "obj","period": "1000000","payload": {"Про Васю":{"Имя":"Вася","КПД":35},"Про Петю":{"Имя":"Петя","КПД":86},"Про Дашу":{"Имя":"Даша","КПД":146}}}' http://192.168.1.101/node/api/objects/59948ce54aca6d6aaf87ee45/stat

Открываем объект в вебе
http://192.168.1.101/#objects/59948ce54aca6d6aaf87ee45/end-view

Настраиваем виджеты так, как хотим их видеть на остальных подобных объектах.

Запрашиваем информацию этого объекта:

curl --cookie cookies.txt -H "Content-Type: application/json" -X GET http://192.168.1.101/node/api/objects/59948ce54aca6d6aaf87ee45

Из всего ответа:

{
"parent_id":"59948ce54aca6d6aaf87ee45",
  "client_data":"{
    \"headlinePropIds\":[],
    \"custom_style\":{\"zIndex\":168,\"left\":\"69px\",\"top\":\"640px\",\"width\":\"300px\",\"height\":\"200px\"},
    \"collapseSections\":{\"entity-settings\":false},
    \"nonPinnedSections\":{\"stat\":false},
    \"widgets\":[
      {\"id\":\"64825702-66eb-4491-853e-4e4f6d7e4ecf\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Васю.КПД\"}},
      {\"id\":\"9b50867c-fc70-4c3c-9c1e-db0c1ce949eb\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Петю.КПД\"}},
      {\"id\":\"836e8a6a-0bd9-48e4-a459-9e403c3b8992\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Дашу.КПД\"}}
    ]
  }",
"name":"Info",
"object_groups":[],
"geoposition":[],
"child_ref_ids":[],
"child_link_ids":[],
"child_ids":[],
"tags":[],
"state_id":3,
"class_id":24,
"properties":[],
"id":"5994607a4aca6d6aaf877892"
}

нас интересует только документ client_data с информацией о widgets:

"client_data": "{
  \"widgets\":[
    {\"id\":\"64825702-66eb-4491-853e-4e4f6d7e4ecf\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Васю.КПД\"}},
    {\"id\":\"9b50867c-fc70-4c3c-9c1e-db0c1ce949eb\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Петю.КПД\"}},
    {\"id\":\"836e8a6a-0bd9-48e4-a459-9e403c3b8992\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Дашу.КПД\"}}
  ]
}"

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

Часть 2. Применение шаблона.

Создаем объект:

Запрос
curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"name": "Result","parent_id": 1,"class_id": 24}' http://192.168.1.101/node/api/objects
Ответ
{
"parent_id":1,
"name":"Result",
"object_groups":[],
"geoposition":[],
"child_ref_ids":[],
"child_link_ids":[],
"child_ids":[],
"tags":[],
"state_id":1,
"class_id":24,
"properties":[],
"id":"59948d944aca6d6aaf87f0a3"
}

Берем его id из ответа:

59948d944aca6d6aaf87f0a3

Создаем виджеты в новом объекте, используя шаблон:

curl --cookie cookies.txt -H "Content-Type: application/json" -X PATCH -d '{"client_data": "{\"widgets\":[{\"id\":\"64825702-66eb-4491-853e-4e4f6d7e4ecf\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Васю.КПД\"}},{\"id\":\"9b50867c-fc70-4c3c-9c1e-db0c1ce949eb\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Петю.КПД\"}},{\"id\":\"836e8a6a-0bd9-48e4-a459-9e403c3b8992\",\"type\":\"ring\",\"parameters\":{\"metric\":\"Про Дашу.КПД\"}}]}"}' http://192.168.1.101/node/api/objects/59948d944aca6d6aaf87f0a3

Запрос выше перезаписывает все виджеты объекта, т.е. удаляет существующие (при наличии) и создает новые.


Открываем объект в веб-интерфейсе и видим пустые области с виджетами при наведении курсора мыши:
http://192.168.1.101/#objects/59948d944aca6d6aaf87f0a3/end-view

Отправляем данные в объект:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "59948d944aca6d6aaf87f0a3","entityType": "obj","period": "1000000","payload": {"Про Васю":{"Имя":"Вася","КПД":35},"Про Петю":{"Имя":"Петя","КПД":86},"Про Дашу":{"Имя":"Даша","КПД":146}}}' http://192.168.1.101/node/api/objects/59948d944aca6d6aaf87f0a3/stat

В веб-интерфейсе видим виджеты с данными.