增加SerieLabelformatter支持{index}通配符

This commit is contained in:
monitor1394
2025-03-21 08:44:33 +08:00
parent 62f071e5a9
commit 20da9dbe94
3 changed files with 33 additions and 24 deletions

View File

@@ -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);

View File

@@ -37,7 +37,7 @@ namespace XCharts.Runtime
/// <param name="category">选中的类目,一般用在折线图和柱状图</param>
/// <returns></returns>
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
}
}
}
if (serieData != null)
{
ReplaceIndexContent(ref content, sortData ? serieData.sortIndex : serieData.index, dataCount);
}
content = TrimAndReplaceLine(content);
}

View File

@@ -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);
}
}
}