HighStock Stockchartを設定して、datetimeとvalueの2次元配列を使用しようとしています。この方法はハイチャートのドコでのみ言及され、ハイストックのものには言及されていません。これは私がそれをJavaScriptで表示するとおりに、返される配列であるこの配列をhtml.erbファイルのjavascript関数に渡すには、erbでDate.UTCを評価する必要はありませんか?
def byusers_chart_series(name, byusers)
data = []
codes_by_user = byusers.where(:hpmuser => "#{name}").group("date(hpmcreated)").select("date(hpmcreated) as dater, count(globalcode) as codes")
codes_by_user.each do |record|
#x = [Date.UTC("#{record.dater.year.inspect.to_i}", "#{record.dater.day.inspect.to_i}", "#{record.dater.month.inspect.to_i}"), "#{record.codes.inspect.to_i}"]
x = [Date.UTC("#{record.dater.year.inspect.to_i}", "#{record.dater.day.inspect.to_i}", "#{record.dater.month.inspect.to_i}"), "#{record.codes.inspect.to_i}"]
data << Array(x)
end
data
end
:
私は私のビューヘルパーファイル内のメソッドを持って
[[Date.UTC(2012, 1, 2), 1],
[Date.UTC(2012, 2, 2), 5],
[Date.UTC(2012, 3, 2), 15],
[Date.UTC(2012, 6, 2), 8],
[Date.UTC(2012, 7, 2), 3],
[Date.UTC(2012, 8, 2), 73],
[Date.UTC(2012, 9, 2), 77]]
そして、これはありますhtml.ERBファイルからコード:
<script type="text/javascript" charset="UTF-8">
$(function() {
new Highcharts.StockChart({
chart : {
renderTo: 'weeks52dynamic',
borderColor: '#EBBA95',
borderWidth: 3
},
legend : {
align : "left",
enabled : true,
layout : "vertical",
verticalAlign : "top"
},
rangeSelector : {
selected : 0
},
title : {
text : 'title'
},
scrollbar: {
barBackgroundColor: 'gray',
barBorderRadius: 7,
barBorderWidth: 0,
buttonBackgroundColor: 'gray',
buttonBorderWidth: 0,
buttonBorderRadius: 7,
trackBackgroundColor: 'none',
trackBorderWidth: 1,
trackBorderRadius: 8,
trackBorderColor: '#CCC'
},
xAxis: {
title: {
text: "Date"
},
type: "datetime",
dateTimeLabelFormats: { // don't display the dummy year
month: '%e. %b',
year: '%b'
}
},
yAxis: {
min: 0,
title: {
text: "Number of Codes"
}
},
series: [
<% { "New Codes" => Newcode.codesperday }.each do |name, newcodes| %>
{
name: "<%= name %>",
pointInterval: <%= 1.day * 1000 %>,
pointStart: <%= 350.weeks.ago.to_i * 1000 %>,
data: <%= newcodes_chart_series(newcodes, 350.weeks.ago) %>,
marker : {
enabled : true,
radius: 3
}
},
<% end %>
<% { "User" => Newcode.byuser }.each do |name, byusers| %>
{
name: "<%= name %>",
data: <%= byusers_chart_series(name, byusers) %>,
marker : {
enabled : true,
radius: 3
}
}
<% end %>
]
});
});
</script>
私は私のブラウザで取得エラー、私はERBテンプレートがトンだと思いますDate.UTC関数をJavaScriptに渡すのではなく、評価するために実行します。私の問題は、配列または配列のData.UTCの周りに何らかの引用符を置くたびに、引用符が配列の最後の配列に表示され、javascriptに送られます。
どのように私はそれを評価することなく、配列の正確な配列を渡すことができますか?
ワンノート: '"#{recor:あなたはこのコードを持っていますd.dater.year.inspect.to_i} "あなたがしている事は_" Ruby、数字を(年)与えてください。これを文字列に変換します(検査します)。その文字列を数値(to_i)に戻します。その数値を文字列に戻します。(文字列補間 '#{...} 'は、文字列に入れる前に式の結果に対して常に' to_s'を呼び出します。)したがって、整数の場合は、 '#{record.dater.year}' 'という簡単なコードを使用してください。 – Phrogz
私は自分のコードに書いた簡単なテクニックを追加しています。私は.eachを使い、新しい配列をいくつか作成しています。 – holaSenor
私はunique_usersメソッドを使用しています。これにより、DB内のすべてのユーザーが表示されます。 .mapを使って5行から2行にしましたが、rubyは素晴らしいです。 – holaSenor