Пример ODataDB 02 - Продвинутые возможности

Этот пример демонстрирует продвинутые возможности ODataDB для создания приложений.

Ниже приведена схема базы данных примера:

Диаграмма базы данных примера кассовой книги

SaveToDB Framework

SaveToDB Framework представляет собой набор таблиц для настройки приложений плагина SaveToDB для Microsoft Excel,
настольного приложения DBEdit и веб-приложений ODataDB и DBGate.

Вы можете загрузить SaveToDB Framework для SQL Server, Oracle, MySQL и других платформ на странице SaveToDB SDK.

По ссылке приведена документация. Таблицы ниже содержат все настройки примера. Далее будут рассмотрены детали.

Форматы можно сохранять только в плагине SaveToDB. ODataDB не использует таблицу xls.workbooks.

Списки значений ячеек и параметров

ODataDB читает определения внешних ключей и создает списки значений для таблиц автоматически.

Также, ODataDB создает списки для хранимых процедур и представлений,
если исходное определение объектов доступно для анализа.

Обычно, пользователи не имеют разрешения VIEW DEFINITION, поэтому ODataDB не имеет доступа к исходному SQL коду.

Для этого случая, разработчики могут настроить списки значений в таблице xls.handlers.

Ниже приведены примеры с разными списками значений для разного набора разрешений:

Обратите внимание на списки третьего примера. Списки компаний зависят от значения статьи.

Ниже приведены настройки для списков значений параметров и ячеек:

Для определения списков можно использовать таблицы, представления, хранимые процедуры, SQL код и заданные списки.

Сохранение изменений в таблицу

ODataDB позволяет сохранять изменения данных таблиц по умолчанию.

Также ODataDB автоматически определяет таблицу для представлений и процедур, если доступен SQL код объектов.

Примеры ниже используют эту возможность:

Разработчики могут вручную определить целевую таблицу в таблице xls.objects.

Сохранение изменений хранимыми процедурами

ODataDB поддерживает сохранение изменений хранимыми процедурами для операций insert, update и delete.

Наиболее простой подход - это создать такие процедуры с суффиксами _insert, _update и _delete.
В этом случае, ODataDB привязывает такие процедуры к базовому объекту автоматически.

Если в вашей базе данных используются другие принципы или желательно использовать единые процедуры
для нескольких объектов, то можно использовать таблицу xls.objects для настройки процедур.
Например, см. настройку для процедуры s02.usp_cashbook5.

Вы можете найти исходный код процедур сохранения в браузере кода ниже.

Вы можете генерировать такие процедуры, используя SaveToDB Developer Framework for SQL Server.
Вы можете загрузить его со страницы SaveToDB SDK. Для запуска процедур можно использовать плагин SaveToDB.

Ниже приведен пример процедуры, которая использует хранимые процедуры для сохранения изменений:

Сохранение изменений обработчиками событий изменения ячеек

ODataDB позволяет использовать хранимые процедуры и SQL код для проверки и сохранения изменений.

Наиболее простой путь - это создание хранимой процедуры обработчика с суффиксом _change.
В этом случае, ODataDB привяжет его автоматически.

В ином случае, требуется привязка обработчика в таблице xls.handlers. См. пример для процедуры s02.usp_cashbook3.

Обратите внимание на слово _Commit в поле TARGET_WORKSHEET.
Оно подтверждает изменения в клиенте для кнопки "Сохранить", а не на сервере.

В качестве обработчиков событий изменения ячейки можно указать саму таблицу или представление.
В этом случае, ODataDB обновляет таблицу или представление сразу после изменения ячейки.
См. пример для s02.view_cashbook2.

Попробуйте эти примеры:

Взгляните на SQL код процедуры usp_cashbook_change.

Она имеет параметры: @column_name, @cell_value, @cell_number_value, @cell_datetime_value и @id.
Их достаточно для обновления целевой таблицы. И код процедуры достаточно простой.

Обработчики событий можно генерировать с помощью SaveToDB Developer Framework for SQL Server.

Использование SQL кода

ODataDB поддерживает использование SQL аналогично хранимым процедурам.

Объекты в виде SQL кода можно определять в таблицах xls.objects и xls.handlers. Ниже приведены примеры:

Вы можете использовать эту технику для добавления возможностей в базу данных, на которую нет прав.
Попросите администратора установить SaveToDB Framework, и Вы сможете настраивать приложения самостоятельно.

Перевод интерфейса и данных

ODataDB определяет язык пользователя по URL или из настроек браузера.

Перевод элементов интерфейса клиента ODataDB находится в файле odatadb-languages.js.
В него можно легко добавить или изменить требуемый язык.

Также, ODataDB передает язык хранимым процедурам, в параметрах @DataLanguage или @data_language.

Соответственно, приложения могут вернуть данные на требуемом языке. См. пример таблицы xls.translations.

Например, выберите язык и откройте пример ниже.

В дополнение. Отчет содержит обработчик событий изменения ячеек, так что данные можно менять непосредственно в нем.

Использование формул

ODataDB поддерживает подмножество формул Excel для расчета значений в браузере.

Формулы можно определять в представлениях, хранимых процедурах и объектах в виде SQL кода.

Ниже приведен пример расчета колонки остатка нарастающим итогом.

Условное форматирование

Для условного форматирования можно использовать два подхода:

Первый подход используется в примере s02_usp_cash_by_months. Он содержит правила в файле page.css.

Также, HTML страница содержит список колонок, которые используются в условном форматировании:

<script type="application/odatadb+json">
    {"data_row_fields":["row_format","section","level","row_bold"]}
</script>

Соответственно, ODataDB устанавливает значения ячеек в атрибуты строк как data-row_format, data-section и т.д.

Можно использовать стили для чисел: gt0, eq0 и lt0.

Второй подход используется в примере budget reports приложения Gartle Budgeting.

Он загружает правила форматирования из таблицы xls.handlers.

Для создания таких правил на основе форматирования Excel можно использовать бесплатную редакцию плагина SaveToDB.
Используйте пункт меню "Мастера", "Инструменты разработчика", "Показать формат таблицы".

Метаданные и сервисный документ

ODataDB создает модели на основе объектов базы данных, читая их под логином пользователя.

Соответственно, пользователь видит объекты, извлекает данные и выполняет процедуры,
на которые имеет разрешения в базе данных.

Т.к. ODataDB анализирует SQL код представлений и хранимых процедур, и настраивает возможности автоматически,
модель сервиса зависит от наличия разрешения VIEW DEFINITION у пользователя.

Разработчики могут настраивать возможности приложений с помощью SaveToDB Framework,
добавляя пользователей в роль xls_users. В этом случае, модель будет включать и все настроенные возможности.

Попробуйте эти примеры с разными разрешениями и ролями пользователей.

ODataDB отображает сервисные документы как таблицы содержания. Например, попробуйте следующую ссылку.

Заключение

Продукт ориентирован на разработчиков баз данных.

Разработчики могут создавать корпоративные веб-приложения, используя только навыки разработки баз данных.

ODataDB поддерживает SQL Server, Oracle, DB2, MySQL, PostgreSQL и NuoDB.

Продукт можно установить в Windows и Linux.

Браузер кода



ODataDB генерирует веб-формы автоматически на основе объектов базы данных.
Например, для формы s02_cashbook используется только определение таблицы s02.cashbook.

Вы можете загрузить примеры для SQL Server, Oracle, MySQL и других платформ на странице SaveToDB SDK.