2017-01-14 5 views
0

Auf meinem Diagramm Ich versuche, den Startpunkt für meine Grafik zu ändern, aber nicht funktioniert:Highcharts, Rails - Weg zum Startpunkt für Graphen?

series: [{ 
      name: 'Difficulty', 
      connectNulls:true, 
      color: '#FF0000', 
      pointInterval: <%= 1.day * 1000 %>, 
      pointStart: <%= 2.weeks.ago.at_midnight.to_i * 1000 %>, 
      data: [<% HomeworkStudent.where(:school_user_id => current_user.school_user.id).order('updated_at ASC').each do | homework_student| %> 
      [Date.parse(<%= homework_student.updated_at.to_json.html_safe %>), <%= homework_student.difficulty.to_json.html_safe %>], 
      <% end %>] 
      }, 

Meine Diagramm funktioniert, aber pointStart ignoriert. Wie oben versuche ich das Attribut updated_at in meiner Tabelle zu verwenden. Ich bin mir bewusst, dass der obige Code wahrscheinlich nicht der ideale Weg ist, um Daten mit Highcharts zu erhalten und zu rendern, also würde ich alle Vorschläge begrüßen, um sie zu bereinigen.

Welche Änderungen müsste ich vornehmen, um pointStart zur Arbeit zu bringen?

Dank

enter image description here

Antwort

1

Zunächst einmal müssen Sie Ihre x-axis in Daten ändern, in der Epoche sein oder das Intervall in dem Graphen in Millisekunden (Epoche Zeit) ändern sich nicht.

Also, sollten Sie Ihre Daten mehr wie:

data: <%= HomeworkStudent. 
    where(:school_user_id => current_user.school_user.id). 
    order('updated_at ASC').map {|e| [e.updated_at.to_i * 1000, e.id]}. 
    to_a.to_json.html_safe %> 

Vielleicht sollten Sie auch einen Filter als hinzuzufügen, was Sie wählen. Es soll nicht vor älter als zwei Wochen sein:

data: <%= HomeworkStudent. 
    where(:school_user_id => current_user.school_user.id). 
    where('updated_at > ?', 2.weeks.ago.at_midnight). 
    order('updated_at ASC').map {|e| [e.updated_at.to_i * 1000, e.id]}. 
    to_a.to_json.html_safe %> 

Other than that, Sie könnten natürlich haben Etiketten, die nicht numerisch, sondern tatsächliche Worte. Das ist ein bisschen komplizierter ...

... oder auch nicht ...

Sie überspringen (wie in "nicht verwenden") wie folgt zusammen:

pointInterval: <%= 1.day * 1000 %>, 
pointStart: <%= 2.weeks.ago.at_midnight.to_i * 1000 %>, 

und Daten verwenden -Wertepaare in Ihrem Datenfeld:

data: <%= HomeworkStudent. 
    where(:school_user_id => current_user.school_user.id). 
    where('updated_at > ?', 2.weeks.ago.at_midnight). 
    order('updated_at ASC'). 
    group_by {|e| e.updated_at.to_date}. # Group them rails-wise, not db-engine specific 
    map {|e| [e.first.to_s, e.second.sum(&:difficulty)] }. # get date and sum of difficulties, format e.first as you wish with **strftime** 
    to_json.html_safe %> 
+0

Vielen Dank! Das ist eine große Hilfe. Ich benutzte zweite Option, ich aktualisierte OP mit Ergebnis. Ich möchte eigentlich nicht die Schwierigkeit summieren, ich will es nur herausreißen. Vermeide wahrscheinlich auch Nullen. Auch die Daten, wie oben, sind auf der x-Achse im Vergleich zur Grafik ausgeschaltet? Aber vielen Dank, wirklich zu schätzen wissen. – Co2

Verwandte Themen