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:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user