From 198571ecf500958dd26f71618d3cb95219e22c3f Mon Sep 17 00:00:00 2001 From: Mikhail Chusavitin Date: Thu, 22 Jan 2026 11:12:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B8:=20=D1=8F=D0=B2=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=B2=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20header?= =?UTF-8?q?Sort=20=D0=B8=20sorter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлен headerSort: true для каждой колонки - Добавлен sorter на основе типа данных (string/number/datetime) - Добавлены обработчики событий dataSorting/dataSorted для отладки Co-Authored-By: Claude Opus 4.5 --- public/app.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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) {