Google 个使用数据库结果集的图表
Google charts using database result set
我在 Rails 上用 Ruby 编写了一个代码页(见下文)。
我想显示一些每月的距离。
我有一个局部变量 @result 存储我需要的数据集,22 条记录,3 列(从数据库中获取到控制器中)。这是数据示例:
year_month | tbm_1_distance | tbm_2_distance
------------+----------------+----------------
2013-06 | 13.250 |
...
2013-09 | 45.000 | 51.780
2013-10 | 131.970 | 51.160
...
2015-01 | 315.050 | 315.050
2015-02 | 287.150 | 287.150
2015-03 | 241.800 | 241.800
我在 var aa = .. 中对这些值进行硬编码
但我想使用遍历结果集的循环来构建 var aa。
aa 将用于 data.addRows(aa);
不知道如何在代码的 Java 脚本部分执行此操作。
我在文档中找到的所有示例都带有硬编码值或使用 "new" 在本地生成,没有任何内容来自数据库结果集。
<% if logged_in? %>
<% provide(:title, "TBM Monthly Progress") %>
<h1>
TBM Monthly Progress
</h1>
<h4>
Number of months: <%=@result.count%>
</h4>
<%= render 'main/tbms_main_subnav' %>
<div class="row">
<div id="dual_x_div" style="width: 100%; height: 500px;"></div>
</div>
<br><br>
<% else %>
<%= render 'main/unsigned' %>
<% end %>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1.1", {packages:["bar"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var aa = [
['2013-06', 13.250, 0],
['2013-07', 45.650, 0],
['2013-08', 60.000, 0],
['2013-09', 45.000, 51.780],
['2013-10', 131.970, 51.160],
['2013-11', 166.310, 77.900],
['2013-12', 233.790, 0.000],
['2014-01', 214.060, 169.630],
['2014-02', 151.400, 150.090],
['2014-03', 13.880, 329.440],
['2014-04', 343.280, 268.280],
['2014-05', 338.750, 310.410],
['2014-06', 370.470, 342.870],
['2014-07', 421.500, 357.340],
['2014-08', 323.940, 359.040],
['2014-09', 294.890, 294.370],
['2014-10', 309.750, 310.050],
['2014-11', 284.850, 284.850],
['2014-12', 284.950, 284.950],
['2015-01', 315.050, 315.050],
['2015-02', 287.150, 287.150],
['2015-03', 241.800, 241.800]
];
var data = new google.visualization.DataTable();
data.addColumn('string', 'Year-Month');
data.addColumn('number', 'TBM 1');
data.addColumn('number', 'TBM 2');
data.addRows(aa);
var options = {
chart: {
title: 'TBM Excavated Distances per month',
subtitle: 'TBM 1 in blue, TBM 2 in red'
},
bars: 'horizontal'
};
var chart = new google.charts.Bar(document.getElementById('dual_x_div'));
chart.draw(data, options);
};
</script>
您可以 "pass" @result
在 div
中 data-distances
:
<div class="row">
<div id="dual_x_div" ... data-distances="<%= @result %>"></div>
</div>
然后说var aa = $("#dual_x_div").data("distances")
有关如何将数据传递给 javascript 的更多信息,请查看 this railscast and for more about the custom data-* attributes, check here。
我在 Rails 上用 Ruby 编写了一个代码页(见下文)。 我想显示一些每月的距离。 我有一个局部变量 @result 存储我需要的数据集,22 条记录,3 列(从数据库中获取到控制器中)。这是数据示例:
year_month | tbm_1_distance | tbm_2_distance
------------+----------------+----------------
2013-06 | 13.250 |
...
2013-09 | 45.000 | 51.780
2013-10 | 131.970 | 51.160
...
2015-01 | 315.050 | 315.050
2015-02 | 287.150 | 287.150
2015-03 | 241.800 | 241.800
我在 var aa = .. 中对这些值进行硬编码 但我想使用遍历结果集的循环来构建 var aa。 aa 将用于 data.addRows(aa); 不知道如何在代码的 Java 脚本部分执行此操作。 我在文档中找到的所有示例都带有硬编码值或使用 "new" 在本地生成,没有任何内容来自数据库结果集。
<% if logged_in? %>
<% provide(:title, "TBM Monthly Progress") %>
<h1>
TBM Monthly Progress
</h1>
<h4>
Number of months: <%=@result.count%>
</h4>
<%= render 'main/tbms_main_subnav' %>
<div class="row">
<div id="dual_x_div" style="width: 100%; height: 500px;"></div>
</div>
<br><br>
<% else %>
<%= render 'main/unsigned' %>
<% end %>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1.1", {packages:["bar"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var aa = [
['2013-06', 13.250, 0],
['2013-07', 45.650, 0],
['2013-08', 60.000, 0],
['2013-09', 45.000, 51.780],
['2013-10', 131.970, 51.160],
['2013-11', 166.310, 77.900],
['2013-12', 233.790, 0.000],
['2014-01', 214.060, 169.630],
['2014-02', 151.400, 150.090],
['2014-03', 13.880, 329.440],
['2014-04', 343.280, 268.280],
['2014-05', 338.750, 310.410],
['2014-06', 370.470, 342.870],
['2014-07', 421.500, 357.340],
['2014-08', 323.940, 359.040],
['2014-09', 294.890, 294.370],
['2014-10', 309.750, 310.050],
['2014-11', 284.850, 284.850],
['2014-12', 284.950, 284.950],
['2015-01', 315.050, 315.050],
['2015-02', 287.150, 287.150],
['2015-03', 241.800, 241.800]
];
var data = new google.visualization.DataTable();
data.addColumn('string', 'Year-Month');
data.addColumn('number', 'TBM 1');
data.addColumn('number', 'TBM 2');
data.addRows(aa);
var options = {
chart: {
title: 'TBM Excavated Distances per month',
subtitle: 'TBM 1 in blue, TBM 2 in red'
},
bars: 'horizontal'
};
var chart = new google.charts.Bar(document.getElementById('dual_x_div'));
chart.draw(data, options);
};
</script>
您可以 "pass" @result
在 div
中 data-distances
:
<div class="row">
<div id="dual_x_div" ... data-distances="<%= @result %>"></div>
</div>
然后说var aa = $("#dual_x_div").data("distances")
有关如何将数据传递给 javascript 的更多信息,请查看 this railscast and for more about the custom data-* attributes, check here。