diff --git a/packages/builder/src/components/backend/DataTable/modals/CalculateModal.svelte b/packages/builder/src/components/backend/DataTable/modals/CalculateModal.svelte index 8fe753cba8..660a822898 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CalculateModal.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CalculateModal.svelte @@ -2,6 +2,7 @@ import { Select, Label, notifications, ModalContent } from "@budibase/bbui" import { tables, views } from "stores/backend" import analytics from "analytics" + import { FIELDS } from "constants/backend" const CALCULATIONS = [ { @@ -25,13 +26,16 @@ ) $: fields = viewTable && - Object.keys(viewTable.schema).filter( - field => - view.calculation === "count" || - // don't want to perform calculations based on auto ID - (viewTable.schema[field].type === "number" && - !viewTable.schema[field].autocolumn) - ) + Object.keys(viewTable.schema).filter(fieldName => { + const field = viewTable.schema[fieldName] + return ( + field.type !== FIELDS.FORMULA.type && + field.type !== FIELDS.LINK.type && + (view.calculation === "count" || + // don't want to perform calculations based on auto ID + (field.type === "number" && !field.autocolumn)) + ) + }) function saveView() { views.save(view) diff --git a/packages/builder/src/components/backend/DataTable/modals/GroupByModal.svelte b/packages/builder/src/components/backend/DataTable/modals/GroupByModal.svelte index b566a24ca8..b0df0ef1da 100644 --- a/packages/builder/src/components/backend/DataTable/modals/GroupByModal.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/GroupByModal.svelte @@ -11,7 +11,11 @@ $: fields = viewTable && Object.entries(viewTable.schema) - .filter(entry => entry[1].type !== FIELDS.LINK.type) + .filter( + entry => + entry[1].type !== FIELDS.LINK.type && + entry[1].type !== FIELDS.FORMULA.type + ) .map(([key]) => key) function saveView() { diff --git a/packages/server/src/utilities/rowProcessor.js b/packages/server/src/utilities/rowProcessor.js index 766bc09b2f..8467d91c57 100644 --- a/packages/server/src/utilities/rowProcessor.js +++ b/packages/server/src/utilities/rowProcessor.js @@ -184,7 +184,13 @@ exports.inputProcessing = (user = {}, table, row) => { } continue } - clonedRow[key] = exports.coerce(value, field.type) + // specific case to delete formula values if they get saved + // type coercion cannot completely remove the field, so have to do it here + if (field.type === FieldTypes.FORMULA) { + delete clonedRow[key] + } else { + clonedRow[key] = exports.coerce(value, field.type) + } } // handle auto columns - this returns an object like {table, row} return processAutoColumn(user, copiedTable, clonedRow)