From ebf5bafbb433741ce7756dc36e4f3742c448c0ca Mon Sep 17 00:00:00 2001 From: David Porter Date: Mon, 29 Jun 2026 09:35:01 +1000 Subject: [PATCH 1/3] AP-9368 # add calendarEvent columsn and filtering --- src/apps/form-store-service.ts | 7 ++ .../formStore/table/useFormStoreTable.tsx | 99 +++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/src/apps/form-store-service.ts b/src/apps/form-store-service.ts index 49849f3e..71c59f62 100644 --- a/src/apps/form-store-service.ts +++ b/src/apps/form-store-service.ts @@ -63,6 +63,13 @@ export type FormStoreFilters = { formsAppId?: { $in: (number | null)[] } + /** Filter results by the calendar event title */ + calendarEvent?: { + /** Filter results by the calendar event title */ + name?: FormStoreFilter + /** Filter results by the calendar event date and time */ + dateTime?: FormStoreFilter + } } export type FormStoreParameters = { diff --git a/src/components/formStore/table/useFormStoreTable.tsx b/src/components/formStore/table/useFormStoreTable.tsx index 0530a32c..736a478c 100644 --- a/src/components/formStore/table/useFormStoreTable.tsx +++ b/src/components/formStore/table/useFormStoreTable.tsx @@ -1,5 +1,6 @@ import * as React from 'react' import { FormTypes, SubmissionTypes } from '@oneblink/types' +import { isValid } from 'date-fns' import { formStoreService, localisationService } from '../../../apps' import { useReactTable, @@ -492,6 +493,104 @@ export default function useFormStoreTable({ ), }, + { + id: 'CALENDER_EVENT_TITLE', + header: 'Calendar Booking - Event Title', + meta: { + sorting: { + property: 'calendarEvent.name', + direction: parameters.sorting?.find( + ({ property }) => property === 'calendarEvent.name', + )?.direction, + }, + filter: { + type: 'TEXT', + value: parameters.filters?.calendarEvent?.name as + | { $regex: string } + | undefined, + onChange: (newValue) => { + onChangeParameters( + (currentParameters) => ({ + ...currentParameters, + filters: { + ...currentParameters.filters, + calendarEvent: { + ...currentParameters.filters?.calendarEvent, + name: newValue, + }, + }, + }), + true, + ) + }, + }, + }, + cell: ({ row: { original: formStoreRecord } }) => ( + <> + {formStoreRecord.calendarEvent?.name} + {formStoreRecord.calendarEvent?.name && ( + + )} + + ), + }, + { + id: 'CALENDER_EVENT_DATE_TIME', + header: 'Calendar Booking - Event Date Time', + meta: { + sorting: { + property: 'calendarEvent.dateTime', + direction: parameters.sorting?.find( + ({ property }) => property === 'calendarEvent.dateTime', + )?.direction, + }, + filter: { + type: 'DATETIME', + value: parameters.filters?.calendarEvent?.dateTime as + | { $gte?: string; $lte?: string } + | undefined, + onChange: (newValue) => { + onChangeParameters( + (currentParameters) => ({ + ...currentParameters, + filters: { + ...currentParameters.filters, + calendarEvent: { + ...currentParameters.filters?.calendarEvent, + dateTime: newValue, + }, + }, + }), + false, + ) + }, + }, + }, + + cell: ({ row: { original: formStoreRecord } }) => { + if (!formStoreRecord.calendarEvent?.dateTime) { + return null + } + const calendarEventDate = new Date( + formStoreRecord.calendarEvent?.dateTime, + ) + if (!isValid(calendarEventDate)) { + return null + } + const text = format( + calendarEventDate, + localisationService.getDateFnsFormats().longDateTime, + ) + return ( + <> + {text} + + + ) + }, + }, ], }) }, [ From b8ba24fa95d080b7a232d0b49c069ffc6287dd7c Mon Sep 17 00:00:00 2001 From: David Porter Date: Wed, 8 Jul 2026 17:40:02 +1000 Subject: [PATCH 2/3] AP-9368 # fix bad spelling --- src/components/formStore/table/useFormStoreTable.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/formStore/table/useFormStoreTable.tsx b/src/components/formStore/table/useFormStoreTable.tsx index 736a478c..0e99ca2c 100644 --- a/src/components/formStore/table/useFormStoreTable.tsx +++ b/src/components/formStore/table/useFormStoreTable.tsx @@ -494,7 +494,7 @@ export default function useFormStoreTable({ ), }, { - id: 'CALENDER_EVENT_TITLE', + id: 'CALENDAR_EVENT_TITLE', header: 'Calendar Booking - Event Title', meta: { sorting: { @@ -537,7 +537,7 @@ export default function useFormStoreTable({ ), }, { - id: 'CALENDER_EVENT_DATE_TIME', + id: 'CALENDAR_EVENT_DATE_TIME', header: 'Calendar Booking - Event Date Time', meta: { sorting: { From 2df541f5528d2ae34eede3bfc585f022007b7e75 Mon Sep 17 00:00:00 2001 From: David Porter Date: Thu, 9 Jul 2026 15:27:16 +1000 Subject: [PATCH 3/3] AP-9368 # update changelog and types --- CHANGELOG.md | 4 ++++ package-lock.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dffd3d6..5ac79253 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- calendar event columns to form store + ## [11.0.0] - 2026-07-09 ### Added diff --git a/package-lock.json b/package-lock.json index 55685e4e..2fd7c96e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4629,7 +4629,7 @@ }, "node_modules/@oneblink/types": { "version": "1.0.0", - "resolved": "git+ssh://git@github.com/oneblink/types.git#2efbcc5818202693b13fef39ebb9ea2402f1815b", + "resolved": "git+ssh://git@github.com/oneblink/types.git#068e1da51650e70ef4df2f38ae697ea2e88c4112", "dev": true, "license": "GPL-3.0-only", "dependencies": {