Highchart - мне нужно обновить страницу, чтобы увидеть новые данные - PullRequest
0 голосов
/ 21 января 2019

Ниже приведен код диаграммы, моя проблема в том, что JSON необходимо использовать для получения обновленных данных.Я не хочу, чтобы весь график перерисовывался, но вместо этого только свечи (добавьте новые).

Я предполагаю, что должен быть цикл, просматривающий каждую секунду в новых данных, зацикливая JSON исоздать файл chart.update?

Хотелось бы получить от кого-нибудь ответ о том, как мне решить эту проблему с помощью кода!

https://codeshare.io/alxOMZ

$.getJSON('/api/v1/public/getcharts?market=BTC-'+coinsymbol, function (data) {

    // split the data set into trading and volume
    var trading = [],
        volume = [],
        dataLength = data.length,
        // set the allowed units for data grouping
        groupingUnits = [[
            'hour',                         // unit name
            [1]                             // allowed multiples
        ], [
            'day',
            [1, 7]
        ]],

        i = 0;


    for (i; i < dataLength; i += 1) {
        trading.push([
            data[i][0], // the date
            data[i][1], // open
            data[i][2], // high
            data[i][3], // low
            data[i][4] // close
        ]);

        volume.push([
            data[i][0], // the date
            data[i][5] // the volume
        ]);
    }


    // create the chart


    Highcharts.stockChart('container', {
        title: {
            text: null
        },
        scrollbar: {
              enabled: false
          },


        credits: {
          enabled: false
      },

         chart: {

            renderTo: 'container',
    backgroundColor: 'none',




   },


         rangeSelector: {
      selected: 2,
             buttons: [{
                 type: 'hour',
                 count: 1,
                 text: '1h'
             }, {
                 type: 'day',
                 count: 1,
                 text: '1D'
             }, {
                 type: 'day',
                 count: 7,
                 text: '7D'
             }, {
                 type: 'month',
                 count: 1,
                 text: '1M'
             }, {
                 type: 'all',
                 count: 1,
                 text: 'All'
             }],
             selected: 5,
             inputEnabled: false
         },
     legend: {
                     enabled: false
         },

     exporting: {
                     enabled: false
         },
     plotOptions: {

      candlestick: {    
        lineColor: '#E75162',           
           upLineColor: '#5BB789',
           upColor: '#5BB789',
           color: '#E75162'
           }
       },
        yAxis: [{
            crosshair: {
            snap: false
        },

            height: '100%',

            resize: {
                enabled: false
            }
        }, {

            top: '100%',
            height: '10%',
            offset: 0
        }],

        tooltip: { enabled: false },

        series: [

            {
            type: 'candlestick',
            name: coinsymbol,
            data: trading,
            dataGrouping: {
                units: groupingUnits
            }
        }, {
            type: 'column',
            name: coinsymbol+' Volume',
            data: volume,
            yAxis: 1,
            dataGrouping: {
                units: groupingUnits
            }
        }]
    });
});

---- КОД -----

$. GetJSON ('/ api / v1 / public / getcharts? Market = BTC -' + coinsymbol, функция (данные) {

// split the data set into trading and volume
var trading = [],
    volume = [],
    dataLength = data.length,
    // set the allowed units for data grouping
    groupingUnits = [[
        'hour',                         // unit name
        [1]                             // allowed multiples
    ], [
        'day',
        [1, 7]
    ]],

    i = 0;


for (i; i < dataLength; i += 1) {
    trading.push([
        data[i][0], // the date
        data[i][1], // open
        data[i][2], // high
        data[i][3], // low
        data[i][4] // close
    ]);

    volume.push([
        data[i][0], // the date
        data[i][5] // the volume
    ]);
}


// create the chart


Highcharts.stockChart('container', {
    title: {
        text: null
    },
    scrollbar: {
          enabled: false
      },


    credits: {
      enabled: false
  },

     chart: {

        renderTo: 'container',
backgroundColor: 'none',

},

     rangeSelector: {
  selected: 2,
         buttons: [{
             type: 'hour',
             count: 1,
             text: '1h'
         }, {
             type: 'day',
             count: 1,
             text: '1D'
         }, {
             type: 'day',
             count: 7,
             text: '7D'
         }, {
             type: 'month',
             count: 1,
             text: '1M'
         }, {
             type: 'all',
             count: 1,
             text: 'All'
         }],
         selected: 5,
         inputEnabled: false
     },
 legend: {
                 enabled: false
     },

 exporting: {
                 enabled: false
     },
 plotOptions: {

  candlestick: {    
    lineColor: '#E75162',           
       upLineColor: '#5BB789',
       upColor: '#5BB789',
       color: '#E75162'
       }
   },
    yAxis: [{
        crosshair: {
        snap: false
    },

        height: '100%',

        resize: {
            enabled: false
        }
    }, {

        top: '100%',
        height: '10%',
        offset: 0
    }],

    tooltip: { enabled: false },

    series: [

        {
        type: 'candlestick',
        name: coinsymbol,
        data: trading,
        dataGrouping: {
            units: groupingUnits
        }
    }, {
        type: 'column',
        name: coinsymbol+' Volume',
        data: volume,
        yAxis: 1,
        dataGrouping: {
            units: groupingUnits
        }
    }]
});

});

1 Ответ

0 голосов
/ 21 января 2019

Глядя на API highcharts быстро в Google , вам может понадобиться свойство события, а затем свойство load и ваша логика, которая, вероятно, будет включать что-то вроде

chart: {
    events: {
        load: function () {

            // here's how you would access your series
            var series = this.series[0];
            setInterval(function () {
                //modify your series here.
            }, 1000);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...