mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-28 03:58:49 +00:00
增加Bar的realtimeSort支持实时排序
This commit is contained in:
@@ -167,7 +167,7 @@ namespace XCharts.Runtime
|
||||
}
|
||||
|
||||
var dataZoom = chart.GetDataZoomOfAxis(axis);
|
||||
var showData = serie.GetDataList(dataZoom);
|
||||
var showData = serie.GetDataList(dataZoom, true);
|
||||
|
||||
if (showData.Count <= 0)
|
||||
return;
|
||||
|
||||
@@ -1750,7 +1750,7 @@ namespace XCharts.Runtime
|
||||
/// </summary>
|
||||
/// <param name="dataZoom"></param>
|
||||
/// <returns></returns>
|
||||
public List<SerieData> GetDataList(DataZoom dataZoom = null)
|
||||
public List<SerieData> GetDataList(DataZoom dataZoom = null, bool sorted = false)
|
||||
{
|
||||
if (dataZoom != null && dataZoom.enable &&
|
||||
(dataZoom.IsContainsXAxis(xAxisIndex) || dataZoom.IsContainsYAxis(yAxisIndex)))
|
||||
@@ -1760,7 +1760,7 @@ namespace XCharts.Runtime
|
||||
}
|
||||
else
|
||||
{
|
||||
return useSortData && context.sortedData.Count > 0 ? context.sortedData : m_Data;
|
||||
return useSortData && sorted && context.sortedData.Count > 0 ? context.sortedData : m_Data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ namespace XCharts.Runtime
|
||||
|
||||
public ChartLabel labelObject { get; set; }
|
||||
public ChartLabel titleObject { get; set; }
|
||||
public int sortIndex { get; set; }
|
||||
|
||||
private bool m_Show = true;
|
||||
/// <summary>
|
||||
|
||||
@@ -955,6 +955,10 @@ namespace XCharts.Runtime
|
||||
|
||||
public static void UpdateSerieRuntimeFilterData(Serie serie, bool filterInvisible = true)
|
||||
{
|
||||
var realtimeData = true;
|
||||
var dataChangeDuration = serie.animation.GetChangeDuration();
|
||||
var dataAddDuration = serie.animation.GetAdditionDuration();
|
||||
var unscaledTime = serie.animation.unscaledTime;
|
||||
serie.context.sortedData.Clear();
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
@@ -966,8 +970,12 @@ namespace XCharts.Runtime
|
||||
case SerieDataSortType.Ascending:
|
||||
serie.context.sortedData.Sort(delegate (SerieData data1, SerieData data2)
|
||||
{
|
||||
var value1 = data1.GetData(1);
|
||||
var value2 = data2.GetData(1);
|
||||
var value1 = realtimeData ?
|
||||
data1.GetCurrData(1, dataAddDuration, dataChangeDuration, false, 0, 0, unscaledTime) :
|
||||
data1.GetData(1);
|
||||
var value2 = realtimeData ?
|
||||
data2.GetCurrData(1, dataAddDuration, dataChangeDuration, false, 0, 0, unscaledTime) :
|
||||
data2.GetData(1);
|
||||
if (value1 == value2) return 0;
|
||||
else if (value1 > value2) return 1;
|
||||
else return -1;
|
||||
@@ -976,8 +984,12 @@ namespace XCharts.Runtime
|
||||
case SerieDataSortType.Descending:
|
||||
serie.context.sortedData.Sort(delegate (SerieData data1, SerieData data2)
|
||||
{
|
||||
var value1 = data1.GetData(1);
|
||||
var value2 = data2.GetData(1);
|
||||
var value1 = realtimeData ?
|
||||
data1.GetCurrData(1, dataAddDuration, dataChangeDuration, false, 0, 0, unscaledTime) :
|
||||
data1.GetData(1);
|
||||
var value2 = realtimeData ?
|
||||
data2.GetCurrData(1, dataAddDuration, dataChangeDuration, false, 0, 0, unscaledTime) :
|
||||
data2.GetData(1);
|
||||
if (value1 == value2) return 0;
|
||||
else if (value1 > value2) return -1;
|
||||
else return 1;
|
||||
@@ -986,6 +998,10 @@ namespace XCharts.Runtime
|
||||
case SerieDataSortType.None:
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < serie.context.sortedData.Count; i++)
|
||||
{
|
||||
serie.context.sortedData[i].sortIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
public static T CloneSerie<T>(Serie serie) where T : Serie
|
||||
|
||||
Reference in New Issue
Block a user