Формы 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 expences"}, {"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 - Приложение куба