ВКС №1 в России, по числу внедренных проектов 2021 (TAdviser)

Как создать файл описания отчета Videomost?

ID статьи: 86
Последнее обновление: 11 апр, 2018
Файл описания отчета
- это скрипт с JSON-содержимым. Сохраните файл в формате *.rep.

Объект json должен содержать поля:

'id' - идентификатор отчёта. Строка. Обязательный параметр.
'description' - Название отчёта, которое будет отображаться в списке. Строка. Обязательный параметр.
'params' - JSON-объект, содержит список параметров для задания пользователем. Введенные пользователем параметры подставляются в 'query'. Необязательный параметр.
'query' - SQL запрос, выполняемый для формирования данных отчёта. Является обычным запросом MySQL, с ограничением на выполнение запросов изменяющих БД (UPDATE, INSERT и т.п. запрещены), параметры указанные в params подставляются как ":"
'lang' - JSON-объект, содержит строки локализации для description и name параметров, если не указан, или отсутствует локализация для данного языка - используются заданные выше строки. Необязательный параметр.

формат поля 'params':

{
"":{
"name": "<имя параметра в интерфейсе>",
"default": "<значение по умолчанию>"
},
"":{
"name": "<имя параметра в интерфейсе>",
"default": "<значение по умолчанию>"
},
...
}

формат поля 'lang' повторяет основной формат с указанием локализации, например:

{
"ru":{
"description":"Опросы",
"params":{
"confroom":{
"name": "JID конференции"
}
}
}
}

Готовый файл описания отчета выглядит так:

"id": "user_creator",
"description":"confs",
"params": {
"dateFrom": {
"name": "From",
"default": "2016-01-01"
},
"dateTo": {
"name": "Until",
"default": "2017-12-31"
},
"llogin": {
"name": "User login field (login)",
"default": "test"
}
},
"query": "SELECT confroom_id FROM appointments JOIN users u USING (uid) WHERE u.login = :llogin AND startTime BETWEEN :dateFrom and :dateTo ",
"lang": {
"ru": {
"description": "Конференции пользователя",
"params": {
"dateFrom": {
"name": "Дата начала"
},
"dateTo": {
"name": "Дата окончания"
},
"llogin": {
"name": "User login field (login)"
}
}
}
}
}