From 863ff4d9f9724bd2061438b6ad0f2f754bbabb91 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 25 Sep 2024 17:29:44 +0200 Subject: [PATCH] Format dates --- .../src/components/grid/lib/renderers.js | 6 ++- .../frontend-core/src/utils/relatedColumns.js | 40 ++++++++++++++----- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/packages/frontend-core/src/components/grid/lib/renderers.js b/packages/frontend-core/src/components/grid/lib/renderers.js index 2e22ee1871..6af21e65f0 100644 --- a/packages/frontend-core/src/components/grid/lib/renderers.js +++ b/packages/frontend-core/src/components/grid/lib/renderers.js @@ -35,5 +35,9 @@ const TypeComponentMap = { [FieldType.BB_REFERENCE_SINGLE]: BBReferenceSingleCell, } export const getCellRenderer = column => { - return TypeComponentMap[column?.schema?.type] || TextCell + return ( + TypeComponentMap[column?.schema?.cellRenderType] || + TypeComponentMap[column?.schema?.type] || + TextCell + ) } diff --git a/packages/frontend-core/src/utils/relatedColumns.js b/packages/frontend-core/src/utils/relatedColumns.js index d2eca29608..a0ac01a21c 100644 --- a/packages/frontend-core/src/utils/relatedColumns.js +++ b/packages/frontend-core/src/utils/relatedColumns.js @@ -1,4 +1,25 @@ import { FieldType } from "@budibase/types" +import { Helpers } from "@budibase/bbui" + +const columnTypeManyOverrides = { + [FieldType.DATETIME]: { + overridedType: FieldType.STRING, + parser: (value, field) => { + const { timeOnly, dateOnly, ignoreTimezones } = field + const enableTime = !dateOnly + const parsedValue = Helpers.parseDate(value, { + timeOnly, + enableTime, + ignoreTimezones, + }) + const result = Helpers.getDateDisplayValue(parsedValue, { + enableTime, + timeOnly, + }) + return result + }, + }, +} export function enrichSchemaWithRelColumns(schema) { if (!schema) { @@ -19,6 +40,9 @@ export function enrichSchemaWithRelColumns(schema) { ...relField, name, related: { field: c, subField: relColumn }, + cellRenderType: + columnTypeManyOverrides[relField.type]?.overridedType || + relField.type, } } } @@ -34,19 +58,15 @@ export function getRelatedTableValues(row, field, isSingle) { if (isSingle) { result = row[field.related.field]?.[0]?.[field.related.subField] } else { + const parser = + columnTypeManyOverrides[field.type]?.parser || (value => value) result = Array.from( new Set( - row[field.related.field].flatMap(r => r[field.related.subField]) + row[field.related.field].flatMap(r => + parser(r[field.related.subField], field) + ) ) - ) - switch (field.type) { - case FieldType.STRING: - case FieldType.NUMBER: - case FieldType.BIGINT: - case FieldType.BARCODEQR: - result = result.join(", ") - break - } + ).join(", ") } } catch (e) { result = "Not rendable"