当用户滚动到左端时,向highcharts(Highstock)添加数据

falq053o  于 2023-02-23  发布在  Highcharts
关注(0)|答案(2)|浏览(147)

我在我的网站上使用highstock。在股票图表导航器的滚动条是用SVG绘制的。我想添加更多的数据(通过 AJAX )到图形时,用户滚动到最左端。
我是SVG的新手,不知道如何检测用户是否已经滚动到最后,并在此基础上触发一个 AJAX 查询。有人能帮助我吗?
谢了西瓦库玛。

iezvtpos

iezvtpos1#

今天我遇到了同样的问题,我正好找到了你的问题。
我不知道您是否有理由只在用户移动滚动条时加载新数据,我建议在用户可视化最左边的数据时触发 AJAX 查询(即:滚动条、按下左箭头、拖动导航图表的区域等)。
如果这个解决方案适用于你,你可以尝试这样的东西:

chart = new Highcharts.StockChart({
        chart: {
            renderTo: 'chart',
            events: {
                redraw: function(event) {
                    if (chart.xAxis) {
                        var extremes = chart.xAxis[0].getExtremes();
                        if (extremes && extremes.min == extremes.dataMin) {
                            console.log("time to load more data!");
                        }
                    }
                }
            }
        }, [...]
qyswt5oh

qyswt5oh2#

我用下面的方法解决了这个问题。

<script>

import axios from 'axios';

export default {
    name: 'Chart',
    data() {
        return {
            chartOptions: {
                chart: {
                    events: {
                        // we will lose the context of the component if we define a function here
                    }
                },
                series: [{
                    type: 'candlestick',
                    data: null,
                }],
            },
        };
    },
    methods: {
        onRedraw: function () {
            let chart = this.$refs.chart.chart
            if (chart.xAxis) {
                let extremes = chart.xAxis[0].getExtremes()
                console.log(extremes)
                if (extremes && extremes.min <= extremes.dataMin) {
                    console.log("time to load more data!");
                }
            }
        }

    },
    created() {
        axios.get('https://demo-live-data.highcharts.com/aapl-ohlcv.json').then((response) => {
            this.chartOptions.series[0].data = response.data
            this.chartOptions.series[0].name = 'AAPL'
        });
        
        this.chartOptions.chart.events.redraw = this.onRedraw
    },
};
</script>

<template>
  <highcharts :constructor-type="'stockChart'" :options="chartOptions" ref="chart"></highcharts>
</template>

相关问题