0

我正在制作一个带有 highcharts 的应用程序,在遇到很多问题后,我终于绘制了图表,但现在获取了正确的数据,但我需要进行一些调整。

例如,如果用户在同一天注册了一个新日志,它应该获取日志的成本并将其添加到同一天的日志中,或者简单地显示是否没有更多日志,我按照railcast 第 223 集和帮助我一点. 但我的问题是:当我添加一个新日志时,它会创建一个新栏:(只有 2 个日志,我要创建一个新日志) 在此处输入图像描述 这是我的应用程序所做的。 在此处输入图像描述

我还需要修复日期时间,这是我的代码:

    $(function () {
      new Highcharts.Chart({
        chart: { renderTo: 'foo_chart',defaultSeriesType: 'column' },
        title: { text: 'tanking costs daily' },
        xAxis: { type: 'datetime' },
        yAxis: {
          title: { text: 'cost' }
        },
        tooltip: {
          formatter: function () {
            return Highcharts.dateFormat("%B %e %Y", this.x) + ': ' + '$' + Highcharts.numberFormat(this.y, 2);
          }
        },
        series: [{
          name: 'Days',
          pointInterval: <%= 1.day * 1000 %>, 
          pointStart: <%= 1.weeks.ago.at_midnight.to_i * 1000 %>,
          data:[
            <% for tankinglog in @tankinglog  %>
              <%= "(" + tankinglog.cost.to_f.round(2).to_s + "),"%>
            <% end %>
          ]
        }]
      });
    });

如果您看到图片上的列表,我有 3 个日志...最后 2 个日志具有相同的日期,它们必须与它们的成本总和出现在同一个栏中

4

1 回答 1

1

你的问题非常令人困惑。您希望将所有数据汇总到一个条中吗?为列表中的每个号码创建一个新栏data。因此,您的 for-each 循环正在为@tankinglog. 解决方案是将所需内容汇总为一个数字,然后将其添加到列表中。

我不确定您到底在问什么,因为您的问题很糟糕,但这里所有的值都汇总到一个栏中。

$(function () {
  new Highcharts.Chart({
    chart: { renderTo: 'foo_chart',defaultSeriesType: 'column' },
    title: { text: 'tanking costs daily' },
    xAxis: { type: 'datetime' },
    yAxis: {
      title: { text: 'cost' }
    },
    tooltip: {
      formatter: function () {
        return Highcharts.dateFormat("%B %e %Y", this.x) + ': ' + '$' + Highcharts.numberFormat(this.y, 2);
      }
    },
    series: [{
      name: 'Days',
      pointInterval: <%= 1.day * 1000 %>, 
      pointStart: <%= 1.weeks.ago.at_midnight.to_i * 1000 %>,
      data:[
        <% 
        result = 0;
        for tankinglog in @tankinglog 
            result += tankinglog.cost.to_f
        end %>
        <%= result.round(2).to_s %>
      ]
    }]
  });
});
于 2012-08-09T19:08:58.413 回答