增加ChartonSerieClickonSerieDownonSerieEnteronSerieExit回调

This commit is contained in:
monitor1394
2023-03-09 21:31:26 +08:00
parent bf152a3a71
commit 465af108aa
28 changed files with 408 additions and 102 deletions

View File

@@ -69,6 +69,8 @@ slug: /api
- [SerieDataComponentAttribute](#seriedatacomponentattribute) - [SerieDataComponentAttribute](#seriedatacomponentattribute)
- [SerieDataContext](#seriedatacontext) - [SerieDataContext](#seriedatacontext)
- [SerieDataExtraFieldAttribute](#seriedataextrafieldattribute) - [SerieDataExtraFieldAttribute](#seriedataextrafieldattribute)
- [SerieEventData](#serieeventdata)
- [SerieEventDataPool](#serieeventdatapool)
- [SerieHandler](#seriehandler) - [SerieHandler](#seriehandler)
- [SerieHandler<T>](#seriehandlert) - [SerieHandler<T>](#seriehandlert)
- [SerieHandlerAttribute](#seriehandlerattribute) - [SerieHandlerAttribute](#seriehandlerattribute)
@@ -870,6 +872,19 @@ Inherits or Implemented: [Attribute](#attribute)
| SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6)| | SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6)|
| SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7)| | SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7)|
## SerieEventData
|public method|description|
|--|--|
| Reset() |public void Reset()|
## SerieEventDataPool
|public method|description|
|--|--|
| Get() |public static SerieEventData Get(Vector3 pos, int serieIndex, int dataIndex, int dimension, double value)|
| Release() |public static void Release(SerieEventData toRelease)|
## SerieHandler ## SerieHandler
|public method|description| |public method|description|
@@ -896,6 +911,7 @@ Inherits or Implemented: [Attribute](#attribute)
| RefreshLabelNextFrame() |public virtual void RefreshLabelNextFrame() { }| | RefreshLabelNextFrame() |public virtual void RefreshLabelNextFrame() { }|
| RemoveComponent() |public virtual void RemoveComponent() { }| | RemoveComponent() |public virtual void RemoveComponent() { }|
| Update() |public virtual void Update() { }| | Update() |public virtual void Update() { }|
| UpdateSerieContext() |public virtual void UpdateSerieContext() { }|
## SerieHandler<T> ## SerieHandler<T>
@@ -904,6 +920,8 @@ Inherits or Implemented: [SerieHandler where T](#seriehandler where t),[Serie](#
|public method|description| |public method|description|
|--|--| |--|--|
| DrawLabelLineSymbol() |public void DrawLabelLineSymbol(VertexHelper vh, LabelLine labelLine, Vector3 startPos, Vector3 endPos, Color32 defaultColor)| | DrawLabelLineSymbol() |public void DrawLabelLineSymbol(VertexHelper vh, LabelLine labelLine, Vector3 startPos, Vector3 endPos, Color32 defaultColor)|
| GetPointerItemDataDimension() |public override int GetPointerItemDataDimension()|
| GetPointerItemDataIndex() |public override int GetPointerItemDataIndex()|
| GetSerieDataAutoColor() |public virtual Color GetSerieDataAutoColor(SerieData serieData)| | GetSerieDataAutoColor() |public virtual Color GetSerieDataAutoColor(SerieData serieData)|
| GetSerieDataLabelOffset() |public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)| | GetSerieDataLabelOffset() |public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)|
| GetSerieDataLabelPosition() |public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)| | GetSerieDataLabelPosition() |public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)|
@@ -912,6 +930,8 @@ Inherits or Implemented: [SerieHandler where T](#seriehandler where t),[Serie](#
| OnLegendButtonClick() |public override void OnLegendButtonClick(int index, string legendName, bool show)| | OnLegendButtonClick() |public override void OnLegendButtonClick(int index, string legendName, bool show)|
| OnLegendButtonEnter() |public override void OnLegendButtonEnter(int index, string legendName)| | OnLegendButtonEnter() |public override void OnLegendButtonEnter(int index, string legendName)|
| OnLegendButtonExit() |public override void OnLegendButtonExit(int index, string legendName)| | OnLegendButtonExit() |public override void OnLegendButtonExit(int index, string legendName)|
| OnPointerClick() |public override void OnPointerClick(PointerEventData eventData)|
| OnPointerDown() |public override void OnPointerDown(PointerEventData eventData)|
| RefreshEndLabelInternal() |public virtual void RefreshEndLabelInternal()| | RefreshEndLabelInternal() |public virtual void RefreshEndLabelInternal()|
| RefreshLabelInternal() |public override void RefreshLabelInternal()| | RefreshLabelInternal() |public override void RefreshLabelInternal()|
| RefreshLabelNextFrame() |public override void RefreshLabelNextFrame()| | RefreshLabelNextFrame() |public override void RefreshLabelNextFrame()|

View File

@@ -69,6 +69,8 @@ slug: /api
- [SerieDataComponentAttribute](#seriedatacomponentattribute) - [SerieDataComponentAttribute](#seriedatacomponentattribute)
- [SerieDataContext](#seriedatacontext) - [SerieDataContext](#seriedatacontext)
- [SerieDataExtraFieldAttribute](#seriedataextrafieldattribute) - [SerieDataExtraFieldAttribute](#seriedataextrafieldattribute)
- [SerieEventData](#serieeventdata)
- [SerieEventDataPool](#serieeventdatapool)
- [SerieHandler](#seriehandler) - [SerieHandler](#seriehandler)
- [SerieHandler<T>](#seriehandlert) - [SerieHandler<T>](#seriehandlert)
- [SerieHandlerAttribute](#seriehandlerattribute) - [SerieHandlerAttribute](#seriehandlerattribute)
@@ -870,6 +872,19 @@ Inherits or Implemented: [Attribute](#attribute)
| SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6)| | SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6)|
| SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7)| | SerieDataExtraFieldAttribute() |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7)|
## SerieEventData
|public method|description|
|--|--|
| Reset() |public void Reset()|
## SerieEventDataPool
|public method|description|
|--|--|
| Get() |public static SerieEventData Get(Vector3 pos, int serieIndex, int dataIndex, int dimension, double value)|
| Release() |public static void Release(SerieEventData toRelease)|
## SerieHandler ## SerieHandler
|public method|description| |public method|description|
@@ -896,6 +911,7 @@ Inherits or Implemented: [Attribute](#attribute)
| RefreshLabelNextFrame() |public virtual void RefreshLabelNextFrame() { }| | RefreshLabelNextFrame() |public virtual void RefreshLabelNextFrame() { }|
| RemoveComponent() |public virtual void RemoveComponent() { }| | RemoveComponent() |public virtual void RemoveComponent() { }|
| Update() |public virtual void Update() { }| | Update() |public virtual void Update() { }|
| UpdateSerieContext() |public virtual void UpdateSerieContext() { }|
## SerieHandler<T> ## SerieHandler<T>
@@ -904,6 +920,8 @@ Inherits or Implemented: [SerieHandler where T](#seriehandler where t),[Serie](#
|public method|description| |public method|description|
|--|--| |--|--|
| DrawLabelLineSymbol() |public void DrawLabelLineSymbol(VertexHelper vh, LabelLine labelLine, Vector3 startPos, Vector3 endPos, Color32 defaultColor)| | DrawLabelLineSymbol() |public void DrawLabelLineSymbol(VertexHelper vh, LabelLine labelLine, Vector3 startPos, Vector3 endPos, Color32 defaultColor)|
| GetPointerItemDataDimension() |public override int GetPointerItemDataDimension()|
| GetPointerItemDataIndex() |public override int GetPointerItemDataIndex()|
| GetSerieDataAutoColor() |public virtual Color GetSerieDataAutoColor(SerieData serieData)| | GetSerieDataAutoColor() |public virtual Color GetSerieDataAutoColor(SerieData serieData)|
| GetSerieDataLabelOffset() |public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)| | GetSerieDataLabelOffset() |public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)|
| GetSerieDataLabelPosition() |public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)| | GetSerieDataLabelPosition() |public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)|
@@ -912,6 +930,8 @@ Inherits or Implemented: [SerieHandler where T](#seriehandler where t),[Serie](#
| OnLegendButtonClick() |public override void OnLegendButtonClick(int index, string legendName, bool show)| | OnLegendButtonClick() |public override void OnLegendButtonClick(int index, string legendName, bool show)|
| OnLegendButtonEnter() |public override void OnLegendButtonEnter(int index, string legendName)| | OnLegendButtonEnter() |public override void OnLegendButtonEnter(int index, string legendName)|
| OnLegendButtonExit() |public override void OnLegendButtonExit(int index, string legendName)| | OnLegendButtonExit() |public override void OnLegendButtonExit(int index, string legendName)|
| OnPointerClick() |public override void OnPointerClick(PointerEventData eventData)|
| OnPointerDown() |public override void OnPointerDown(PointerEventData eventData)|
| RefreshEndLabelInternal() |public virtual void RefreshEndLabelInternal()| | RefreshEndLabelInternal() |public virtual void RefreshEndLabelInternal()|
| RefreshLabelInternal() |public override void RefreshLabelInternal()| | RefreshLabelInternal() |public override void RefreshLabelInternal()|
| RefreshLabelNextFrame() |public override void RefreshLabelNextFrame()| | RefreshLabelNextFrame() |public override void RefreshLabelNextFrame()|

View File

@@ -65,6 +65,8 @@ slug: /changelog
## master ## master
* (2023.03.09) 增加`Chart``onSerieClick``onSerieDown``onSerieEnter``onSerieExit`回调
* (2023.03.09) 修复`Pie`的点击选中偏移不生效的问题
* (2023.03.04) 增加`Legend``Positions`可自定义图例的位置 * (2023.03.04) 增加`Legend``Positions`可自定义图例的位置
* (2023.03.03) 修复`Animation`变更动画可能无效的问题 * (2023.03.03) 修复`Animation`变更动画可能无效的问题
* (2023.02.28) 修复`Legend`点击时`Serie``Label`不刷新的问题 * (2023.02.28) 修复`Legend`点击时`Serie``Label`不刷新的问题

View File

@@ -18,6 +18,7 @@ namespace XCharts.Editor
PropertyField("m_RoundCap"); PropertyField("m_RoundCap");
PropertyField("m_Ignore"); PropertyField("m_Ignore");
PropertyField("m_IgnoreValue"); PropertyField("m_IgnoreValue");
PropertyField("m_ClickOffset");
}); });
PropertyField("m_ItemStyle"); PropertyField("m_ItemStyle");
PropertyField("m_Animation"); PropertyField("m_Animation");

View File

@@ -64,7 +64,7 @@ namespace XCharts.Example
chart.AddData(0, 135, "视频广告"); chart.AddData(0, 135, "视频广告");
chart.AddData(0, 1548, "搜索引擎"); chart.AddData(0, 1548, "搜索引擎");
chart.onPointerClickPie = delegate (PointerEventData e, int serieIndex, int dataIndex) chart.onSerieClick = delegate (SerieEventData data)
{ {
}; };

View File

@@ -1,4 +1,5 @@
using UnityEngine; using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI; using UnityEngine.UI;
using XCharts.Runtime; using XCharts.Runtime;
#if INPUT_SYSTEM_ENABLED #if INPUT_SYSTEM_ENABLED
@@ -14,6 +15,9 @@ namespace XCharts.Example
void Awake() void Awake()
{ {
chart = gameObject.GetComponent<BaseChart>(); chart = gameObject.GetComponent<BaseChart>();
chart.onSerieClick = OnPointerClickLine;
chart.onSerieEnter = OnPointerEnterLine;
chart.onSerieExit = OnPointerExitLine;
var btnTrans = transform.parent.Find("Button"); var btnTrans = transform.parent.Find("Button");
if (btnTrans) if (btnTrans)
{ {
@@ -21,6 +25,21 @@ namespace XCharts.Example
} }
} }
void OnPointerClickLine(SerieEventData data)
{
Debug.Log("OnPointerClick: " + data.serieIndex+ " " + data.dataIndex +" "+ data.dimension);
}
void OnPointerEnterLine(SerieEventData data)
{
Debug.Log("OnPointerEnter: " + data.serieIndex + " " + data.dataIndex + " " + data.dimension);
}
void OnPointerExitLine(SerieEventData data)
{
Debug.Log("OnPointerExit: " + data.serieIndex + " " + data.dataIndex + " " + data.dimension);
}
void Update() void Update()
{ {
if (Input.GetKeyDown(KeyCode.Space)) if (Input.GetKeyDown(KeyCode.Space))

View File

@@ -18,27 +18,27 @@
<a href="https://github.com/XCharts-Team/XCharts/releases"> <a href="https://github.com/XCharts-Team/XCharts/releases">
<img src="https://img.shields.io/github/v/release/XCharts-Team/XCharts?include_prereleases"></img> <img src="https://img.shields.io/github/v/release/XCharts-Team/XCharts?include_prereleases"></img>
</a> </a>
<a href=""> <a href="https://github.com/XCharts-Team/XCharts">
<img src="https://img.shields.io/github/repo-size/monitor1394/unity-ugui-xcharts"></img> <img src="https://img.shields.io/github/repo-size/monitor1394/unity-ugui-xcharts"></img>
</a> </a>
<a href=""> <a href="https://github.com/XCharts-Team/XCharts">
<img src="https://img.shields.io/github/languages/code-size/monitor1394/unity-ugui-xcharts"></img> <img src="https://img.shields.io/github/languages/code-size/monitor1394/unity-ugui-xcharts"></img>
</a> </a>
<a href=""> <a href="https://xcharts-team.github.io/docs/tutorial01">
<img src="https://img.shields.io/badge/Unity-5.6+-green"></img> <img src="https://img.shields.io/badge/Unity-5.6+-green"></img>
</a> </a>
<a href=""> <a href="https://xcharts-team.github.io/docs/tutorial01">
<img src="https://img.shields.io/badge/TextMeshPro-YES-green"></img> <img src="https://img.shields.io/badge/TextMeshPro-YES-green"></img>
</a> </a>
</p> </p>
<p align="center"> <p align="center">
<a href=""> <a href="https://github.com/XCharts-Team/XCharts/stargazers">
<img src="https://img.shields.io/github/stars/XCharts-Team/XCharts?style=social"></img> <img src="https://img.shields.io/github/stars/XCharts-Team/XCharts?style=social"></img>
</a> </a>
<a href=""> <a href="https://github.com/XCharts-Team/XCharts/forks">
<img src="https://img.shields.io/github/forks/XCharts-Team/XCharts?style=social"></img> <img src="https://img.shields.io/github/forks/XCharts-Team/XCharts?style=social"></img>
</a> </a>
<a href=""> <a href="https://github.com/XCharts-Team/XCharts/issues">
<img src="https://img.shields.io/github/issues-closed/XCharts-Team/XCharts?color=green&label=%20%20%20%20issues&logoColor=green&style=social"></img> <img src="https://img.shields.io/github/issues-closed/XCharts-Team/XCharts?color=green&label=%20%20%20%20issues&logoColor=green&style=social"></img>
</a> </a>
</p> </p>

View File

@@ -104,21 +104,48 @@ namespace XCharts.Runtime
/// </summary> /// </summary>
public CustomDrawGaugePointerFunction customDrawGaugePointerFunction { set { m_CustomDrawGaugePointerFunction = value; } get { return m_CustomDrawGaugePointerFunction; } } public CustomDrawGaugePointerFunction customDrawGaugePointerFunction { set { m_CustomDrawGaugePointerFunction = value; } get { return m_CustomDrawGaugePointerFunction; } }
/// <summary> /// <summary>
/// the callback function of pointer click serie.
/// |鼠标点击Serie回调。
/// </summary>
[Since("v3.6.0")]
public Action<SerieEventData> onSerieClick { set { m_OnSerieClick = value; m_ForceOpenRaycastTarget = true; } get { return m_OnSerieClick; } }
/// <summary>
/// the callback function of pointer down serie.
/// |鼠标按下Serie回调。
/// </summary>
[Since("v3.6.0")]
public Action<SerieEventData> onSerieDown { set { m_OnSerieDown = value; m_ForceOpenRaycastTarget = true; } get { return m_OnSerieDown; } }
/// <summary>
/// the callback function of pointer enter serie.
/// |鼠标进入Serie回调。
/// </summary>
[Since("v3.6.0")]
public Action<SerieEventData> onSerieEnter { set { m_OnSerieEnter = value; m_ForceOpenRaycastTarget = true; } get { return m_OnSerieEnter; } }
/// <summary>
/// the callback function of pointer exit serie.
/// |鼠标离开Serie回调。
/// </summary>
[Since("v3.6.0")]
public Action<SerieEventData> onSerieExit { set { m_OnSerieExit = value; m_ForceOpenRaycastTarget = true; } get { return m_OnSerieExit; } }
/// <summary>
/// the callback function of pointer click pie area. /// the callback function of pointer click pie area.
/// |点击饼图区域回调。参数PointerEventDataSerieIndexSerieDataIndex /// |点击饼图区域回调。参数PointerEventDataSerieIndexSerieDataIndex
/// </summary> /// </summary>
public Action<PointerEventData, int, int> onPointerClickPie { set { m_OnPointerClickPie = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerClickPie; } } [Obsolete("Use \"onSerieClick\" instead", true)]
public Action<PointerEventData, int, int> onPointerClickPie { get; set; }
/// <summary> /// <summary>
/// the callback function of pointer enter pie area. /// the callback function of pointer enter pie area.
/// |鼠标进入和离开饼图区域回调SerieDataIndex为-1时表示离开。参数PointerEventDataSerieIndexSerieDataIndex /// |鼠标进入和离开饼图区域回调SerieDataIndex为-1时表示离开。参数PointerEventDataSerieIndexSerieDataIndex
/// </summary> /// </summary>
[Since("v3.3.0")] [Since("v3.3.0")]
[Obsolete("Use \"onSerieEnter\" instead", true)]
public Action<int, int> onPointerEnterPie { set { m_OnPointerEnterPie = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerEnterPie; } } public Action<int, int> onPointerEnterPie { set { m_OnPointerEnterPie = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerEnterPie; } }
/// <summary> /// <summary>
/// the callback function of click bar. /// the callback function of click bar.
/// |点击柱形图柱条回调。参数eventData, dataIndex /// |点击柱形图柱条回调。参数eventData, dataIndex
/// </summary> /// </summary>
public Action<PointerEventData, int> onPointerClickBar { set { m_OnPointerClickBar = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerClickBar; } } [Obsolete("Use \"onSerieClick\" instead", true)]
public Action<PointerEventData, int> onPointerClickBar { get; set; }
/// <summary> /// <summary>
/// 坐标轴变更数据索引时回调。参数axis, dataIndex/dataValue /// 坐标轴变更数据索引时回调。参数axis, dataIndex/dataValue
/// </summary> /// </summary>

View File

@@ -89,9 +89,11 @@ namespace XCharts.Runtime
protected Action<VertexHelper> m_OnDrawTop; protected Action<VertexHelper> m_OnDrawTop;
protected Action<VertexHelper, Serie> m_OnDrawSerieBefore; protected Action<VertexHelper, Serie> m_OnDrawSerieBefore;
protected Action<VertexHelper, Serie> m_OnDrawSerieAfter; protected Action<VertexHelper, Serie> m_OnDrawSerieAfter;
protected Action<PointerEventData, int, int> m_OnPointerClickPie; protected Action<SerieEventData> m_OnSerieClick;
protected Action<SerieEventData> m_OnSerieDown;
protected Action<SerieEventData> m_OnSerieEnter;
protected Action<SerieEventData> m_OnSerieExit;
protected Action<int, int> m_OnPointerEnterPie; protected Action<int, int> m_OnPointerEnterPie;
protected Action<PointerEventData, int> m_OnPointerClickBar;
protected Action<Axis, double> m_OnAxisPointerValueChanged; protected Action<Axis, double> m_OnAxisPointerValueChanged;
protected Action<Legend, int, string, bool> m_OnLegendClick; protected Action<Legend, int, string, bool> m_OnLegendClick;
protected Action<Legend, int, string> m_OnLegendEnter; protected Action<Legend, int, string> m_OnLegendEnter;

View File

@@ -228,7 +228,7 @@ namespace XCharts.Runtime
protected virtual void CheckRefreshChart() protected virtual void CheckRefreshChart()
{ {
if (m_RefreshChart) if (m_RefreshChart && m_Painter != null)
{ {
m_Painter.Refresh(); m_Painter.Refresh();
m_RefreshChart = false; m_RefreshChart = false;
@@ -237,6 +237,7 @@ namespace XCharts.Runtime
protected virtual void CheckRefreshPainter() protected virtual void CheckRefreshPainter()
{ {
if (m_Painter == null) return;
m_Painter.CheckRefresh(); m_Painter.CheckRefresh();
} }

View File

@@ -0,0 +1,46 @@
using UnityEngine;
namespace XCharts.Runtime
{
/// <summary>
/// the data of serie event.
/// |serie事件的数据。
/// </summary>
public class SerieEventData
{
/// <summary>
/// the position of pointer in chart.
/// |鼠标在chart中的位置。
/// </summary>
public Vector3 pointerPos { get; set; }
/// <summary>
/// the index of serie in chart.series.
/// |在chart.series中的索引。
/// </summary>
public int serieIndex { get; set; }
/// <summary>
/// the index of data in serie.data.
/// |在serie.data中的索引。
/// </summary>
public int dataIndex { get; set; }
/// <summary>
/// the dimension of data.
/// |数据的维度。
/// </summary>
public int dimension { get; set; }
/// <summary>
/// the value of data.
/// |数据的值。
/// </summary>
public double value { get; set; }
public void Reset()
{
serieIndex = -1;
dataIndex = -1;
dimension = -1;
value = 0;
pointerPos = Vector3.zero;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fdfaa773d93294d78b2fb4b8f42708a3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,33 @@
using UnityEngine;
namespace XCharts.Runtime
{
public static class SerieEventDataPool
{
private static readonly ObjectPool<SerieEventData> s_ListPool = new ObjectPool<SerieEventData>(null, OnClear);
static void OnGet(SerieEventData data)
{
}
static void OnClear(SerieEventData data)
{
data.Reset();
}
public static SerieEventData Get(Vector3 pos, int serieIndex, int dataIndex, int dimension, double value)
{
var data = s_ListPool.Get();
data.serieIndex = serieIndex;
data.dataIndex = dataIndex;
data.pointerPos = pos;
data.dimension = dimension;
return data;
}
public static void Release(SerieEventData toRelease)
{
s_ListPool.Release(toRelease);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 30d123dd5c38446f18183f50336322bb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -161,11 +161,11 @@ namespace XCharts.Runtime
{ {
#if UNITY_EDITOR #if UNITY_EDITOR
if (!Application.isPlaying) if (!Application.isPlaying)
GameObject.DestroyImmediate(component as GameObject, true); GameObject.DestroyImmediate(component as UnityEngine.Object);
else else
GameObject.Destroy(component as GameObject); GameObject.Destroy(component as UnityEngine.Object);
#else #else
GameObject.Destroy(component as GameObject); GameObject.Destroy(component as UnityEngine.Object);
#endif #endif
} }
} }
@@ -389,6 +389,7 @@ namespace XCharts.Runtime
var alignment = textStyle.GetAlignment(autoAlignment); var alignment = textStyle.GetAlignment(autoAlignment);
UpdateAnchorAndPivotByTextAlignment(alignment, out anchorMin, out anchorMax, out pivot); UpdateAnchorAndPivotByTextAlignment(alignment, out anchorMin, out anchorMax, out pivot);
var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
ChartHelper.RemoveComponent<Text>(labelObj);
var label = EnsureComponent<ChartLabel>(labelObj); var label = EnsureComponent<ChartLabel>(labelObj);
label.text = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, label.text = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot,
sizeDelta, textStyle, theme, autoColor, autoAlignment, label.text); sizeDelta, textStyle, theme, autoColor, autoAlignment, label.text);

View File

@@ -78,16 +78,6 @@ namespace XCharts.Runtime
} }
} }
public override void OnPointerDown(PointerEventData eventData)
{
if (!serie.context.pointerEnter) return;
if (serie.context.pointerItemDataIndex < 0) return;
if (chart.onPointerClickBar != null)
{
chart.onPointerClickBar(eventData, serie.context.pointerItemDataIndex);
}
}
private void UpdateSerieGridContext() private void UpdateSerieGridContext()
{ {
if (m_SerieGrid == null) if (m_SerieGrid == null)

View File

@@ -14,7 +14,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category,
@@ -30,7 +29,7 @@ namespace XCharts.Runtime
DrawBarSerie(vh, serie, serie.context.colorIndex); DrawBarSerie(vh, serie, serie.context.colorIndex);
} }
private void UpdateSerieContext() public override void UpdateSerieContext()
{ {
if (m_SerieGrid == null) if (m_SerieGrid == null)
return; return;

View File

@@ -27,10 +27,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
if (serie.IsUseCoord<GridCoord>())
UpdateSerieContext();
else if (serie.IsUseCoord<PolarCoord>())
UpdateSeriePolarContext();
} }
public override void DrawSerie(VertexHelper vh) public override void DrawSerie(VertexHelper vh)
@@ -121,7 +117,15 @@ namespace XCharts.Runtime
} }
} }
private void UpdateSerieContext() public override void UpdateSerieContext()
{
if (serie.IsUseCoord<GridCoord>())
UpdateSerieGridContext();
else if (serie.IsUseCoord<PolarCoord>())
UpdateSeriePolarContext();
}
private void UpdateSerieGridContext()
{ {
if (m_SerieGrid == null) if (m_SerieGrid == null)
return; return;

View File

@@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using UnityEngine; using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI; using UnityEngine.UI;
using XUGL; using XUGL;
@@ -96,5 +97,27 @@ namespace XCharts.Runtime
} }
} }
} }
public override int GetPointerItemDataIndex()
{
var symbolSize = SerieHelper.GetSysmbolSize(serie, null, chart.theme, chart.theme.serie.lineSymbolSize) * 1.5f;
var count = serie.context.dataPoints.Count;
for (int i = 0; i < count; i++)
{
var index = serie.context.dataIndexs[i];
var serieData = serie.GetSerieData(index);
if (serieData == null)
continue;
if (serieData.context.isClip)
continue;
var pos = serie.context.dataPoints[i];
if (Vector2.Distance(pos, chart.pointerPos) < symbolSize)
{
return i;
}
}
return -1;
}
} }
} }

View File

@@ -15,7 +15,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category,
@@ -31,7 +30,7 @@ namespace XCharts.Runtime
DrawLineSerie(vh, serie); DrawLineSerie(vh, serie);
} }
private void UpdateSerieContext() public override void UpdateSerieContext()
{ {
if (m_SerieGrid == null) if (m_SerieGrid == null)
return; return;

View File

@@ -11,7 +11,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
public override void DrawSerie(VertexHelper vh) public override void DrawSerie(VertexHelper vh)
@@ -19,8 +18,6 @@ namespace XCharts.Runtime
DrawParallelSerie(vh, serie); DrawParallelSerie(vh, serie);
} }
private void UpdateSerieContext() { }
private void DrawParallelSerie(VertexHelper vh, Parallel serie) private void DrawParallelSerie(VertexHelper vh, Parallel serie)
{ {
if (!serie.show) return; if (!serie.show) return;

View File

@@ -12,7 +12,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
public override void DrawBase(VertexHelper vh) public override void DrawBase(VertexHelper vh)
@@ -79,32 +78,28 @@ namespace XCharts.Runtime
public override void OnPointerDown(PointerEventData eventData) public override void OnPointerDown(PointerEventData eventData)
{ {
if (!chart.HasSerie<Pie>()) return;
if (chart.pointerPos == Vector2.zero) return; if (chart.pointerPos == Vector2.zero) return;
var dataIndex = GetPiePosIndex(serie, chart.pointerPos);
var refresh = false; var refresh = false;
for (int i = 0; i < chart.series.Count; i++) if (dataIndex >= 0)
{
var serie = chart.GetSerie(i);
if (!(serie is Pie)) continue;
var index = GetPiePosIndex(serie, chart.pointerPos);
if (index >= 0)
{ {
refresh = true; refresh = true;
for (int j = 0; j < serie.data.Count; j++) for (int j = 0; j < serie.data.Count; j++)
{ {
if (j == index) serie.data[j].context.selected = !serie.data[j].context.selected; if (j == dataIndex) serie.data[j].context.selected = !serie.data[j].context.selected;
else serie.data[j].context.selected = false; else serie.data[j].context.selected = false;
} }
if (chart.onPointerClickPie != null)
{
chart.onPointerClickPie(eventData, i, index);
}
}
} }
if (refresh) chart.RefreshChart(); if (refresh) chart.RefreshChart();
base.OnPointerDown(eventData);
} }
private void UpdateSerieContext() public override int GetPointerItemDataIndex()
{
return GetPiePosIndex(serie, chart.pointerPos);
}
public override void UpdateSerieContext()
{ {
var needCheck = m_LegendEnter || (chart.isPointerInChart && PointerIsInPieSerie(serie, chart.pointerPos)); var needCheck = m_LegendEnter || (chart.isPointerInChart && PointerIsInPieSerie(serie, chart.pointerPos));
var needInteract = false; var needInteract = false;
@@ -123,21 +118,16 @@ namespace XCharts.Runtime
serieData.context.highlight = false; serieData.context.highlight = false;
serieData.interact.SetValueAndColor(ref needInteract, serieData.context.outsideRadius, color, toColor); serieData.interact.SetValueAndColor(ref needInteract, serieData.context.outsideRadius, color, toColor);
} }
if (chart.onPointerEnterPie != null)
{
chart.onPointerEnterPie(serie.index, serie.context.pointerItemDataIndex);
}
if (needInteract) if (needInteract)
{
chart.RefreshPainter(serie); chart.RefreshPainter(serie);
} }
}
return; return;
} }
m_LastCheckContextFlag = needCheck; m_LastCheckContextFlag = needCheck;
var lastPointerItemDataIndex = serie.context.pointerItemDataIndex; var lastPointerItemDataIndex = serie.context.pointerItemDataIndex;
var dataIndex = GetPiePosIndex(serie, chart.pointerPos); var dataIndex = GetPiePosIndex(serie, chart.pointerPos);
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerEnter = dataIndex >= 0;
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];
@@ -162,10 +152,6 @@ namespace XCharts.Runtime
if (lastPointerItemDataIndex != serie.context.pointerItemDataIndex) if (lastPointerItemDataIndex != serie.context.pointerItemDataIndex)
{ {
needInteract = true; needInteract = true;
if (chart.onPointerEnterPie != null)
{
chart.onPointerEnterPie(serie.index, serie.context.pointerItemDataIndex);
}
} }
if (needInteract) if (needInteract)
{ {
@@ -234,7 +220,7 @@ namespace XCharts.Runtime
serieData.context.outsideRadius += chart.theme.serie.pieTooltipExtraRadius; serieData.context.outsideRadius += chart.theme.serie.pieTooltipExtraRadius;
} }
var offset = 0f; var offset = 0f;
if (serie.pieClickOffset && serieData.selected) if (serie.pieClickOffset && (serieData.selected || serieData.context.selected))
{ {
offset += chart.theme.serie.pieSelectedOffset; offset += chart.theme.serie.pieSelectedOffset;
} }
@@ -258,7 +244,7 @@ namespace XCharts.Runtime
serieData.context.offsetRadius = 0; serieData.context.offsetRadius = 0;
serieData.context.insideRadius -= serieData.context.offsetRadius; serieData.context.insideRadius -= serieData.context.offsetRadius;
serieData.context.outsideRadius -= serieData.context.offsetRadius; serieData.context.outsideRadius -= serieData.context.offsetRadius;
if (serie.pieClickOffset && serieData.selected) if (serie.pieClickOffset && (serieData.selected || serieData.context.selected))
{ {
serieData.context.offsetRadius += chart.theme.serie.pieSelectedOffset; serieData.context.offsetRadius += chart.theme.serie.pieSelectedOffset;
if (serieData.context.insideRadius > 0) if (serieData.context.insideRadius > 0)
@@ -350,7 +336,7 @@ namespace XCharts.Runtime
serieData.interact.SetValueAndColor(ref interacting, outsideRadius, color, toColor); serieData.interact.SetValueAndColor(ref interacting, outsideRadius, color, toColor);
} }
if (serie.pieClickOffset && serieData.selected) if (serie.pieClickOffset && (serieData.selected || serieData.context.selected))
{ {
var drawEndDegree = serieData.context.currentAngle; var drawEndDegree = serieData.context.currentAngle;
var needRoundCap = serie.roundCap && insideRadius > 0; var needRoundCap = serie.roundCap && insideRadius > 0;
@@ -538,7 +524,7 @@ namespace XCharts.Runtime
var serieData = serie.data[i]; var serieData = serie.data[i];
if (angle >= serieData.context.startAngle && angle <= serieData.context.toAngle) if (angle >= serieData.context.startAngle && angle <= serieData.context.toAngle)
{ {
var ndist = serieData.selected ? var ndist = (serieData.selected || serieData.context.selected) ?
Vector2.Distance(local, serieData.context.offsetCenter) : Vector2.Distance(local, serieData.context.offsetCenter) :
dist; dist;
if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius) if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius)

View File

@@ -12,7 +12,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
public override void DrawSerie(VertexHelper vh) public override void DrawSerie(VertexHelper vh)
@@ -86,22 +85,33 @@ namespace XCharts.Runtime
} }
} }
private void UpdateSerieContext() public override void UpdateSerieContext()
{ {
var needCheck = m_LegendEnter || var needCheck = m_LegendEnter ||
(chart.isPointerInChart && (m_RadarCoord != null && m_RadarCoord.IsPointerEnter())); (chart.isPointerInChart && (m_RadarCoord != null && m_RadarCoord.IsPointerEnter()));
var needInteract = false; var needInteract = false;
var needHideAll = false;
if (!needCheck) if (!needCheck)
{ {
if (m_LastCheckContextFlag == needCheck) if (m_LastCheckContextFlag != needCheck)
{
m_LastCheckContextFlag = needCheck;
serie.context.pointerItemDataIndex = -1;
serie.context.pointerItemDataDimension = -1;
serie.context.pointerEnter = false;
foreach (var serieData in serie.data)
{
serieData.context.highlight = false;
serieData.interact.Reset();
}
chart.RefreshPainter(serie);
}
return; return;
needHideAll = true;
} }
m_LastCheckContextFlag = needCheck; m_LastCheckContextFlag = needCheck;
serie.highlight = false; serie.highlight = false;
serie.context.pointerEnter = false; serie.context.pointerEnter = false;
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerItemDataDimension = -1;
var areaStyle = serie.areaStyle; var areaStyle = serie.areaStyle;
var themeSymbolSize = chart.theme.serie.lineSymbolSize; var themeSymbolSize = chart.theme.serie.lineSymbolSize;
switch (serie.radarType) switch (serie.radarType)
@@ -112,21 +122,23 @@ namespace XCharts.Runtime
var serieData = serie.data[i]; var serieData = serie.data[i];
var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
if (needHideAll || m_LegendEnter) if (m_LegendEnter)
{ {
serieData.context.highlight = needHideAll ? false : true; serieData.context.highlight = true;
serieData.interact.SetValue(ref needInteract, symbolSize, serieData.context.highlight); serieData.interact.SetValue(ref needInteract, symbolSize, serieData.context.highlight);
} }
else else
{ {
serieData.context.highlight = false; serieData.context.highlight = false;
foreach (var pos in serieData.context.dataPoints) for (int n = 0; n < serieData.context.dataPoints.Count; n++)
{ {
var pos = serieData.context.dataPoints[n];
if (Vector3.Distance(chart.pointerPos, pos) < symbolSize * 2) if (Vector3.Distance(chart.pointerPos, pos) < symbolSize * 2)
{ {
serie.highlight = true; serie.highlight = true;
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = i; serie.context.pointerItemDataIndex = i;
serie.context.pointerItemDataDimension = n;
serieData.context.highlight = true; serieData.context.highlight = true;
break; break;
} }
@@ -144,6 +156,7 @@ namespace XCharts.Runtime
serie.highlight = true; serie.highlight = true;
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = i; serie.context.pointerItemDataIndex = i;
serie.context.pointerItemDataDimension = n;
serieData.context.highlight = true; serieData.context.highlight = true;
break; break;
} }
@@ -163,6 +176,7 @@ namespace XCharts.Runtime
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = i; serie.context.pointerItemDataIndex = i;
serie.context.pointerItemDataDimension = 1;
serieData.context.highlight = true; serieData.context.highlight = true;
needInteract = true; needInteract = true;
} }
@@ -183,6 +197,7 @@ namespace XCharts.Runtime
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = n; serie.context.pointerItemDataIndex = n;
serie.context.pointerItemDataDimension = 1;
p1.context.highlight = true; p1.context.highlight = true;
needInteract = true; needInteract = true;
break; break;

View File

@@ -16,10 +16,9 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
private void UpdateSerieContext() public override void UpdateSerieContext()
{ {
var needCheck = chart.isPointerInChart || m_LegendEnter; var needCheck = chart.isPointerInChart || m_LegendEnter;
var needInteract = false; var needInteract = false;

View File

@@ -13,7 +13,6 @@ namespace XCharts.Runtime
public override void Update() public override void Update()
{ {
base.Update(); base.Update();
UpdateSerieContext();
} }
public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category,
@@ -63,7 +62,7 @@ namespace XCharts.Runtime
} }
} }
private void UpdateSerieContext() public override void UpdateSerieContext()
{ {
var needCheck = m_LegendEnter || (chart.isPointerInChart && (m_Grid == null || m_Grid.IsPointerEnter())); var needCheck = m_LegendEnter || (chart.isPointerInChart && (m_Grid == null || m_Grid.IsPointerEnter()));

View File

@@ -309,6 +309,27 @@ namespace XCharts.Runtime
[NonSerialized] public List<SerieData> m_FilterData = new List<SerieData>(); [NonSerialized] public List<SerieData> m_FilterData = new List<SerieData>();
[NonSerialized] private bool m_NameDirty; [NonSerialized] private bool m_NameDirty;
/// <summary>
/// event callback when click serie.
/// |点击系列时的回调。
/// </summary>
public Action<SerieEventData> onClick { get; set; }
/// <summary>
/// event callback when mouse down on serie.
/// |鼠标按下时的回调。
/// </summary>
public Action<SerieEventData> onDown { get; set; }
/// <summary>
/// event callback when mouse enter serie.
/// |鼠标进入时的回调。
/// </summary>
public Action<SerieEventData> onEnter { get; set; }
/// <summary>
/// event callback when mouse leave serie.
/// |鼠标离开时的回调。
/// </summary>
public Action<SerieEventData> onExit { get; set; }
/// <summary> /// <summary>
/// The index of serie. /// The index of serie.
/// |系列索引。 /// |系列索引。

View File

@@ -26,6 +26,10 @@ namespace XCharts.Runtime
/// </summary> /// </summary>
public int pointerItemDataIndex = -1; public int pointerItemDataIndex = -1;
/// <summary> /// <summary>
/// 鼠标当前指示的数据项维度
/// </summary>
public int pointerItemDataDimension = 1;
/// <summary>
/// 鼠标所在轴线上的数据项索引(可能有多个) /// 鼠标所在轴线上的数据项索引(可能有多个)
/// </summary> /// </summary>
public List<int> pointerAxisDataIndexs = new List<int>(); public List<int> pointerAxisDataIndexs = new List<int>();

View File

@@ -31,14 +31,18 @@ namespace XCharts.Runtime
public virtual void OnScroll(PointerEventData eventData) { } public virtual void OnScroll(PointerEventData eventData) { }
public virtual void RefreshLabelNextFrame() { } public virtual void RefreshLabelNextFrame() { }
public virtual void RefreshLabelInternal() { } public virtual void RefreshLabelInternal() { }
public virtual void UpdateSerieContext() { }
public virtual void UpdateTooltipSerieParams(int dataIndex, bool showCategory, public virtual void UpdateTooltipSerieParams(int dataIndex, bool showCategory,
string category, string marker, string category, string marker,
string itemFormatter, string numericFormatter, string ignoreDataDefaultContent, string itemFormatter, string numericFormatter, string ignoreDataDefaultContent,
ref List<SerieParams> paramList, ref string title) { } ref List<SerieParams> paramList, ref string title)
{ }
public virtual void OnLegendButtonClick(int index, string legendName, bool show) { } public virtual void OnLegendButtonClick(int index, string legendName, bool show) { }
public virtual void OnLegendButtonEnter(int index, string legendName) { } public virtual void OnLegendButtonEnter(int index, string legendName) { }
public virtual void OnLegendButtonExit(int index, string legendName) { } public virtual void OnLegendButtonExit(int index, string legendName) { }
internal abstract void SetSerie(Serie serie); internal abstract void SetSerie(Serie serie);
public virtual int GetPointerItemDataIndex() { return -1; }
public virtual int GetPointerItemDataDimension() { return 1; }
} }
public abstract class SerieHandler<T> : SerieHandler where T : Serie public abstract class SerieHandler<T> : SerieHandler where T : Serie
@@ -121,6 +125,36 @@ namespace XCharts.Runtime
serie.ResetInteract(); serie.ResetInteract();
serie.ClearVerticesDirty(); serie.ClearVerticesDirty();
} }
UpdateSerieContextInternal();
}
private void UpdateSerieContextInternal()
{
var lastEnter = serie.context.pointerEnter;
var lastDataIndex = serie.context.pointerItemDataIndex;
UpdateSerieContext();
if (lastEnter != serie.context.pointerEnter || lastDataIndex != serie.context.pointerItemDataIndex)
{
if (chart.onSerieEnter != null || chart.onSerieExit != null || serie.onEnter != null || serie.onExit != null)
{
var dataIndex = GetPointerItemDataIndex();
var dimension = GetPointerItemDataDimension();
var value = serie.GetData(dataIndex, dimension);
var data = SerieEventDataPool.Get(chart.pointerPos, serie.index, dataIndex, dimension, value);
if (serie.context.pointerEnter)
{
if (serie.onEnter != null) serie.onEnter(data);
if (chart.onSerieEnter != null) chart.onSerieEnter(data);
}
else
{
data.dataIndex = lastDataIndex;
if (serie.onExit != null) serie.onExit(data);
if (chart.onSerieExit != null) chart.onSerieExit(data);
}
SerieEventDataPool.Release(data);
}
}
} }
public override void RefreshLabelNextFrame() public override void RefreshLabelNextFrame()
@@ -613,5 +647,47 @@ namespace XCharts.Runtime
chart.DrawSymbol(vh, symbol.type, symbol.size, 1, pos, chart.DrawSymbol(vh, symbol.type, symbol.size, 1, pos,
color, color, ColorUtil.clearColor32, color, symbol.gap, null); color, color, ColorUtil.clearColor32, color, symbol.gap, null);
} }
public override void OnPointerDown(PointerEventData eventData)
{
if (serie.onDown == null && chart.onSerieDown == null) return;
if (!serie.context.pointerEnter) return;
var dataIndex = GetPointerItemDataIndex();
if (dataIndex < 0) return;
var dimension = GetPointerItemDataDimension();
var value = serie.GetData(dataIndex, dimension);
var data = SerieEventDataPool.Get(chart.pointerPos, serie.index, dataIndex, dimension, value);
if (chart.onSerieDown != null)
chart.onSerieDown(data);
if (serie.onDown != null)
serie.onDown(data);
SerieEventDataPool.Release(data);
}
public override void OnPointerClick(PointerEventData eventData)
{
if (serie.onClick == null && chart.onSerieClick == null) return;
if (!serie.context.pointerEnter) return;
var dataIndex = GetPointerItemDataIndex();
if (dataIndex < 0) return;
var dimension = GetPointerItemDataDimension();
var value = serie.GetData(dataIndex, dimension);
var data = SerieEventDataPool.Get(chart.pointerPos, serie.index, dataIndex, dimension, value);
if (chart.onSerieClick != null)
chart.onSerieClick(data);
if (serie.onClick != null)
serie.onClick(data);
SerieEventDataPool.Release(data);
}
public override int GetPointerItemDataIndex()
{
return serie.context.pointerItemDataIndex;
}
public override int GetPointerItemDataDimension()
{
return serie.context.pointerItemDataDimension;
}
} }
} }