2013-04-04 7 views
5

Non sono stato in grado di capire perché la data del tooltip è disattivata di un solo giorno. Credo che l'asse delle x sia corretto, e ci sto provando, ma questo mi sta uccidendo.Errore descrizione diagramma di flusso - La data del suggerimento è un giorno dietro la data dell'asse X

Come posso risolvere questo problema?

Sto passando un JSON da un endpoint URL in variabile jsonDataUrl. Ecco un esempio datapoint: [{date: "2013-01-01", value: 50}]

E cssSelector è semplicemente il segnaposto.

Ecco il mio codice:

$.getJSON(jsonDataUrl, function(res) { 
    var data = []; 
    $.each(res, function(i, entry){ 
     data.push([new Date(entry["date"]), entry["value"]]); 
    }); 

    var opts = { yaxis: { min: 0}, 
       xaxis: { mode: "time", timeformat: "%m-%d"}, 

       series: { lines: { show: true }, points: { show: true } }, 

       grid: {hoverable: true, clickable: true} 
    }; 

    $.plot($(cssSelector), [data], opts); 

    $(cssSelector).bind("plotclick", function(event, pos, item) { 
     if (item) { 

      var x = parseInt(item.datapoint[0]), 
       y = item.datapoint[1]; 
      var date = (new Date(x)); 
      var day = date.getDate(); 
      var month = date.getMonth() + 1; 
      var formattedDate = month + "-" + day; 

      $("#tooltip").remove(); 
      var label = "date: " + formattedDate + "<br/> count: " + y; 
      showTooltip(item.pageX, item.pageY, label); 
     } 
    }); 
    }); 

risposta

4

Spero che questo è OK, ma vorrei rispondere alla mia domanda. Sono felice di aver scoperto questo stupido errore! Sto usando Ruby on Rails per raccogliere i dati e passarli al Flot Chart tramite l'URL JSON. Poiché il server registra i dati alla mezzanotte di UTC, stava trasmettendo i dati al tooltip nel fuso orario locale, eliminando completamente la sincronizzazione.

Quindi, ho sostanzialmente modificato date.getDate() e date.getMonth() a date.getUTCDate() e date.getUTCMonth().

+2

Sì, è molto accettabile rispondere alla tua stessa domanda! Quando il sistema ti consente di tornare indietro e accettare la risposta come corretta (fai clic sul segno di spunta). In questo modo la domanda sarà chiusa. – Mark