2013-04-04 3 views
5

Ich konnte nicht verstehen, warum das Tooltip Datum um einen einzigen Tag deaktiviert ist. Ich glaube, die X-Achse ist korrekt und ich habe damit herumgespielt, aber das bringt mich um.Flot Chart Tooltip Fehler - Tooltip Datum ist ein Tag hinter X-Achse Datum

Wie kann ich das beheben?

Ich übergebe einen JSON von einem URL-Endpunkt in die Variable jsonDataUrl. Hier ist ein Beispiel Datenpunkt: [{date: "2013-01-01", value: 50}]

Und cssSelector ist einfach der Platzhalter.

Hier ist mein Code:

$.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); 
     } 
    }); 
    }); 

Antwort

4

Ich hoffe, dies in Ordnung ist, aber ich möchte meine eigene Frage beantworten. Ich bin froh, dass ich diesen dummen Fehler entdeckt habe! Ich verwende Ruby on Rails, um Daten zu sammeln und über die JSON-URL an das Flot Chart weiterzuleiten. Da der Server die Daten um Mitternacht in UTC aufzeichnet, übergibt er die Daten an den Tooltipp der lokalen Zeitzone, wodurch er komplett außer Takt gesetzt wird.

Also habe ich im Grunde die date.getDate() und date.getMonth() zu date.getUTCDate() und date.getUTCMonth() geändert.

+2

Ja, es ist sehr akzeptabel, Ihre eigene Frage zu beantworten! Wenn das System es Ihnen erlaubt, bitte kommen Sie zurück und akzeptieren Sie Ihre Antwort als richtig (klicken Sie auf das Häkchen). Auf diese Weise wird die Frage geschlossen. – Mark