diff --git a/nuxt4-app/app/pages/explorer.vue b/nuxt4-app/app/pages/explorer.vue index 64b91e8..3ad8459 100644 --- a/nuxt4-app/app/pages/explorer.vue +++ b/nuxt4-app/app/pages/explorer.vue @@ -16,32 +16,22 @@ - - + /> - - + /> @@ -196,11 +186,28 @@ const tableData = ref([]) const visibleColumns = ref([]) // Computed -const selectedDatabaseId = computed(() => selectedDatabase.value?.id) -const selectedTableId = computed(() => selectedTable.value?.id) +const databaseOptions = computed(() => { + return databases.value.map(db => db.name) +}) + +const tableOptions = computed(() => { + return tables.value.map(table => table.display_name || table.name) +}) + +const selectedDatabaseId = computed(() => { + if (!selectedDatabase.value) return null + const db = databases.value.find(d => d.name === selectedDatabase.value) + return db?.id +}) + +const selectedTableId = computed(() => { + if (!selectedTable.value) return null + const table = tables.value.find(t => (t.display_name || t.name) === selectedTable.value) + return table?.id +}) const selectedTableName = computed(() => { - return selectedTable.value ? (selectedTable.value.display_name || selectedTable.value.name) : '' + return selectedTable.value || '' }) const tableColumns = computed(() => { @@ -246,7 +253,7 @@ async function loadDatabases() { // Auto-select first database if (databases.value.length > 0) { - selectedDatabase.value = databases.value[0] + selectedDatabase.value = databases.value[0].name } } catch (err: any) { error.value = `Error al cargar bases de datos: ${err.message || 'Error desconocido'}` @@ -257,7 +264,7 @@ async function loadDatabases() { } async function loadTables() { - if (!selectedDatabase.value) return + if (!selectedDatabase.value || !selectedDatabaseId.value) return loadingTables.value = true error.value = null @@ -265,7 +272,7 @@ async function loadTables() { tableData.value = [] try { - const response = await $fetch(`/api/metabase/tables/${selectedDatabase.value.id}`) + const response = await $fetch(`/api/metabase/tables/${selectedDatabaseId.value}`) const metadata = response as any // Metabase returns tables in the 'tables' property