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() {
|
async function loadDatabases() {
|
||||||
if (!environmentId) {
|
if (!environmentId) {
|
||||||
databases = [];
|
databases = [];
|
||||||
@@ -533,38 +444,6 @@
|
|||||||
targetDatabaseId = '';
|
targetDatabaseId = '';
|
||||||
await loadDatabases();
|
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[]} */
|
/** @returns {string[]} */
|
||||||
function validate() {
|
function validate() {
|
||||||
@@ -662,11 +541,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param {string} col */
|
|
||||||
function isVirtual(col) {
|
|
||||||
return virtualColumnNames.includes(col);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getJobStatusLabel(value) {
|
function getJobStatusLabel(value) {
|
||||||
const labels = {
|
const labels = {
|
||||||
DRAFT: $t.translate?.config?.status_draft || 'Draft',
|
DRAFT: $t.translate?.config?.status_draft || 'Draft',
|
||||||
|
|||||||
Reference in New Issue
Block a user