mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-18 14:30:10 +00:00
3.0 - liquid chart and ring chart
This commit is contained in:
@@ -124,7 +124,7 @@ namespace XCharts
|
||||
serieData.SetLabelActive(false);
|
||||
return;
|
||||
}
|
||||
var value = serieData.GetData(1);
|
||||
var value = serieData.GetData(0);
|
||||
var total = serie.max - serie.min;
|
||||
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, null, Color.clear);
|
||||
serieData.SetLabelActive(true);
|
||||
|
||||
@@ -99,7 +99,6 @@ namespace XCharts
|
||||
{
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
var count = 0;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (!needInteract && serieData.context.rect.Contains(chart.pointerPos))
|
||||
@@ -113,7 +112,6 @@ namespace XCharts
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (needInteract)
|
||||
@@ -141,7 +139,6 @@ namespace XCharts
|
||||
|
||||
var zeroX = m_SerieGrid.context.x;
|
||||
var zeroY = m_SerieGrid.context.y;
|
||||
var dataList = serie.GetDataList();
|
||||
var rangeMin = visualMap.rangeMin;
|
||||
var rangeMax = visualMap.rangeMax;
|
||||
var color = chart.theme.GetColor(serie.index);
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace XCharts
|
||||
[System.Serializable]
|
||||
[SerieHandler(typeof(LiquidHandler), true)]
|
||||
[RequireChartComponent(typeof(Vessel))]
|
||||
[SerieExtraComponent()]
|
||||
[SerieExtraComponent(typeof(LabelStyle))]
|
||||
public class Liquid : Serie, INeedSerieContainer
|
||||
{
|
||||
[SerializeField] private float m_WaveHeight = 10f;
|
||||
|
||||
@@ -13,20 +13,18 @@ namespace XCharts
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
base.Update();
|
||||
if (m_UpdateLabelText)
|
||||
{
|
||||
m_UpdateLabelText = false;
|
||||
foreach (var serie in chart.series)
|
||||
{
|
||||
if (serie is Liquid)
|
||||
{
|
||||
var colorIndex = chart.m_LegendRealShowName.IndexOf(serie.serieName);
|
||||
SerieLabelHelper.SetLiquidLabelText(serie, chart.theme, colorIndex);
|
||||
}
|
||||
}
|
||||
RefreshLabelInternal();
|
||||
}
|
||||
}
|
||||
|
||||
public override void RefreshLabelNextFrame()
|
||||
{
|
||||
}
|
||||
|
||||
public override void DrawSerie(VertexHelper vh)
|
||||
{
|
||||
UpdateRuntimeData(serie);
|
||||
|
||||
@@ -332,7 +332,6 @@ namespace XCharts
|
||||
int dataCount = radar.indicatorList.Count;
|
||||
var index = serieData.index;
|
||||
var p = radar.context.center;
|
||||
var min = radar.GetIndicatorMin(index);
|
||||
var max = radar.GetIndicatorMax(index);
|
||||
var value = serieData.GetCurrData(1, dataChangeDuration);
|
||||
if (serieData.IsDataChanged()) dataChanging = true;
|
||||
|
||||
@@ -11,44 +11,66 @@ namespace XCharts
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
internal sealed class RingHandler : SerieHandler<Ring>
|
||||
{
|
||||
private bool m_UpdateTitleText = false;
|
||||
private bool m_UpdateLabelText = false;
|
||||
|
||||
public override int defaultDimension { get { return 0; } }
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
if (m_UpdateTitleText)
|
||||
{
|
||||
m_UpdateTitleText = false;
|
||||
foreach (var serie in chart.series)
|
||||
{
|
||||
if (serie is Ring)
|
||||
{
|
||||
serie.titleStyle.SetText(serie.serieName);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_UpdateLabelText)
|
||||
{
|
||||
m_UpdateLabelText = false;
|
||||
foreach (var serie in chart.series)
|
||||
{
|
||||
if (serie is Ring)
|
||||
{
|
||||
SerieLabelHelper.SetRingLabelText(serie, chart.theme);
|
||||
}
|
||||
}
|
||||
}
|
||||
base.Update();
|
||||
UpdateSerieContext();
|
||||
}
|
||||
|
||||
var ringIndex = GetRingIndex(chart.pointerPos);
|
||||
if (ringIndex >= 0)
|
||||
private void UpdateSerieContext()
|
||||
{
|
||||
var needCheck = chart.isPointerInChart || m_LegendEnter;
|
||||
var needInteract = false;
|
||||
if (!needCheck)
|
||||
{
|
||||
if (m_LastCheckContextFlag != needCheck)
|
||||
{
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
}
|
||||
chart.RefreshPainter(serie);
|
||||
}
|
||||
return;
|
||||
}
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = ringIndex;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
serieData.context.highlight = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
serie.context.pointerEnter = false;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
var ringIndex = GetRingIndex(chart.pointerPos);
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (!needInteract && ringIndex == serieData.index)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = ringIndex;
|
||||
serieData.context.highlight = true;
|
||||
needInteract = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
chart.RefreshPainter(serie);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +92,7 @@ namespace XCharts
|
||||
param.serieName = serie.serieName;
|
||||
param.serieIndex = serie.index;
|
||||
param.category = category;
|
||||
param.dimension = 0;
|
||||
param.dimension = defaultDimension;
|
||||
param.serieData = serieData;
|
||||
param.value = serieData.GetData(0);
|
||||
param.total = serieData.GetData(1);
|
||||
@@ -99,6 +121,7 @@ namespace XCharts
|
||||
for (int j = 0; j < data.Count; j++)
|
||||
{
|
||||
var serieData = data[j];
|
||||
serieData.index = j;
|
||||
if (!serieData.show) continue;
|
||||
if (serieData.IsDataChanged()) dataChanging = true;
|
||||
var value = serieData.GetFirstData(dataChangeDuration);
|
||||
@@ -297,6 +320,7 @@ namespace XCharts
|
||||
for (int i = 0; i < serie.data.Count; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
serieData.index = i;
|
||||
if (dist >= serieData.context.insideRadius &&
|
||||
dist <= serieData.context.outsideRadius &&
|
||||
angle >= serieData.context.startAngle &&
|
||||
|
||||
@@ -205,7 +205,7 @@ namespace XCharts
|
||||
[SerializeField] private bool m_ClickOffset = true;
|
||||
[SerializeField] private RoseType m_RoseType = RoseType.None;
|
||||
[SerializeField] private float m_Space;
|
||||
[SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.45f };
|
||||
[SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.48f };
|
||||
[SerializeField] private float[] m_Radius = new float[2] { 0, 80 };
|
||||
|
||||
[SerializeField] [Range(1, 10)] private int m_ShowDataDimension;
|
||||
@@ -1411,8 +1411,10 @@ namespace XCharts
|
||||
}
|
||||
}
|
||||
|
||||
public double GetDataTotal(int dimension)
|
||||
public virtual double GetDataTotal(int dimension)
|
||||
{
|
||||
if (m_Max > 0) return m_Max;
|
||||
|
||||
double total = 0;
|
||||
foreach (var sdata in data)
|
||||
{
|
||||
|
||||
@@ -63,8 +63,6 @@ namespace XCharts
|
||||
m_NeedInitComponent = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
if (m_NeedInitComponent)
|
||||
@@ -280,7 +278,7 @@ namespace XCharts
|
||||
return;
|
||||
|
||||
var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName);
|
||||
var total = serie.yTotal;
|
||||
var total = serie.GetDataTotal(defaultDimension);
|
||||
var isNeedInvertPositionSerie = serie is Line;
|
||||
|
||||
foreach (var serieData in serie.data)
|
||||
@@ -303,9 +301,10 @@ namespace XCharts
|
||||
&& serieData.context.canShowLabel
|
||||
&& !isIgnore)
|
||||
{
|
||||
var value = serieData.GetData(defaultDimension);
|
||||
var content = serie.useDataNameForColor && string.IsNullOrEmpty(currLabel.formatter)
|
||||
? serieData.name
|
||||
: SerieLabelHelper.GetFormatterContent(serie, serieData, serieData.GetData(defaultDimension), total,
|
||||
: SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
||||
currLabel, chart.theme.GetColor(colorIndex));
|
||||
|
||||
var invert = currLabel.autoOffset
|
||||
|
||||
Reference in New Issue
Block a user