mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-23 01:10:08 +00:00
3.0
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
@@ -34,8 +33,7 @@ namespace XCharts.Runtime
|
||||
public virtual void UpdateTooltipSerieParams(int dataIndex, bool showCategory,
|
||||
string category, string marker,
|
||||
string itemFormatter, string numericFormatter,
|
||||
ref List<SerieParams> paramList, ref string title)
|
||||
{ }
|
||||
ref List<SerieParams> paramList, ref string title) { }
|
||||
public virtual void OnLegendButtonClick(int index, string legendName, bool show) { }
|
||||
public virtual void OnLegendButtonEnter(int index, string legendName) { }
|
||||
public virtual void OnLegendButtonExit(int index, string legendName) { }
|
||||
@@ -63,7 +61,7 @@ namespace XCharts.Runtime
|
||||
|
||||
internal override void SetSerie(Serie serie)
|
||||
{
|
||||
this.serie = (T)serie;
|
||||
this.serie = (T) serie;
|
||||
this.serie.context.param.serieType = typeof(T);
|
||||
m_NeedInitComponent = true;
|
||||
AnimationStyleHelper.UpdateSerieAnimation(serie);
|
||||
@@ -119,6 +117,7 @@ namespace XCharts.Runtime
|
||||
if (serie.vertsDirty)
|
||||
{
|
||||
chart.RefreshPainter(serie);
|
||||
serie.ResetInteract();
|
||||
serie.ClearVerticesDirty();
|
||||
}
|
||||
}
|
||||
@@ -220,7 +219,7 @@ namespace XCharts.Runtime
|
||||
var serieData = serie.data[j];
|
||||
serieData.index = count;
|
||||
serieData.labelObject = null;
|
||||
if (AddSerieLabel(m_SerieLabelRoot, serie, serieData, ref count))
|
||||
if (AddSerieLabel(m_SerieLabelRoot, serieData, ref count))
|
||||
{
|
||||
m_InitedLabel = true;
|
||||
count++;
|
||||
@@ -229,7 +228,7 @@ namespace XCharts.Runtime
|
||||
RefreshLabelInternal();
|
||||
}
|
||||
|
||||
protected bool AddSerieLabel(GameObject serieLabelRoot, Serie serie, SerieData serieData, ref int count)
|
||||
protected bool AddSerieLabel(GameObject serieLabelRoot, SerieData serieData, ref int count)
|
||||
{
|
||||
if (serieData == null)
|
||||
return false;
|
||||
@@ -245,15 +244,14 @@ namespace XCharts.Runtime
|
||||
|
||||
var serieEmphasisLabel = SerieHelper.GetSerieEmphasisLabel(serie, serieData);
|
||||
|
||||
if (!serieLabel.show
|
||||
&& (serieEmphasisLabel == null || !serieEmphasisLabel.show))
|
||||
if (!serieLabel.show &&
|
||||
(serieEmphasisLabel == null || !serieEmphasisLabel.show))
|
||||
return false;
|
||||
|
||||
var colorIndex = serie.useDataNameForColor ? serieData.index : serie.index;
|
||||
var dataAutoColor = (Color)SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false);
|
||||
var dataAutoColor = GetSerieDataAutoColor(serieData);
|
||||
var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, serie.index, serieData.index);
|
||||
var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common,
|
||||
"", dataAutoColor, TextAnchor.MiddleCenter);
|
||||
"", dataAutoColor, TextAnchor.MiddleCenter);
|
||||
label.SetActive(serieLabel.show);
|
||||
serieData.labelObject = label;
|
||||
|
||||
@@ -261,7 +259,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
foreach (var childSerieData in serieData.context.children)
|
||||
{
|
||||
AddSerieLabel(serieLabelRoot, serie, childSerieData, ref count);
|
||||
AddSerieLabel(serieLabelRoot, childSerieData, ref count);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@@ -280,7 +278,7 @@ namespace XCharts.Runtime
|
||||
return;
|
||||
}
|
||||
InitRoot();
|
||||
var dataAutoColor = (Color)chart.GetLegendRealShowNameColor(serie.legendName);
|
||||
var dataAutoColor = (Color) chart.GetLegendRealShowNameColor(serie.legendName);
|
||||
m_EndLabel = ChartHelper.AddChartLabel(s_SerieEndLabelObjectName, m_SerieRoot.transform, serie.endLabel,
|
||||
chart.theme.common, "", dataAutoColor, TextAnchor.MiddleLeft);
|
||||
m_EndLabel.SetActive(serie.endLabel.show);
|
||||
@@ -297,19 +295,59 @@ namespace XCharts.Runtime
|
||||
ChartHelper.RemoveComponent<Text>(serieTitleRoot);
|
||||
|
||||
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
|
||||
if (serie.titleJustForSerie)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var titleStyle = SerieHelper.GetTitleStyle(serie, serieData);
|
||||
if (titleStyle == null) continue;
|
||||
var color = chart.GetItemColor(serie, serieData);
|
||||
var label = ChartHelper.AddChartLabel("title_" + i, serieTitleRoot.transform, titleStyle, chart.theme.common,
|
||||
serieData.name, color, TextAnchor.MiddleCenter);
|
||||
serieData.titleObject = label;
|
||||
label.SetActive(titleStyle.show);
|
||||
var labelPosition = GetSerieDataTitlePosition(serieData, titleStyle);
|
||||
var offset = titleStyle.GetOffset(serie.context.insideRadius);
|
||||
label.SetPosition(labelPosition + offset);
|
||||
var titleStyle = SerieHelper.GetTitleStyle(serie, null);
|
||||
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, 0, titleStyle.numericFormatter, serie, 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);
|
||||
var labelPosition = GetSerieDataTitlePosition(null, titleStyle);
|
||||
var offset = titleStyle.GetOffset(serie.context.insideRadius);
|
||||
label.SetPosition(labelPosition + offset);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var titleStyle = SerieHelper.GetTitleStyle(serie, serieData);
|
||||
if (titleStyle == null) continue;
|
||||
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, 0, titleStyle.numericFormatter, serie, chart);
|
||||
}
|
||||
FormatterHelper.ReplaceContent(ref content, i, titleStyle.numericFormatter, serie, chart);
|
||||
var label = ChartHelper.AddChartLabel("title_" + i, serieTitleRoot.transform, titleStyle, chart.theme.common,
|
||||
content, color, TextAnchor.MiddleCenter);
|
||||
serieData.titleObject = label;
|
||||
label.SetActive(titleStyle.show);
|
||||
var labelPosition = GetSerieDataTitlePosition(serieData, titleStyle);
|
||||
var offset = titleStyle.GetOffset(serie.context.insideRadius);
|
||||
label.SetPosition(labelPosition + offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +357,6 @@ namespace XCharts.Runtime
|
||||
return;
|
||||
|
||||
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (serieData.labelObject == null)
|
||||
@@ -329,23 +366,29 @@ namespace XCharts.Runtime
|
||||
var isHighlight = (serieData.context.highlight && emphasisLabel != null && emphasisLabel.show);
|
||||
var isIgnore = serie.IsIgnoreIndex(serieData.index, defaultDimension);
|
||||
var currLabel = isHighlight && emphasisLabel != null ? emphasisLabel : serieLabel;
|
||||
if (serie.show
|
||||
&& currLabel != null
|
||||
&& (currLabel.show || isHighlight)
|
||||
&& serieData.context.canShowLabel
|
||||
&& !isIgnore)
|
||||
if (serie.show &&
|
||||
currLabel != null &&
|
||||
(currLabel.show || isHighlight) &&
|
||||
serieData.context.canShowLabel &&
|
||||
!isIgnore)
|
||||
{
|
||||
var value = serieData.GetCurrData(defaultDimension, dataChangeDuration);
|
||||
var total = serie.GetDataTotal(defaultDimension, serieData);
|
||||
var color = chart.GetItemColor(serie, serieData);
|
||||
var content = string.IsNullOrEmpty(currLabel.formatter)
|
||||
? ChartCached.NumberToStr(value, serieLabel.numericFormatter)
|
||||
: SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
||||
var content = string.IsNullOrEmpty(currLabel.formatter) ?
|
||||
ChartCached.NumberToStr(value, serieLabel.numericFormatter) :
|
||||
SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
||||
currLabel, color);
|
||||
serieData.SetLabelActive(!isIgnore);
|
||||
|
||||
serieData.labelObject.SetText(content);
|
||||
UpdateLabelPosition(serieData, currLabel);
|
||||
if (currLabel.textStyle.autoColor)
|
||||
{
|
||||
var dataAutoColor = GetSerieDataAutoColor(serieData);
|
||||
if (!ChartHelper.IsClearColor(dataAutoColor))
|
||||
serieData.labelObject.SetTextColor(dataAutoColor);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -368,7 +411,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
var value = serie.context.lineEndValue;
|
||||
var content = SerieLabelHelper.GetFormatterContent(serie, null, value, 0,
|
||||
endLabelStyle, Color.clear);
|
||||
endLabelStyle, Color.clear);
|
||||
m_EndLabel.SetText(content);
|
||||
m_EndLabel.SetPosition(serie.context.lineEndPostion + endLabelStyle.offset);
|
||||
}
|
||||
@@ -384,9 +427,9 @@ namespace XCharts.Runtime
|
||||
|
||||
public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)
|
||||
{
|
||||
return ChartHelper.IsZeroVector(serieData.context.labelPosition)
|
||||
? serieData.context.position
|
||||
: serieData.context.labelPosition;
|
||||
return ChartHelper.IsZeroVector(serieData.context.labelPosition) ?
|
||||
serieData.context.position :
|
||||
serieData.context.labelPosition;
|
||||
}
|
||||
|
||||
public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)
|
||||
@@ -399,6 +442,12 @@ namespace XCharts.Runtime
|
||||
return serieData.context.position;
|
||||
}
|
||||
|
||||
public virtual Color GetSerieDataAutoColor(SerieData serieData)
|
||||
{
|
||||
var colorIndex = serie.useDataNameForColor ? serieData.index : serie.index;
|
||||
return (Color) SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false, false);
|
||||
}
|
||||
|
||||
protected void UpdateCoordSerieParams(ref List<SerieParams> paramList, ref string title,
|
||||
int dataIndex, bool showCategory, string category, string marker,
|
||||
string itemFormatter, string numericFormatter)
|
||||
@@ -423,6 +472,7 @@ namespace XCharts.Runtime
|
||||
param.category = category;
|
||||
param.dimension = 1;
|
||||
param.serieData = serieData;
|
||||
param.dataCount = serie.dataCount;
|
||||
param.value = serieData.GetData(1);
|
||||
param.total = serie.yTotal;
|
||||
param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false);
|
||||
@@ -464,6 +514,7 @@ namespace XCharts.Runtime
|
||||
param.category = category;
|
||||
param.dimension = dimension;
|
||||
param.serieData = serieData;
|
||||
param.dataCount = serie.dataCount;
|
||||
param.value = serieData.GetData(param.dimension);
|
||||
param.total = SerieHelper.GetMaxData(serie, dimension);
|
||||
param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false);
|
||||
|
||||
Reference in New Issue
Block a user