【问题标题】:Chartkick Datepicker/Range Selector - Possibility to choose dates to show dataChartkick Datepicker/Range Selector - 可以选择日期来显示数据
【发布时间】:2017-06-15 15:07:24
【问题描述】:

我使用ahoy gem 来跟踪访问次数,并使用chartkick gem 向用户显示数据。

在用户仪表板页面中,我有大约 3-4 个图表,每个图表向用户显示不同的数据。

截至今天,我的图表仅显示最近 7 天,我通过 group_by_day(:started_at, last: 7) 完成。

= area_chart Visit.where(user: current_user).group_by_day(:started_at, last: 7).sum(:price), label: '$'

如何添加datepicker 以便用户可以选择两个日期(开始和结束日期)并显示所选/给出日期之间的数据?

更新: 我创建了charts_controller.rb 并从controllerroutes 获取图表。

例如:

class ChartsController < ApplicationController
  def visits
    result = Visit.where(user: current_user).group_by_day(:started_at, last: 7).count
    render json: [{name: 'Visits', data: result}]
  end

我的routes.rb

resources :charts, only: [] do
    collection do
      get 'visits'
    end
  end

我的看法:

= area_chart visits_charts_path

【问题讨论】:

    标签: ruby ruby-on-rails-4 highcharts datepicker chartkick


    【解决方案1】:

    您可以创建一个datepicker 并在其上添加一个 onchange 侦听器,然后使用 ajax 将开始和结束日期发送到呈现图表的控制器:

    $(".end_at").change(function(e){
        end_at = $(e.target).val(); 
        start_at = $(".start_at").val();     
    
          $.ajax({
            type: "POST",
            url: "/charts",
            data: {
              start_at: start_at,
              end_at: end_at,
            },
            success: function (data) {
              $(".chart-container").html(data);
            },
          });    
    });
    

    在您的控制器中:

    class ChartsController < ApplicationController
      def visits
        start_at = params[:start_at].to_date
        end_at = params[:end_at].to_date
        render :inline => "<%= area_chart Visit.where(user: current_user).group_by_day(:started_at, range: start_at..end_at).sum(:price), label: '$' %>"
      end
    end
    

    【讨论】:

    • 非常感谢@Othmane。请您阅读我的问题,我添加了一些新设置。当我使用您的代码进行测试时,即使我转到浏览器,我也会收到链接不存在的错误,我可以看到链接
    • 你添加了ajax块吗?
    • 或者如果您不想使用 ajax,您可以在视图中添加一个表单,在其中放置日期选择器,然后将它们放入您的控制器并呈现图表
    • 感谢您的帮助。是的,我添加了您的 ajax。只是在同一页面上,通过 ajax,您的意思是答案中的 ajax 代码?
    • 我更新了我的答案。如下更新您的 answer 操作
    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2014-04-14
    相关资源
    最近更新 更多