2020-07-06 08:41:28 +08:00
|
|
|
using System.Collections.Generic;
|
2020-03-08 10:47:48 +08:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
2022-02-19 22:37:57 +08:00
|
|
|
namespace XCharts.Runtime
|
2020-03-08 10:47:48 +08:00
|
|
|
{
|
2021-04-22 18:55:56 +08:00
|
|
|
public static class SerieLabelHelper
|
2020-03-08 10:47:48 +08:00
|
|
|
{
|
|
|
|
|
|
2021-11-23 13:20:07 +08:00
|
|
|
public static Color GetLabelColor(Serie serie, ThemeStyle theme, int index)
|
2020-03-08 10:47:48 +08:00
|
|
|
{
|
2021-12-28 08:18:24 +08:00
|
|
|
if (serie.label != null && !ChartHelper.IsClearColor(serie.label.textStyle.color))
|
2020-03-08 10:47:48 +08:00
|
|
|
{
|
2021-01-11 08:54:28 +08:00
|
|
|
return serie.label.textStyle.color;
|
2020-03-08 10:47:48 +08:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2021-01-11 08:54:28 +08:00
|
|
|
return theme.GetColor(index);
|
2020-03-08 10:47:48 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-23 13:20:07 +08:00
|
|
|
public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
|
2020-05-30 10:27:54 +08:00
|
|
|
{
|
2021-12-09 07:12:15 +08:00
|
|
|
return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
|
2020-05-30 10:27:54 +08:00
|
|
|
}
|
|
|
|
|
|
2020-05-04 13:29:56 +08:00
|
|
|
public static string GetFormatterContent(Serie serie, SerieData serieData,
|
2024-01-23 22:56:03 +08:00
|
|
|
double dataValue, double dataTotal, LabelStyle serieLabel, Color color, BaseChart chart = null)
|
2020-05-04 13:29:56 +08:00
|
|
|
{
|
|
|
|
|
if (serieLabel == null)
|
|
|
|
|
{
|
|
|
|
|
serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
|
|
|
|
}
|
2021-12-28 08:18:24 +08:00
|
|
|
var numericFormatter = serieLabel == null ? "" : serieLabel.numericFormatter;
|
2021-11-23 13:20:07 +08:00
|
|
|
var serieName = serie.serieName;
|
2020-05-04 13:29:56 +08:00
|
|
|
var dataName = serieData != null ? serieData.name : null;
|
2022-07-03 21:09:49 +08:00
|
|
|
if (string.IsNullOrEmpty(serieLabel.formatter))
|
2021-06-27 12:26:20 +08:00
|
|
|
{
|
2022-07-03 21:09:49 +08:00
|
|
|
var currentContent = ChartCached.NumberToStr(dataValue, numericFormatter);
|
|
|
|
|
if (serieLabel.formatterFunction == null)
|
|
|
|
|
return currentContent;
|
|
|
|
|
else
|
|
|
|
|
return serieLabel.formatterFunction(serieData.index, dataValue, null, currentContent);
|
2021-06-27 12:26:20 +08:00
|
|
|
}
|
2020-05-04 13:29:56 +08:00
|
|
|
else
|
|
|
|
|
{
|
2020-07-21 09:13:51 +08:00
|
|
|
var content = serieLabel.formatter;
|
2022-05-22 22:17:38 +08:00
|
|
|
FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, dataValue,
|
2024-01-23 22:56:03 +08:00
|
|
|
dataTotal, serieName, dataName, dataName, color, serieData, chart);
|
2022-07-03 21:09:49 +08:00
|
|
|
if (serieLabel.formatterFunction == null)
|
|
|
|
|
return content;
|
|
|
|
|
else
|
|
|
|
|
return serieLabel.formatterFunction(serieData.index, dataValue, null, content);
|
2020-05-04 13:29:56 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-11 08:54:28 +08:00
|
|
|
public static void SetGaugeLabelText(Serie serie)
|
2020-03-08 10:47:48 +08:00
|
|
|
{
|
|
|
|
|
var serieData = serie.GetSerieData(0);
|
2020-05-13 09:54:40 +08:00
|
|
|
if (serieData == null) return;
|
|
|
|
|
if (serieData.labelObject == null) return;
|
2021-12-28 08:18:24 +08:00
|
|
|
var label = SerieHelper.GetSerieLabel(serie, serieData);
|
2021-12-31 13:00:17 +08:00
|
|
|
if (label == null) return;
|
2020-05-13 09:54:40 +08:00
|
|
|
var value = serieData.GetData(1);
|
|
|
|
|
var total = serie.max;
|
2021-04-22 18:55:56 +08:00
|
|
|
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, null, Color.clear);
|
2020-05-13 09:54:40 +08:00
|
|
|
serieData.labelObject.SetText(content);
|
2022-04-26 08:24:45 +08:00
|
|
|
serieData.labelObject.SetPosition(serie.context.center + label.offset);
|
2021-12-28 08:18:24 +08:00
|
|
|
if (!ChartHelper.IsClearColor(label.textStyle.color))
|
2020-03-08 10:47:48 +08:00
|
|
|
{
|
2022-04-26 08:24:45 +08:00
|
|
|
serieData.labelObject.text.SetColor(label.textStyle.color);
|
2020-03-08 10:47:48 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|