[feature][pie] support onPointerEnterPie

This commit is contained in:
monitor1394
2022-09-02 08:33:34 +08:00
parent 8bd0c23e19
commit a44eca0f91
4 changed files with 23 additions and 2 deletions

View File

@@ -96,11 +96,17 @@ namespace XCharts.Runtime
/// </summary>
public CustomDrawGaugePointerFunction customDrawGaugePointerFunction { set { m_CustomDrawGaugePointerFunction = value; } get { return m_CustomDrawGaugePointerFunction; } }
/// <summary>
/// the callback function of click pie area.
/// the callback function of pointer click pie area.
/// |点击饼图区域回调。参数PointerEventDataSerieIndexSerieDataIndex
/// </summary>
public Action<PointerEventData, int, int> onPointerClickPie { set { m_OnPointerClickPie = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerClickPie; } }
/// <summary>
/// the callback function of pointer enter pie area.
/// |鼠标进入和离开饼图区域回调SerieDataIndex为-1时表示离开。参数PointerEventDataSerieIndexSerieDataIndex
/// </summary>
[Since("v3.3.0")]
public Action<int, int> onPointerEnterPie { set { m_OnPointerEnterPie = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerEnterPie; } }
/// <summary>
/// the callback function of click bar.
/// |点击柱形图柱条回调。参数eventData, dataIndex
/// </summary>

View File

@@ -86,6 +86,7 @@ namespace XCharts.Runtime
protected Action<VertexHelper, Serie> m_OnDrawSerieBefore;
protected Action<VertexHelper, Serie> m_OnDrawSerieAfter;
protected Action<PointerEventData, int, int> m_OnPointerClickPie;
protected Action<int, int> m_OnPointerEnterPie;
protected Action<PointerEventData, int> m_OnPointerClickBar;
protected Action<Axis, double> m_OnAxisPointerValueChanged;
protected Action<Legend, int, string, bool> m_OnLegendClick;

View File

@@ -123,6 +123,10 @@ namespace XCharts.Runtime
serieData.context.highlight = false;
serieData.interact.SetValueAndColor(ref needInteract, serieData.context.outsideRadius, color, toColor);
}
if (chart.onPointerEnterPie != null)
{
chart.onPointerEnterPie(serie.index, serie.context.pointerItemDataIndex);
}
if (needInteract)
{
chart.RefreshPainter(serie);
@@ -131,8 +135,9 @@ namespace XCharts.Runtime
return;
}
m_LastCheckContextFlag = needCheck;
serie.context.pointerItemDataIndex = -1;
var lastPointerItemDataIndex = serie.context.pointerItemDataIndex;
var dataIndex = GetPiePosIndex(serie, chart.pointerPos);
serie.context.pointerItemDataIndex = -1;
for (int i = 0; i < serie.dataCount; i++)
{
var serieData = serie.data[i];
@@ -154,6 +159,14 @@ namespace XCharts.Runtime
serieData.interact.SetValueAndColor(ref needInteract, serieData.context.outsideRadius, color, toColor);
}
}
if (lastPointerItemDataIndex != serie.context.pointerItemDataIndex)
{
needInteract = true;
if (chart.onPointerEnterPie != null)
{
chart.onPointerEnterPie(serie.index, serie.context.pointerItemDataIndex);
}
}
if (needInteract)
{
chart.RefreshPainter(serie);