mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-21 16:00:24 +00:00
3.0 - serie data context
This commit is contained in:
@@ -80,7 +80,7 @@ namespace XCharts
|
||||
|
||||
public static void ResetItemPosition(Legend legend, Vector3 chartPos, float chartWidth, float chartHeight)
|
||||
{
|
||||
legend.location.UpdateRuntimeData(chartWidth,chartHeight);
|
||||
legend.location.UpdateRuntimeData(chartWidth, chartHeight);
|
||||
var startX = 0f;
|
||||
var startY = 0f;
|
||||
var legendMaxWidth = chartWidth - legend.location.runtimeLeft - legend.location.runtimeRight;
|
||||
@@ -252,7 +252,7 @@ namespace XCharts
|
||||
if (legendName.Equals(data.name))
|
||||
{
|
||||
data.show = show;
|
||||
data.highlighted = false;
|
||||
data.context.highlighted = false;
|
||||
if (data.show) needShow = true;
|
||||
}
|
||||
}
|
||||
@@ -276,8 +276,8 @@ namespace XCharts
|
||||
{
|
||||
if (legendName.Equals(data.name))
|
||||
{
|
||||
data.highlighted = heighlight;
|
||||
if (data.highlighted) show = true;
|
||||
data.context.highlighted = heighlight;
|
||||
if (data.context.highlighted) show = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,11 +291,11 @@ namespace XCharts
|
||||
if (System.Math.Abs(dist) <= symbolSize)
|
||||
{
|
||||
serie.context.pointerAxisDataIndexs.Add(i);
|
||||
serieData.highlighted = true;
|
||||
serieData.context.highlighted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.highlighted = false;
|
||||
serieData.context.highlighted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace XCharts
|
||||
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
|
||||
if (isCartesian)
|
||||
{
|
||||
if (serieData != null && serieData.highlighted)
|
||||
if (serieData != null && serieData.context.highlighted)
|
||||
{
|
||||
sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : "");
|
||||
sb.Append("[").Append(ChartCached.FloatToStr(xValue, numericFormatter)).Append(",")
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace XCharts
|
||||
|
||||
public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
|
||||
{
|
||||
return serie.show && serieData.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
|
||||
return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
|
||||
}
|
||||
|
||||
public static string GetFormatterContent(Serie serie, SerieData serieData,
|
||||
@@ -125,7 +125,7 @@ namespace XCharts
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.highlighted);
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.context.highlighted);
|
||||
if (serieLabel.show && serieData.labelObject != null)
|
||||
{
|
||||
if (!serie.show || !serieData.show)
|
||||
@@ -144,13 +144,13 @@ namespace XCharts
|
||||
{
|
||||
var labelWidth = serieData.GetLabelWidth();
|
||||
if (serie.clockwise)
|
||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition - new Vector3(labelWidth / 2, 0));
|
||||
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition - new Vector3(labelWidth / 2, 0));
|
||||
else
|
||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition + new Vector3(labelWidth / 2, 0));
|
||||
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition + new Vector3(labelWidth / 2, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition);
|
||||
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,7 +160,7 @@ namespace XCharts
|
||||
{
|
||||
var serieData = serie.GetSerieData(0);
|
||||
if (serieData == null) return;
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.highlighted);
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.context.highlighted);
|
||||
if (serieLabel.show && serieData.labelObject != null)
|
||||
{
|
||||
if (!serie.show || !serieData.show)
|
||||
@@ -174,30 +174,30 @@ namespace XCharts
|
||||
serieData.SetLabelActive(true);
|
||||
serieData.labelObject.SetText(content);
|
||||
serieData.labelObject.SetTextColor(GetLabelColor(serie, theme, colorIndex));
|
||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition + serieLabel.offset);
|
||||
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition + serieLabel.offset);
|
||||
}
|
||||
}
|
||||
|
||||
public static void UpdatePieLabelPosition(Serie serie, SerieData serieData)
|
||||
{
|
||||
if (serieData.labelObject == null) return;
|
||||
var currAngle = serieData.runtimePieHalfAngle;
|
||||
var currAngle = serieData.context.halfAngle;
|
||||
var currRad = currAngle * Mathf.Deg2Rad;
|
||||
var offsetRadius = serieData.runtimePieOffsetRadius;
|
||||
var insideRadius = serieData.runtimePieInsideRadius;
|
||||
var outsideRadius = serieData.runtimePieOutsideRadius;
|
||||
var offsetRadius = serieData.context.offsetRadius;
|
||||
var insideRadius = serieData.context.insideRadius;
|
||||
var outsideRadius = serieData.context.outsideRadius;
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||
var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
|
||||
switch (serieLabel.position)
|
||||
{
|
||||
case LabelStyle.Position.Center:
|
||||
serieData.labelPosition = serie.context.center;
|
||||
serieData.context.labelPosition = serie.context.center;
|
||||
break;
|
||||
case LabelStyle.Position.Inside:
|
||||
var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2 + serieLabel.margin;
|
||||
var labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
|
||||
serie.context.center.y + labelRadius * Mathf.Cos(currRad));
|
||||
serieData.labelPosition = labelCenter;
|
||||
serieData.context.labelPosition = labelCenter;
|
||||
break;
|
||||
case LabelStyle.Position.Outside:
|
||||
if (labelLine.lineType == LabelLine.LineType.HorizontalLine)
|
||||
@@ -215,14 +215,14 @@ namespace XCharts
|
||||
var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos * radius3, 2)) - currSin * radius3;
|
||||
r4 += labelLine.lineLength1 + labelLine.lineWidth * 4;
|
||||
r4 += serieData.labelObject.label.GetPreferredWidth() / 2;
|
||||
serieData.labelPosition = pos0 + (currAngle > 180 ? Vector3.left : Vector3.right) * r4;
|
||||
serieData.context.labelPosition = pos0 + (currAngle > 180 ? Vector3.left : Vector3.right) * r4;
|
||||
}
|
||||
else
|
||||
{
|
||||
labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
|
||||
labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
|
||||
serie.context.center.y + labelRadius * Mathf.Cos(currRad));
|
||||
serieData.labelPosition = labelCenter;
|
||||
serieData.context.labelPosition = labelCenter;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -237,7 +237,7 @@ namespace XCharts
|
||||
for (int n = 0; n < data.Count; n++)
|
||||
{
|
||||
var serieData = data[n];
|
||||
if (serieData.labelPosition.x != 0 && serieData.labelPosition.x < serie.context.center.x)
|
||||
if (serieData.context.labelPosition.x != 0 && serieData.context.labelPosition.x < serie.context.center.x)
|
||||
{
|
||||
splitCount = n;
|
||||
break;
|
||||
@@ -257,7 +257,7 @@ namespace XCharts
|
||||
private static void CheckSerieDataLabel(Serie serie, SerieData serieData, bool isLeft, ComponentTheme theme,
|
||||
ref Vector3 lastCheckPos)
|
||||
{
|
||||
if (!serieData.canShowLabel)
|
||||
if (!serieData.context.canShowLabel)
|
||||
{
|
||||
serieData.SetLabelActive(false);
|
||||
return;
|
||||
@@ -270,11 +270,11 @@ namespace XCharts
|
||||
if (serieLabel.position != LabelStyle.Position.Outside) return;
|
||||
if (lastCheckPos == Vector3.zero)
|
||||
{
|
||||
lastCheckPos = serieData.labelPosition;
|
||||
lastCheckPos = serieData.context.labelPosition;
|
||||
}
|
||||
else if (serieData.labelPosition.x != 0)
|
||||
else if (serieData.context.labelPosition.x != 0)
|
||||
{
|
||||
if (lastCheckPos.y - serieData.labelPosition.y < fontSize)
|
||||
if (lastCheckPos.y - serieData.context.labelPosition.y < fontSize)
|
||||
{
|
||||
var labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
|
||||
var y1 = lastCheckPos.y - fontSize;
|
||||
@@ -283,9 +283,9 @@ namespace XCharts
|
||||
var diffX = labelRadius * labelRadius - diff * diff;
|
||||
diffX = diffX <= 0 ? 0 : diffX;
|
||||
var x1 = serie.context.center.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1);
|
||||
serieData.labelPosition = new Vector3(x1, y1);
|
||||
serieData.context.labelPosition = new Vector3(x1, y1);
|
||||
}
|
||||
lastCheckPos = serieData.labelPosition;
|
||||
lastCheckPos = serieData.context.labelPosition;
|
||||
serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serieData, serieLabel, labelLine));
|
||||
}
|
||||
}
|
||||
@@ -294,16 +294,16 @@ namespace XCharts
|
||||
{
|
||||
if (label.position == LabelStyle.Position.Outside && labelLine.lineType != LabelLine.LineType.HorizontalLine)
|
||||
{
|
||||
var currAngle = serieData.runtimePieHalfAngle;
|
||||
var currAngle = serieData.context.halfAngle;
|
||||
var offset = labelLine.lineLength2 + serieData.labelObject.GetLabelWidth() / 2;
|
||||
if (currAngle > 180)
|
||||
return serieData.labelPosition + new Vector3(-offset, 0, 0);
|
||||
return serieData.context.labelPosition + new Vector3(-offset, 0, 0);
|
||||
else
|
||||
return serieData.labelPosition + new Vector3(offset, 0, 0);
|
||||
return serieData.context.labelPosition + new Vector3(offset, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return serieData.labelPosition;
|
||||
return serieData.context.labelPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -389,7 +389,8 @@ namespace XCharts
|
||||
{
|
||||
var serie = series[i];
|
||||
if ((isPolar && serie.polarIndex != axisIndex)
|
||||
|| (!isPolar && serie.yAxisIndex != axisIndex)) continue;
|
||||
|| (!isPolar && serie.yAxisIndex != axisIndex)
|
||||
|| !serie.show) continue;
|
||||
if (isPercentStack && SeriesHelper.IsPercentStack<Bar>(series, serie.serieName))
|
||||
{
|
||||
if (100 > max) max = 100;
|
||||
@@ -431,7 +432,8 @@ namespace XCharts
|
||||
{
|
||||
var serie = ss.Value[i];
|
||||
if ((isPolar && serie.polarIndex != axisIndex)
|
||||
|| (!isPolar && serie.yAxisIndex != axisIndex)) continue;
|
||||
|| (!isPolar && serie.yAxisIndex != axisIndex)
|
||||
|| !serie.show) continue;
|
||||
var showData = serie.GetDataList(dataZoom);
|
||||
if (SeriesHelper.IsPercentStack<Bar>(series, serie.stack))
|
||||
{
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/******************************************/
|
||||
/* */
|
||||
/* Copyright (c) 2021 monitor1394 */
|
||||
/* https://github.com/monitor1394 */
|
||||
/* */
|
||||
/******************************************/
|
||||
using System;
|
||||
|
||||
namespace XCharts
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
||||
public sealed class SerieConvertAttribute : Attribute
|
||||
{
|
||||
public readonly Type type0;
|
||||
public readonly Type type1;
|
||||
public readonly Type type2;
|
||||
public readonly Type type3;
|
||||
|
||||
public SerieConvertAttribute(Type serie)
|
||||
{
|
||||
type0 = serie;
|
||||
}
|
||||
public SerieConvertAttribute(Type serie, Type serie2)
|
||||
{
|
||||
type0 = serie;
|
||||
type1 = serie2;
|
||||
}
|
||||
public SerieConvertAttribute(Type serie, Type serie2, Type serie3)
|
||||
{
|
||||
type0 = serie;
|
||||
type1 = serie2;
|
||||
type2 = serie3;
|
||||
}
|
||||
public SerieConvertAttribute(Type serie, Type serie2, Type serie3, Type serie4)
|
||||
{
|
||||
type0 = serie;
|
||||
type1 = serie2;
|
||||
type2 = serie3;
|
||||
type3 = serie4;
|
||||
}
|
||||
|
||||
public bool Contains<T>() where T : CoordSystem
|
||||
{
|
||||
var type = typeof(T);
|
||||
return (type == type0 || type == type1 || type == type2 || type == type3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74af4595d38cb43ca8f11348cc979137
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -185,21 +185,26 @@ namespace XCharts
|
||||
|
||||
public bool SetText(string text)
|
||||
{
|
||||
if (m_LabelRect == null) return false;
|
||||
if (m_LabelText != null && !m_LabelText.GetText().Equals(text))
|
||||
if (m_LabelRect == null || m_LabelText == null)
|
||||
return false;
|
||||
|
||||
if (text == null)
|
||||
text = "";
|
||||
if (!m_LabelText.GetText().Equals(text))
|
||||
{
|
||||
m_LabelText.SetText(text);
|
||||
if (m_LabelAutoSize)
|
||||
{
|
||||
var newSize = string.IsNullOrEmpty(text) ? Vector2.zero :
|
||||
new Vector2(m_LabelText.GetPreferredWidth() + m_LabelPaddingLeftRight * 2,
|
||||
m_LabelText.GetPreferredHeight() + m_LabelPaddingTopBottom * 2);
|
||||
m_LabelText.GetPreferredHeight() + m_LabelPaddingTopBottom * 2);
|
||||
var sizeChange = newSize.x != m_LabelRect.sizeDelta.x || newSize.y != m_LabelRect.sizeDelta.y;
|
||||
if (sizeChange)
|
||||
{
|
||||
m_LabelRect.sizeDelta = newSize;
|
||||
if (m_LabelBackgroundRect != null)
|
||||
m_LabelBackgroundRect.sizeDelta = newSize;
|
||||
|
||||
AdjustIconPos();
|
||||
}
|
||||
return sizeChange;
|
||||
|
||||
@@ -81,16 +81,16 @@ namespace XCharts
|
||||
serie.context.pointerEnter = false;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (serieData.runtimeRect.Contains(chart.pointerPos))
|
||||
if (serieData.context.rect.Contains(chart.pointerPos))
|
||||
{
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.context.pointerEnter = true;
|
||||
serieData.highlighted = true;
|
||||
serieData.context.highlighted = true;
|
||||
chart.RefreshTopPainter();
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.highlighted = false;
|
||||
serieData.context.highlighted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -137,11 +137,11 @@ namespace XCharts
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
continue;
|
||||
}
|
||||
var highlight = serie.data[i].highlighted
|
||||
var highlight = serie.data[i].context.highlighted
|
||||
|| serie.highlighted;
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
||||
|
||||
serieData.canShowLabel = true;
|
||||
serieData.context.canShowLabel = true;
|
||||
double value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xMinValue, xMaxValue);
|
||||
float borderWidth = value == 0 ? 0 : itemStyle.runtimeBorderWidth;
|
||||
if (showData[i].IsDataChanged()) dataChanging = true;
|
||||
@@ -155,7 +155,7 @@ namespace XCharts
|
||||
{
|
||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||
{
|
||||
pX += m_StackSerieData[n][i].runtimeStackHig;
|
||||
pX += m_StackSerieData[n][i].context.stackHeight;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,7 +182,7 @@ namespace XCharts
|
||||
/ valueTotal * grid.context.width);
|
||||
}
|
||||
}
|
||||
serieData.runtimeStackHig = barHig;
|
||||
serieData.context.stackHeight = barHig;
|
||||
var isBarEnd = false;
|
||||
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
||||
if (!isBarEnd) isAllBarEnd = false;
|
||||
@@ -210,7 +210,7 @@ namespace XCharts
|
||||
plb = chart.ClampInGrid(grid, plb);
|
||||
top = chart.ClampInGrid(grid, top);
|
||||
}
|
||||
serieData.runtimeRect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||
serieData.context.rect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||
serie.context.dataPoints.Add(top);
|
||||
if (serie.show)
|
||||
{
|
||||
@@ -281,7 +281,7 @@ namespace XCharts
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
continue;
|
||||
}
|
||||
var highlight = serie.data[i].highlighted
|
||||
var highlight = serie.data[i].context.highlighted
|
||||
|| serie.highlighted;
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
||||
double value = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||
@@ -307,7 +307,7 @@ namespace XCharts
|
||||
{
|
||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||
{
|
||||
pY += m_StackSerieData[n][i].runtimeStackHig;
|
||||
pY += m_StackSerieData[n][i].context.stackHeight;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,7 +335,7 @@ namespace XCharts
|
||||
}
|
||||
}
|
||||
}
|
||||
serieData.runtimeStackHig = barHig;
|
||||
serieData.context.stackHeight = barHig;
|
||||
var isBarEnd = false;
|
||||
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
||||
if (!isBarEnd) isAllBarEnd = false;
|
||||
@@ -363,7 +363,7 @@ namespace XCharts
|
||||
prb = chart.ClampInGrid(grid, prb);
|
||||
top = chart.ClampInGrid(grid, top);
|
||||
}
|
||||
serieData.runtimeRect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||
serieData.context.rect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||
serie.context.dataPoints.Add(top);
|
||||
if (serie.show && currHig != 0)
|
||||
{
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace XCharts
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
continue;
|
||||
}
|
||||
var highlight = serie.data[i].highlighted || serie.highlighted;
|
||||
var highlight = serie.data[i].context.highlighted || serie.highlighted;
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
||||
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||
@@ -79,7 +79,7 @@ namespace XCharts
|
||||
barHig = (float)((close - open) / valueTotal * grid.context.height);
|
||||
pY += (float)((open - minCut) / valueTotal * grid.context.height);
|
||||
}
|
||||
serieData.runtimeStackHig = barHig;
|
||||
serieData.context.stackHeight = barHig;
|
||||
var isBarEnd = false;
|
||||
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
||||
if (!isBarEnd) isAllBarEnd = false;
|
||||
|
||||
@@ -298,7 +298,7 @@ namespace XCharts
|
||||
if (serie.dataCount > 0)
|
||||
{
|
||||
var serieData = serie.data[0];
|
||||
serieData.labelPosition = serie.context.center + serie.label.offset;
|
||||
serieData.context.labelPosition = serie.context.center + serie.label.offset;
|
||||
value = dest ? serieData.GetData(1)
|
||||
: serieData.GetCurrData(1, serie.animation.GetUpdateAnimationDuration());
|
||||
value = MathUtil.Clamp(value, serie.min, serie.max);
|
||||
|
||||
@@ -40,16 +40,16 @@ namespace XCharts
|
||||
if (!grid.IsPointerEnter()) return;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (serieData.runtimeRect.Contains(chart.pointerPos))
|
||||
if (serieData.context.rect.Contains(chart.pointerPos))
|
||||
{
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.context.pointerEnter = true;
|
||||
serieData.highlighted = true;
|
||||
serieData.context.highlighted = true;
|
||||
chart.RefreshTopPainter();
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.highlighted = false;
|
||||
serieData.context.highlighted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -110,8 +110,8 @@ namespace XCharts
|
||||
var pos = new Vector3(zeroX + (i + (xAxis.boundaryGap ? 0.5f : 0)) * xWidth,
|
||||
zeroY + (j + (yAxis.boundaryGap ? 0.5f : 0)) * yWidth);
|
||||
serie.context.dataPoints.Add(pos);
|
||||
serieData.canShowLabel = false;
|
||||
serieData.runtimeRect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
||||
serieData.context.canShowLabel = false;
|
||||
serieData.context.rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
||||
if (value == 0) continue;
|
||||
if ((value < rangeMin && rangeMin != visualMap.min)
|
||||
|| (value > rangeMax && rangeMax != visualMap.max))
|
||||
@@ -121,8 +121,8 @@ namespace XCharts
|
||||
if (!visualMap.IsInSelectedValue(value)) continue;
|
||||
color = visualMap.GetColor(value);
|
||||
if (animationIndex >= 0 && i > animationIndex) continue;
|
||||
serieData.canShowLabel = true;
|
||||
var emphasis = (serieData.highlighted)
|
||||
serieData.context.canShowLabel = true;
|
||||
var emphasis = (serieData.context.highlighted)
|
||||
|| visualMap.context.pointerIndex > 0;
|
||||
|
||||
UGL.DrawRectangle(vh, pos, rectWid / 2, rectHig / 2, color);
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace XCharts
|
||||
{
|
||||
[Serializable]
|
||||
[SerieHandler(typeof(LineHandler), true)]
|
||||
[SerieConvert(typeof(Bar))]
|
||||
[CoordOptions(typeof(GridCoord), typeof(PolarCoord))]
|
||||
public class Line : Serie, INeedSerieContainer
|
||||
{
|
||||
|
||||
@@ -137,7 +137,7 @@ namespace XCharts
|
||||
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
var dist = Vector3.Distance(chart.pointerPos, serieData.runtimePosition);
|
||||
var dist = Vector3.Distance(chart.pointerPos, serieData.context.position);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
|
||||
@@ -145,12 +145,12 @@ namespace XCharts
|
||||
{
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.context.pointerEnter = true;
|
||||
serieData.highlighted = true;
|
||||
serieData.context.highlighted = true;
|
||||
chart.RefreshTopPainter();
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.highlighted = false;
|
||||
serieData.context.highlighted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -193,7 +193,7 @@ namespace XCharts
|
||||
if (ChartHelper.IsIngore(serie.context.dataPoints[i]))
|
||||
continue;
|
||||
|
||||
var highlight = serie.data[i].highlighted || serie.highlighted;
|
||||
var highlight = serie.data[i].context.highlighted || serie.highlighted;
|
||||
var symbolSize = highlight
|
||||
? symbol.GetSelectedSize(serie.data[i].data, theme.serie.lineSymbolSelectedSize)
|
||||
: symbol.GetSize(serie.data[i].data, theme.serie.lineSymbolSize);
|
||||
@@ -321,8 +321,8 @@ namespace XCharts
|
||||
var isIgnore = serie.IsIgnoreValue(serieData);
|
||||
if (isIgnore)
|
||||
{
|
||||
serieData.runtimeStackHig = 0;
|
||||
serieData.runtimePosition = Vector3.zero;
|
||||
serieData.context.stackHeight = 0;
|
||||
serieData.context.position = Vector3.zero;
|
||||
if (serie.ignoreLineBreak && serie.context.dataIgnore.Count > 0)
|
||||
{
|
||||
serie.context.dataIgnore[serie.context.dataIgnore.Count - 1] = true;
|
||||
@@ -335,10 +335,10 @@ namespace XCharts
|
||||
var relativedValue = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow,
|
||||
maxCount, totalAverage, i, dataChangeDuration, ref dataChanging, relativedAxis);
|
||||
|
||||
serieData.runtimeStackHig = GetDataPoint(isY, axis, relativedAxis, grid, xValue, relativedValue,
|
||||
serieData.context.stackHeight = GetDataPoint(isY, axis, relativedAxis, grid, xValue, relativedValue,
|
||||
i, scaleWid, isStack, ref np);
|
||||
|
||||
serieData.runtimePosition = np;
|
||||
serieData.context.position = np;
|
||||
|
||||
serie.context.dataPoints.Add(np);
|
||||
serie.context.dataIgnore.Add(false);
|
||||
@@ -382,7 +382,7 @@ namespace XCharts
|
||||
if (isStack)
|
||||
{
|
||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||
yPos += m_StackSerieData[n][i].runtimeStackHig;
|
||||
yPos += m_StackSerieData[n][i].context.stackHeight;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -392,7 +392,7 @@ namespace XCharts
|
||||
if (isStack)
|
||||
{
|
||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||
xPos += m_StackSerieData[n][i].runtimeStackHig;
|
||||
xPos += m_StackSerieData[n][i].context.stackHeight;
|
||||
}
|
||||
}
|
||||
np = new Vector3(xPos, yPos);
|
||||
|
||||
@@ -83,12 +83,12 @@ namespace XCharts
|
||||
{
|
||||
var serieData = serie.GetSerieData(i);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
if (ChartHelper.IsIngore(serieData.runtimePosition))
|
||||
if (ChartHelper.IsIngore(serieData.context.position))
|
||||
continue;
|
||||
|
||||
bool highlight = serieData.highlighted || serie.highlighted;
|
||||
bool highlight = serieData.context.highlighted || serie.highlighted;
|
||||
if ((!symbol.show || !symbol.ShowSymbol(i, count) || serie.IsPerformanceMode())
|
||||
&& !serieData.highlighted)
|
||||
&& !serieData.context.highlighted)
|
||||
continue;
|
||||
|
||||
var symbolSize = highlight
|
||||
@@ -102,7 +102,7 @@ namespace XCharts
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight);
|
||||
|
||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.runtimePosition,
|
||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.context.position,
|
||||
symbolColor, symbolToColor, symbolEmptyColor, symbol.gap, cornerRadius);
|
||||
}
|
||||
}
|
||||
@@ -126,10 +126,10 @@ namespace XCharts
|
||||
var radius = (float)((value - min) / (max - min) * polarRadius);
|
||||
|
||||
angle = (angle + 360) % 360;
|
||||
serieData.runtimeAngle = angle;
|
||||
serieData.runtimePosition = ChartHelper.GetPos(m_Polar.context.center, radius, angle, true);
|
||||
serieData.context.angle = angle;
|
||||
serieData.context.position = ChartHelper.GetPos(m_Polar.context.center, radius, angle, true);
|
||||
|
||||
return serieData.runtimePosition;
|
||||
return serieData.context.position;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,9 +160,9 @@ namespace XCharts
|
||||
serie.context.checkValue = value;
|
||||
m_UpdateLabelText = true;
|
||||
}
|
||||
if (serieData.labelPosition != cenPos)
|
||||
if (serieData.context.labelPosition != cenPos)
|
||||
{
|
||||
serieData.labelPosition = cenPos;
|
||||
serieData.context.labelPosition = cenPos;
|
||||
m_UpdateLabelText = true;
|
||||
}
|
||||
if (value <= 0) return;
|
||||
@@ -273,9 +273,9 @@ namespace XCharts
|
||||
serie.context.checkValue = value;
|
||||
m_UpdateLabelText = true;
|
||||
}
|
||||
if (serieData.labelPosition != cenPos)
|
||||
if (serieData.context.labelPosition != cenPos)
|
||||
{
|
||||
serieData.labelPosition = cenPos;
|
||||
serieData.context.labelPosition = cenPos;
|
||||
m_UpdateLabelText = true;
|
||||
}
|
||||
if (value <= 0) return;
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace XCharts
|
||||
for (int n = 0; n < data.Count; n++)
|
||||
{
|
||||
var serieData = data[n];
|
||||
if (!serieData.canShowLabel || serie.IsIgnoreValue(serieData))
|
||||
if (!serieData.context.canShowLabel || serie.IsIgnoreValue(serieData))
|
||||
{
|
||||
serieData.SetLabelActive(false);
|
||||
continue;
|
||||
@@ -133,16 +133,16 @@ namespace XCharts
|
||||
if (dataIndex >= 0)
|
||||
{
|
||||
if (lastDataIndex >= 0)
|
||||
serie.GetSerieData(lastDataIndex).highlighted = false;
|
||||
serie.GetSerieData(lastDataIndex).context.highlighted = false;
|
||||
if (lastDataIndex != dataIndex)
|
||||
chart.RefreshPainter(serie);
|
||||
serie.GetSerieData(dataIndex).highlighted = true;
|
||||
serie.GetSerieData(dataIndex).context.highlighted = true;
|
||||
serie.context.pointerItemDataIndex = dataIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lastDataIndex >= 0)
|
||||
serie.GetSerieData(lastDataIndex).highlighted = false;
|
||||
serie.GetSerieData(lastDataIndex).context.highlighted = false;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
}
|
||||
}
|
||||
@@ -151,7 +151,7 @@ namespace XCharts
|
||||
if (lastPointerEnter)
|
||||
{
|
||||
foreach (var serieData in serie.data)
|
||||
serieData.highlighted = false;
|
||||
serieData.context.highlighted = false;
|
||||
}
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
}
|
||||
@@ -171,7 +171,7 @@ namespace XCharts
|
||||
foreach (var sd in serie.data)
|
||||
{
|
||||
if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++;
|
||||
sd.canShowLabel = false;
|
||||
sd.context.canShowLabel = false;
|
||||
}
|
||||
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
bool isAllZeroValue = SerieHelper.IsAllZeroValue(serie, 1);
|
||||
@@ -194,10 +194,10 @@ namespace XCharts
|
||||
var serieData = data[n];
|
||||
serieData.index = n;
|
||||
var value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration);
|
||||
serieData.runtimePieStartAngle = startDegree;
|
||||
serieData.runtimePieToAngle = startDegree;
|
||||
serieData.runtimePieHalfAngle = startDegree;
|
||||
serieData.runtimePieCurrAngle = startDegree;
|
||||
serieData.context.startAngle = startDegree;
|
||||
serieData.context.toAngle = startDegree;
|
||||
serieData.context.halfAngle = startDegree;
|
||||
serieData.context.currentAngle = startDegree;
|
||||
if (!serieData.show)
|
||||
{
|
||||
continue;
|
||||
@@ -206,54 +206,57 @@ namespace XCharts
|
||||
? (totalDegree / showdataCount)
|
||||
: (float)(totalDegree * value / dataTotalFilterMinAngle);
|
||||
if (serie.minAngle > 0 && degree < serie.minAngle) degree = serie.minAngle;
|
||||
serieData.runtimePieToAngle = startDegree + degree;
|
||||
serieData.runtimePieOutsideRadius = serie.pieRoseType > 0 ?
|
||||
serieData.context.toAngle = startDegree + degree;
|
||||
if (serieData.radius > 0)
|
||||
serieData.context.outsideRadius = serieData.radius;
|
||||
else
|
||||
serieData.context.outsideRadius = serie.pieRoseType > 0 ?
|
||||
serie.context.insideRadius + (float)((serie.context.outsideRadius - serie.context.insideRadius) * value / serie.context.dataMax) :
|
||||
serie.context.outsideRadius;
|
||||
if (serieData.highlighted)
|
||||
if (serieData.context.highlighted)
|
||||
{
|
||||
serieData.runtimePieOutsideRadius += chart.theme.serie.pieTooltipExtraRadius;
|
||||
serieData.context.outsideRadius += chart.theme.serie.pieTooltipExtraRadius;
|
||||
}
|
||||
var offset = 0f;
|
||||
if (serie.pieClickOffset && serieData.selected)
|
||||
{
|
||||
offset += chart.theme.serie.pieSelectedOffset;
|
||||
}
|
||||
if (serie.animation.CheckDetailBreak(serieData.runtimePieToAngle))
|
||||
if (serie.animation.CheckDetailBreak(serieData.context.toAngle))
|
||||
{
|
||||
serieData.runtimePieCurrAngle = serie.animation.GetCurrDetail();
|
||||
serieData.context.currentAngle = serie.animation.GetCurrDetail();
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.runtimePieCurrAngle = serieData.runtimePieToAngle;
|
||||
serieData.context.currentAngle = serieData.context.toAngle;
|
||||
}
|
||||
var halfDegree = (serieData.runtimePieToAngle - startDegree) / 2;
|
||||
serieData.runtimePieHalfAngle = startDegree + halfDegree;
|
||||
serieData.runtiemPieOffsetCenter = serie.context.center;
|
||||
serieData.runtimePieInsideRadius = serie.context.insideRadius;
|
||||
var halfDegree = (serieData.context.toAngle - startDegree) / 2;
|
||||
serieData.context.halfAngle = startDegree + halfDegree;
|
||||
serieData.context.offsetCenter = serie.context.center;
|
||||
serieData.context.insideRadius = serie.context.insideRadius;
|
||||
if (offset > 0)
|
||||
{
|
||||
var currRad = serieData.runtimePieHalfAngle * Mathf.Deg2Rad;
|
||||
var currRad = serieData.context.halfAngle * Mathf.Deg2Rad;
|
||||
var currSin = Mathf.Sin(currRad);
|
||||
var currCos = Mathf.Cos(currRad);
|
||||
serieData.runtimePieOffsetRadius = 0;
|
||||
serieData.runtimePieInsideRadius -= serieData.runtimePieOffsetRadius;
|
||||
serieData.runtimePieOutsideRadius -= serieData.runtimePieOffsetRadius;
|
||||
serieData.context.offsetRadius = 0;
|
||||
serieData.context.insideRadius -= serieData.context.offsetRadius;
|
||||
serieData.context.outsideRadius -= serieData.context.offsetRadius;
|
||||
if (serie.pieClickOffset && serieData.selected)
|
||||
{
|
||||
serieData.runtimePieOffsetRadius += chart.theme.serie.pieSelectedOffset;
|
||||
if (serieData.runtimePieInsideRadius > 0)
|
||||
serieData.context.offsetRadius += chart.theme.serie.pieSelectedOffset;
|
||||
if (serieData.context.insideRadius > 0)
|
||||
{
|
||||
serieData.runtimePieInsideRadius += chart.theme.serie.pieSelectedOffset;
|
||||
serieData.context.insideRadius += chart.theme.serie.pieSelectedOffset;
|
||||
}
|
||||
serieData.runtimePieOutsideRadius += chart.theme.serie.pieSelectedOffset;
|
||||
serieData.context.outsideRadius += chart.theme.serie.pieSelectedOffset;
|
||||
}
|
||||
serieData.runtiemPieOffsetCenter = new Vector3(
|
||||
serie.context.center.x + serieData.runtimePieOffsetRadius * currSin,
|
||||
serie.context.center.y + serieData.runtimePieOffsetRadius * currCos);
|
||||
serieData.context.offsetCenter = new Vector3(
|
||||
serie.context.center.x + serieData.context.offsetRadius * currSin,
|
||||
serie.context.center.y + serieData.context.offsetRadius * currCos);
|
||||
}
|
||||
serieData.canShowLabel = serieData.runtimePieCurrAngle >= serieData.runtimePieHalfAngle;
|
||||
startDegree = serieData.runtimePieToAngle;
|
||||
serieData.context.canShowLabel = serieData.context.currentAngle >= serieData.context.halfAngle;
|
||||
startDegree = serieData.context.toAngle;
|
||||
SerieLabelHelper.UpdatePieLabelPosition(serie, serieData);
|
||||
}
|
||||
SerieLabelHelper.AvoidLabelOverlap(serie, chart.theme.common);
|
||||
@@ -308,36 +311,36 @@ namespace XCharts
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.highlighted);
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlighted);
|
||||
if (serieData.IsDataChanged()) dataChanging = true;
|
||||
var serieNameCount = chart.m_LegendRealShowName.IndexOf(serieData.legendName);
|
||||
var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serieNameCount,
|
||||
serieData.highlighted);
|
||||
serieData.context.highlighted);
|
||||
var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serieNameCount,
|
||||
serieData.highlighted);
|
||||
serieData.context.highlighted);
|
||||
var borderWidth = itemStyle.borderWidth;
|
||||
var borderColor = itemStyle.borderColor;
|
||||
|
||||
if (serie.pieClickOffset && serieData.selected)
|
||||
{
|
||||
var drawEndDegree = serieData.runtimePieCurrAngle;
|
||||
var needRoundCap = serie.roundCap && serieData.runtimePieInsideRadius > 0;
|
||||
UGL.DrawDoughnut(vh, serieData.runtiemPieOffsetCenter, serieData.runtimePieInsideRadius,
|
||||
serieData.runtimePieOutsideRadius, color, toColor, Color.clear, serieData.runtimePieStartAngle,
|
||||
var drawEndDegree = serieData.context.currentAngle;
|
||||
var needRoundCap = serie.roundCap && serieData.context.insideRadius > 0;
|
||||
UGL.DrawDoughnut(vh, serieData.context.offsetCenter, serieData.context.insideRadius,
|
||||
serieData.context.outsideRadius, color, toColor, Color.clear, serieData.context.startAngle,
|
||||
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
|
||||
needRoundCap, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
var drawEndDegree = serieData.runtimePieCurrAngle;
|
||||
var needRoundCap = serie.roundCap && serieData.runtimePieInsideRadius > 0;
|
||||
UGL.DrawDoughnut(vh, serie.context.center, serieData.runtimePieInsideRadius,
|
||||
serieData.runtimePieOutsideRadius, color, toColor, Color.clear, serieData.runtimePieStartAngle,
|
||||
var drawEndDegree = serieData.context.currentAngle;
|
||||
var needRoundCap = serie.roundCap && serieData.context.insideRadius > 0;
|
||||
UGL.DrawDoughnut(vh, serie.context.center, serieData.context.insideRadius,
|
||||
serieData.context.outsideRadius, color, toColor, Color.clear, serieData.context.startAngle,
|
||||
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
|
||||
needRoundCap, true);
|
||||
DrawPieCenter(vh, serie, itemStyle, serieData.runtimePieInsideRadius);
|
||||
DrawPieCenter(vh, serie, itemStyle, serieData.context.insideRadius);
|
||||
}
|
||||
if (!serie.animation.CheckDetailBreak(serieData.runtimePieToAngle)) serie.animation.SetDataFinish(n);
|
||||
if (!serie.animation.CheckDetailBreak(serieData.context.toAngle)) serie.animation.SetDataFinish(n);
|
||||
else break;
|
||||
}
|
||||
if (!serie.animation.IsFinish())
|
||||
@@ -369,7 +372,7 @@ namespace XCharts
|
||||
{
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (serieData.highlighted) return true;
|
||||
if (serieData.context.highlighted) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,10 +401,10 @@ namespace XCharts
|
||||
&& serieLabel.position == LabelStyle.Position.Outside
|
||||
&& labelLine.show)
|
||||
{
|
||||
var insideRadius = serieData.runtimePieInsideRadius;
|
||||
var outSideRadius = serieData.runtimePieOutsideRadius;
|
||||
var insideRadius = serieData.context.insideRadius;
|
||||
var outSideRadius = serieData.context.outsideRadius;
|
||||
var center = serie.context.center;
|
||||
var currAngle = serieData.runtimePieHalfAngle;
|
||||
var currAngle = serieData.context.halfAngle;
|
||||
if (!ChartHelper.IsClearColor(labelLine.lineColor)) color = labelLine.lineColor;
|
||||
else if (labelLine.lineType == LabelLine.LineType.HorizontalLine) color *= color;
|
||||
float currSin = Mathf.Sin(currAngle * Mathf.Deg2Rad);
|
||||
@@ -414,7 +417,7 @@ namespace XCharts
|
||||
radius1 -= 0.1f;
|
||||
var pos0 = new Vector3(center.x + radius3 * currSin, center.y + radius3 * currCos);
|
||||
var pos1 = new Vector3(center.x + radius1 * currSin, center.y + radius1 * currCos);
|
||||
var pos2 = serieData.labelPosition;
|
||||
var pos2 = serieData.context.labelPosition;
|
||||
if (pos2.x == 0)
|
||||
{
|
||||
pos2 = new Vector3(center.x + radius2 * currSin, center.y + radius2 * currCos);
|
||||
@@ -476,12 +479,12 @@ namespace XCharts
|
||||
private void DrawPieLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor)
|
||||
{
|
||||
if (serieData.labelObject == null) return;
|
||||
var currAngle = serieData.runtimePieHalfAngle;
|
||||
var isHighlight = (serieData.highlighted && serie.emphasis.label.show);
|
||||
var currAngle = serieData.context.halfAngle;
|
||||
var isHighlight = (serieData.context.highlighted && serie.emphasis.label.show);
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||
var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
|
||||
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
||||
var showLabel = ((serieLabel.show || isHighlight) && serieData.canShowLabel);
|
||||
var showLabel = ((serieLabel.show || isHighlight) && serieData.context.canShowLabel);
|
||||
if (showLabel)
|
||||
{
|
||||
serieData.SetLabelActive(showLabel);
|
||||
@@ -553,11 +556,11 @@ namespace XCharts
|
||||
for (int i = 0; i < serie.data.Count; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
if (angle >= serieData.runtimePieStartAngle && angle <= serieData.runtimePieToAngle)
|
||||
if (angle >= serieData.context.startAngle && angle <= serieData.context.toAngle)
|
||||
{
|
||||
var ndist = !serieData.selected ? dist :
|
||||
Vector2.Distance(local, serieData.runtiemPieOffsetCenter);
|
||||
if (ndist >= serieData.runtimePieInsideRadius && ndist <= serieData.runtimePieOutsideRadius)
|
||||
Vector2.Distance(local, serieData.context.offsetCenter);
|
||||
if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -52,19 +52,19 @@ namespace XCharts
|
||||
if (serieData.labelObject == null) continue;
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
||||
var labelPos = serieData.labelPosition;
|
||||
var labelPos = serieData.context.labelPosition;
|
||||
if (serieLabel.margin != 0)
|
||||
{
|
||||
labelPos += serieLabel.margin * (labelPos - center).normalized;
|
||||
}
|
||||
serieData.labelObject.SetPosition(labelPos);
|
||||
serieData.labelObject.UpdateIcon(iconStyle);
|
||||
if (serie.show && serieLabel.show && serieData.canShowLabel)
|
||||
if (serie.show && serieLabel.show && serieData.context.canShowLabel)
|
||||
{
|
||||
var value = serieData.GetCurrData(1);
|
||||
var max = radar.GetIndicatorMax(n);
|
||||
SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, i);
|
||||
serieData.SetLabelActive(serieData.labelPosition != Vector3.zero);
|
||||
serieData.SetLabelActive(serieData.context.labelPosition != Vector3.zero);
|
||||
serieData.labelObject.SetLabelPosition(serieLabel.offset);
|
||||
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, max,
|
||||
serieLabel, Color.clear);
|
||||
@@ -247,7 +247,7 @@ namespace XCharts
|
||||
|
||||
private bool IsHighlight(RadarCoord radar, Serie serie, SerieData serieData, Tooltip tooltip, int dataIndex, int dimension)
|
||||
{
|
||||
if (serie.highlighted || serieData.highlighted) return true;
|
||||
if (serie.highlighted || serieData.context.highlighted) return true;
|
||||
if (tooltip == null) return false;
|
||||
var selectedSerieIndex = tooltip.runtimeDataIndex[0];
|
||||
if (selectedSerieIndex < 0) return false;
|
||||
@@ -332,7 +332,7 @@ namespace XCharts
|
||||
}
|
||||
if (!serieData.show)
|
||||
{
|
||||
serieData.labelPosition = Vector3.zero;
|
||||
serieData.context.labelPosition = Vector3.zero;
|
||||
continue;
|
||||
}
|
||||
var isHighlight = IsHighlight(radar, serie, serieData, tooltip, j, 0);
|
||||
@@ -384,7 +384,7 @@ namespace XCharts
|
||||
startPoint = toPoint;
|
||||
lastColor = lineColor;
|
||||
}
|
||||
serieData.labelPosition = startPoint;
|
||||
serieData.context.labelPosition = startPoint;
|
||||
pointList.Add(startPoint);
|
||||
|
||||
if (serie.areaStyle.show && j == endIndex)
|
||||
@@ -406,7 +406,7 @@ namespace XCharts
|
||||
{
|
||||
var serieData = serie.data[j];
|
||||
if (!serieData.show) continue;
|
||||
var isHighlight = serie.highlighted || serieData.highlighted ||
|
||||
var isHighlight = serie.highlighted || serieData.context.highlighted ||
|
||||
(tooltip.show && tooltip.runtimeDataIndex[0] == i && tooltip.runtimeDataIndex[1] == j);
|
||||
var serieIndex = serieData.index;
|
||||
var symbolSize = isHighlight
|
||||
@@ -422,7 +422,7 @@ namespace XCharts
|
||||
symbolColor = radar.outRangeColor;
|
||||
symbolToColor = radar.outRangeColor;
|
||||
}
|
||||
chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.labelPosition, symbolColor,
|
||||
chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.context.labelPosition, symbolColor,
|
||||
symbolToColor, symbolEmptyColor, serie.symbol.gap, cornerRadius);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,8 +71,6 @@ namespace XCharts
|
||||
var data = serie.data;
|
||||
serie.animation.InitProgress(data.Count, serie.startAngle, serie.startAngle + 360);
|
||||
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
|
||||
//TitleStyleHelper.CheckTitle(serie, ref chart.m_ReinitTitle, ref m_UpdateTitleText);
|
||||
//SerieLabelHelper.CheckLabel(serie, ref chart.m_ReinitLabel, ref m_UpdateLabelText);
|
||||
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
var ringWidth = serie.context.outsideRadius - serie.context.insideRadius;
|
||||
var dataChanging = false;
|
||||
@@ -86,9 +84,9 @@ namespace XCharts
|
||||
var degree = (float)(360 * value / max);
|
||||
var startDegree = GetStartAngle(serie);
|
||||
var toDegree = GetToAngle(serie, degree);
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.highlighted);
|
||||
var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, serieData.highlighted);
|
||||
var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, serieData.highlighted);
|
||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlighted);
|
||||
var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, serieData.context.highlighted);
|
||||
var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, serieData.context.highlighted);
|
||||
var outsideRadius = serie.context.outsideRadius - j * (ringWidth + serie.ringGap);
|
||||
var insideRadius = outsideRadius - ringWidth;
|
||||
var centerRadius = (outsideRadius + insideRadius) / 2;
|
||||
@@ -96,10 +94,10 @@ namespace XCharts
|
||||
var borderColor = itemStyle.borderColor;
|
||||
var roundCap = serie.roundCap && insideRadius > 0;
|
||||
|
||||
serieData.runtimePieStartAngle = serie.clockwise ? startDegree : toDegree;
|
||||
serieData.runtimePieToAngle = serie.clockwise ? toDegree : startDegree;
|
||||
serieData.runtimePieInsideRadius = insideRadius;
|
||||
serieData.runtimePieOutsideRadius = outsideRadius;
|
||||
serieData.context.startAngle = serie.clockwise ? startDegree : toDegree;
|
||||
serieData.context.toAngle = serie.clockwise ? toDegree : startDegree;
|
||||
serieData.context.insideRadius = insideRadius;
|
||||
serieData.context.outsideRadius = serieData.radius > 0 ? serieData.radius : outsideRadius;
|
||||
if (itemStyle.backgroundColor.a != 0)
|
||||
{
|
||||
UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemStyle.backgroundColor,
|
||||
@@ -201,23 +199,23 @@ namespace XCharts
|
||||
switch (serie.label.position)
|
||||
{
|
||||
case LabelStyle.Position.Center:
|
||||
serieData.labelPosition = serie.context.center + serie.label.offset;
|
||||
serieData.context.labelPosition = serie.context.center + serie.label.offset;
|
||||
break;
|
||||
case LabelStyle.Position.Bottom:
|
||||
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
|
||||
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
|
||||
var xDiff = serie.clockwise ? -serie.label.margin : serie.label.margin;
|
||||
serieData.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
|
||||
serieData.context.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
|
||||
break;
|
||||
case LabelStyle.Position.Top:
|
||||
startAngle += serie.clockwise ? -serie.label.margin : serie.label.margin;
|
||||
toAngle += serie.clockwise ? serie.label.margin : -serie.label.margin;
|
||||
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
|
||||
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
|
||||
serieData.labelPosition = serie.context.center + new Vector3(px2, py2);
|
||||
serieData.context.labelPosition = serie.context.center + new Vector3(px2, py2);
|
||||
break;
|
||||
}
|
||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition);
|
||||
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition);
|
||||
}
|
||||
|
||||
private void DrawBackground(VertexHelper vh, Serie serie, SerieData serieData, int index, float insideRadius, float outsideRadius)
|
||||
@@ -280,10 +278,10 @@ namespace XCharts
|
||||
for (int i = 0; i < serie.data.Count; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
if (dist >= serieData.runtimePieInsideRadius &&
|
||||
dist <= serieData.runtimePieOutsideRadius &&
|
||||
angle >= serieData.runtimePieStartAngle &&
|
||||
angle <= serieData.runtimePieToAngle)
|
||||
if (dist >= serieData.context.insideRadius &&
|
||||
dist <= serieData.context.outsideRadius &&
|
||||
angle >= serieData.context.startAngle &&
|
||||
angle <= serieData.context.toAngle)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -87,9 +87,9 @@ namespace XCharts
|
||||
var serieData = serie.GetSerieData(lastDataIndex);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
if (Vector3.Distance(serieData.runtimePosition, chart.pointerPos) <= symbolSize)
|
||||
if (Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize)
|
||||
{
|
||||
serieData.highlighted = true;
|
||||
serieData.context.highlighted = true;
|
||||
serie.context.pointerItemDataIndex = lastDataIndex;
|
||||
return;
|
||||
}
|
||||
@@ -98,7 +98,7 @@ namespace XCharts
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
if (lastDataIndex >= 0)
|
||||
{
|
||||
serie.GetSerieData(lastDataIndex).highlighted = false;
|
||||
serie.GetSerieData(lastDataIndex).context.highlighted = false;
|
||||
chart.RefreshPainter(serie);
|
||||
}
|
||||
for (int i = serie.dataCount - 1; i >= 0; i--)
|
||||
@@ -110,9 +110,9 @@ namespace XCharts
|
||||
continue;
|
||||
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
if (Vector3.Distance(serieData.runtimePosition, chart.pointerPos) <= symbolSize)
|
||||
if (Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize)
|
||||
{
|
||||
serieData.highlighted = true;
|
||||
serieData.context.highlighted = true;
|
||||
serie.context.pointerItemDataIndex = i;
|
||||
serie.context.pointerEnter = true;
|
||||
chart.RefreshPainter(serie);
|
||||
@@ -165,7 +165,7 @@ namespace XCharts
|
||||
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
||||
continue;
|
||||
|
||||
var highlight = serie.highlighted || serieData.highlighted;
|
||||
var highlight = serie.highlighted || serieData.context.highlighted;
|
||||
var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight);
|
||||
var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight);
|
||||
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false);
|
||||
@@ -187,11 +187,11 @@ namespace XCharts
|
||||
continue;
|
||||
|
||||
serie.context.dataPoints.Add(pos);
|
||||
serieData.runtimePosition = pos;
|
||||
serieData.context.position = pos;
|
||||
var datas = serieData.data;
|
||||
float symbolSize = 0;
|
||||
|
||||
if (serie.highlighted || serieData.highlighted)
|
||||
if (serie.highlighted || serieData.context.highlighted)
|
||||
{
|
||||
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
||||
}
|
||||
@@ -267,7 +267,7 @@ namespace XCharts
|
||||
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
||||
continue;
|
||||
|
||||
var highlight = serie.highlighted || serieData.highlighted;
|
||||
var highlight = serie.highlighted || serieData.context.highlighted;
|
||||
var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight);
|
||||
var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight);
|
||||
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false);
|
||||
@@ -292,11 +292,11 @@ namespace XCharts
|
||||
pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig);
|
||||
}
|
||||
serie.context.dataPoints.Add(pos);
|
||||
serieData.runtimePosition = pos;
|
||||
serieData.context.position = pos;
|
||||
|
||||
var datas = serieData.data;
|
||||
var symbolSize = 0f;
|
||||
if (serie.highlighted || serieData.highlighted)
|
||||
if (serie.highlighted || serieData.context.highlighted)
|
||||
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
||||
else
|
||||
symbolSize = symbol.GetSize(datas, theme.serie.scatterSymbolSize);
|
||||
|
||||
@@ -175,7 +175,7 @@ namespace XCharts
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 系列。每个系列通过 type 决定自己的图表类型。
|
||||
/// 系列。
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class Serie : BaseSerie, IComparable
|
||||
@@ -1285,7 +1285,7 @@ namespace XCharts
|
||||
serieData.name = name;
|
||||
serieData.index = m_Data.Count;
|
||||
serieData.data = new List<double>() { parent.children.Count, value };
|
||||
serieData.runtimeParent = parent;
|
||||
serieData.context.parent = parent;
|
||||
AddSerieData(serieData);
|
||||
parent.children.Add(serieData.index);
|
||||
return serieData;
|
||||
@@ -1296,7 +1296,7 @@ namespace XCharts
|
||||
serieData.name = name;
|
||||
serieData.index = m_Data.Count;
|
||||
serieData.data = new List<double>(value);
|
||||
serieData.runtimeParent = parent;
|
||||
serieData.context.parent = parent;
|
||||
AddSerieData(serieData);
|
||||
parent.children.Add(serieData.index);
|
||||
return serieData;
|
||||
@@ -1577,7 +1577,7 @@ namespace XCharts
|
||||
{
|
||||
highlighted = false;
|
||||
foreach (var serieData in m_Data)
|
||||
serieData.highlighted = false;
|
||||
serieData.context.highlighted = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1587,7 +1587,7 @@ namespace XCharts
|
||||
{
|
||||
var serieData = GetSerieData(index);
|
||||
if (serieData != null)
|
||||
serieData.highlighted = flag;
|
||||
serieData.context.highlighted = flag;
|
||||
}
|
||||
|
||||
public float GetBarWidth(float categoryWidth)
|
||||
@@ -1619,7 +1619,7 @@ namespace XCharts
|
||||
{
|
||||
if (index >= 0 && index < dataCount)
|
||||
{
|
||||
return ChartHelper.IsIngore(data[index].runtimePosition);
|
||||
return ChartHelper.IsIngore(data[index].context.position);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@ namespace XCharts
|
||||
/// 鼠标所在轴线上的数据项索引(可能有多个)
|
||||
/// </summary>
|
||||
public List<int> pointerAxisDataIndexs = new List<int>();
|
||||
|
||||
/// <summary>
|
||||
/// 中心点
|
||||
/// </summary>
|
||||
|
||||
@@ -7,13 +7,12 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace XCharts
|
||||
{
|
||||
/// <summary>
|
||||
/// A data item of serie.
|
||||
/// 系列中的一个数据项。可存储数据名和1-n维的数据。
|
||||
/// 系列中的一个数据项。可存储数据名和1-n维个数据。
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SerieData : ChildComponent
|
||||
@@ -36,7 +35,6 @@ namespace XCharts
|
||||
public ChartLabel labelObject { get; set; }
|
||||
|
||||
private bool m_Show = true;
|
||||
private float m_RtPieOutsideRadius;
|
||||
|
||||
/// <summary>
|
||||
/// the name of data item.
|
||||
@@ -103,71 +101,7 @@ namespace XCharts
|
||||
/// 该数据项是否要显示。
|
||||
/// </summary>
|
||||
public bool show { get { return m_Show; } set { m_Show = value; } }
|
||||
/// <summary>
|
||||
/// Whether the data item is highlighted.
|
||||
/// 该数据项是否被高亮,一般由鼠标悬停或图例悬停触发高亮。
|
||||
/// </summary>
|
||||
public bool highlighted { get; set; }
|
||||
public Vector3 labelPosition { get; set; }
|
||||
private bool m_CanShowLabel = true;
|
||||
/// <summary>
|
||||
/// 是否可以显示Label
|
||||
/// </summary>
|
||||
public bool canShowLabel { get { return m_CanShowLabel; } set { m_CanShowLabel = value; } }
|
||||
|
||||
/// <summary>
|
||||
/// 饼图数据项的开始角度(运行时自动计算)
|
||||
/// </summary>
|
||||
public float runtimePieStartAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的结束角度(运行时自动计算)
|
||||
/// </summary>
|
||||
public float runtimePieToAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的一半时的角度(运行时自动计算)
|
||||
/// </summary>
|
||||
public float runtimePieHalfAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的当前角度(运行时自动计算)
|
||||
/// </summary>
|
||||
public float runtimePieCurrAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的内半径
|
||||
/// </summary>
|
||||
public float runtimePieInsideRadius { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的外半径
|
||||
/// </summary>
|
||||
public float runtimePieOutsideRadius
|
||||
{
|
||||
get
|
||||
{
|
||||
if (radius > 0) return radius;
|
||||
else return m_RtPieOutsideRadius;
|
||||
}
|
||||
internal set
|
||||
{
|
||||
m_RtPieOutsideRadius = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 饼图数据项的偏移半径
|
||||
/// </summary>
|
||||
public float runtimePieOffsetRadius { get; internal set; }
|
||||
public Vector3 runtimePosition { get; set; }
|
||||
/// <summary>
|
||||
/// 绘制区域。
|
||||
/// </summary>
|
||||
public Rect runtimeRect { get; set; }
|
||||
public Rect runtimeSubRect { get; set; }
|
||||
public int runtimeLevel { get; set; }
|
||||
public SerieData runtimeParent { get; set; }
|
||||
public Color32 runtimeColor { get; set; }
|
||||
public double runtimeArea { get; set; }
|
||||
public float runtimeAngle { get; set; }
|
||||
public Vector3 runtiemPieOffsetCenter { get; set; }
|
||||
public float runtimeStackHig { get; set; }
|
||||
public Image runtimeSymbol { get; set; }
|
||||
private List<double> m_PreviousData = new List<double>();
|
||||
private List<float> m_DataUpdateTime = new List<float>();
|
||||
private List<bool> m_DataUpdateFlag = new List<bool>();
|
||||
@@ -177,11 +111,11 @@ namespace XCharts
|
||||
{
|
||||
index = 0;
|
||||
labelObject = null;
|
||||
highlighted = false;
|
||||
m_Name = string.Empty;
|
||||
m_Show = true;
|
||||
m_Selected = false;
|
||||
m_CanShowLabel = true;
|
||||
context.canShowLabel = true;
|
||||
context.highlighted = false;
|
||||
m_Radius = 0;
|
||||
m_Data.Clear();
|
||||
m_PreviousData.Clear();
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
/* */
|
||||
/************************************************/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
@@ -13,5 +12,53 @@ namespace XCharts
|
||||
{
|
||||
public class SerieDataContext
|
||||
{
|
||||
public Vector3 labelPosition { get; set; }
|
||||
/// <summary>
|
||||
/// 开始角度
|
||||
/// </summary>
|
||||
public float startAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 结束角度
|
||||
/// </summary>
|
||||
public float toAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 一半时的角度
|
||||
/// </summary>
|
||||
public float halfAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 当前角度
|
||||
/// </summary>
|
||||
public float currentAngle { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的内半径
|
||||
/// </summary>
|
||||
public float insideRadius { get; internal set; }
|
||||
/// <summary>
|
||||
/// 饼图数据项的偏移半径
|
||||
/// </summary>
|
||||
public float offsetRadius { get; internal set; }
|
||||
public float outsideRadius { get; set; }
|
||||
public Vector3 position { get; set; }
|
||||
/// <summary>
|
||||
/// 绘制区域。
|
||||
/// </summary>
|
||||
public Rect rect { get; set; }
|
||||
public Rect subRect { get; set; }
|
||||
public int level { get; set; }
|
||||
public SerieData parent { get; set; }
|
||||
public Color32 color { get; set; }
|
||||
public double area { get; set; }
|
||||
public float angle { get; set; }
|
||||
public Vector3 offsetCenter { get; set; }
|
||||
public float stackHeight { get; set; }
|
||||
|
||||
public bool canShowLabel { get; set; }
|
||||
public Image symbol { get; set; }
|
||||
/// <summary>
|
||||
/// Whether the data item is highlighted.
|
||||
/// 该数据项是否被高亮,一般由鼠标悬停或图例悬停触发高亮。
|
||||
/// </summary>
|
||||
public bool highlighted { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -222,9 +222,9 @@ namespace XCharts
|
||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
||||
var isIgnore = serie.IsIgnoreIndex(serieData.index);
|
||||
serieData.labelObject.SetPosition(serieData.runtimePosition);
|
||||
serieData.labelObject.SetPosition(serieData.context.position);
|
||||
serieData.labelObject.UpdateIcon(iconStyle);
|
||||
if (serie.show && serieLabel.show && serieData.canShowLabel && !isIgnore)
|
||||
if (serie.show && serieLabel.show && serieData.context.canShowLabel && !isIgnore)
|
||||
{
|
||||
var value = serieData.GetData(1);
|
||||
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
||||
@@ -235,7 +235,7 @@ namespace XCharts
|
||||
&& !serie.areaStyle.show;
|
||||
SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, colorIndex);
|
||||
serieData.SetLabelActive(!isIgnore);
|
||||
serieData.labelObject.SetPosition(serieData.runtimePosition + (invert ? -serieLabel.offset : serieLabel.offset));
|
||||
serieData.labelObject.SetPosition(serieData.context.position + (invert ? -serieLabel.offset : serieLabel.offset));
|
||||
serieData.labelObject.SetText(content);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user