[optimize][tooltip] serie placeHolder

This commit is contained in:
monitor1394
2022-06-25 16:33:50 +08:00
parent f19b61f1f2
commit 0dbcc4ab2b
4 changed files with 31 additions and 10 deletions

View File

@@ -54,6 +54,7 @@
## master ## master
* (2022.06.25) 优化`Serie`设置`PlaceHolder`时的`Tooltip`表现
* (2022.06.25) 增加`Since`标识配置参数从哪个版本开始支持 * (2022.06.25) 增加`Since`标识配置参数从哪个版本开始支持
* (2022.06.24) 优化`Painter`绘制层,`Top`层细分为`Upper``Top` * (2022.06.24) 优化`Painter`绘制层,`Top`层细分为`Upper``Top`
* (2022.06.24) 增加`Legend``Background``Padding`的支持 * (2022.06.24) 增加`Legend``Background``Padding`的支持

View File

@@ -126,7 +126,7 @@ namespace XCharts.Runtime
} }
else else
{ {
chart.RefreshTopPainter(); chart.RefreshUpperPainter();
} }
} }
@@ -210,14 +210,14 @@ namespace XCharts.Runtime
foreach (var serie in chart.series) foreach (var serie in chart.series)
{ {
if (serie is INeedSerieContainer && if (serie is INeedSerieContainer &&
(serie as INeedSerieContainer).containterInstanceId == component.instanceId) (serie as INeedSerieContainer).containterInstanceId == component.instanceId &&
!serie.placeHolder)
{ {
var isTriggerAxis = tooltip.IsTriggerAxis(); var isTriggerAxis = tooltip.IsTriggerAxis();
if (container is GridCoord) if (container is GridCoord)
{ {
var xAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); var xAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex);
var yAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); var yAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex);
serie.context.pointerEnter = true;
UpdateAxisPointerDataIndex(serie, xAxis, yAxis, container as GridCoord, isTriggerAxis); UpdateAxisPointerDataIndex(serie, xAxis, yAxis, container as GridCoord, isTriggerAxis);
} }
else if (container is PolarCoord) else if (container is PolarCoord)
@@ -242,11 +242,16 @@ namespace XCharts.Runtime
serie.context.pointerAxisDataIndexs.Clear(); serie.context.pointerAxisDataIndexs.Clear();
if (yAxis.IsCategory()) if (yAxis.IsCategory())
{ {
serie.context.pointerAxisDataIndexs.Add((int) yAxis.context.pointerValue); if (isTriggerAxis)
yAxis.context.axisTooltipValue = yAxis.context.pointerValue; {
serie.context.pointerEnter = true;
serie.context.pointerAxisDataIndexs.Add((int) yAxis.context.pointerValue);
yAxis.context.axisTooltipValue = yAxis.context.pointerValue;
}
} }
else if (yAxis.IsTime()) else if (yAxis.IsTime())
{ {
serie.context.pointerEnter = true;
if (isTriggerAxis) if (isTriggerAxis)
GetSerieDataIndexByAxis(serie, yAxis, grid); GetSerieDataIndexByAxis(serie, yAxis, grid);
else else
@@ -254,11 +259,16 @@ namespace XCharts.Runtime
} }
else if (xAxis.IsCategory()) else if (xAxis.IsCategory())
{ {
serie.context.pointerAxisDataIndexs.Add((int) xAxis.context.pointerValue); if (isTriggerAxis)
xAxis.context.axisTooltipValue = xAxis.context.pointerValue; {
serie.context.pointerEnter = true;
serie.context.pointerAxisDataIndexs.Add((int) xAxis.context.pointerValue);
xAxis.context.axisTooltipValue = xAxis.context.pointerValue;
}
} }
else else
{ {
serie.context.pointerEnter = true;
if (isTriggerAxis) if (isTriggerAxis)
GetSerieDataIndexByAxis(serie, xAxis, grid); GetSerieDataIndexByAxis(serie, xAxis, grid);
else else
@@ -449,6 +459,7 @@ namespace XCharts.Runtime
{ {
if (!tooltip.show) return; if (!tooltip.show) return;
if (tooltip.type == Tooltip.Type.None) return; if (tooltip.type == Tooltip.Type.None) return;
if (!IsAnySerieNeedTooltip()) return;
if (m_PointerContainer is GridCoord) if (m_PointerContainer is GridCoord)
{ {
var grid = m_PointerContainer as GridCoord; var grid = m_PointerContainer as GridCoord;
@@ -540,6 +551,15 @@ namespace XCharts.Runtime
} }
} }
} }
private bool IsAnySerieNeedTooltip()
{
foreach (var serie in chart.series)
{
if (serie.context.pointerEnter) return true;
}
return false;
}
private void DrawYAxisIndicator(VertexHelper vh, Tooltip tooltip, GridCoord grid) private void DrawYAxisIndicator(VertexHelper vh, Tooltip tooltip, GridCoord grid)
{ {
var yAxes = chart.GetChartComponents<YAxis>(); var yAxes = chart.GetChartComponents<YAxis>();

View File

@@ -62,7 +62,7 @@ namespace XCharts.Runtime
if (m_SerieGrid == null) if (m_SerieGrid == null)
return; return;
var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter() && !serie.placeHolder) || m_LegendEnter;
var needInteract = false; var needInteract = false;
if (!needCheck) if (!needCheck)
{ {

View File

@@ -510,7 +510,7 @@ namespace XCharts.Runtime
return; return;
itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter);
if (TooltipHelper.IsIgnoreItemFormatter(itemFormatter)) if (serie.placeHolder || TooltipHelper.IsIgnoreItemFormatter(itemFormatter))
return; return;
var param = serie.context.param; var param = serie.context.param;
@@ -550,7 +550,7 @@ namespace XCharts.Runtime
return; return;
itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter);
if (TooltipHelper.IsIgnoreItemFormatter(itemFormatter)) if (serie.placeHolder || TooltipHelper.IsIgnoreItemFormatter(itemFormatter))
return; return;
var colorIndex = chart.GetLegendRealShowNameIndex(serieData.name); var colorIndex = chart.GetLegendRealShowNameIndex(serieData.name);