отладка

This commit is contained in:
2026-01-21 04:46:26 +03:00
parent fefc2b711a
commit a934ed2f28

View File

@@ -96,13 +96,22 @@ function escapeHtml(text) {
function getRowKey(rowData) { function getRowKey(rowData) {
if (!currentMeta || !currentMeta.primaryKey || currentMeta.primaryKey.length === 0) { if (!currentMeta || !currentMeta.primaryKey || currentMeta.primaryKey.length === 0) {
return JSON.stringify(rowData); const key = JSON.stringify(rowData);
return key;
} }
const pkValues = currentMeta.primaryKey.map(pk => rowData[pk]).join('|'); const pkValues = currentMeta.primaryKey.map(pk => {
const value = rowData[pk];
if (value === undefined || value === null) {
console.warn(`⚠️ getRowKey: PK field '${pk}' is undefined/null in rowData:`, rowData);
}
return value;
}).join('|');
return pkValues; return pkValues;
} }
document.getElementById('loginBtn').addEventListener('click', async () => { document.getElementById('loginBtn').addEventListener('click', async () => {
const user = document.getElementById('loginUser').value.trim(); const user = document.getElementById('loginUser').value.trim();
const pass = document.getElementById('loginPass').value; const pass = document.getElementById('loginPass').value;
@@ -189,6 +198,13 @@ async function selectTable(schema, tableName) {
`/api/table/meta?schema=${encodeURIComponent(schema)}&table=${encodeURIComponent(tableName)}` `/api/table/meta?schema=${encodeURIComponent(schema)}&table=${encodeURIComponent(tableName)}`
); );
console.log('📋 Метаданные таблицы загружены:', {
schema,
table: tableName,
primaryKey: currentMeta.primaryKey,
columnsCount: currentMeta.columns.length
});
const columns = [ const columns = [
{ {
formatter: "rowSelection", formatter: "rowSelection",
@@ -197,6 +213,7 @@ async function selectTable(schema, tableName) {
headerSort: false, headerSort: false,
width: 40, width: 40,
cellClick: function(e, cell) { cellClick: function(e, cell) {
console.log('📌 Клик на чекбокс ячейки');
cell.getRow().toggleSelect(); cell.getRow().toggleSelect();
} }
}, },
@@ -263,38 +280,79 @@ async function selectTable(schema, tableName) {
}, },
rowSelectionChanged: function(data, rows) { rowSelectionChanged: function(data, rows) {
console.log('🔔 rowSelectionChanged:', { console.group('🔔 rowSelectionChanged вызван');
'data (all selected)': data.length, console.log('Параметры:', {
'rows (changed)': rows.length 'data.length (все выделенные)': data.length,
'rows.length (изменённые)': rows.length,
'selectedRowsData.size до': selectedRowsData.size
}); });
// Выводим первые 2 элемента из data для проверки
if (data.length > 0) {
console.log('Первая строка из data:', data[0]);
console.log('Проверка getRowKey для первой строки:', getRowKey(data[0]));
}
// Выводим первые 2 элемента из rows для проверки
if (rows.length > 0) {
console.log('Первая строка из rows (Row объект):', rows[0]);
console.log('getData() первой строки из rows:', rows[0].getData());
}
// Получаем все строки текущей страницы
const currentPageRows = this.getRows(); const currentPageRows = this.getRows();
console.log('Строк на текущей странице:', currentPageRows.length);
// Удаляем все строки текущей страницы из selectedRowsData
let deletedCount = 0;
currentPageRows.forEach(row => { currentPageRows.forEach(row => {
const rowData = row.getData(); const rowData = row.getData();
const key = getRowKey(rowData); const key = getRowKey(rowData);
if (selectedRowsData.has(key)) {
selectedRowsData.delete(key); selectedRowsData.delete(key);
deletedCount++;
}
}); });
console.log('Удалено из selectedRowsData:', deletedCount);
data.forEach(rowData => { // Добавляем все выделенные строки из параметра data
let addedCount = 0;
data.forEach((rowData, index) => {
const key = getRowKey(rowData); const key = getRowKey(rowData);
selectedRowsData.set(key, rowData); selectedRowsData.set(key, rowData);
}); addedCount++;
if (index < 3) {
console.log(` Добавлена строка ${index + 1}: key="${key}"`);
}
});
console.log('Добавлено в selectedRowsData:', addedCount);
console.log('selectedRowsData.size после:', selectedRowsData.size);
console.log('Первые 3 ключа в selectedRowsData:', Array.from(selectedRowsData.keys()).slice(0, 3));
console.groupEnd();
console.log(` 📊 selectedRowsData: ${selectedRowsData.size}`);
updateSelectionCounter(); updateSelectionCounter();
}, },
dataLoaded: function(data) { dataLoaded: function(data) {
console.log('📄 dataLoaded: восстанавливаем выделение для', selectedRowsData.size, 'строк');
if (selectedRowsData.size > 0) { if (selectedRowsData.size > 0) {
const rows = this.getRows(); const rows = this.getRows();
let restoredCount = 0;
rows.forEach(row => { rows.forEach(row => {
const rowData = row.getData(); const rowData = row.getData();
const key = getRowKey(rowData); const key = getRowKey(rowData);
if (selectedRowsData.has(key)) { if (selectedRowsData.has(key)) {
row.select(); row.select();
restoredCount++;
} }
}); });
console.log(' ✅ Восстановлено выделение для', restoredCount, 'строк на странице');
} }
}, },
@@ -335,6 +393,7 @@ async function selectTable(schema, tableName) {
document.addEventListener('keydown', enterHandler); document.addEventListener('keydown', enterHandler);
} }
document.getElementById('btnSelectAll').addEventListener('click', async () => { document.getElementById('btnSelectAll').addEventListener('click', async () => {
if (!currentSchema || !currentTable || !table) { if (!currentSchema || !currentTable || !table) {
alert('Сначала выберите таблицу'); alert('Сначала выберите таблицу');