|
1 | 1 | <template> |
2 | | - <div v-if="database && table"> |
| 2 | + <div> |
3 | 3 | <DefaultErrorPage v-if="dataError && !view?.id" :error="dataError" /> |
4 | 4 |
|
5 | 5 | <Table |
@@ -78,25 +78,24 @@ function parseIntOrNull(x) { |
78 | 78 | return x != null ? parseInt(x) : null |
79 | 79 | } |
80 | 80 |
|
81 | | -// Database and table is selected by the middleware |
82 | | -
|
83 | | -const database = computed(() => $store.getters['application/getSelected']) |
84 | | -const table = computed(() => $store.getters['table/getSelected']) |
85 | | -
|
86 | 81 | const { data, error, pending, status, refresh } = await useAsyncData( |
87 | 82 | `database-table-page-${route.params.databaseId}-${route.params.tableId}-${route.params.viewId ?? 'null'}`, |
88 | 83 | async () => { |
89 | 84 | // Use current route params (not captured params) so refresh works correctly |
90 | 85 | const currentParams = { ...route.params } |
91 | 86 | const viewId = currentParams.viewId ? parseInt(currentParams.viewId) : null |
| 87 | + // It's okay to use the `table/getSelected` because the correct ones are selected |
| 88 | + // using the `modules/database/middleware/selectWorkspaceDatabaseTable.js` |
| 89 | + // middleware. |
| 90 | + const currentTable = $store.getters['table/getSelected'] |
| 91 | + const currentDatabase = $store.getters['application/getSelected'] |
92 | 92 |
|
93 | 93 | const result = { |
94 | 94 | view: undefined, |
| 95 | + database: currentDatabase, |
| 96 | + table: currentTable, |
95 | 97 | } |
96 | 98 |
|
97 | | - const currentTable = $store.getters['table/getSelected'] |
98 | | - const currentDatabase = $store.getters['application/getSelected'] |
99 | | -
|
100 | 99 | if ($store.state.view.tableId !== currentTable.id) { |
101 | 100 | await $store.dispatch('view/fetchAll', currentTable) |
102 | 101 | } |
@@ -128,6 +127,7 @@ const { data, error, pending, status, refresh } = await useAsyncData( |
128 | 127 | // Fetch the Fields |
129 | 128 | await $store.dispatch('field/fetchAll', currentTable) |
130 | 129 | const fetchedFields = $store.getters['field/getAll'] |
| 130 | + result.fields = fetchedFields |
131 | 131 |
|
132 | 132 | // Select view |
133 | 133 | if (viewId !== null && viewId !== 0) { |
@@ -184,9 +184,10 @@ if (data.value?.redirect) { |
184 | 184 | /** |
185 | 185 | * Expose the actual values via computed shortcuts |
186 | 186 | */ |
187 | | -
|
| 187 | +const database = computed(() => data.value?.database) |
| 188 | +const table = computed(() => data.value?.table) |
188 | 189 | const view = computed(() => data.value?.view || {}) |
189 | | -const fields = computed(() => $store.getters['field/getAll']) |
| 190 | +const fields = computed(() => data.value?.fields) |
190 | 191 | const dataError = computed(() => data.value?.error) |
191 | 192 |
|
192 | 193 | /** |
|
0 commit comments