From 57abda4a2cea33f2a6a90575ae09a962d1b7a190 Mon Sep 17 00:00:00 2001 From: Matus Majchrak Date: Fri, 9 Aug 2019 10:07:39 +0200 Subject: [PATCH] Signed-off-by: Matus Majchrak Updates regex and merge json/markup functions --- .../SpanDetail/KeyValuesTable.tsx | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx b/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx index 968972d916..4d4f2d430b 100644 --- a/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx +++ b/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx @@ -23,23 +23,18 @@ import { KeyValuePair, Link } from '../../../../types/trace'; import './KeyValuesTable.css'; -const jsonObjectOrArrayStartRegex = new RegExp('^[{[]+'); +const jsonObjectOrArrayStartRegex = '/^({|[)/'; -function parseIfJson(value: any) { - try { - return JSON.parse(value); - // eslint-disable-next-line no-empty - } catch (_) {} - return value; -} - -function createMarkup(value: any) { +function parseIfComplexJson(value: any) { // if the value is a string representing actual json object or array, then use json-markup - if (typeof value === 'string' && jsonObjectOrArrayStartRegex.test(value)) { - return jsonMarkup(parseIfJson(value)); + if (typeof value === 'string' && jsonObjectOrArrayStartRegex.match(value)) { + // otherwise just return as is + try { + return JSON.parse(value); + // eslint-disable-next-line no-empty + } catch (_) {} } - // otherwise just return as is - return jsonMarkup(value); + return value; } export const LinkValue = (props: { href: string; title?: string; children: React.ReactNode }) => ( @@ -77,7 +72,7 @@ export default function KeyValuesTable(props: KeyValuesTableProps) { {data.map((row, i) => { const markup = { - __html: createMarkup(row.value), + __html: jsonMarkup(parseIfComplexJson(row.value)), }; // eslint-disable-next-line react/no-danger const jsonTable =
;