From bd96348850760b0d1ec157352363c084c32864d9 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Wed, 21 Jan 2026 04:26:00 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=B2=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D1=87=D0=B5=D0=BA=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=D1=81=20=D0=B2=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=B8=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D1=8F=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Удалена кнопка "Выделить страницу" (дублирует функционал чекбокса в заголовке) - Исправлен обработчик rowSelectionChanged - теперь корректно обрабатывает выделение через header checkbox - Изменен подход: при каждом изменении выделения обновляется вся коллекция selectedRowsData - Добавлена синхронизация выделенных строк между страницами - Исправлена ошибка "строки не выбраны" при удалении после выделения через header checkbox --- public/app.js | 31 ++++++++++++++----------------- public/index.html | 1 - 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/public/app.js b/public/app.js index f129963..50c0eb8 100644 --- a/public/app.js +++ b/public/app.js @@ -271,18 +271,23 @@ async function selectTable(schema, tableName) { }; }, - // Обработка выделения строк + // ✅ ИСПРАВЛЕНО: Обработка выделения строк rowSelectionChanged: function(data, rows) { - // Добавляем/удаляем строки из глобального хранилища - rows.forEach(row => { + // Синхронизируем selectedRowsData с текущим состоянием ВСЕХ выделенных строк + // data - это массив данных ВСЕХ выбранных строк + + // Сначала удаляем все строки с текущей страницы из selectedRowsData + const currentPageRows = this.getRows(); + currentPageRows.forEach(row => { const rowData = row.getData(); const key = getRowKey(rowData); - - if (row.isSelected()) { - selectedRowsData.set(key, rowData); - } else { - selectedRowsData.delete(key); - } + selectedRowsData.delete(key); + }); + + // Теперь добавляем все выделенные строки обратно + data.forEach(rowData => { + const key = getRowKey(rowData); + selectedRowsData.set(key, rowData); }); updateSelectionCounter(); @@ -341,14 +346,6 @@ async function selectTable(schema, tableName) { document.addEventListener('keydown', enterHandler); } -// ✅ ВЫДЕЛИТЬ ВСЕ НА ТЕКУЩЕЙ СТРАНИЦЕ -document.getElementById('btnSelectPage').addEventListener('click', () => { - if (!table) return; - - const rows = table.getRows(); - rows.forEach(row => row.select()); -}); - // ✅ ВЫДЕЛИТЬ ВСЕ (НА ВСЕХ СТРАНИЦАХ) document.getElementById('btnSelectAll').addEventListener('click', async () => { if (!currentSchema || !currentTable || !table) { diff --git a/public/index.html b/public/index.html index b158fc9..752d6c8 100644 --- a/public/index.html +++ b/public/index.html @@ -178,7 +178,6 @@
-