修复无法从Inspector中修改数据的问题

This commit is contained in:
monitor1394
2019-08-04 23:01:34 +08:00
parent 2c18e16bd2
commit 5330448373
5 changed files with 34 additions and 93 deletions

View File

@@ -43,9 +43,10 @@ namespace XCharts
float offset = m_Bar.inSameBar ?
(scaleWid - barWid - m_Bar.space * (stackCount - 1)) / 2 :
(scaleWid - barWid * stackCount - m_Bar.space * (stackCount - 1)) / 2;
var showData = serie.GetDataList(m_DataZoom);
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > serie.yData.Count ? serie.yData.Count : maxShowDataNumber)
: serie.yData.Count;
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
: showData.Count;
if (seriesHig.Count < minShowDataNumber)
{
for (int i = 0; i < minShowDataNumber; i++)
@@ -59,7 +60,7 @@ namespace XCharts
{
seriesHig.Add(0);
}
float value = serie.yData[i];
float value = showData[i].data[1];
float pX = seriesHig[i] + coordinateX + xAxis.zeroXOffset + yAxis.axisLine.width;
float pY = coordinateY + +i * scaleWid;
if (!yAxis.boundaryGap) pY -= scaleWid / 2;
@@ -89,7 +90,7 @@ namespace XCharts
Serie serie, Color color, ref List<float> seriesHig)
{
if (!IsActive(serie.name)) return;
List<float> showData = serie.GetYDataList(m_DataZoom);
var showData = serie.GetDataList(m_DataZoom);
var yAxis = m_YAxises[serie.axisIndex];
var xAxis = m_XAxises[serie.axisIndex];
if (!xAxis.show) xAxis = m_XAxises[(serie.axisIndex + 1) % m_XAxises.Count];
@@ -114,7 +115,7 @@ namespace XCharts
{
seriesHig.Add(0);
}
float value = showData[i];
float value = showData[i].data[1];
float pX = coordinateX + i * scaleWid;
float zeroY = coordinateY + yAxis.zeroYOffset;
if (!xAxis.boundaryGap) pX -= scaleWid / 2;

View File

@@ -206,8 +206,6 @@ namespace XCharts
private int filterStart { get; set; }
private int filterEnd { get; set; }
private List<float> yFilterData { get; set; }
private List<float> xFilterData { get; set; }
private List<SerieData> filterData { get; set; }
/// <summary>
@@ -493,54 +491,6 @@ namespace XCharts
}
}
/// <summary>
/// 获得维度Y的数据列表
/// </summary>
/// <param name="dataZoom"></param>
/// <returns></returns>
public List<float> GetYDataList(DataZoom dataZoom)
{
if (dataZoom != null && dataZoom.show)
{
var startIndex = (int)((yData.Count - 1) * dataZoom.start / 100);
var endIndex = (int)((yData.Count - 1) * dataZoom.end / 100);
var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1;
if (yFilterData == null || yFilterData.Count != count)
{
UpdateFilterData(dataZoom);
}
return yFilterData;
}
else
{
return m_YData;
}
}
/// <summary>
/// 获得维度X的数据列表
/// </summary>
/// <param name="dataZoom"></param>
/// <returns></returns>
public List<float> GetXDataList(DataZoom dataZoom)
{
if (dataZoom != null && dataZoom.show)
{
var startIndex = (int)((xData.Count - 1) * dataZoom.start / 100);
var endIndex = (int)((xData.Count - 1) * dataZoom.end / 100);
var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1;
if (xFilterData == null || xFilterData.Count != count)
{
UpdateFilterData(dataZoom);
}
return xFilterData;
}
else
{
return m_XData;
}
}
/// <summary>
/// 获得系列的数据列表
/// </summary>
@@ -598,29 +548,13 @@ namespace XCharts
{
if (dataZoom != null && dataZoom.show)
{
var startIndex = (int)((yData.Count - 1) * dataZoom.start / 100);
var endIndex = (int)((yData.Count - 1) * dataZoom.end / 100);
var startIndex = (int)((data.Count - 1) * dataZoom.start / 100);
var endIndex = (int)((data.Count - 1) * dataZoom.end / 100);
if (startIndex != filterStart || endIndex != filterEnd)
{
filterStart = startIndex;
filterEnd = endIndex;
var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1;
if (m_YData.Count > 0)
{
yFilterData = m_YData.GetRange(startIndex, count);
}
else
{
yFilterData = m_YData;
}
if (m_XData.Count > 0)
{
xFilterData = m_XData.GetRange(startIndex, count);
}
else
{
xFilterData = m_XData;
}
if (m_Data.Count > 0)
{
filterData = m_Data.GetRange(startIndex, count);
@@ -632,8 +566,6 @@ namespace XCharts
}
else if (endIndex == 0)
{
yFilterData = new List<float>();
xFilterData = new List<float>();
filterData = new List<SerieData>();
}
}

View File

@@ -511,12 +511,12 @@ namespace XCharts
{
var serie = ss.Value[i];
if (serie.axisIndex != axisIndex) continue;
var showData = yValue ? serie.GetYDataList(dataZoom) : serie.GetXDataList(dataZoom);
var showData = serie.GetDataList(dataZoom);
for (int j = 0; j < showData.Count; j++)
{
if (!_serieTotalValueForMinMax.ContainsKey(j))
_serieTotalValueForMinMax[j] = 0;
_serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + showData[j];
_serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + (yValue ? showData[j].data[1] : showData[i].data[0]);
}
}
float tmax = int.MinValue;
@@ -537,11 +537,20 @@ namespace XCharts
if (m_Series[i].axisIndex != axisIndex) continue;
if (IsActive(i))
{
var showData = yValue ? m_Series[i].GetYDataList(dataZoom) : m_Series[i].GetXDataList(dataZoom);
var showData = m_Series[i].GetDataList(dataZoom);
foreach (var data in showData)
{
if (data > max) max = data;
if (data < min) min = data;
if (yValue)
{
if (data.data[1] > max) max = data.data[1];
if (data.data[1] < min) min = data.data[1];
}
else
{
if (data.data[0] > max) max = data.data[0];
if (data.data[0] < min) min = data.data[0];
}
}
}
}

View File

@@ -891,7 +891,7 @@ namespace XCharts
{
Serie serie = m_Series.series[0];
Axis axis = yAxises[0];
float scaleWid = coordinateWid / (serie.yData.Count - 1);
float scaleWid = coordinateWid / (serie.data.Count - 1);
Vector3 lp = Vector3.zero;
Vector3 np = Vector3.zero;
int minValue = 0;
@@ -899,9 +899,9 @@ namespace XCharts
m_Series.GetYMinMaxValue(null, 0, out minValue, out maxValue);
axis.AdjustMinMaxValue(ref minValue, ref maxValue);
if (minValue > 0 && maxValue > 0) minValue = 0;
for (int i = 0; i < serie.yData.Count; i++)
for (int i = 0; i < serie.data.Count; i++)
{
float value = serie.yData[i];
float value = serie.data[i].data[1];
float pX = coordinateX + i * scaleWid;
float dataHig = value / (maxValue - minValue) * m_DataZoom.height;
np = new Vector3(pX, m_DataZoom.bottom + dataHig);

View File

@@ -134,8 +134,7 @@ namespace XCharts
lastPoints.Clear();
lastSmoothPoints.Clear();
smoothPoints.Clear();
List<float> yData = serie.GetYDataList(m_DataZoom);
List<float> xData = serie.GetXDataList(m_DataZoom);
var showData = serie.GetDataList(m_DataZoom);
Vector3 lp = Vector3.zero;
Vector3 np = Vector3.zero;
@@ -145,8 +144,8 @@ namespace XCharts
float scaleWid = xAxis.GetDataWidth(coordinateWid, m_DataZoom);
float startX = coordinateX + (xAxis.boundaryGap ? scaleWid / 2 : 0);
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > yData.Count ? yData.Count : maxShowDataNumber)
: yData.Count;
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
: showData.Count;
dataCount = (maxCount - minShowDataNumber);
if (m_Line.area && points.Count > 0)
{
@@ -180,11 +179,11 @@ namespace XCharts
{
seriesHig.Add(0);
}
float yValue = yData[i];
float yValue = showData[i].data[1];
float yDataHig;
if (xAxis.IsValue())
{
float xValue = i > xData.Count - 1 ? 0 : xData[i];
float xValue = i > showData.Count - 1 ? 0 : showData[i].data[0];
float pX = coordinateX + xAxis.axisLine.width;
float pY = seriesHig[i] + coordinateY + xAxis.axisLine.width;
float xDataHig = (xValue - xAxis.minValue) / (xAxis.maxValue - xAxis.minValue) * coordinateWid;
@@ -336,7 +335,7 @@ namespace XCharts
lastPoints.Clear();
lastSmoothPoints.Clear();
smoothPoints.Clear();
var showData = serie.GetDataList(m_DataZoom);
Vector3 lp = Vector3.zero;
Vector3 np = Vector3.zero;
var xAxis = m_XAxises[serie.axisIndex];
@@ -345,8 +344,8 @@ namespace XCharts
float scaleWid = yAxis.GetDataWidth(coordinateHig, m_DataZoom);
float startY = coordinateY + (yAxis.boundaryGap ? scaleWid / 2 : 0);
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > serie.yData.Count ? serie.yData.Count : maxShowDataNumber)
: serie.yData.Count;
(maxShowDataNumber > showData.Count ? showData.Count : maxShowDataNumber)
: showData.Count;
dataCount = (maxCount - minShowDataNumber);
if (m_Line.area && points.Count > 0)
{
@@ -380,7 +379,7 @@ namespace XCharts
{
seriesHig.Add(0);
}
float value = serie.yData[i];
float value = showData[i].data[1];
float pY = startY + i * scaleWid;
float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width;
float dataHig = (value - xAxis.minValue) / (xAxis.maxValue - xAxis.minValue) * coordinateWid;