fix: исправлено выделение строк через чекбокс в заголовке и убрана лишняя кнопка

- Удалена кнопка "Выделить страницу" (дублирует функционал чекбокса в заголовке)
- Исправлен обработчик rowSelectionChanged - теперь корректно обрабатывает выделение через header checkbox
- Изменен подход: при каждом изменении выделения обновляется вся коллекция selectedRowsData
- Добавлена синхронизация выделенных строк между страницами
- Исправлена ошибка "строки не выбраны" при удалении после выделения через header checkbox
This commit is contained in:
2026-01-21 04:26:00 +03:00
parent 92a5c0040c
commit bd96348850
2 changed files with 14 additions and 18 deletions

View File

@@ -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) {

View File

@@ -178,7 +178,6 @@
<button id="btnInsert"> Вставить</button>
<button id="btnDelete">🗑️ Удалить</button>
<div class="toolbar-divider"></div>
<button id="btnSelectPage">☑️ Выделить страницу</button>
<button id="btnSelectAll">☑️ Выделить все</button>
<button id="btnDeselectAll">⬜ Снять выделение</button>
<div class="toolbar-divider"></div>