AAChartKit-Swift icon indicating copy to clipboard operation
AAChartKit-Swift copied to clipboard

基金估值功能问题

Open lhpkxywm opened this issue 3 years ago • 2 comments

image 第一次请求数据,在最后一个有效的数据点上添加AADataLabel,没有数据的点将数据置空。 之后,每1分钟会请求新的数据,使用chartView.aa_updateChart(options: aaOptions, redraw: true)重绘图表后,小圆点也被重复的绘制了。

lhpkxywm avatar Sep 02 '22 07:09 lhpkxywm

chartView.aa_updateChart(options: aaOptions, redraw: true)

此方法是高级更新方法, 只会对 AAOptions 已改变的的内容进行更新. 你已添加的 AADataElement 没有改变 AAMarker 的值, 调用此方法更新肯定无用.

另外, 只刷新数据的话, 使用

  /// Function of only refresh the chart data after the chart has been rendered
    ///
    /// - Parameter chartOptionsSeries: chart options series  array
    public func aa_onlyRefreshTheChartDataWithChartOptionsSeries(_ chartOptionsSeries: [AASeriesElement]) {
      aa_onlyRefreshTheChartDataWithChartOptionsSeries(chartOptionsSeries, animation: true)
    }

此方法更恰当一些, 此方法内部调用的是 Highcharts 专门更新 data 的方法(如下):

   function onlyRefreshTheChartDataWithSeries(receivedSeries, animation) {
            let receivedSeriesArr = JSON.parse(receivedSeries);
            let seriesArrLength = receivedSeriesArr.length;
            for (let i = 0; i < seriesArrLength; i++) {
                let receivedSeriesElementData = receivedSeriesArr[i].data;
                let seriesElement = aaGlobalChart.series[i];
                seriesElement.setData(receivedSeriesElementData, false);
            }
            
            let animationBool = (animation === "true");
            aaGlobalChart.redraw(animationBool);
        }

AAChartModel avatar Sep 02 '22 10:09 AAChartModel

chartView.aa_updateChart(options: aaOptions, redraw: true)

此方法是高级更新方法, 只会对 AAOptions 已改变的的内容进行更新. 你已添加的 AADataElement 没有改变 AAMarker 的值, 调用此方法更新肯定无用.

另外, 只刷新数据的话, 使用

  /// Function of only refresh the chart data after the chart has been rendered
    ///
    /// - Parameter chartOptionsSeries: chart options series  array
    public func aa_onlyRefreshTheChartDataWithChartOptionsSeries(_ chartOptionsSeries: [AASeriesElement]) {
      aa_onlyRefreshTheChartDataWithChartOptionsSeries(chartOptionsSeries, animation: true)
    }

此方法更恰当一些, 此方法内部调用的是 Highcharts 专门更新 data 的方法(如下):

   function onlyRefreshTheChartDataWithSeries(receivedSeries, animation) {
            let receivedSeriesArr = JSON.parse(receivedSeries);
            let seriesArrLength = receivedSeriesArr.length;
            for (let i = 0; i < seriesArrLength; i++) {
                let receivedSeriesElementData = receivedSeriesArr[i].data;
                let seriesElement = aaGlobalChart.series[i];
                seriesElement.setData(receivedSeriesElementData, false);
            }
            
            let animationBool = (animation === "true");
            aaGlobalChart.redraw(animationBool);
        }

我使用了chartView.aa_onlyRefreshTheChartDataWithChartModelSeries(chartSeriesArr, animation: true)方法,但是依然会出现多个圆点,如下图 image

lhpkxywm avatar Sep 08 '22 01:09 lhpkxywm