Ресурс Widgets — графическое отображение распределения записей в каталоге по выбранным критериям.

График (Widgets)

URL: /{api url}/boards/{boardsId}/widgets/{widgetsId}

Параметры:

  • boardsId: (number) — идентификатор дашборда

  • widgetsId: (number) — идентификатор графика

Получить график [GET]

Ответ: 200 OK (application/json)

{
"id":"14",
"name":null,
"chartType":"pie", // тип графика
"stacked":null, // сложить значения
"value": // поле 'Значение'
{
"type":"field", // тип параметра в поле 'Значение'
"value":"8", // id поля
"subType":"timeLeft" // обязательный параметр для полей типа: категория, набор галочек, вопрос
},
"valueFn":"avg", // значение функции
"axis": // поле 'Ось'
{
"type":"field",
"value":"12",
"subType":null // обязательный параметр для даты создания
},
"split":null, // поле 'Разложить по' (недоступно для графика типа pie)
"recordsType":"available", // доступные записи
"recordsFilter": // фильтр
{
"filters":
{
"4": // id поля для фильтра
[{
"recordId":"5",
"catalogId":"65"
}]
}
}
}

Возможные значения:

  • chartType: columns (столбцы), lines (линия), bars (список), pie (пирог), radar (радар), number (число)

  • stacked: true и false

  • value[type]: recordsCount (количество записей), field (поле)

  • value[value]: id поля (если value[type]=field)

  • value[subType]: timeLeft (продолжительность)

  • valueFn: sum (сумма), avg (среднее, не выбранные значения не учитываются), avgAll (среднее по всем, не выбранные значения считаются за ноль), max (максимальное), min (минимальное)

  • axis[type]: field (поле), createdTime (дата создания)

  • axis[value]: id поля (если axis[type]=field)

  • axis[subType]: hour (час), hourOfDay (час дня), day (день), dayOfWeek (день месяца), week (неделя), weekOfYear (неделя года), month (месяц), monthOfYear (месяц года), year (год)

    Подробнее про Ось.

  • split: возможны такие же значения как в axis

  • recordsType: all (все записи каталога), available (только доступные сотруднику записи)

Изменить график [PATCH]

Запрос: (application/json)

{
"chartType":"columns"
}

Ответ: 200 OK

Удалить график [DELETE]

Ответ: 200 OK

Коллекция графиков

Запрос: (application/json)

URL: /{api url}/boards/{boardsId}/widgets

Параметры:

  • boardsId: (number) — идентификатор дашборда

Получить графики [GET]

Ответ: 200 OK (application/json)

[
{
"id":"14",
"name":null,
"chartType":"pie",
"stacked":null,
"value":
{
"value":"8",
"type":"field",
"subType":"timeLeft"
},
"valueFn":"avg",
"axis":
{
"value":"12",
"type":"field",
"subType":null
},
"split":null,
"recordsType":"available",
"recordsFilter":null
},
{
"id":"15",
"name":null,
"chartType":"columns",
"stacked":null,
"value":
{
"value":"",
"type":"recordsCount",
"subType":null
},
"valueFn":null,
"axis":
{
"value":"2",
"type":"field",
"subType":null
},
"split":
{
"value":"2",
"type":"field",
"subType":null
},
"recordsType":"all",
"recordsFilter":null
}
]

Создать график [POST]

Запрос: (application/json)

{
"chartType":"columns",
"value":
{
"type":"recordsCount",
"value":null
},
"valueFn":null,
"axis":
{
"type":"field",
"value":"4"
},
"recordsType":"all"
}

Ответ: 200 OK (application/json)

{
"id": "16" // идентификатор созданного графика
}

Значения графика (Values)

Получить значения графика [GET]

URL: /{api url}/boards/{boardsId}/widgets/{widgetsId}/values
?recordsFilter[filters][0][fieldId]=12
&recordsFilter[filters][0][value][0]=CURRENT_USER
&limit=100
&offset=0

Подробнее о фильтрах по полям. Пример: «Количество записей / Имя клиента»: boardsId=6, widgetsId=14, filter=CURRENT_USER

Получить значения без создания графика [GET]

URL: /{api url}/boards/{boardsId}/widgets/new/values
?value[type]=recordsCount
&axis[type]=field
&axis[value]=2
&recordsFilter[filters][0][fieldId]=12
&recordsFilter[filters][0][value][0]=CURRENT_USER
&limit=100
&offset=0

Возможные параметры запроса можете найти в параграфе График (Widgets)

Пример: «Количество записей / Имя клиента»: filter=CURRENT_USER

Ответ: 200 OK (application/json)

Результат:

[
{
"axis": "Анатолий",
"values": [
{
"value": "1"
}
]
}
]

Общие данные графика (Totals)

Получить общие данные графика [GET]

URL: /{api url}/boards/{boardsId}/widgets/{widgetsId}/totals
?recordsFilter[filters][0][fieldId]=12
&recordsFilter[filters][0][value][0]=CURRENT_USER

Пример: количество записей, среднее значение и количество осей: boardsId=6, widgetsId=14, filter=CURRENT_USER

Получить общие данные без создания графика [GET]

URL: /{api url}/boards/{boardsId}/widgets/new/totals
?value[type]=recordsCount
&axis[type]=field
&axis[value]=2
&recordsFilter[filters][0][fieldId]=12
&recordsFilter[filters][0][value][0]=CURRENT_USER

Пример: общих данных из каталога с заданным фильтром по текущему сотруднику

Ответ: 200 OK (application/json)

Результат:

[
{
"key": "sum",
"value": 1
},
{
"key": "avg",
"value": 1
},
{
"key": "count",
"value": 1
}
]