diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 0100d77934..25eb24d79b 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -93,10 +93,8 @@ export const getBackendUiStore = () => { // delete the original if renaming delete state.draftModel.schema[originalName] - state.draftModel.schema = { - ...state.draftModel.schema, - [field.name]: cloneDeep(field), - } + state.draftModel.schema[field.name] = cloneDeep(field) + store.actions.models.save(state.draftModel) return state }) @@ -126,8 +124,15 @@ export const getBackendUiStore = () => { }, save: async view => { await api.post(`/api/views`, view) + store.update(state => { - state.selectedModel.views[view.name] = view + const viewModel = state.models.find(model => model._id === view.modelId) + // TODO: Cleaner? + if (!viewModel.views) viewModel.views = {} + if (view.originalName) delete viewModel.views[view.originalName] + viewModel.views[view.name] = view + + state.models = state.models state.selectedView = view return state }) diff --git a/packages/builder/src/components/database/DataTable/ViewDataTable.svelte b/packages/builder/src/components/database/DataTable/ViewDataTable.svelte index 804bec6810..5c1317dd24 100644 --- a/packages/builder/src/components/database/DataTable/ViewDataTable.svelte +++ b/packages/builder/src/components/database/DataTable/ViewDataTable.svelte @@ -17,47 +17,62 @@ import ColumnHeaderPopover from "./popovers/ColumnHeader.svelte" import EditRowPopover from "./popovers/EditRow.svelte" import CalculationPopover from "./popovers/Calculate.svelte" + import GroupByPopover from "./popovers/GroupBy.svelte" - const COLUMNS = [ + let COLUMNS = [ + { + name: "Group", + key: "key", + }, { name: "sum", key: "value.sum", }, { name: "min", - key: "value.min", + key: "value.min" }, { name: "max", - key: "value.max", + key: "value.max" }, { name: "sumsqr", - key: "value.sumsqr", + key: "value.sumsqr" }, { name: "count", - key: "value.count", + key: "value.count" }, { name: "avg", - key: "value.avg", - }, + key: "value.avg" + } ] + export let view = {} + let data = [] - $: selectedView = $backendUiStore.selectedView - $: !selectedView.name.startsWith("all_") && fetchViewData(selectedView) + $: viewName = view.name + $: !viewName.startsWith("all_") && fetchViewData(viewName) - async function fetchViewData() { - const QUERY_VIEW_URL = `/api/views/${$backendUiStore.selectedView.name}?stats=true` + async function fetchViewData(viewName) { + let QUERY_VIEW_URL = `/api/views/${viewName}?stats=true` + if (view.groupBy) { + QUERY_VIEW_URL += `&group=${view.groupBy}` + } const response = await api.get(QUERY_VIEW_URL) data = await response.json() } - - -
+ + + +
\ No newline at end of file diff --git a/packages/builder/src/components/database/DataTable/modals/DeleteView.svelte b/packages/builder/src/components/database/DataTable/modals/DeleteView.svelte index f845b18425..5eef223013 100644 --- a/packages/builder/src/components/database/DataTable/modals/DeleteView.svelte +++ b/packages/builder/src/components/database/DataTable/modals/DeleteView.svelte @@ -4,7 +4,7 @@ import { store, backendUiStore } from "builderStore" import * as api from "../api" - export let view + export let viewName export let onClosed @@ -24,7 +24,7 @@ { - await backendUiStore.actions.views.delete(view) + await backendUiStore.actions.views.delete(viewName) notifier.danger('View deleted') onClosed() }}> diff --git a/packages/builder/src/components/database/DataTable/popovers/GroupBy.svelte b/packages/builder/src/components/database/DataTable/popovers/GroupBy.svelte new file mode 100644 index 0000000000..241933ebb3 --- /dev/null +++ b/packages/builder/src/components/database/DataTable/popovers/GroupBy.svelte @@ -0,0 +1,80 @@ + + +
+ +
+ +
Group By
+
+

Group By

+ +
+
+ + +
+
+ + diff --git a/packages/builder/src/components/nav/ModelNavigator/EditTable.svelte b/packages/builder/src/components/nav/ModelNavigator/EditTable.svelte index e4893e3a3f..e7926063dd 100644 --- a/packages/builder/src/components/nav/ModelNavigator/EditTable.svelte +++ b/packages/builder/src/components/nav/ModelNavigator/EditTable.svelte @@ -28,7 +28,7 @@ open( DeleteTableModal, { - onClosed: hideEditor, + onClosed: close, table, }, { styleContent: { padding: "0" } } diff --git a/packages/builder/src/components/nav/ModelNavigator/EditView.svelte b/packages/builder/src/components/nav/ModelNavigator/EditView.svelte index 4cd14e454c..e7599824e1 100644 --- a/packages/builder/src/components/nav/ModelNavigator/EditView.svelte +++ b/packages/builder/src/components/nav/ModelNavigator/EditView.svelte @@ -1,6 +1,7 @@ @@ -48,7 +54,7 @@ {#if editing}
Edit View
- +