Fix #2209 - views, calculations and group by can't support formula or link fields, making sure these aren't options in the UI. Also fixing an issue where formula values were being saved to DB.

This commit is contained in:
mike12345567 2021-08-04 15:22:41 +01:00
parent 236db6d9b3
commit daed47a0a8
3 changed files with 18 additions and 7 deletions

View File

@ -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 = [
{
@ -26,11 +27,15 @@
$: 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)
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() {

View File

@ -11,7 +11,7 @@
$: 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() {

View File

@ -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)