在我的图表上,我尝试更改图表的起点,但不起作用:
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 %>]
},
我的图表可以工作,但 pointStart 被忽略。如上所述,我尝试在表中使用 Updated_at 属性。我知道上面的代码可能不是使用 Highcharts 获取和渲染数据的理想方式,因此也欢迎任何清理它的建议。
我需要进行哪些更改才能使 pointStart 正常工作?
谢谢
最佳答案
首先,您需要将数据中的x-axis
更改为纪元,或将图表中的间隔更改为不以毫秒为单位(纪元时间)。
所以,您的数据应该更像是:
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 %>
也许您还应该针对您选择的内容添加一个过滤器。它不应早于两周前:
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 %>
除此之外,您当然可以使用不是数字的标签,而是实际的单词。这有点复杂......
...或不...
您跳过(如“根本不使用”)以下内容:
pointInterval: <%= 1.day * 1000 %>,
pointStart: <%= 2.weeks.ago.at_midnight.to_i * 1000 %>,
并在数据数组中使用数据值对:
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 %>
关于javascript - Highcharts、Rails - 设置图表起点的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645831/