diff --git a/Runtime/Component/Label/SerieLabelHelper.cs b/Runtime/Component/Label/SerieLabelHelper.cs
index 2cd9428a..10035c43 100644
--- a/Runtime/Component/Label/SerieLabelHelper.cs
+++ b/Runtime/Component/Label/SerieLabelHelper.cs
@@ -53,6 +53,22 @@ namespace XCharts.Runtime
}
}
+ public static string GetTitleFormatterContent(Serie serie, SerieData serieData,
+ int dataIndex, LabelStyle titleStyle, BaseChart chart)
+ {
+ string content;
+ if (string.IsNullOrEmpty(titleStyle.formatter))
+ {
+ content = serieData.name;
+ }
+ else
+ {
+ content = titleStyle.formatter;
+ FormatterHelper.ReplaceContent(ref content, dataIndex, titleStyle.numericFormatter, serie, chart, null, serieData);
+ }
+ return content;
+ }
+
public static void SetGaugeLabelText(Serie serie)
{
var serieData = serie.GetSerieData(0);
diff --git a/Runtime/Helper/FormatterHelper.cs b/Runtime/Helper/FormatterHelper.cs
index 6d1c4be5..ca005435 100644
--- a/Runtime/Helper/FormatterHelper.cs
+++ b/Runtime/Helper/FormatterHelper.cs
@@ -37,7 +37,7 @@ namespace XCharts.Runtime
/// 选中的类目,一般用在折线图和柱状图
///
public static bool ReplaceContent(ref string content, int dataIndex, string numericFormatter, Serie serie,
- BaseChart chart, string colorName = null)
+ BaseChart chart, string colorName = null, SerieData serieData = null)
{
var foundDot = false;
var mc = s_Regex.Matches(content);
@@ -112,7 +112,7 @@ namespace XCharts.Runtime
}
else
{
- var serieData = serie.GetSerieData(bIndex);
+ serieData = serie.GetSerieData(bIndex);
content = content.Replace(old, serieData.name);
}
}
@@ -207,6 +207,10 @@ namespace XCharts.Runtime
}
}
}
+ if (serieData != null)
+ {
+ ReplaceIndexContent(ref content, serie.useSortData ? serieData.sortIndex : serieData.index, serie.dataCount);
+ }
content = s_RegexNewLine.Replace(content, PH_NN);
return foundDot;
}
@@ -310,7 +314,10 @@ namespace XCharts.Runtime
}
}
}
- ReplaceIndexContent(ref content, sortData ? serieData.sortIndex : serieData.index, dataCount);
+ if (serieData != null)
+ {
+ ReplaceIndexContent(ref content, sortData ? serieData.sortIndex : serieData.index, dataCount);
+ }
content = TrimAndReplaceLine(content);
}
diff --git a/Runtime/Serie/SerieHandler.cs b/Runtime/Serie/SerieHandler.cs
index cf4a0459..d7468ed2 100644
--- a/Runtime/Serie/SerieHandler.cs
+++ b/Runtime/Serie/SerieHandler.cs
@@ -432,17 +432,8 @@ namespace XCharts.Runtime
if (titleStyle != null)
{
var color = chart.GetItemColor(serie, null);
- var content = string.Empty;
- if (string.IsNullOrEmpty(titleStyle.formatter))
- {
- content = serie.serieName;
- }
- else
- {
- content = titleStyle.formatter;
- FormatterHelper.ReplaceContent(ref content, -1, titleStyle.numericFormatter, serie, chart);
- }
- var label = ChartHelper.AddChartLabel("title_" + 0, serieTitleRoot.transform, titleStyle, chart.theme.common,
+ var content = SerieLabelHelper.GetTitleFormatterContent(serie, null, -1, titleStyle, chart);
+ var label = ChartHelper.AddChartLabel("title_0", serieTitleRoot.transform, titleStyle, chart.theme.common,
content, color, TextAnchor.MiddleCenter);
serie.context.titleObject = label;
label.SetActive(titleStyle.show, true);
@@ -461,16 +452,7 @@ namespace XCharts.Runtime
if (titleStyle == null) continue;
m_InitTitleLabel = true;
var color = chart.GetItemColor(serie, serieData);
- var content = string.Empty;
- if (string.IsNullOrEmpty(titleStyle.formatter))
- {
- content = serieData.name;
- }
- else
- {
- content = titleStyle.formatter;
- FormatterHelper.ReplaceContent(ref content, i, titleStyle.numericFormatter, serie, chart);
- }
+ var content = SerieLabelHelper.GetTitleFormatterContent(serie, serieData, i, titleStyle, chart);
var label = ChartHelper.AddChartLabel("title_" + i, serieTitleRoot.transform, titleStyle, chart.theme.common,
content, color, TextAnchor.MiddleCenter);
serieData.titleObject = label;
@@ -493,6 +475,8 @@ namespace XCharts.Runtime
var labelPosition = GetSerieDataTitlePosition(null, titleStyle);
var offset = titleStyle.GetOffset(serie.context.insideRadius);
serie.context.titleObject.SetPosition(labelPosition + offset);
+ var content = SerieLabelHelper.GetTitleFormatterContent(serie, null, -1, titleStyle, chart);
+ serie.context.titleObject.SetText(content);
}
}
else
@@ -506,6 +490,8 @@ namespace XCharts.Runtime
var labelPosition = GetSerieDataTitlePosition(serieData, titleStyle);
var offset = titleStyle.GetOffset(serie.context.insideRadius);
serieData.titleObject.SetPosition(labelPosition + offset);
+ var content = SerieLabelHelper.GetTitleFormatterContent(serie, serieData, i, titleStyle, chart);
+ serieData.titleObject.SetText(content);
}
}
}