mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-25 02:10:16 +00:00
接口优化
This commit is contained in:
@@ -43,8 +43,8 @@ namespace XCharts
|
|||||||
m_DrawRect.y += hig;
|
m_DrawRect.y += hig;
|
||||||
m_Heights[m_KeyName] += hig;
|
m_Heights[m_KeyName] += hig;
|
||||||
|
|
||||||
PropertyField(prop, "m_Name");
|
|
||||||
PropertyField(prop, "m_InsertDataToHead");
|
PropertyField(prop, "m_InsertDataToHead");
|
||||||
|
PropertyField(prop, "m_Name");
|
||||||
switch (serieType)
|
switch (serieType)
|
||||||
{
|
{
|
||||||
case SerieType.Line:
|
case SerieType.Line:
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ namespace XCharts
|
|||||||
/// <param name="serieName">the name of serie</param>
|
/// <param name="serieName">the name of serie</param>
|
||||||
public virtual void RemoveData(string serieName)
|
public virtual void RemoveData(string serieName)
|
||||||
{
|
{
|
||||||
m_Series.Remove(serieName);
|
m_Series.RemoveSerie(serieName);
|
||||||
foreach (var legend in m_Legends) legend.RemoveData(serieName);
|
foreach (var legend in m_Legends) legend.RemoveData(serieName);
|
||||||
m_SerieLabelRoot = null;
|
m_SerieLabelRoot = null;
|
||||||
RefreshChart();
|
RefreshChart();
|
||||||
@@ -220,6 +220,11 @@ namespace XCharts
|
|||||||
return AddSerie(type, serieName, show, addToHead);
|
return AddSerie(type, serieName, show, addToHead);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual Serie InsertSerie(int index, SerieType serieType, string serieName = null, bool show = true)
|
||||||
|
{
|
||||||
|
return m_Series.InsertSerie(index, serieType, serieName, show);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a data to serie.
|
/// Add a data to serie.
|
||||||
/// If serieName doesn't exist in legend,will be add to legend.
|
/// If serieName doesn't exist in legend,will be add to legend.
|
||||||
|
|||||||
@@ -562,6 +562,11 @@ namespace XCharts
|
|||||||
return type == AxisType.Time;
|
return type == AxisType.Time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetNeedUpdateFilterData()
|
||||||
|
{
|
||||||
|
m_NeedUpdateFilterData = true;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加一个类目到类目数据列表
|
/// 添加一个类目到类目数据列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -663,37 +668,43 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
if (dataZoom != null && dataZoom.enable && dataZoom.IsContainsAxis(this))
|
if (dataZoom != null && dataZoom.enable && dataZoom.IsContainsAxis(this))
|
||||||
{
|
{
|
||||||
var startIndex = (int)((data.Count - 1) * dataZoom.start / 100);
|
var data = GetDataList();
|
||||||
var endIndex = (int)((data.Count - 1) * dataZoom.end / 100);
|
var range = Mathf.RoundToInt(data.Count * (dataZoom.end - dataZoom.start) / 100);
|
||||||
if (endIndex < startIndex) endIndex = startIndex;
|
if (range <= 0) range = 1;
|
||||||
if (startIndex != filterStart || endIndex != filterEnd || dataZoom.minShowNum != filterMinShow || m_NeedUpdateFilterData)
|
int start = 0, end = 0;
|
||||||
|
if (dataZoom.runtimeInvert)
|
||||||
{
|
{
|
||||||
filterStart = startIndex;
|
end = Mathf.CeilToInt(data.Count * dataZoom.end / 100);
|
||||||
filterEnd = endIndex;
|
start = end - range;
|
||||||
|
if (start < 0) start = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
start = Mathf.FloorToInt(data.Count * dataZoom.start / 100);
|
||||||
|
end = start + range;
|
||||||
|
if (end > data.Count) end = data.Count;
|
||||||
|
}
|
||||||
|
if (start != filterStart || end != filterEnd || dataZoom.minShowNum != filterMinShow || m_NeedUpdateFilterData)
|
||||||
|
{
|
||||||
|
filterStart = start;
|
||||||
|
filterEnd = end;
|
||||||
filterMinShow = dataZoom.minShowNum;
|
filterMinShow = dataZoom.minShowNum;
|
||||||
m_NeedUpdateFilterData = false;
|
m_NeedUpdateFilterData = false;
|
||||||
var data = GetDataList();
|
|
||||||
if (data.Count > 0)
|
if (data.Count > 0)
|
||||||
{
|
{
|
||||||
var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1;
|
if (range < dataZoom.minShowNum)
|
||||||
if (count < dataZoom.minShowNum)
|
|
||||||
{
|
{
|
||||||
if (dataZoom.minShowNum > data.Count) count = data.Count;
|
if (dataZoom.minShowNum > data.Count) range = data.Count;
|
||||||
else count = dataZoom.minShowNum;
|
else range = dataZoom.minShowNum;
|
||||||
}
|
}
|
||||||
if (startIndex + count > data.Count)
|
filterData = data.GetRange(start, range);
|
||||||
{
|
|
||||||
int start = endIndex - count;
|
|
||||||
filterData = data.GetRange(start < 0 ? 0 : start, count);
|
|
||||||
}
|
|
||||||
else filterData = data.GetRange(startIndex, count);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
filterData = data;
|
filterData = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (endIndex == 0)
|
else if (end == 0)
|
||||||
{
|
{
|
||||||
filterData = emptyFliter;
|
filterData = emptyFliter;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,12 +228,28 @@ namespace XCharts
|
|||||||
/// 移除指定名字的系列。
|
/// 移除指定名字的系列。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="serieName">the name of serie</param>
|
/// <param name="serieName">the name of serie</param>
|
||||||
public void Remove(string serieName)
|
public bool RemoveSerie(string serieName)
|
||||||
{
|
{
|
||||||
var serie = GetSerie(serieName);
|
var serie = GetSerie(serieName);
|
||||||
if (serie != null)
|
return RemoveSerie(serie);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RemoveSerie(int serieIndex)
|
||||||
|
{
|
||||||
|
var serie = GetSerie(serieIndex);
|
||||||
|
return RemoveSerie(serie);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RemoveSerie(Serie serie)
|
||||||
|
{
|
||||||
|
if (serie != null && m_Series.Remove(serie))
|
||||||
{
|
{
|
||||||
m_Series.Remove(serie);
|
SetVerticesDirty();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,6 +271,16 @@ namespace XCharts
|
|||||||
/// <param name="show"></param>
|
/// <param name="show"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Serie AddSerie(SerieType type, string serieName, bool show = true, bool addToHead = false)
|
public Serie AddSerie(SerieType type, string serieName, bool show = true, bool addToHead = false)
|
||||||
|
{
|
||||||
|
return InsertSerie(-1, type, serieName, show, addToHead);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Serie InsertSerie(int index, SerieType type, string serieName, bool show = true)
|
||||||
|
{
|
||||||
|
return InsertSerie(index, type, serieName, show, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Serie InsertSerie(int index, SerieType type, string serieName, bool show = true, bool addToHead = false)
|
||||||
{
|
{
|
||||||
var serie = new Serie();
|
var serie = new Serie();
|
||||||
serie.type = type;
|
serie.type = type;
|
||||||
@@ -278,6 +304,7 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
serie.animation.Restart();
|
serie.animation.Restart();
|
||||||
if (addToHead) m_Series.Insert(0, serie);
|
if (addToHead) m_Series.Insert(0, serie);
|
||||||
|
else if (index >= 0) m_Series.Insert(index, serie);
|
||||||
else m_Series.Add(serie);
|
else m_Series.Add(serie);
|
||||||
for (int i = 0; i < m_Series.Count; i++)
|
for (int i = 0; i < m_Series.Count; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -506,38 +506,43 @@ namespace XCharts
|
|||||||
private static void UpdateFilterData_Category(Serie serie, DataZoom dataZoom)
|
private static void UpdateFilterData_Category(Serie serie, DataZoom dataZoom)
|
||||||
{
|
{
|
||||||
var data = serie.data;
|
var data = serie.data;
|
||||||
var startIndex = (int)((data.Count - 1) * dataZoom.start / 100);
|
var range = Mathf.RoundToInt(data.Count * (dataZoom.end - dataZoom.start) / 100);
|
||||||
var endIndex = (int)((data.Count - 1) * dataZoom.end / 100);
|
if (range <= 0) range = 1;
|
||||||
if (endIndex < startIndex) endIndex = startIndex;
|
int start = 0, end = 0;
|
||||||
|
if (dataZoom.runtimeInvert)
|
||||||
if (startIndex != serie.m_FilterStart || endIndex != serie.m_FilterEnd
|
{
|
||||||
|
end = Mathf.CeilToInt(data.Count * dataZoom.end / 100);
|
||||||
|
start = end - range;
|
||||||
|
if (start < 0) start = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
start = Mathf.FloorToInt(data.Count * dataZoom.start / 100);
|
||||||
|
end = start + range;
|
||||||
|
if (end > data.Count) end = data.Count;
|
||||||
|
}
|
||||||
|
if (start != serie.m_FilterStart || end != serie.m_FilterEnd
|
||||||
|| dataZoom.minShowNum != serie.m_FilterMinShow || serie.m_NeedUpdateFilterData)
|
|| dataZoom.minShowNum != serie.m_FilterMinShow || serie.m_NeedUpdateFilterData)
|
||||||
{
|
{
|
||||||
serie.m_FilterStart = startIndex;
|
serie.m_FilterStart = start;
|
||||||
serie.m_FilterEnd = endIndex;
|
serie.m_FilterEnd = end;
|
||||||
serie.m_FilterMinShow = dataZoom.minShowNum;
|
serie.m_FilterMinShow = dataZoom.minShowNum;
|
||||||
serie.m_NeedUpdateFilterData = false;
|
serie.m_NeedUpdateFilterData = false;
|
||||||
var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1;
|
|
||||||
if (count < dataZoom.minShowNum)
|
|
||||||
{
|
|
||||||
if (dataZoom.minShowNum > data.Count) count = data.Count;
|
|
||||||
else count = dataZoom.minShowNum;
|
|
||||||
}
|
|
||||||
if (data.Count > 0)
|
if (data.Count > 0)
|
||||||
{
|
{
|
||||||
if (startIndex + count > data.Count)
|
if (range < dataZoom.minShowNum)
|
||||||
{
|
{
|
||||||
int start = endIndex - count;
|
if (dataZoom.minShowNum > data.Count) range = data.Count;
|
||||||
data = data.GetRange(start < 0 ? 0 : start, count);
|
else range = dataZoom.minShowNum;
|
||||||
}
|
}
|
||||||
else serie.m_FilterData = data.GetRange(startIndex, count);
|
serie.m_FilterData = data.GetRange(start, range);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serie.m_FilterData = data;
|
serie.m_FilterData = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (endIndex == 0)
|
else if (end == 0)
|
||||||
{
|
{
|
||||||
serie.m_FilterData = emptyFilter;
|
serie.m_FilterData = emptyFilter;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1053,5 +1053,10 @@ namespace XCharts
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsInRect(Vector3 pos, float xMin, float xMax, float yMin, float yMax)
|
||||||
|
{
|
||||||
|
return pos.x >= xMin && pos.x <= xMax && pos.y <= yMax && pos.y >= yMin;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user