Формы JSON

Формы 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:

https://odatadb.savetodb.com/v4/mssql-201/default/en-us/usp_web_form_01(entity_id=1,category_id=1,year=2022)

SaveToDB и DBEdit выполняют стандартные вызовы хранимых процедур.

Разработчики должны пометить такие процедуры типом JsonForm в таблице xls.handlers.

Например:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s20usp_web_form_01JsonFormATTRIBUTE

Встроенные JavaScript-клиенты DBGate и ODataDB автоматически определяют такие формы.

Формы JSON являются "обычными" и поддерживают все настраиваемые возможности.

Особенно интересно, что динамические формы могут иметь простые в реализации обработчики изменений.

Эти обработчики могут использовать параметры с именами свойств объектов parameters, rows, columns и cells.

Например, вот код обработчика изменений для данного примера:

https://dbgate.savetodb.com/api/mssql-201/en-us/s20/usp_web_form_01_change/$definition

Вы можете попробовать этот пример:

Этот веб-сайт использует куки. Продолжая использовать веб-сайт, Вы принимаете условия Политики защиты персональных данных.