From 86a6ebd7002df5d8adf35124a2d282387620b646 Mon Sep 17 00:00:00 2001 From: "grafana-delivery-bot[bot]" <132647405+grafana-delivery-bot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:17:52 +0100 Subject: [PATCH] [v10.0.x] Templating: Fix cell macro date formatting (#75173) Templating: Fix cell macro date formatting (#75159) Closes #70301 (cherry picked from commit 0884f7811069cbfd24d9fb2d7bc438ca569cc083) Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com> --- 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 ebea46752bd..c141f6b7dbd 100644 --- a/packages/grafana-data/src/field/fieldDisplay.test.ts +++ b/packages/grafana-data/src/field/fieldDisplay.test.ts @@ -541,4 +541,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}}`; + } + ); } /**