отладка
This commit is contained in:
@@ -96,13 +96,22 @@ function escapeHtml(text) {
|
||||
|
||||
function getRowKey(rowData) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
document.getElementById('loginBtn').addEventListener('click', async () => {
|
||||
const user = document.getElementById('loginUser').value.trim();
|
||||
const pass = document.getElementById('loginPass').value;
|
||||
@@ -189,6 +198,13 @@ async function selectTable(schema, tableName) {
|
||||
`/api/table/meta?schema=${encodeURIComponent(schema)}&table=${encodeURIComponent(tableName)}`
|
||||
);
|
||||
|
||||
console.log('📋 Метаданные таблицы загружены:', {
|
||||
schema,
|
||||
table: tableName,
|
||||
primaryKey: currentMeta.primaryKey,
|
||||
columnsCount: currentMeta.columns.length
|
||||
});
|
||||
|
||||
const columns = [
|
||||
{
|
||||
formatter: "rowSelection",
|
||||
@@ -197,6 +213,7 @@ async function selectTable(schema, tableName) {
|
||||
headerSort: false,
|
||||
width: 40,
|
||||
cellClick: function(e, cell) {
|
||||
console.log('📌 Клик на чекбокс ячейки');
|
||||
cell.getRow().toggleSelect();
|
||||
}
|
||||
},
|
||||
@@ -263,38 +280,79 @@ async function selectTable(schema, tableName) {
|
||||
},
|
||||
|
||||
rowSelectionChanged: function(data, rows) {
|
||||
console.log('🔔 rowSelectionChanged:', {
|
||||
'data (all selected)': data.length,
|
||||
'rows (changed)': rows.length
|
||||
console.group('🔔 rowSelectionChanged вызван');
|
||||
console.log('Параметры:', {
|
||||
'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();
|
||||
console.log('Строк на текущей странице:', currentPageRows.length);
|
||||
|
||||
// Удаляем все строки текущей страницы из selectedRowsData
|
||||
let deletedCount = 0;
|
||||
currentPageRows.forEach(row => {
|
||||
const rowData = row.getData();
|
||||
const key = getRowKey(rowData);
|
||||
if (selectedRowsData.has(key)) {
|
||||
selectedRowsData.delete(key);
|
||||
deletedCount++;
|
||||
}
|
||||
});
|
||||
console.log('Удалено из selectedRowsData:', deletedCount);
|
||||
|
||||
data.forEach(rowData => {
|
||||
// Добавляем все выделенные строки из параметра data
|
||||
let addedCount = 0;
|
||||
data.forEach((rowData, index) => {
|
||||
const key = getRowKey(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();
|
||||
},
|
||||
|
||||
dataLoaded: function(data) {
|
||||
console.log('📄 dataLoaded: восстанавливаем выделение для', selectedRowsData.size, 'строк');
|
||||
|
||||
if (selectedRowsData.size > 0) {
|
||||
const rows = this.getRows();
|
||||
let restoredCount = 0;
|
||||
|
||||
rows.forEach(row => {
|
||||
const rowData = row.getData();
|
||||
const key = getRowKey(rowData);
|
||||
|
||||
if (selectedRowsData.has(key)) {
|
||||
row.select();
|
||||
restoredCount++;
|
||||
}
|
||||
});
|
||||
|
||||
console.log(' ✅ Восстановлено выделение для', restoredCount, 'строк на странице');
|
||||
}
|
||||
},
|
||||
|
||||
@@ -335,6 +393,7 @@ async function selectTable(schema, tableName) {
|
||||
document.addEventListener('keydown', enterHandler);
|
||||
}
|
||||
|
||||
|
||||
document.getElementById('btnSelectAll').addEventListener('click', async () => {
|
||||
if (!currentSchema || !currentTable || !table) {
|
||||
alert('Сначала выберите таблицу');
|
||||
|
||||
Reference in New Issue
Block a user