mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-28 20:28:46 +00:00
[bug][ring] fix ring label formatter (#195)
This commit is contained in:
@@ -138,7 +138,7 @@ namespace XCharts.Runtime
|
|||||||
var value = serie.GetData(bIndex, dimensionIndex, dataZoom);
|
var value = serie.GetData(bIndex, dimensionIndex, dataZoom);
|
||||||
if (isPercent)
|
if (isPercent)
|
||||||
{
|
{
|
||||||
var total = serie.GetDataTotal(dimensionIndex);
|
var total = serie.GetDataTotal(dimensionIndex, serie.GetSerieData(bIndex));
|
||||||
var percent = total == 0 ? 0 : value / serie.yTotal * 100;
|
var percent = total == 0 ? 0 : value / serie.yTotal * 100;
|
||||||
content = content.Replace(old, ChartCached.FloatToStr(percent, numericFormatter));
|
content = content.Replace(old, ChartCached.FloatToStr(percent, numericFormatter));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,5 +32,12 @@ namespace XCharts.Runtime
|
|||||||
chart.AddData(serie.index, value, max, "data1");
|
chart.AddData(serie.index, value, max, "data1");
|
||||||
return serie;
|
return serie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override double GetDataTotal(int dimension, SerieData serieData = null)
|
||||||
|
{
|
||||||
|
if (serieData == null || serieData.data.Count <= 1)
|
||||||
|
return base.GetDataTotal(dimension, serieData);
|
||||||
|
return serieData.GetData(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,22 +116,24 @@ namespace XCharts.Runtime
|
|||||||
var toAngle = serieData.context.toAngle;
|
var toAngle = serieData.context.toAngle;
|
||||||
switch (label.position)
|
switch (label.position)
|
||||||
{
|
{
|
||||||
case LabelStyle.Position.Center:
|
|
||||||
serieData.context.labelPosition = serie.context.center + label.offset;
|
|
||||||
break;
|
|
||||||
case LabelStyle.Position.Bottom:
|
case LabelStyle.Position.Bottom:
|
||||||
|
case LabelStyle.Position.Start:
|
||||||
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
|
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
|
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
var xDiff = serie.clockwise ? -label.distance : label.distance;
|
var xDiff = serie.clockwise ? -label.distance : label.distance;
|
||||||
serieData.context.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
|
serieData.context.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
|
||||||
break;
|
break;
|
||||||
case LabelStyle.Position.Top:
|
case LabelStyle.Position.Top:
|
||||||
|
case LabelStyle.Position.End:
|
||||||
startAngle += serie.clockwise ? -label.distance : label.distance;
|
startAngle += serie.clockwise ? -label.distance : label.distance;
|
||||||
toAngle += serie.clockwise ? label.distance : -label.distance;
|
toAngle += serie.clockwise ? label.distance : -label.distance;
|
||||||
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
|
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
|
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
serieData.context.labelPosition = serie.context.center + new Vector3(px2, py2);
|
serieData.context.labelPosition = serie.context.center + new Vector3(px2, py2);
|
||||||
break;
|
break;
|
||||||
|
default: //LabelStyle.Position.Center
|
||||||
|
serieData.context.labelPosition = serie.context.center + label.offset;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return serieData.context.labelPosition;
|
return serieData.context.labelPosition;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1431,7 +1431,7 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual double GetDataTotal(int dimension)
|
public virtual double GetDataTotal(int dimension, SerieData serieData = null)
|
||||||
{
|
{
|
||||||
if (m_Max > 0) return m_Max;
|
if (m_Max > 0) return m_Max;
|
||||||
|
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ namespace XCharts.Runtime
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName);
|
var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName);
|
||||||
var total = serie.GetDataTotal(defaultDimension);
|
|
||||||
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||||
|
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
@@ -333,6 +333,7 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
//var value = serieData.GetData(defaultDimension);
|
//var value = serieData.GetData(defaultDimension);
|
||||||
var value = serieData.GetCurrData(defaultDimension, dataChangeDuration);
|
var value = serieData.GetCurrData(defaultDimension, dataChangeDuration);
|
||||||
|
var total = serie.GetDataTotal(defaultDimension, serieData);
|
||||||
var content = string.IsNullOrEmpty(currLabel.formatter)
|
var content = string.IsNullOrEmpty(currLabel.formatter)
|
||||||
? ChartCached.NumberToStr(value, serieLabel.numericFormatter)
|
? ChartCached.NumberToStr(value, serieLabel.numericFormatter)
|
||||||
: SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
: SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
||||||
|
|||||||
Reference in New Issue
Block a user