diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index b82738c7f9..42817b7375 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -21,6 +21,7 @@ export const getBackendUiStore = () => { records: [], name: "" }, + breadcrumbs: [], selectedRecord: {}, selectedDatabase: {}, selectedModel: {}, @@ -31,11 +32,19 @@ export const getBackendUiStore = () => { store.actions = { navigate: name => store.update(state => ({ ...state, leftNavItem: name })), database: { - select: db => store.update(state => ({ ...state, selectedDatabase: db })), + select: db => store.update(state => { + state.selectedDatabase = db + state.breadcrumbs = [db.name] + return state + }) }, records: { delete: record => store.update(state => { - state.selectedView.records = remove(state.selectedView.records, { id: record.id }); + state.selectedView.records = state.selectedView.records.filter(({ id }) => id !== record.id) + return state + }), + view: record => store.update(state => { + state.breadcrumbs = [state.selectedDatabase.name, record.id] return state }), }, diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index bf41abb668..07db76353d 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -164,6 +164,7 @@ const initialise = (store, initial) => async () => { initial.actions = values(pkg.appDefinition.actions) initial.triggers = pkg.appDefinition.triggers initial.appInstances = pkg.application.instances + initial.appId = pkg.application.id if (!!initial.hierarchy && !isEmpty(initial.hierarchy)) { initial.hierarchy = constructHierarchy(initial.hierarchy) diff --git a/packages/builder/src/common/core.js b/packages/builder/src/common/core.js index 9d0bd7afdf..18da89033b 100644 --- a/packages/builder/src/common/core.js +++ b/packages/builder/src/common/core.js @@ -118,6 +118,7 @@ export const getNewInstance = (appId, name) => { version: { key: "" }, isNew: true, type: "instance", + datastoreconfig: "", id, name, } diff --git a/packages/builder/src/database/DatabaseRoot.svelte b/packages/builder/src/database/DatabaseRoot.svelte index 412e9bf65b..547a62cee0 100644 --- a/packages/builder/src/database/DatabaseRoot.svelte +++ b/packages/builder/src/database/DatabaseRoot.svelte @@ -33,7 +33,7 @@ $: databaseOpen = $backendUiStore.visibleModal === "DATABASE" $: deleteRecordOpen = $backendUiStore.visibleModal === "DELETE_RECORD" $: userOpen = $backendUiStore.visibleModal === "USER" - $: breadcrumbs = $store.currentNode + $: breadcrumbs = $backendUiStore.breadcrumbs.join(" / ") @@ -61,9 +61,7 @@
- {#if $backendUiStore.selectedDatabase.name} - {$backendUiStore.selectedDatabase.name} {breadcrumbs} - {/if} + {breadcrumbs}
{#if $backendUiStore.selectedDatabase.id} import { onMount } from "svelte" import { store, backendUiStore } from "../../builderStore" + import { last } from "lodash/fp"; import Select from "../../common/Select.svelte" import { getIndexSchema } from "../../common/core" import ActionButton from "../../common/ActionButton.svelte" @@ -36,12 +37,21 @@ backendUiStore.update(state => { state.selectedView.records = recordsForIndex if (state.selectedView.records.length > 0) { - headers = Object.keys(recordsForIndex[0]) + headers = Object.keys(recordsForIndex[0]) } return state }) } + function drillIntoRecord(record) { + backendUiStore.update(state => { + state.selectedRecord = record + state.breadcrumbs = [state.selectedDatabase.name, record.id] + // Update the dropdown with the child indexes for that record + return state + }) + } + onMount(async () => { if (views.length > 0) { await fetchRecordsForView(views[0].name, currentAppInfo) @@ -52,7 +62,7 @@

- {$backendUiStore.selectedDatabase.name || ''} + {last($backendUiStore.breadcrumbs)}