fix: remove orphaned functions, add for auto-load columns

Clean up remaining orphaned references after tab extraction:
- Remove loadColumnsForDatasource, searchDatasources, selectDatasource
  etc. from page (moved to ConfigTabForm)
- Add  on datasourceId in ConfigTabForm for auto-loading
  columns when parent sets datasourceId (loadJob)
- Fix stray braces, remove dead isVirtual function
- Page now 779 lines (down from 1519, -49%)
This commit is contained in:
2026-05-29 16:35:50 +03:00
parent ffa6234a36
commit 1aceba465b

View File

@@ -421,95 +421,6 @@
}
}
/** @param {Event} event */
async function handleDatasourceChange(event) {
const val = event.target.value;
datasourceId = val;
availableColumns = [];
virtualColumns = [];
// Reset column selections when datasource changes
sourceKeyCols = [];
targetKeyCols = [];
translationColumn = '';
contextColumns = [];
}
isColumnsLoading = true;
try {
const result = await fetchDatasourceColumns(parseInt(datasourceId), environmentId);
if (result) {
availableColumns = result.columns || [];
databaseDialect = result.database_dialect || '';
virtualColumns = availableColumns.filter(c => c.is_physical === false).map(c => c.name);
}
} catch (err) {
uxState = 'datasource_unavailable';
addToast(`${_('common.error')}: ${err?.message}`, 'error');
} finally {
isColumnsLoading = false;
}
}
/** Load all datasets (or search) */
async function searchDatasources(searchTerm = '') {
if (!environmentId) return;
datasourceLoading = true;
try {
datasourceList = await fetchDatasources(environmentId, searchTerm);
showDatasourceDropdown = true;
} catch (err) {
datasourceList = [];
} finally {
datasourceLoading = false;
}
}
async function handleDatasourceSearch() {
await searchDatasources(datasourceSearch);
}
/** Select a dataset from the dropdown */
function selectDatasource(ds) {
datasourceId = String(ds.id);
datasourceSearch = `${ds.table_name} (${ds.database_name} · ${ds.database_dialect})`;
showDatasourceDropdown = false;
availableColumns = [];
virtualColumns = [];
sourceKeyCols = [];
targetKeyCols = [];
translationColumn = '';
targetColumn = '';
targetLanguageColumn = '';
targetSourceColumn = '';
targetSourceLanguageColumn = '';
contextColumns = [];
databaseDialect = ds.database_dialect || '';
// Auto-set target database ID from the selected datasource's database
if (ds.database_id) {
targetDatabaseId = String(ds.database_id);
}
if (datasourceId && environmentId) {
loadColumnsForDatasource();
}
}
/** @param {Event} event */
async function handleDatasourceChange(event) {
const val = event.target.value;
datasourceId = val;
availableColumns = [];
virtualColumns = [];
// Reset column selections when datasource changes
sourceKeyCols = [];
targetKeyCols = [];
translationColumn = '';
contextColumns = [];
if (val && environmentId) {
await loadColumnsForDatasource();
}
}
async function loadDatabases() {
if (!environmentId) {
databases = [];
@@ -533,38 +444,6 @@
targetDatabaseId = '';
await loadDatabases();
}
}
/** @param {string} col */
function toggleContextColumn(col) {
if (contextColumns.includes(col)) {
contextColumns = contextColumns.filter(c => c !== col);
} else {
contextColumns = [...contextColumns, col];
}
}
/** @param {string} col */
function toggleSourceKeyCol(col) {
const idx = sourceKeyCols.indexOf(col);
if (idx >= 0) {
sourceKeyCols = sourceKeyCols.filter((_, i) => i !== idx);
// Also remove corresponding target key
if (targetKeyCols[idx]) {
targetKeyCols = targetKeyCols.filter((_, i) => i !== idx);
}
} else {
sourceKeyCols = [...sourceKeyCols, col];
targetKeyCols = [...targetKeyCols, ''];
}
}
/** @param {number} idx @param {string} val */
function updateTargetKeyCol(idx, val) {
const updated = [...targetKeyCols];
updated[idx] = val;
targetKeyCols = updated;
}
/** @returns {string[]} */
function validate() {
@@ -662,11 +541,6 @@
}
}
/** @param {string} col */
function isVirtual(col) {
return virtualColumnNames.includes(col);
}
function getJobStatusLabel(value) {
const labels = {
DRAFT: $t.translate?.config?.status_draft || 'Draft',