From ee2dba4c050b7597b55089ddc8ffd266a3db26eb Mon Sep 17 00:00:00 2001 From: jihea-park Date: Thu, 10 Oct 2024 16:43:05 +0900 Subject: [PATCH] [#10776] OpenTelemetry > Apply text ellipsis to chart tooltip --- .../charts/OpenTelemetryChart.tsx | 10 ++- .../charts/OpenTelemetryChartCommon.tsx | 12 +-- .../OpenTelemetryChartTooltipContent.tsx | 74 ++++++++++--------- .../charts/OpenTelemetryTick.tsx | 1 + 4 files changed, 53 insertions(+), 44 deletions(-) diff --git a/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChart.tsx b/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChart.tsx index 49a069246ed3..8300493e69a3 100644 --- a/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChart.tsx +++ b/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChart.tsx @@ -65,15 +65,21 @@ export const OpenTelemetryChart = ({ return chartDataConfig[dataKey].stack ? uniqueId : undefined; }; + const chartContainerRef = React.useRef(null); + return ( - + - {OpenTelemetryChartCommon(chartCommonProps)} + {OpenTelemetryChartCommon(chartCommonProps, chartContainerRef)} {dataKeys.map((key) => ( & { showTotal?: boolean }; } -export const OpenTelemetryChartCommon = ({ - gridConfig, - xAxisConfig, - yAxisConfig, - tooltipConfig, -}: OpenTelemetryChartCommonProps) => { +export const OpenTelemetryChartCommon = ( + { gridConfig, xAxisConfig, yAxisConfig, tooltipConfig }: OpenTelemetryChartCommonProps, + chartContainerRef: React.RefObject, +) => { const { showTotal, ...restTooltipConfig } = tooltipConfig || {}; + const chartWidth = chartContainerRef?.current?.offsetWidth || 392; return ( <> @@ -50,6 +49,7 @@ export const OpenTelemetryChartCommon = ({ labelFormatter={(label) => xAxisConfig?.tickFormatter?.(label, 0) || ''} formatter={yAxisConfig?.tickFormatter} showTotal={showTotal} + chartWidth={chartWidth} /> } {...restTooltipConfig} diff --git a/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChartTooltipContent.tsx b/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChartTooltipContent.tsx index 94c89b68c89f..398c13b011b5 100644 --- a/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChartTooltipContent.tsx +++ b/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryChartTooltipContent.tsx @@ -12,6 +12,7 @@ type CustomChartTooltipContentProps = Omit< > & { formatter?: (value: number, index: number) => string; showTotal?: boolean; + chartWidth?: number; }; export interface OpenTelemetryChartTooltipContentProps extends CustomChartTooltipContentProps {} @@ -25,6 +26,7 @@ export const OpenTelemetryChartTooltipContent = ({ labelFormatter = (label) => format(label, 'HH:mm:ss'), formatter = (value) => `${value}`, showTotal = false, + chartWidth, }: OpenTelemetryChartTooltipContentProps) => { const renderTooltipLabel = () => { if (hideLabel || !payload?.length) { @@ -54,9 +56,14 @@ export const OpenTelemetryChartTooltipContent = ({ return ( active && ( -
+
{renderTooltipLabel()} -
+
{tooltipPayload?.map((item, index) => { const indicatorColor = item.color; // const nestLabel = payload.length === 1 && indicator !== 'dot'; @@ -65,44 +72,39 @@ export const OpenTelemetryChartTooltipContent = ({
svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground', + 'flex whitespace-nowrap w-full gap-1.5 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground items-center', indicator === 'dot' && 'items-center', )} > - <> -
-
-
- {item.name} -
- {item.value && ( - - {formatter(item.value as number, index)} - - )} +
+
+
+ {item.name}
- + {item.value && ( + + {formatter(item.value as number, index)} + + )} +
); })} diff --git a/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryTick.tsx b/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryTick.tsx index 6a5964e51ebe..7d11b344a4ed 100644 --- a/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryTick.tsx +++ b/web-frontend/src/main/v3/packages/ui/src/components/OpenTelemetry/charts/OpenTelemetryTick.tsx @@ -1,3 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-explicit-any export const OpenTelemetryTick = (props: any) => { const { payload, tickFormatter, x, y } = props; const tickString = tickFormatter?.(payload?.value) || '';