отладка
This commit is contained in:
@@ -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);
|
||||||
selectedRowsData.delete(key);
|
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);
|
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('Сначала выберите таблицу');
|
||||||
|
|||||||
Reference in New Issue
Block a user