From e6e25fdf943d69e975f025bec9e51dc26227dec1 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Mon, 7 Oct 2024 14:59:29 +0100 Subject: [PATCH] Allow calculation views to hide required fields. --- .../src/api/routes/tests/viewV2.spec.ts | 20 +++++++++++++++++++ packages/server/src/sdk/app/views/index.ts | 3 ++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/server/src/api/routes/tests/viewV2.spec.ts b/packages/server/src/api/routes/tests/viewV2.spec.ts index 5238b9b752..22c83419a4 100644 --- a/packages/server/src/api/routes/tests/viewV2.spec.ts +++ b/packages/server/src/api/routes/tests/viewV2.spec.ts @@ -1024,6 +1024,26 @@ describe.each([ ) }) + it("can add a new group by field that is invisible, even if required on the table", async () => { + view.schema!.name = { visible: false } + await config.api.viewV2.update(view) + + const { rows } = await config.api.row.search(view.id) + expect(rows).toHaveLength(2) + expect(rows).toEqual( + expect.arrayContaining([ + { + country: "USA", + age: 65, + }, + { + country: "UK", + age: 61, + }, + ]) + ) + }) + it("can add a new calculation field", async () => { view.schema!.count = { visible: true, diff --git a/packages/server/src/sdk/app/views/index.ts b/packages/server/src/sdk/app/views/index.ts index 73785edd98..32fd696f20 100644 --- a/packages/server/src/sdk/app/views/index.ts +++ b/packages/server/src/sdk/app/views/index.ts @@ -178,7 +178,7 @@ function checkRequiredFields( continue } - if (!viewSchemaField?.visible) { + if (!helpers.views.isCalculationView(view) && !viewSchemaField?.visible) { throw new HTTPError( `You can't hide "${field.name}" because it is a required field.`, 400 @@ -186,6 +186,7 @@ function checkRequiredFields( } if ( + viewSchemaField && helpers.views.isBasicViewField(viewSchemaField) && viewSchemaField.readonly ) {