Динамические колонки
Продукты 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, чтобы отобразить скрытую колонку