重构minShowDataNumber、maxShowDataNumber、maxCacheDataNumber到Serie的minShow、maxShow、maxCache

This commit is contained in:
monitor1394
2019-09-29 07:37:53 +08:00
parent c54d62c8f8
commit 2a1ad8886e
14 changed files with 118 additions and 112 deletions

View File

@@ -39,9 +39,6 @@ namespace XCharts
[SerializeField] protected Tooltip m_Tooltip = Tooltip.defaultTooltip;
[SerializeField] protected Series m_Series = Series.defaultSeries;
[SerializeField] protected float m_Large = 1;
[SerializeField] protected int m_MinShowDataNumber;
[SerializeField] protected int m_MaxShowDataNumber;
[SerializeField] protected int m_MaxCacheDataNumber;
[SerializeField] [Range(1, 8)] private float m_LineSmoothStyle = 2f;
[NonSerialized] private Theme m_CheckTheme = 0;

View File

@@ -41,38 +41,6 @@ namespace XCharts
/// <value></value>
public float chartHeight { get { return m_ChartHeight; } }
/// <summary>
/// The min number of data to show in chart.
/// 图表所显示数据的最小索引
/// </summary>
public int minShowDataNumber
{
get { return m_MinShowDataNumber; }
set { m_MinShowDataNumber = value; if (m_MinShowDataNumber < 0) m_MinShowDataNumber = 0; }
}
/// <summary>
/// The max number of data to show in chart.
/// 图表所显示数据的最大索引
/// </summary>
public int maxShowDataNumber
{
get { return m_MaxShowDataNumber; }
set { m_MaxShowDataNumber = value; if (m_MaxShowDataNumber < 0) m_MaxShowDataNumber = 0; }
}
/// <summary>
/// The max number of serie and axis data cache.
/// The first data will be remove when the size of serie and axis data is larger then maxCacheDataNumber.
/// default:0,unlimited.
/// 图表每个系列中可缓存的最大数据量。默认为0没有限制大于0时超过指定值会移除旧数据再插入新数据。
/// </summary>
public int maxCacheDataNumber
{
get { return m_MaxCacheDataNumber; }
set { m_MaxCacheDataNumber = value; if (m_MaxCacheDataNumber < 0) m_MaxCacheDataNumber = 0; }
}
/// <summary>
/// the smooth line chart style.
/// 平滑折线图的平滑系数。
@@ -159,7 +127,7 @@ namespace XCharts
/// <returns>Returns True on success</returns>
public virtual bool AddData(string serieName, float data, string dataName = null)
{
var success = m_Series.AddData(serieName, data, dataName, m_MaxCacheDataNumber);
var success = m_Series.AddData(serieName, data, dataName);
if (success) RefreshChart();
return success;
}
@@ -174,7 +142,7 @@ namespace XCharts
/// <returns>Returns True on success</returns>
public virtual bool AddData(int serieIndex, float data, string dataName = null)
{
var success = m_Series.AddData(serieIndex, data, dataName, m_MaxCacheDataNumber);
var success = m_Series.AddData(serieIndex, data, dataName);
if (success)
{
RefreshChart();
@@ -193,7 +161,7 @@ namespace XCharts
/// <returns>Returns True on success</returns>
public virtual bool AddData(string serieName, List<float> multidimensionalData, string dataName = null)
{
var success = m_Series.AddData(serieName, multidimensionalData, dataName, m_MaxCacheDataNumber);
var success = m_Series.AddData(serieName, multidimensionalData, dataName);
if (success)
{
RefreshChart();
@@ -212,7 +180,7 @@ namespace XCharts
/// <returns>Returns True on success</returns>
public virtual bool AddData(int serieIndex, List<float> multidimensionalData, string dataName = null)
{
var success = m_Series.AddData(serieIndex, multidimensionalData, dataName, m_MaxCacheDataNumber);
var success = m_Series.AddData(serieIndex, multidimensionalData, dataName);
if (success)
{
RefreshChart();
@@ -232,7 +200,7 @@ namespace XCharts
/// <returns>Returns True on success</returns>
public virtual bool AddData(string serieName, float xValue, float yValue, string dataName)
{
var success = m_Series.AddXYData(serieName, xValue, yValue, dataName, m_MaxCacheDataNumber);
var success = m_Series.AddXYData(serieName, xValue, yValue, dataName);
if (success)
{
RefreshChart();
@@ -252,7 +220,7 @@ namespace XCharts
/// <returns>Returns True on success</returns>
public virtual bool AddData(int serieIndex, float xValue, float yValue, string dataName = null)
{
var success = m_Series.AddXYData(serieIndex, xValue, yValue, dataName, m_MaxCacheDataNumber);
var success = m_Series.AddXYData(serieIndex, xValue, yValue, dataName);
if (success)
{
RefreshChart();

View File

@@ -92,7 +92,7 @@ namespace XCharts
/// <param name="xAxisIndex">which xAxis should category add to</param>
public void AddXAxisData(string category, int xAxisIndex = 0)
{
m_XAxises[xAxisIndex].AddData(category, m_MaxCacheDataNumber);
m_XAxises[xAxisIndex].AddData(category);
m_XAxisChanged = true;
}
@@ -104,7 +104,7 @@ namespace XCharts
/// <param name="yAxisIndex">which yAxis should category add to</param>
public void AddYAxisData(string category, int yAxisIndex = 0)
{
m_YAxises[yAxisIndex].AddData(category, m_MaxCacheDataNumber);
m_YAxises[yAxisIndex].AddData(category);
m_YAxisChanged = true;
}

View File

@@ -26,17 +26,17 @@ namespace XCharts
float space = serie.barGap == -1 ? offset : offset + m_BarLastOffset;
var showData = serie.GetDataList(m_DataZoom);
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
int maxCount = serie.maxShow > 0 ?
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow)
: showData.Count;
if (seriesHig.Count < minShowDataNumber)
if (seriesHig.Count < serie.minShow)
{
for (int i = 0; i < minShowDataNumber; i++)
for (int i = 0; i < serie.minShow; i++)
{
seriesHig.Add(0);
}
}
for (int i = minShowDataNumber; i < maxCount; i++)
for (int i = serie.minShow; i < maxCount; i++)
{
if (i >= seriesHig.Count)
{
@@ -110,18 +110,18 @@ namespace XCharts
float offset = (categoryWidth - totalBarWidth) / 2;
float barGapWidth = barWidth + barWidth * barGap;
float space = serie.barGap == -1 ? offset : offset + m_BarLastOffset;
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
int maxCount = serie.maxShow > 0 ?
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow)
: showData.Count;
if (seriesHig.Count < minShowDataNumber)
if (seriesHig.Count < serie.minShow)
{
for (int i = 0; i < minShowDataNumber; i++)
for (int i = 0; i < serie.minShow; i++)
{
seriesHig.Add(0);
}
}
for (int i = minShowDataNumber; i < maxCount; i++)
for (int i = serie.minShow; i < maxCount; i++)
{
if (i >= seriesHig.Count)
{

View File

@@ -84,22 +84,22 @@ namespace XCharts
if (!xAxis.show) xAxis = m_XAxises[(serie.axisIndex + 1) % m_XAxises.Count];
float scaleWid = xAxis.GetDataWidth(coordinateWid, m_DataZoom);
float startX = coordinateX + (xAxis.boundaryGap ? scaleWid / 2 : 0);
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
int maxCount = serie.maxShow > 0 ?
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow)
: showData.Count;
int i;
if (seriesHig.Count < minShowDataNumber)
if (seriesHig.Count < serie.minShow)
{
for (i = 0; i < minShowDataNumber; i++)
for (i = 0; i < serie.minShow; i++)
{
seriesHig.Add(0);
}
}
int rate = 1;
var sampleDist = serie.lineSampleDist;
if (sampleDist > 0) rate = (int)((maxCount - minShowDataNumber) / (coordinateWid / sampleDist));
if (sampleDist > 0) rate = (int)((maxCount - serie.minShow) / (coordinateWid / sampleDist));
if (rate < 1) rate = 1;
for (i = minShowDataNumber; i < maxCount; i += rate)
for (i = serie.minShow; i < maxCount; i += rate)
{
if (i >= seriesHig.Count)
{
@@ -269,13 +269,13 @@ namespace XCharts
if (!yAxis.show) yAxis = m_YAxises[(serie.axisIndex + 1) % m_YAxises.Count];
float scaleWid = yAxis.GetDataWidth(coordinateHig, m_DataZoom);
float startY = coordinateY + (yAxis.boundaryGap ? scaleWid / 2 : 0);
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
int maxCount = serie.maxShow > 0 ?
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow)
: showData.Count;
int i = 0;
if (seriesHig.Count < minShowDataNumber)
if (seriesHig.Count < serie.minShow)
{
for (i = 0; i < minShowDataNumber; i++)
for (i = 0; i < serie.minShow; i++)
{
seriesHig.Add(0);
}
@@ -284,9 +284,9 @@ namespace XCharts
int rate = 1;
var sampleDist = serie.lineSampleDist;
if (sampleDist > 0) rate = (int)((maxCount - minShowDataNumber) / (coordinateWid / sampleDist));
if (sampleDist > 0) rate = (int)((maxCount - serie.minShow) / (coordinateWid / sampleDist));
if (rate < 1) rate = 1;
for (i = minShowDataNumber; i < maxCount; i += rate)
for (i = serie.minShow; i < maxCount; i += rate)
{
if (i >= seriesHig.Count)
{