diff --git a/packages/builder/src/components/backend/DataTable/popovers/GroupByPopover.svelte b/packages/builder/src/components/backend/DataTable/popovers/GroupByPopover.svelte index 36fde06d77..8c3b81dd53 100644 --- a/packages/builder/src/components/backend/DataTable/popovers/GroupByPopover.svelte +++ b/packages/builder/src/components/backend/DataTable/popovers/GroupByPopover.svelte @@ -2,6 +2,7 @@ import { Button, Input, Select } from "@budibase/bbui" import { backendUiStore } from "builderStore" import { notifier } from "builderStore/store/notifications" + import { FIELDS } from "constants/backend" export let view = {} export let onClosed @@ -9,7 +10,11 @@ $: viewTable = $backendUiStore.tables.find( ({ _id }) => _id === $backendUiStore.selectedView.tableId ) - $: fields = viewTable && Object.keys(viewTable.schema) + $: fields = + viewTable && + Object.entries(viewTable.schema) + .filter(entry => entry[1].type !== FIELDS.LINK.type) + .map(([key]) => key) function saveView() { backendUiStore.actions.views.save(view) diff --git a/packages/server/src/api/controllers/row.js b/packages/server/src/api/controllers/row.js index 54f4e4508e..4ce664413e 100644 --- a/packages/server/src/api/controllers/row.js +++ b/packages/server/src/api/controllers/row.js @@ -202,6 +202,11 @@ exports.fetchView = async function(ctx) { const db = new CouchDB(appId) const { calculation, group, field } = ctx.query + const designDoc = await db.get("_design/database") + const viewInfo = designDoc.views[viewName] + if (!viewInfo) { + ctx.throw(400, "View does not exist.") + } const response = await db.query(`database/${viewName}`, { include_docs: !calculation, group, @@ -211,7 +216,7 @@ exports.fetchView = async function(ctx) { response.rows = response.rows.map(row => row.doc) let table try { - table = await db.get(ctx.params.tableId) + table = await db.get(viewInfo.meta.tableId) } catch (err) { table = { schema: {},