From ce1691e1cec1405b5dc4f2c1f037cc3770a28c42 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Mon, 12 Dec 2022 13:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96`Legend`=E7=9A=84`formatter`?= =?UTF-8?q?=E6=94=AF=E6=8C=81`{h}`=E9=80=9A=E9=85=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation~/zh/changelog.md | 1 + Runtime/Component/Legend/LegendHandler.cs | 2 +- Runtime/Helper/FormatterHelper.cs | 20 +++++++++++--------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index e6b92415..625ae1c7 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -65,6 +65,7 @@ slug: /changelog ## master +* (2022.12.12) 优化`Legend`的`formatter`支持`{h}`通配符 * (2022.12.12) 修复`Legend`的`formatter`设置为固定值时显示不正常的问题 * (2022.12.08) 增加`AreaStyle`的`toTop`参数可设置折线图渐变色是到顶部还是到实际位置 * (2022.12.07) 增加`Formatter`的文本通配符`{h}`支持设置当前颜色值 diff --git a/Runtime/Component/Legend/LegendHandler.cs b/Runtime/Component/Legend/LegendHandler.cs index 64161d6c..21f0e81f 100644 --- a/Runtime/Component/Legend/LegendHandler.cs +++ b/Runtime/Component/Legend/LegendHandler.cs @@ -156,7 +156,7 @@ namespace XCharts.Runtime var content = legend.formatter.Replace("{name}", category); content = content.Replace("{value}", category); var serie = chart.GetSerie(0); - FormatterHelper.ReplaceContent(ref content, dataIndex, legend.numericFormatter, serie, chart); + FormatterHelper.ReplaceContent(ref content, dataIndex, legend.numericFormatter, serie, chart, category); return content; } } diff --git a/Runtime/Helper/FormatterHelper.cs b/Runtime/Helper/FormatterHelper.cs index c91491a7..45a5087e 100644 --- a/Runtime/Helper/FormatterHelper.cs +++ b/Runtime/Helper/FormatterHelper.cs @@ -25,7 +25,7 @@ namespace XCharts.Runtime } /// - /// 替换字符串中的通配符,支持的通配符有{.}、{a}、{b}、{c}、{d}、{e}、{f}、{g}。 + /// 替换字符串中的通配符,支持的通配符有{.}、{a}、{b}、{c}、{d}、{e}、{f}、{g}、{h}。 /// /// 要替换的字符串 /// 选中的数据项serieData索引 @@ -34,10 +34,9 @@ namespace XCharts.Runtime /// 所有serie /// 用来获取指定index的颜色 /// 选中的类目,一般用在折线图和柱状图 - /// dataZoom /// public static bool ReplaceContent(ref string content, int dataIndex, string numericFormatter, Serie serie, - BaseChart chart, DataZoom dataZoom = null) + BaseChart chart, string colorName = null) { var foundDot = false; var mc = s_Regex.Matches(content); @@ -66,20 +65,23 @@ namespace XCharts.Runtime if (serie == null) continue; if (p == '.' || p == 'h' || p == 'H') { - var bIndex = targetIndex; + var bIndex = dataIndex; if (argsCount >= 2) { var args1Str = args[1].ToString(); if (s_RegexN.IsMatch(args1Str)) bIndex = int.Parse(args1Str); } + var color = string.IsNullOrEmpty(colorName) ? + (Color) chart.GetMarkColor(serie, serie.GetSerieData(bIndex)) : + SeriesHelper.GetNameColor(chart, bIndex, colorName); if (p == '.') { - content = content.Replace(old, ChartCached.ColorToDotStr(chart.theme.GetColor(bIndex))); + content = content.Replace(old, ChartCached.ColorToDotStr(color)); foundDot = true; } else { - content = content.Replace(old, "#" + ChartCached.ColorToStr(chart.theme.GetColor(bIndex))); + content = content.Replace(old, "#" + ChartCached.ColorToStr(color)); } } else if (p == 'a' || p == 'A') @@ -100,12 +102,12 @@ namespace XCharts.Runtime var needCategory = (p != 'e' && p != 'E') && (serie is Line || serie is Bar); if (needCategory) { - var category = chart.GetTooltipCategory(dataIndex, serie, dataZoom); + var category = chart.GetTooltipCategory(dataIndex, serie); content = content.Replace(old, category); } else { - var serieData = serie.GetSerieData(bIndex, dataZoom); + var serieData = serie.GetSerieData(bIndex); content = content.Replace(old, serieData.name); } } @@ -151,7 +153,7 @@ namespace XCharts.Runtime { numericFormatter = SerieHelper.GetNumericFormatter(serie, serie.GetSerieData(bIndex), ""); } - var value = serie.GetData(bIndex, dimensionIndex, dataZoom); + var value = serie.GetData(bIndex, dimensionIndex); if (isPercent) { var total = serie.GetDataTotal(dimensionIndex, serie.GetSerieData(bIndex));