fix: исправлено выделение строк через чекбокс в заголовке и убрана лишняя кнопка
- Удалена кнопка "Выделить страницу" (дублирует функционал чекбокса в заголовке) - Исправлен обработчик rowSelectionChanged - теперь корректно обрабатывает выделение через header checkbox - Изменен подход: при каждом изменении выделения обновляется вся коллекция selectedRowsData - Добавлена синхронизация выделенных строк между страницами - Исправлена ошибка "строки не выбраны" при удалении после выделения через header checkbox
This commit is contained in:
@@ -271,18 +271,23 @@ async function selectTable(schema, tableName) {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
// Обработка выделения строк
|
// ✅ ИСПРАВЛЕНО: Обработка выделения строк
|
||||||
rowSelectionChanged: function(data, rows) {
|
rowSelectionChanged: function(data, rows) {
|
||||||
// Добавляем/удаляем строки из глобального хранилища
|
// Синхронизируем selectedRowsData с текущим состоянием ВСЕХ выделенных строк
|
||||||
rows.forEach(row => {
|
// data - это массив данных ВСЕХ выбранных строк
|
||||||
|
|
||||||
|
// Сначала удаляем все строки с текущей страницы из selectedRowsData
|
||||||
|
const currentPageRows = this.getRows();
|
||||||
|
currentPageRows.forEach(row => {
|
||||||
const rowData = row.getData();
|
const rowData = row.getData();
|
||||||
const key = getRowKey(rowData);
|
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();
|
updateSelectionCounter();
|
||||||
@@ -341,14 +346,6 @@ async function selectTable(schema, tableName) {
|
|||||||
document.addEventListener('keydown', enterHandler);
|
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 () => {
|
document.getElementById('btnSelectAll').addEventListener('click', async () => {
|
||||||
if (!currentSchema || !currentTable || !table) {
|
if (!currentSchema || !currentTable || !table) {
|
||||||
|
|||||||
@@ -178,7 +178,6 @@
|
|||||||
<button id="btnInsert">➕ Вставить</button>
|
<button id="btnInsert">➕ Вставить</button>
|
||||||
<button id="btnDelete">🗑️ Удалить</button>
|
<button id="btnDelete">🗑️ Удалить</button>
|
||||||
<div class="toolbar-divider"></div>
|
<div class="toolbar-divider"></div>
|
||||||
<button id="btnSelectPage">☑️ Выделить страницу</button>
|
|
||||||
<button id="btnSelectAll">☑️ Выделить все</button>
|
<button id="btnSelectAll">☑️ Выделить все</button>
|
||||||
<button id="btnDeselectAll">⬜ Снять выделение</button>
|
<button id="btnDeselectAll">⬜ Снять выделение</button>
|
||||||
<div class="toolbar-divider"></div>
|
<div class="toolbar-divider"></div>
|
||||||
|
|||||||
Reference in New Issue
Block a user