diff --git a/public/app.js b/public/app.js index 4affd16..f7a95cf 100644 --- a/public/app.js +++ b/public/app.js @@ -430,9 +430,19 @@ async function selectTable(schema, tableName) { // ✅ Убран cellClick - Tabulator сам обрабатывает клики на rowSelection }, ...currentMeta.columns.map(col => { + // Определяем тип сортировщика на основе типа данных + let sorterType = "string"; + if (col.DATA_TYPE && (col.DATA_TYPE.includes('int') || col.DATA_TYPE.includes('decimal') || col.DATA_TYPE.includes('float'))) { + sorterType = "number"; + } else if (col.DATA_TYPE && (col.DATA_TYPE.includes('date') || col.DATA_TYPE.includes('time'))) { + sorterType = "datetime"; + } + const colDef = { title: col.COLUMN_NAME, field: col.COLUMN_NAME, + headerSort: true, // ✅ Явно включаем сортировку + sorter: sorterType, // ✅ Тип сортировщика для отображения стрелок // ✅ Добавляем тултип для заголовка headerTooltip: function(e, column) { const comment = col.COLUMN_COMMENT; @@ -709,6 +719,15 @@ async function selectTable(schema, tableName) { console.log('✅ Tabulator создан, подключаем события...'); + // ✅ Обработчик сортировки - принудительная перезагрузка данных + table.on("dataSorting", function(sorters) { + console.log('🔄 Сортировка начата:', sorters); + }); + + table.on("dataSorted", function(sorters, rows) { + console.log('✅ Сортировка завершена:', sorters); + }); + // ✅ Применяем сохранённую видимость столбцов const savedVisibility = loadColumnVisibility(); if (savedVisibility) {