2014-09-29 2 views
0

Я кодирую динамическую диаграмму (приложение монитора), которая xAxis является типом даты и времени, каждые три секунды я извлекаю данные из БД и добавляю новую точку для каждой серии (насколько это хорошо). Проблема возникает с галочкой, каждый раз, когда я добавить новый пункт все тики взять текущее время вместо того, чтобы их первоначальное значение, когда они были созданы, это мой кодКак добавить xAxis.tick динамически

var chart1Obj = { 
     chart: { 
      renderTo: 'welcome-chart', 
      type: 'line', 
      animation: Highcharts.svg, // don't animate in old IE 
      // marginRight: 10, 
      events: { 
       load: function() { 
        // set up the updating of the chart each second 
        var series = this.series; 
        setInterval(function() { 
         Meteor.call("getGraphData", function (error, json) { 
          if (error) { 
           console.error("Welcome.graphData() failed\n", error); 
          } else { 
           temp = JSON.parse(json); 
           series[0].addPoint([temp.running], true, true); 
           series[1].addPoint([temp.queued], true, true); 
           series[2].addPoint([temp.suspended], true, true); 
          } 
         }); 
        }, 3000); 
       } 
      } 
     }, 
     title: { 
      text: 'Job monitoring' 
     }, 
     xAxis: { 
      type: 'datetime', 
      tickPixelInterval: 150, 
      labels: { 
       formatter: function() { 
        var myTime = new Date(); 
        return Highcharts.dateFormat('%H:%M:%S', myTime.getTime()); 
       } 
      } 
     }, 
     yAxis: { 
      title: { 
       text: 'Number of Task' 
      }, 
      floor: 0, 
      plotLines: [{ 
       value: 0, 
       width: 1, 
       color: '#808080' 
       }] 
     }, 
     exporting: { 
      enabled: false 
     }, 
     series: [{ 
      name: 'Running', 
      data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
      width: 1, 
      color: '#00FF00' 
     }, { 
      name: 'Queued', 
      width: 2, 
      data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
      color: '#FFFF00' 
     }, { 
      name: 'Suspended', 
      width: 3, 
      data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
      color: '#FF0000' 
     }] 
    }; 

    Highcharts.setOptions({ 
     global: { 
      useUTC: false, 
     } 
    }); 
    var chart1 = new Highcharts.Chart(chart1Obj); 

поэтому вопрос, что я делаю неправильно ? или что мне не хватает?

ответ

0

Это вызвано этой линии:

 labels: { 
      formatter: function() { 
       var myTime = new Date(); 
       return Highcharts.dateFormat('%H:%M:%S', myTime.getTime()); 
      } 
     } 

new Date() создаст объект даты с фактического времени. Затем вы используете эту дату для каждой метки в ярлыках меток. просто используйте:

return Highcharts.dateFormat('%H:%M:%S', this.value); 
+0

это не сработало, теперь оно подскажет 19:00:00 для каждого тика независимо от времени. как это было до этого и почему я добавил эту строку для новой Date() –

+0

Но почему 'new Date()'? Он всегда возвращает фактическое время .. Я думаю, проблема в том, что у вас есть такие данные: 'data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0] '- где каждая точка имеет временную метку (для дня), увеличенную на 1 мс. –

+0

ОК, этот вид смысла, единственная причина, по которой я это сделал» [0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0] "должно было создать 20 x тиков, как бы вы инициализировали эту диаграмму ???? –

Смежные вопросы