From 0884f7811069cbfd24d9fb2d7bc438ca569cc083 Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Wed, 20 Sep 2023 16:10:23 +0100 Subject: [PATCH] Templating: Fix cell macro date formatting (#75159) Closes #70301 --- packages/grafana-data/src/field/fieldDisplay.test.ts | 8 ++++++++ packages/grafana-data/src/field/fieldDisplay.ts | 9 ++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/grafana-data/src/field/fieldDisplay.test.ts b/packages/grafana-data/src/field/fieldDisplay.test.ts index a9da5bf0182..4cf946c7493 100644 --- a/packages/grafana-data/src/field/fieldDisplay.test.ts +++ b/packages/grafana-data/src/field/fieldDisplay.test.ts @@ -546,4 +546,12 @@ describe('fixCellTemplateExpressions', () => { '${__data.fields[10]} asd ${__data.fields[15]} asd ${__data.fields[20]}' ); }); + + it('Should handle date formatting', () => { + expect( + fixCellTemplateExpressions('$__cell_10:date:iso asd ${__cell_15:date:seconds} asd [[__cell_20:date:YYYY-MM]]') + ).toEqual( + '${__data.fields[10]:date:iso} asd ${__data.fields[15]:date:seconds} asd ${__data.fields[20]:date:YYYY-MM}' + ); + }); }); diff --git a/packages/grafana-data/src/field/fieldDisplay.ts b/packages/grafana-data/src/field/fieldDisplay.ts index e875b5f0a4d..9830cf20048 100644 --- a/packages/grafana-data/src/field/fieldDisplay.ts +++ b/packages/grafana-data/src/field/fieldDisplay.ts @@ -373,9 +373,12 @@ function getDisplayText(display: DisplayValue, fallback: string): string { } export function fixCellTemplateExpressions(str: string) { - return str.replace(/\${__cell_(\d+)}|\[\[__cell_(\d+)\]\]|\$__cell_(\d+)/g, (match, fmt1, fmt2, fmt3) => { - return `\${__data.fields[${fmt1 ?? fmt2 ?? fmt3}]}`; - }); + return str.replace( + /\${__cell_(\d+)(.*?)}|\[\[__cell_(\d+)(.*?)\]\]|\$__cell_(\d+)(\S*)/g, + (match, cellNum1, fmt1, cellNum2, fmt2, cellNum3, fmt3) => { + return `\${__data.fields[${cellNum1 ?? cellNum2 ?? cellNum3}]${fmt1 ?? fmt2 ?? fmt3}}`; + } + ); } /**