Динамические колонки
Продукты SaveToDB поддерживают отображение, скрытие и именование колонок данных в зависимости от параметров запроса.
Представьте, что у вас есть таблица с данными всех клиентов. У каждого клиента может быть свой уникальный набор колонок или, по крайней мере, различные наименования колонок.
Вы можете настроить соответствие наборов колонок клиентам, чтобы показывать только актуальные колонки и скрывать остальные, когда пользователь выбирает нового клиента.
Например, таблица данных (s14.data) содержит следующие колонки:
id | client_id | id1 | id2 | id3 | string1 | string2 | int1 | int2 | float1 | float2 |
---|---|---|---|---|---|---|---|---|---|---|
Таблица соответствия (s14.view_aliases) содержит следующие настройки:
client_id | table_name | column_name | alias | is_active |
---|---|---|---|---|
1 | s14.data | float1 | sales | |
1 | s14.data | id1 | state | |
1 | s14.data | string1 | product | |
2 | s14.data | float1 | sales | |
2 | s14.data | string1 | region | |
2 | s14.data | string2 | manager |
Чтобы настроить динамические колонки, укажите таблицу соответствия и тип DynamicColumns в таблице xls.handlers:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s14 | data | DynamicColumns | s14 | dynamic_columns | CODE | <SQL code> |
Вот пример SQL кода:
SELECT column_name, alias, is_active FROM s14.view_aliases WHERE client_id = @client_id AND table_name = 's14.data'
В результате пользователи увидят только колонки, специфичные для выбранного клиента.
Вместо SQL кода можно использовать обычные объекты базы данных. Просто возвращайте данные для настройки колонок.
Обработчики динамических колонок должны возвращать три колонки:
- Имя исходной колонки
- Имя колонки для отображения
- Флаг видимости колонки
Флаг видимости может принимать следующие значения:
- NULL — оставить колонку в текущем состоянии
- 0 — скрыть видимую колонку
- 1 — отобразить скрытую колонку