From 39cee1bd52c05e98708026de245e44df640848c0 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Mon, 3 Nov 2025 07:41:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0`Tooltip`=E7=9A=84`Title`?= =?UTF-8?q?=E5=8F=AF=E9=80=9A=E8=BF=87`TitleLabelStyle`=E7=9A=84`numericFo?= =?UTF-8?q?rmatter`=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=97=B6=E9=97=B4=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=20(#353)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation~/zh/changelog.md | 1 + Runtime/Component/Tooltip/TooltipHandler.cs | 16 +++++++++++++++- Runtime/Component/Tooltip/TooltipHelper.cs | 7 ++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 51776770..3b322a69 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -80,6 +80,7 @@ slug: /changelog ## master +* (2025.11.03) 增加`Tooltip`的`Title`可通过`TitleLabelStyle`的`numericFormatter`格式化时间显示 (#353) * (2025.10.30) 增加`Chart`的`useUtc`参数设置显示时间是否用UTC时间 * (2025.10.30) 优化`Candlestick`对时间轴的支持 * (2025.10.30) 增加`Scatter`的`ignore`支持设置忽略数据 diff --git a/Runtime/Component/Tooltip/TooltipHandler.cs b/Runtime/Component/Tooltip/TooltipHandler.cs index 1599bbfe..94cf8e61 100644 --- a/Runtime/Component/Tooltip/TooltipHandler.cs +++ b/Runtime/Component/Tooltip/TooltipHandler.cs @@ -616,7 +616,21 @@ namespace XCharts.Runtime var serieData = serie.GetSerieData(serie.context.pointerItemDataIndex); if (serieData != null) { - tooltip.context.data.title = DateTimeUtil.GetDefaultDateTimeString((int)serieData.GetData(0), axisRange, !chart.useUtc); + var value = (int)serieData.GetData(0); + if (string.IsNullOrEmpty(tooltip.titleLabelStyle.numericFormatter)) + tooltip.context.data.title = DateTimeUtil.GetDefaultDateTimeString(value, axisRange, !chart.useUtc); + else + { + var dateTime = DateTimeUtil.GetDateTime(value, !chart.useUtc); + try + { + tooltip.context.data.title = dateTime.ToString(tooltip.titleLabelStyle.numericFormatter); + } + catch + { + tooltip.context.data.title = DateTimeUtil.GetDefaultDateTimeString(value, axisRange, !chart.useUtc); + } + } } } serie.handler.UpdateTooltipSerieParams(dataIndex, showCategory, category, diff --git a/Runtime/Component/Tooltip/TooltipHelper.cs b/Runtime/Component/Tooltip/TooltipHelper.cs index 467dce83..cf50d201 100644 --- a/Runtime/Component/Tooltip/TooltipHelper.cs +++ b/Runtime/Component/Tooltip/TooltipHelper.cs @@ -16,8 +16,9 @@ namespace XCharts.Runtime else { tooltip.context.data.title = tooltip.titleFormatter; - FormatterHelper.ReplaceContent(ref tooltip.context.data.title, -1, - tooltip.numericFormatter, null, chart); + var numericFormatter = string.IsNullOrEmpty(tooltip.titleLabelStyle.numericFormatter) + ? tooltip.numericFormatter : tooltip.titleLabelStyle.numericFormatter; + FormatterHelper.ReplaceContent(ref tooltip.context.data.title, -1, numericFormatter, null, chart); } } for (int i = tooltip.context.data.param.Count - 1; i >= 0; i--) @@ -56,7 +57,7 @@ namespace XCharts.Runtime public static bool IsIgnoreFormatter(string itemFormatter) { - return "-".Equals(itemFormatter) ||"{i}".Equals(itemFormatter, StringComparison.CurrentCultureIgnoreCase); + return "-".Equals(itemFormatter) || "{i}".Equals(itemFormatter, StringComparison.CurrentCultureIgnoreCase); } public static void LimitInRect(BaseChart chart, Tooltip tooltip, Rect chartRect)