在我的应用程序中,用户记录他们的体重和体重所属的日期。我希望该数据显示在 HighStock 折线图中。应该很简单,但在过去的 2 个月里,我一直在研究这个(部分)。我看过很多不同的东西,但我无法让它发挥作用。
我想显示的确切数据是折线图中的实际线作为他们的体重,y 轴将是他们的体重,x 轴将是用户输入该体重的日期。
即用户在表格中输入他们昨天的体重为 135,他们在表格中输入的日期是 2012 年 12 月 3 日。
不知道是否重要,但用户有_许多权重,权重属于_用户。
这就是我所拥有的,我得到了一堆不同的错误。我肯定在这里错过/不理解一些东西:
重量型号:
class Weight < ActiveRecord::Base
def user_weight_series(user, weight)
weights_by_weight_date = Weights.select("date(weight_date) as dater, content as weights")
weights_by_weight_date.map do |record|
parts = %w[%Y %m %d].map{ |s| record.dater.send(s) }
"[Date.UTC(#{parts.join(',')}), #{record.weights}]"
end
end
应用程序.html.erb
<script type="text/javascript">
$(function () {
var chart;
$(document).ready(function() {
window.chart = new Highcharts.StockChart({
chart: {
renderTo: 'weight_chart',
type: 'line',
marginRight: 20,
marginBottom: 25
},
title: {
text: 'Your Weight Over Time',
x: -20 //center
},
yAxis: {
title: {
text: 'Weight'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
legend: {
layout: 'vertical',
align: 'center',
verticalAlign: 'bottom',
x: -10,
y: 100,
borderWidth: 0
},
scrollbar: {
enabled: true
},
rangeSelector : {
selected : 1
},
credits: {
enabled: false
},
series: [{
tickInterval: <%= 1.day * 1000 %>,
pointStart: <%= 3.weeks.ago.at_midnight.to_i * 1000 %>,
name: 'Weight',
data: [ <%= current_user.user_weight_series(user, weight).join(", ") %> ],
}]
},
function(chart){
// apply the date pickers
setTimeout(function(){
$('input.highcharts-range-selector', $('#'+chart.options.chart.renderTo))
.datepicker()
},0)
});
});
});
最好的方法是什么?先感谢您!