Формы JSON
Все продукты SaveToDB поддерживают специальный формат для возвращаемых результатов.
Хранимые процедуры могут возвращать единственную ячейку с объектом JSON, содержащим свойства: parameters
, rows
, columns
и cells
.
Клиентские приложения создают элементы управления для параметров, строк, колонок и затем формируют таблицу на основе значений ячеек.
Это позволяет создавать полностью динамические редактируемые формы, что особенно полезно для приложений, основанных на кубах.
Вот пример возвращаемого результата:
{ "parameters": [ { "name": "entity_id", "value": 1, "items": [ {"id": 1, "name": "Plant 01"}, {"id": 2, "name": "Plant 02"} ] }, { "name": "category_id", "value": 1, "items": [ {"id": 1, "name": "Budget"}, {"id": 2, "name": "Actual"}, {"id": 3, "name": "Forecast"} ] }, { "name": "year", "value": 2022, "items": [ {"year": 2022} ] } ], "rows": [ {"account_id": 1, "name": "Sales"}, {"account_id": 2, "name": "Cost of sales"}, {"account_id": 3, "name": "Operating expenses"}, {"account_id": 4, "name": "Net Income"} ], "columns": [ {"time_id": 1, "name": "2022-01"}, {"time_id": 2, "name": "2022-02"}, ... {"time_id": 12, "name": "2022-12"} ], "cells": [ {"account_id": 1, "time_id": 1, "value": 20000000.0000}, {"account_id": 1, "time_id": 2, "value": 20000000.0000}, ... {"account_id": 4, "time_id": 12, "value": 4000000.0000} ] }
Свойство parameters содержит массив объектов параметров, таких как entity_id
, category_id
и year
в примере.
Каждый объект параметра включает свойства name, value и items. Свойство items
содержит массив объектов значений.
Значения параметров общие для всех ячеек.
Свойства rows и columns представляют собой массивы объектов элементов осей.
Каждый объект элемента оси должен содержать значения, используемые в ячейках, и свойства для заголовков.
В приведенном примере account_id
и time_id
используются в ячейках, а свойство name
— в заголовках.
Свойство cells содержит массив объектов ячеек. Этот массив должен содержать хотя бы один элемент.
Каждый объект ячейки включает значения осей и значение ячейки.
Вот код хранимой процедуры SQL Server для приведенного примера.
https://dbgate.savetodb.com/api/mssql-201/en-us/s20/usp_web_form_01/$definition
Пример вызова и его результаты в DBGate:
<https://dbgate.savetodb.com/api/mssql-201/en-us/s20/usp_web_form_01?entity_id=1&category_id=1&year=2022>
Пример вызова и его результаты в ODataDB:
SaveToDB и DBEdit выполняют стандартные вызовы хранимых процедур.
Разработчики должны пометить такие процедуры типом JsonForm в таблице xls.handlers.
Например:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s20 | usp_web_form_01 | JsonForm | ATTRIBUTE |
Встроенные JavaScript-клиенты DBGate и ODataDB автоматически определяют такие формы.
Формы JSON являются "обычными" и поддерживают все настраиваемые возможности.
Особенно интересно, что динамические формы могут иметь простые в реализации обработчики изменений.
Эти обработчики могут использовать параметры с именами свойств объектов parameters
, rows
, columns
и cells
.
Например, вот код обработчика изменений для данного примера:
https://dbgate.savetodb.com/api/mssql-201/en-us/s20/usp_web_form_01_change/$definition
Вы можете попробовать этот пример:
- Используя меню Мастера, Примеры онлайн, Sample 20 - Cube App в надстройке SaveToDB
- Используя Файл, Новый из примеров онлайн..., Sample 20 - Cube App в DBEdit
- Используя Пример ODataDB 20 - Приложение куба
- Используя Пример DBGate 20 - Приложение куба