diff --git a/CHANGELOG.md b/CHANGELOG.md index d7afcae5..337b06be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,8 +58,9 @@ ## master -* (2022.08.25) 增加`Tooltip`的`position`参数支持设置移动平台不同的显示位置 -* (2022.08.25) 删除`Tooltip`的`fixedXEnable`和`fixedYEnable`参数 +* (2022.08.26) 优化`CandlestickChart`表现,调整相关的`AddData()`接口参数 +* (2022.08.26) 增加`Tooltip`的`position`参数支持设置移动平台不同的显示位置 +* (2022.08.26) 删除`Tooltip`的`fixedXEnable`和`fixedYEnable`参数 * (2022.08.25) 优化`EmphasisStyle`对`label`的支持 * (2022.08.25) 增加`formatter`对`{d3}`指定维度数据百分比的支持 * (2022.08.24) 修复`ScatterChart`的`label`不刷新的问题 diff --git a/Editor/Series/CandlestickEditor.cs b/Editor/Series/CandlestickEditor.cs index ff77a8db..06fff6ff 100644 --- a/Editor/Series/CandlestickEditor.cs +++ b/Editor/Series/CandlestickEditor.cs @@ -7,6 +7,7 @@ namespace XCharts.Editor { public override void OnCustomInspectorGUI() { + PropertyField("m_ColorBy"); PropertyField("m_XAxisIndex"); PropertyField("m_YAxisIndex"); PropertyFieldLimitMin("m_MinShow", 0); diff --git a/Examples/Example90_Candlestick.cs b/Examples/Example90_Candlestick.cs index 895e305d..7218b6b9 100644 --- a/Examples/Example90_Candlestick.cs +++ b/Examples/Example90_Candlestick.cs @@ -61,7 +61,7 @@ namespace XCharts.Example var heighest = boxVals[3]; chart.AddXAxisData(i.ToString()); - chart.AddData(0, open, close, lowest, heighest); + chart.AddData(0, i, open, close, lowest, heighest); } } } diff --git a/Runtime/Internal/BaseChart.Serie.cs b/Runtime/Internal/BaseChart.Serie.cs index 4b0a3cec..a87dfd89 100644 --- a/Runtime/Internal/BaseChart.Serie.cs +++ b/Runtime/Internal/BaseChart.Serie.cs @@ -377,23 +377,23 @@ namespace XCharts.Runtime return AddData(serieIndex, xValue, yValue, dataName, dataId); } - public SerieData AddData(int serieIndex, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) + public SerieData AddData(int serieIndex, double indexOrTimestamp, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) { var serie = GetSerie(serieIndex); if (serie != null) { - var serieData = serie.AddData(open, close, lowest, heighest, dataName, dataId); + var serieData = serie.AddData(indexOrTimestamp, open, close, lowest, heighest, dataName, dataId); RefreshPainter(serie.painter); return serieData; } return null; } - public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) + public SerieData AddData(string serieName, double indexOrTimestamp, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) { var serie = GetSerie(serieName); if (serie != null) { - var serieData = serie.AddData(open, close, lowest, heighest, dataName, dataId); + var serieData = serie.AddData(indexOrTimestamp, open, close, lowest, heighest, dataName, dataId); RefreshPainter(serie.painter); return serieData; } diff --git a/Runtime/Serie/Candlestick/Candlestick.cs b/Runtime/Serie/Candlestick/Candlestick.cs index 16da2b14..08ff439c 100644 --- a/Runtime/Serie/Candlestick/Candlestick.cs +++ b/Runtime/Serie/Candlestick/Candlestick.cs @@ -22,7 +22,7 @@ namespace XCharts.Runtime var close = Random.Range(40, 90); var lowest = Random.Range(0, 50); var heighest = Random.Range(50, 100); - chart.AddData(serie.index, open, close, lowest, heighest); + chart.AddData(serie.index, i, open, close, lowest, heighest); } return serie; } diff --git a/Runtime/Serie/Candlestick/CandlestickHandler.cs b/Runtime/Serie/Candlestick/CandlestickHandler.cs index dcbf690c..3fe8b247 100644 --- a/Runtime/Serie/Candlestick/CandlestickHandler.cs +++ b/Runtime/Serie/Candlestick/CandlestickHandler.cs @@ -108,7 +108,7 @@ namespace XCharts.Runtime for (int i = serie.minShow; i < maxCount; i++) { var serieData = showData[i]; - if (serie.IsIgnoreValue(serieData)) + if (!serieData.show || serie.IsIgnoreValue(serieData)) { serie.context.dataPoints.Add(Vector3.zero); serie.context.dataIndexs.Add(serieData.index); @@ -116,10 +116,11 @@ namespace XCharts.Runtime } var state = SerieHelper.GetSerieState(serie, serieData); var itemStyle = SerieHelper.GetItemStyle(serie, serieData, state); - var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); - var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); - var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); - var heighest = serieData.GetCurrData(3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var startDataIndex = serieData.data.Count > 4 ? 1 : 0; + var open = serieData.GetCurrData(startDataIndex, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var close = serieData.GetCurrData(startDataIndex + 1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var lowest = serieData.GetCurrData(startDataIndex + 2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var heighest = serieData.GetCurrData(startDataIndex + 3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); var isRise = yAxis.inverse ? close open; var borderWidth = open == 0 ? 0f : (itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth : diff --git a/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs b/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs index 820b00a5..4a8ca1a2 100644 --- a/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs +++ b/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs @@ -25,7 +25,7 @@ namespace XCharts.Runtime var close = lastValue + Random.Range(-5, 10); var lowest = lastValue + Random.Range(-15, -10); var heighest = lastValue + Random.Range(10, 20); - chart.AddData(serie.index, open, close, lowest, heighest); + chart.AddData(serie.index, i, open, close, lowest, heighest); } return serie; } diff --git a/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs b/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs index 8266c6be..c10380b7 100644 --- a/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs +++ b/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs @@ -110,16 +110,17 @@ namespace XCharts.Runtime for (int i = serie.minShow; i < maxCount; i++) { var serieData = showData[i]; - if (serie.IsIgnoreValue(serieData)) + if (!serieData.show || serie.IsIgnoreValue(serieData)) { serie.context.dataPoints.Add(Vector3.zero); serie.context.dataIndexs.Add(serieData.index); continue; } - var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); - var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); - var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); - var heighest = serieData.GetCurrData(3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var startDataIndex = serieData.data.Count > 4 ? 1 : 0; + var open = serieData.GetCurrData(startDataIndex, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var close = serieData.GetCurrData(startDataIndex + 1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var lowest = serieData.GetCurrData(startDataIndex + 2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var heighest = serieData.GetCurrData(startDataIndex + 3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); var isRise = yAxis.inverse ? close open; var borderWidth = open == 0 ? 0f : (itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth : diff --git a/Runtime/Serie/Serie.cs b/Runtime/Serie/Serie.cs index 151e9fb9..695d68f6 100644 --- a/Runtime/Serie/Serie.cs +++ b/Runtime/Serie/Serie.cs @@ -1296,11 +1296,12 @@ namespace XCharts.Runtime /// /// the unique id of data /// - public SerieData AddData(double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) + public SerieData AddData(double indexOrTimestamp, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) { CheckMaxCache(); var serieData = SerieDataPool.Get(); serieData.data.Clear(); + serieData.data.Add(indexOrTimestamp); serieData.data.Add(open); serieData.data.Add(close); serieData.data.Add(lowest); @@ -1309,7 +1310,7 @@ namespace XCharts.Runtime serieData.index = m_Data.Count; serieData.id = dataId; AddSerieData(serieData); - m_ShowDataDimension = 4; + m_ShowDataDimension = 5; SetVerticesDirty(); CheckDataName(dataName); labelDirty = true;