mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-20 23:40:10 +00:00
[bug][datazoom] fix chart display error when datazoom enable.
This commit is contained in:
@@ -69,6 +69,7 @@
|
||||
|
||||
### 日志详情
|
||||
|
||||
* (2022.08.13) 修复`DataZoom`组件开启时图表显示效果可能不正确的问题
|
||||
* (2022.08.11) 优化`Tooltip`支持`ignoreDataDefaultContent`
|
||||
* (2022.08.10) 修复`Chart`在3D相机下部分组件显示异常的问题
|
||||
* (2022.08.10) 修复`RemoveSerie()`接口不生效的问题 (#219)
|
||||
|
||||
@@ -293,7 +293,6 @@ namespace XCharts.Runtime
|
||||
for (int i = 0; i < dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
serieData.index = i;
|
||||
serie.context.sortedData.Add(serieData);
|
||||
}
|
||||
serie.context.sortedData.Sort(delegate(SerieData a, SerieData b)
|
||||
@@ -490,7 +489,6 @@ namespace XCharts.Runtime
|
||||
|
||||
private void DrawXAxisIndicator(VertexHelper vh, Tooltip tooltip, GridCoord grid)
|
||||
{
|
||||
|
||||
var xAxes = chart.GetChartComponents<XAxis>();
|
||||
var lineType = tooltip.lineStyle.GetType(chart.theme.tooltip.lineType);
|
||||
var lineWidth = tooltip.lineStyle.GetWidth(chart.theme.tooltip.lineWidth);
|
||||
@@ -512,6 +510,8 @@ namespace XCharts.Runtime
|
||||
pX += xAxis.IsCategory() ?
|
||||
(float) (xAxis.context.pointerValue * splitWidth + (xAxis.boundaryGap ? splitWidth / 2 : 0)) :
|
||||
xAxis.GetDistance(xAxis.context.axisTooltipValue, grid.context.width);
|
||||
if (pX < grid.context.x)
|
||||
break;
|
||||
Vector2 sp = new Vector2(pX, grid.context.y);
|
||||
Vector2 ep = new Vector2(pX, grid.context.y + grid.context.height);
|
||||
var lineColor = TooltipHelper.GetLineColor(tooltip, chart.theme);
|
||||
@@ -529,6 +529,8 @@ namespace XCharts.Runtime
|
||||
float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth;
|
||||
pX = (float) (grid.context.x + splitWidth * xAxis.context.pointerValue -
|
||||
(xAxis.boundaryGap ? 0 : splitWidth / 2));
|
||||
if (pX < grid.context.x)
|
||||
break;
|
||||
float pY = grid.context.y + grid.context.height;
|
||||
Vector3 p1 = new Vector3(pX, grid.context.y);
|
||||
Vector3 p2 = new Vector3(pX, pY);
|
||||
@@ -571,6 +573,8 @@ namespace XCharts.Runtime
|
||||
case Tooltip.Type.Line:
|
||||
float pY = (float) (grid.context.y + yAxis.context.pointerValue * splitWidth +
|
||||
(yAxis.boundaryGap ? splitWidth / 2 : 0));
|
||||
if (pY < grid.context.y)
|
||||
break;
|
||||
Vector2 sp = new Vector2(grid.context.x, pY);
|
||||
Vector2 ep = new Vector2(grid.context.x + grid.context.width, pY);
|
||||
var lineColor = TooltipHelper.GetLineColor(tooltip, chart.theme);
|
||||
@@ -589,6 +593,8 @@ namespace XCharts.Runtime
|
||||
float pX = grid.context.x + grid.context.width;
|
||||
pY = (float) (grid.context.y + splitWidth * yAxis.context.pointerValue -
|
||||
(yAxis.boundaryGap ? 0 : splitWidth / 2));
|
||||
if (pY < grid.context.y)
|
||||
break;
|
||||
Vector3 p1 = new Vector3(grid.context.x, pY);
|
||||
Vector3 p2 = new Vector3(grid.context.x, pY + tooltipSplitWid);
|
||||
Vector3 p3 = new Vector3(pX, pY + tooltipSplitWid);
|
||||
|
||||
@@ -575,6 +575,7 @@ namespace XCharts.Runtime
|
||||
var serie = m_Series[i];
|
||||
serie.context.colorIndex = GetLegendRealShowNameIndex(serie.legendName);
|
||||
serie.context.dataPoints.Clear();
|
||||
serie.context.dataIndexs.Clear();
|
||||
serie.context.dataIgnores.Clear();
|
||||
serie.animation.context.isAllItemAnimationEnd = true;
|
||||
if (!serie.context.pointerEnter)
|
||||
|
||||
@@ -176,10 +176,10 @@ namespace XCharts.Runtime
|
||||
for (int i = serie.minShow; i < maxCount; i++)
|
||||
{
|
||||
var serieData = showData[i];
|
||||
serieData.index = i;
|
||||
if (!serieData.show || serie.IsIgnoreValue(serieData))
|
||||
{
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -228,9 +228,14 @@ namespace XCharts.Runtime
|
||||
Rect.MinMaxRect(plb.x, m_SerieGrid.context.y, prb.x, m_SerieGrid.context.y + relativedAxisLength);
|
||||
|
||||
if (!serie.clip || (serie.clip && m_SerieGrid.Contains(top)))
|
||||
{
|
||||
serie.context.dataPoints.Add(top);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (serie.show && currHig != 0 && !serie.placeHolder)
|
||||
{
|
||||
|
||||
@@ -152,6 +152,7 @@ namespace XCharts.Runtime
|
||||
if (!serieData.show || serie.IsIgnoreValue(serieData))
|
||||
{
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -184,6 +185,7 @@ namespace XCharts.Runtime
|
||||
serieData.context.position = top;
|
||||
serieData.context.rect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||
serie.context.dataPoints.Add(top);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
DrawNormalBar(vh, serie, serieData, itemStyle, colorIndex, highlight, gap, barWidth,
|
||||
pX, pY, plb, plt, prt, prb, false, m_SerieGrid, areaColor, areaToColor);
|
||||
|
||||
|
||||
@@ -111,6 +111,7 @@ namespace XCharts.Runtime
|
||||
if (serie.IsIgnoreValue(serieData))
|
||||
{
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
continue;
|
||||
}
|
||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||
@@ -154,6 +155,7 @@ namespace XCharts.Runtime
|
||||
top = chart.ClampInGrid(grid, top);
|
||||
}
|
||||
serie.context.dataPoints.Add(top);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
var areaColor = isRise ?
|
||||
itemStyle.GetColor(theme.serie.candlestickColor) :
|
||||
itemStyle.GetColor0(theme.serie.candlestickColor0);
|
||||
|
||||
@@ -113,6 +113,7 @@ namespace XCharts.Runtime
|
||||
if (serie.IsIgnoreValue(serieData))
|
||||
{
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
continue;
|
||||
}
|
||||
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||
@@ -154,6 +155,7 @@ namespace XCharts.Runtime
|
||||
// top = chart.ClampInGrid(grid, top);
|
||||
// }
|
||||
serie.context.dataPoints.Add(top);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
var areaColor = isRise ?
|
||||
itemStyle.GetColor(theme.serie.candlestickColor) :
|
||||
itemStyle.GetColor0(theme.serie.candlestickColor0);
|
||||
|
||||
@@ -155,7 +155,6 @@ namespace XCharts.Runtime
|
||||
ChartConst.clearColor32;
|
||||
borderToColor.a = (byte) (borderToColor.a * serie.itemStyle.opacity);
|
||||
|
||||
serie.context.dataPoints.Clear();
|
||||
serie.animation.InitProgress(0, xCount);
|
||||
var animationIndex = serie.animation.GetCurrIndex();
|
||||
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
@@ -165,13 +164,13 @@ namespace XCharts.Runtime
|
||||
for (int n = 0; n < serie.dataCount; n++)
|
||||
{
|
||||
var serieData = serie.data[n];
|
||||
serieData.index = n;
|
||||
var i = (int) serieData.GetData(0);
|
||||
var j = (int) serieData.GetData(1);
|
||||
var dimension = VisualMapHelper.GetDimension(visualMap, serieData.data.Count);
|
||||
if (serie.IsIgnoreValue(serieData, dimension))
|
||||
{
|
||||
serie.context.dataPoints.Add(Vector3.zero);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
continue;
|
||||
}
|
||||
var value = serieData.GetCurrData(dimension, dataChangeDuration, yAxis.inverse,
|
||||
@@ -180,6 +179,7 @@ namespace XCharts.Runtime
|
||||
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);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
serieData.context.position = pos;
|
||||
|
||||
serieData.context.canShowLabel = false;
|
||||
|
||||
@@ -109,13 +109,16 @@ namespace XCharts.Runtime
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true);
|
||||
}
|
||||
}
|
||||
if (lastIndex != serie.context.pointerItemDataIndex)
|
||||
{
|
||||
needInteract = true;
|
||||
}
|
||||
if (serie.context.pointerItemDataIndex >= 0)
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
else
|
||||
serie.interact.SetValue(ref needInteract, lineWidth);
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
@@ -148,7 +151,8 @@ namespace XCharts.Runtime
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var serieData = serie.GetSerieData(i);
|
||||
var index = serie.context.dataIndexs[i];
|
||||
var serieData = serie.GetSerieData(index);
|
||||
if (serieData == null)
|
||||
continue;
|
||||
if (serieData.context.isClip)
|
||||
@@ -156,7 +160,7 @@ namespace XCharts.Runtime
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData, state);
|
||||
|
||||
if (!symbol.show || !symbol.ShowSymbol(i, count))
|
||||
if (!symbol.show || !symbol.ShowSymbol(index, count))
|
||||
continue;
|
||||
|
||||
var pos = serie.context.dataPoints[i];
|
||||
@@ -178,7 +182,6 @@ namespace XCharts.Runtime
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||
}
|
||||
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 symbolColor, symbolToColor, symbolEmptyColor, borderColor;
|
||||
@@ -335,6 +338,7 @@ namespace XCharts.Runtime
|
||||
serie.context.dataIgnores.Add(false);
|
||||
serieData.context.position = np;
|
||||
serie.context.dataPoints.Add(np);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
lp = np;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,6 +208,7 @@ namespace XCharts.Runtime
|
||||
serieData.context.position = np;
|
||||
|
||||
serie.context.dataPoints.Add(np);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
serie.context.dataIgnores.Add(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,6 @@ namespace XCharts.Runtime
|
||||
|
||||
serie.animation.InitProgress(currDetailProgress, totalDetailProgress);
|
||||
|
||||
serie.context.dataPoints.Clear();
|
||||
serie.containerIndex = parallel.index;
|
||||
serie.containterInstanceId = parallel.instanceId;
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@ namespace XCharts.Runtime
|
||||
for (int n = 0; n < data.Count; n++)
|
||||
{
|
||||
var serieData = data[n];
|
||||
serieData.index = n;
|
||||
var value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration);
|
||||
serieData.context.startAngle = startDegree;
|
||||
serieData.context.toAngle = startDegree;
|
||||
|
||||
@@ -110,7 +110,6 @@ namespace XCharts.Runtime
|
||||
for (int i = 0; i < serie.data.Count; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
serieData.index = i;
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
|
||||
if (needHideAll || m_LegendEnter)
|
||||
@@ -159,7 +158,6 @@ namespace XCharts.Runtime
|
||||
for (int i = 0; i < serie.data.Count; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
serieData.index = i;
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
|
||||
if (Vector3.Distance(chart.pointerPos, serieData.context.position) < size * 2)
|
||||
{
|
||||
@@ -351,7 +349,6 @@ namespace XCharts.Runtime
|
||||
var angle = 2 * Mathf.PI / indicatorNum;
|
||||
var centerPos = m_RadarCoord.context.center;
|
||||
serie.animation.InitProgress(0, 1);
|
||||
serie.context.dataPoints.Clear();
|
||||
if (!serie.show || serie.animation.HasFadeOut())
|
||||
{
|
||||
return;
|
||||
@@ -371,7 +368,6 @@ namespace XCharts.Runtime
|
||||
for (int j = 0; j < serie.data.Count; j++)
|
||||
{
|
||||
var serieData = serie.data[j];
|
||||
serieData.index = j;
|
||||
string dataName = serieData.name;
|
||||
|
||||
if (!serieData.show)
|
||||
@@ -430,6 +426,7 @@ namespace XCharts.Runtime
|
||||
lastColor = lineColor;
|
||||
}
|
||||
serie.context.dataPoints.Add(startPoint);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
serieData.context.position = startPoint;
|
||||
serieData.context.labelPosition = startPoint;
|
||||
|
||||
|
||||
@@ -152,7 +152,6 @@ namespace XCharts.Runtime
|
||||
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);
|
||||
@@ -303,7 +302,6 @@ namespace XCharts.Runtime
|
||||
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 &&
|
||||
|
||||
@@ -172,6 +172,7 @@ namespace XCharts.Runtime
|
||||
continue;
|
||||
|
||||
serie.context.dataPoints.Add(pos);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
serieData.context.position = pos;
|
||||
var datas = serieData.data;
|
||||
var symbolSize = 0f;
|
||||
@@ -276,6 +277,7 @@ namespace XCharts.Runtime
|
||||
pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig);
|
||||
}
|
||||
serie.context.dataPoints.Add(pos);
|
||||
serie.context.dataIndexs.Add(serieData.index);
|
||||
serieData.context.position = pos;
|
||||
|
||||
var datas = serieData.data;
|
||||
|
||||
@@ -96,6 +96,10 @@ namespace XCharts.Runtime
|
||||
/// </summary>
|
||||
public List<bool> dataIgnores = new List<bool>();
|
||||
/// <summary>
|
||||
/// 数据对应的index索引。dataIndexs 和 dataPoints 一一对应。
|
||||
/// </summary>
|
||||
public List<int> dataIndexs = new List<int>();
|
||||
/// <summary>
|
||||
/// 排序后的数据
|
||||
/// </summary>
|
||||
public List<SerieData> sortedData = new List<SerieData>();
|
||||
|
||||
@@ -549,6 +549,10 @@ namespace XCharts.Runtime
|
||||
public void SetLabelActive(bool flag)
|
||||
{
|
||||
if (labelObject != null) labelObject.SetActive(flag);
|
||||
foreach (var labelObject in context.dataLabels)
|
||||
{
|
||||
labelObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
public void SetIconActive(bool flag)
|
||||
{
|
||||
|
||||
@@ -368,10 +368,18 @@ namespace XCharts.Runtime
|
||||
return;
|
||||
|
||||
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
var needCheck = serie.context.dataIndexs.Count > 0;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
if (serieData.labelObject == null && serieData.context.dataLabels.Count <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (needCheck && !serie.context.dataIndexs.Contains(serieData.index))
|
||||
{
|
||||
serieData.SetLabelActive(false);
|
||||
continue;
|
||||
};
|
||||
var currLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||
var isIgnore = serie.IsIgnoreIndex(serieData.index, defaultDimension);
|
||||
if (serie.show &&
|
||||
@@ -429,10 +437,6 @@ namespace XCharts.Runtime
|
||||
else
|
||||
{
|
||||
serieData.SetLabelActive(false);
|
||||
foreach (var labelObject in serieData.context.dataLabels)
|
||||
{
|
||||
labelObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user