完善Legendformatter对多Serie的支持 (#332)

This commit is contained in:
monitor1394
2024-09-24 18:28:21 +08:00
parent c61ad794a7
commit f9b1eadd40
3 changed files with 22 additions and 3 deletions

View File

@@ -76,6 +76,7 @@ slug: /changelog
## master
* (2024.09.24) 完善`Legend``formatter`对多Serie的支持 (#332)
* (2024.09.22) 调整`Documentation`文档显示样式
* (2024.09.09) 增加`numericFormatter``date``time`的支持
* (2024.09.03) 完善`AreaStyle``origin`参数设置区域填充起始位置

View File

@@ -87,11 +87,14 @@ namespace XCharts.Runtime
ChartHelper.HideAllObject(legendObject);
if (!legend.show) return;
var textLimitInitFlag = false;
var isAnySerieColorByData = SeriesHelper.IsAnyColorByDataSerie(chart.series);
for (int i = 0; i < datas.Count; i++)
{
if (!SeriesHelper.IsLegalLegendName(datas[i])) continue;
string legendName = datas[i];
var legendContent = GetFormatterContent(legend, i, datas[i]);
var serieIndex = isAnySerieColorByData ? 0 : i;
var dataIndex = isAnySerieColorByData ? i : 0;
var legendContent = GetFormatterContent(legend, dataIndex, datas[i], serieIndex);
if (legend.textLimit.enable)
legendContent = legend.textLimit.GetLimitContent(legendContent);
var readIndex = chart.m_LegendRealShowName.IndexOf(datas[i]);
@@ -158,7 +161,7 @@ namespace XCharts.Runtime
legend.refreshComponent();
}
private string GetFormatterContent(Legend legend, int dataIndex, string category)
private string GetFormatterContent(Legend legend, int dataIndex, string category, int serieIndex)
{
#pragma warning disable 0618
if (string.IsNullOrEmpty(legend.formatter) && string.IsNullOrEmpty(legend.labelStyle.formatter))
@@ -168,7 +171,7 @@ namespace XCharts.Runtime
var formatter = string.IsNullOrEmpty(legend.labelStyle.formatter) ? legend.formatter : legend.labelStyle.formatter;
var content = formatter.Replace("{name}", category);
content = content.Replace("{value}", category);
var serie = chart.GetSerie(0);
var serie = chart.GetSerie(serieIndex);
FormatterHelper.ReplaceContent(ref content, dataIndex, legend.labelStyle.numericFormatter, serie, chart, category);
return content;
}

View File

@@ -132,6 +132,21 @@ namespace XCharts.Runtime
return false;
}
/// <summary>
/// check if series has any serie which is color by data.
/// || 是否有任何一个系列是按数据颜色的。
/// </summary>
/// <param name="series"></param>
/// <returns></returns>
public static bool IsAnyColorByDataSerie(List<Serie> series)
{
foreach (var serie in series)
{
if (serie.defaultColorBy == SerieColorBy.Data) return true;
}
return false;
}
/// <summary>
/// 获得上一个同堆叠且显示的serie。
/// </summary>