Highchart 日期选择器

2024-03-26

我正在尝试让 jquery-ui datepicker 与 highcharts 一起使用,以便用户可以选择一个日期,例如

用户选择 10 月 10 日至 10 月 25 日

用户选择日期后,高图应重新绘制并显示已完成的项目的小时数以及任务。我的图表如下所示:

Chart https://i.stack.imgur.com/4VmxZ.png

从目前的照片来看,高图显示了用户为“Asda”项目完成任务的时间。

目前我的图表仅显示本周的小时数。我想做的是使用 jquery datepicker,以便它可以显示用户输入的过去几个小时。如果用户选择“从 10 月 10 日”到“10 月 25 日”,图表应重新绘制并显示所选日期范围内的时间和项目。

我的代码如下:

索引.html.erb

<%= javascript_include_tag 'highcharts', 'exporting' %>

<%= render 'projectselect' %>

<div class = 'right'>
<label for="from">From</label>
<input type="text" id="from" name="from" size="15"/>
<label for="to">to</label>
<input type="text" id="to" name="to" size="15"/>
</div>

<button id="button">Redraw</button>


<div id="container" style="height: 400px"></div>

<script>
$(document).ready(function() {var chart = new Highcharts.Chart(options);});
onchange: $(function() {
        var dates = $( "#from, #to" ).datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 1,
            onSelect: function( selectedDate ) {
                var option = this.id == "from" ? "minDate" : "maxDate",
                    instance = $( this ).data( "datepicker" ),
                    date = $.datepicker.parseDate(
                        instance.settings.dateFormat ||
                        $.datepicker._defaults.dateFormat,
                        selectedDate, instance.settings );
                dates.not( this ).datepicker( "option", option, date );
            }
        });
    });

$('#button').click(function() {
    chart.redraw();
});

var options = {
    chart: {
         renderTo: 'container',
         defaultSeriesType: 'column'
      },
      title: {
          text: '<%= current_user.username %>',
      },
      subtitle: {
         text: 'Project Hours'
      },
      xAxis: {
         categories: [
            'Pre-Sales',
            'Project',
            'Fault Fixing',
            'Support',
            'Out Of Hours',
            'Sick',
            'Toil',
            'Leave'  
         ]
      },
      yAxis: {
         min: 0,
         title: {
            text: 'Hours'
         }
      },
        plotOptions: {
         series: {
            stacking: 'normal'

         }
      },ip: {
         formatter: function() {
            return ''+
               this.x +': '+ this.y +' Hours';
         }
      },

      credits: {
         text: '',
         href: ''
      },

      exporting: {
         enabled: true,
         filename: 'Project-Hours'
      },

      plotOptions: {
         column: {
            pointPadding: 0.3,
            borderWidth: 0
         }
      },

      series: [
      <% @users_projects.each do |users_project| %>
                <% if !users_project.user.nil? && current_user.full_name == users_project.user.full_name %>
                  <% @data.each do |data| %>
            <% if data[ :values ] == [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] %>
            <% else %>
              <% if data[ :name ] == users_project.project.project_name %>
              {
                name: '<%= data[ :name ] %>',
                data: [
                <% data[ :values ].each do |value| %>
                 <%= value %>,
                <% end %>
                ]
              },
              <% end %>
          <% end %>
                <% end %>
      <% else %>
      <% end %>
            <% end %>
      ]
};
</script>

解决这个问题的最佳方法是什么?


In onSelect日期选择器的回调,您应该验证,如果两者#from and #to被选择(或者如果没有则提供合理的默认值),最后向服务器发送 xhr 请求以获取新的数据系列。

onSelect: function( selectedDate ) {
  var option = this.id == "from" ? "minDate" : "maxDate",
  instance = $( this ).data( "datepicker" ),
    date = $.datepicker.parseDate(
      instance.settings.dateFormat || $.datepicker._defaults.dateFormat,
      selectedDate,
      instance.settings
    );
    dates.not( this ).datepicker( "option", option, date );

    // validate if we have both dates and get new series from server
    if ($(dates[0]).datepicker("getDate") &&
        $(dates[1]).datepicker("getDate")) {
      $.ajax({
        type: 'POST',
        url: '<%= user_projects_path(params[:user_id]) %>',
        data: {"from": $(dates[0]).datepicker("getDate"), "to" : $(dates[1]).datepicker("getDate") },
        success: function(data) {
          // now we have new series of data to display in graph
          // we remove the old one, add the new and redraw the chart
          for(var i=0; i<chart.series.length; i++) {
            chart.get(chart.series[i].options.id).remove();
          }

          // fiddle with json data from xhr response to form valid series
          var series = data; 
          chart.addSeries(series, true); // second param says we want to redraw chart
        }
      });
    }
}

控制器方法下user_projects_pathurl 需要存在并返回给定的 JSON 格式的系列数据user_id当然。您可以在使用 jquery xhr 请求发送的参数返回之前过滤系列数据(from and to).

快速而肮脏的解决方案,但我希望你明白了......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Highchart 日期选择器 的相关文章

  • 根据传递的参数覆盖 Javascript 函数

    是否可以根据传递给函数的参数数量来重写函数 例如 function abc name document write My name is name function abc name friend document write My nam
  • 如何翻转 Twitter Bootstrap 的工具提示

    我正在使用 Twitter 的 Bootstrap 来实现工具提示 目前 工具提示显示在链接上方 我希望工具提示出现在链接下方 我该怎么做呢 我正在触发工具提示 它明确指出 底部 但它不想为我工作 tooltip tooltip place
  • jQuery 选择器定位具有 id AND class 的元素不起作用

    我有以下事件处理函数 jQuery document on click button submitb function e alert jQuery 包含在 html 文档中 但是 如果我点击 div class submitb Go di
  • IE8 中空 div 层的 z-index 问题

    我在 IE8 中遇到 z index 问题 其他尚未测试 以下 JS 创建一些 html css document write img src border 0 document write div style background col
  • 如何在美人鱼节点描述中添加链接?

    我想 如下图所示 div class mermaid graph TD A hello B an b important b link A gt B div 在下面添加实际链接link指向http google com 我尝试将相关节点修改
  • 如何在 Angular 2 应用程序中使 DateAdapter 单例?

    我正在开发一个带有延迟加载模块的 Angular 7 应用程序 我也使用有角度的材料组件 我想在日期选择器组件中本地化并支持多个区域设置 当应用程序语言发生变化时 我想在整个应用程序中全局更改它 可以通过 DateAdapter setLo
  • Browserify:如果需要,使用 module.exports,否则暴露全局

    我正在考虑采用浏览器化 http browserify org 对于我的一些项目 但想确保其他人如果想使用 捆绑的 代码就不必使用 browserify 执行此操作的明显方法是通过以下方式公开模块导出module exports以及通过一个
  • Mongoid 中的 find_or_create_by 线程安全吗?

    我有一个使用 Mongoid 的 find or create by 方法的网络应用程序 poll Poll find or create by fields 在投入生产之前 我尝试运行故障场景 我发现多个用户可以尝试使用此方法访问此资源
  • Intro.js 2页然后返回首页

    我在用intro js http introjs com 为我的网站创建一个小介绍 我希望游览从第 1 页 主页 2 另一页 然后回到第 1 页 主页 我已经成功地从第 1 2 页开始 但不确定如何让它返回到第 1 页 我对 javascr
  • 如何在 Rails 3.2.1 版本中注释 Rails 模型

    我正在尝试遵循一些在线教程来在 Rails 中注释我的模型 然而 似乎所有教程都在谈论过时的注释版本或不正确的安装 这真是一团糟 到目前为止我已经尝试过以下方法 1 在 Gemfile 中添加此内容 gem annotate 2 4 0 2
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • 什么是 TinyMCE jQuery 包?

    我被要求在项目中使用 TinyMCE 编辑器 在下载页面上 有一个主包 然后是一个 jQuery 包 This package contains special jQuery build of TinyMCE and a jQuery in
  • 动态 dom 操作后,如何在浏览器历史记录中保留 dom 状态?

    是否有一个通用的解决方案来保留 dom 状态 以便当用户使用后退 前进返回页面时 整个页面处于他们离开时的确切状态 这篇文章询问并回答了为什么不同浏览器和不同 javascript 库的行为不一致 Ajax 后退按钮和 DOM 更新 htt
  • 在firefox上用js改变表单方法

    我需要使用 javascript jQuery 或纯 更改表单的方法属性 我的表单有 method post 我尝试用以下方法更改它 submit button click function var url input id url val
  • 使用 javascript/jquery 从数据库格式化日期的正确方法

    我正在调用包含日期时间数据类型的数据库 日期看起来像这样 2005 05 23 16 06 00 000 当用户从列表中选择某个项目时 我想在表格中显示它 我调用我的控制器操作并返回所有时间的 Json 并将它们放入表中 问题是日期完全错误
  • JavaScript 正则表达式两个标签之间的多行文本

    我编写了一个正则表达式来从 HTML 中获取字符串 但似乎多行标志不起作用 这是我的模式 我想将文本输入h1 tag var pattern div class box content 5 h1 lt lt h1 gt mi m html
  • JsGrid 将嵌套对象加载到表中

    我正在 Django 中开发一个 Web 项目并使用 jsGrid 我遇到了问题并且找不到解决方案 我有一个嵌套的 JSON 数据 它是通过组合多个数据库表记录创建的 这是我的 JSON count 3 results personnel
  • 如何在 Firefox 插件中追加到文件?

    var tabs require sdk tabs var iofile require sdk io file var widgets require sdk widget var selection require sdk select
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo

随机推荐

  • 该元素导致 Firefox 中的元素溢出

    我不使用 Bootstrap 或 reset css reboot css 我正在尝试使用通用 css 构建一个网站 我正在做非常基本的事情 但我到处都得到 这个元素导致元素溢出 我已经有一段时间没有在没有任何 css 框架的情况下完成布局
  • C 中的字符串和指针

    include
  • 未检测到 Flash 10:世界上最普遍的网络视频错误?

    问题如下 确保您对网站上 Flash 版本 x 的要求能够正确检测到更高版本的 Adob e Flash Player 版本 10 或 1y 的存在的最佳方法是什么 现在谜团来了 为什么这么多需要 Flash Player 版本 8 和 9
  • 01 背包专业化

    抱歉 如果这个问题已经得到解答 但我对算法没有深入的了解 并且并不总是注意到算法不同专业之间的微妙之处 我有 我认为是 01 背包问题的一个轻微变体 我有一个背包 其最大重量为 W 有 N 个重量为 w 价值为 v 的物品可供选择 我想要做
  • 为什么 Arc::try_unwrap() 会导致恐慌?

    我正在编写一个简单的聊天服务器 它向所有连接的客户端广播消息 由于我是初学者 代码可能看起来很糟糕 对等点尚未在任何地方使用 因为我想将其传递给handle client函数也是如此 因此当数据在流中可用并成功读取时 我想在所有连接的客户端
  • 为每个对象 JointJS 创建一个 ToolElement

    我试图为每个对象创建一种工具菜单 当您单击或将鼠标悬停在某个元素上时 它会显示可以执行的几个操作 删除 旋转 放大 链接等 我用过这个question https stackoverflow com questions 30153345 h
  • iOS CoreData批量插入?

    在我的 iPhone 应用程序中 我需要将大约 2000 条记录插入 Core Data 然后用户才能使用该应用程序的任何功能 我正在将记录从本地 JSON 文件加载到 CoreData 中 此过程需要很长时间 2 5 分钟以上 但只需要发
  • 当用户在 Chrome 上按下键盘时,如何检测“删除”和“.”?

    当我按下 它触发了三个事件 keydown keypress and keyup keydown which 190 keyCode 190 keypress which 46 keyCode 46 keyup which 190 keyC
  • AWS Lambda:在运行时获取当前重试尝试计数

    我有一个 AWS Lambda python3 7运行时 运行某个任务 及其MaximumRetryAttempts被设定为1 这意味着它可能会失败一次 然后再尝试一次 由于某种原因 我不会进入 我想知道 在运行时 这是第一次尝试还是第二次
  • Scala:没有明确已知类型参数的类型转换

    考虑以下示例 case class C T x T def f t T println t type ValueType T val list List 1 gt C 2 hello gt C goodbye for a b lt list
  • 后台任务SystemTriggerType.SmsReceived不会触发

    我正在后台 Windows Phone 8 1 中测试任务 但触发器SystemTriggerType SmsReceived不适合我 有人设法让它发挥作用吗 I used 这个例子 http code msdn microsoft com
  • "" 和 " " 之间有什么区别,如何根据字符测试前者?

    在Java中 空引号 和 带有单个空格的引号 之间有什么区别以及如何测试前者char 代表空字符串 is not空 它包含一个空格字符 你不能用以下方式来测试前者char 因为没有字符 用 a 来测试它String 它是String长度为零
  • 获取add_subdirectory添加的CMake项目版本

    我有一个依赖于 Google Test 库的 CMake 项目 我已经使用添加了 Google 测试ExternalProject Add and add subdirectory如此处所述 https github com google
  • jasig cas 重定向过多问题

    我正在尝试使用 spring security 和 spring security cas 带有 Jasig CAS 的 SSO 来保护 spring boot Web 应用程序 尝试访问受保护的资源时 我遇到了太多重定向错误 该项目可用h
  • 使用兆秒差距在不同位置出现多个错误

    我将使用 megaparsec 来解析大学项目的编程语言 但是 我寻找一种报告多个错误的方法 我知道 withRecovery 并且我看到了this https github com mrkkrp megaparsec issues 43问
  • PLSQL:使用合并语句时获取更新与插入的记录数

    无论我的记录如何使用 SQL ROWCOUNT 插入或更新 合并都会始终为您提供合并的记录数 但是如何找出实际插入的记录数与实际更新的记录数 我尝试了这篇文章中的选项 但这似乎不起作用 https asktom oracle com pls
  • Python - 在应用程序中直接显示网络浏览器/iframe

    我有一个脚本 如果对人们回答问题有帮助 那就使用 kivy 我想让它在运行时直接显示 iframe 之类的东西 而不是打开 浏览器 例如这样的事情 def browser url google com iframe url browser
  • 远程连接clearDB heroku数据库

    我如何使用 MySQL 查询浏览器等在 heroku 上远程连接到 ClearDB MySQL 数据库 从哪里获取 url 端口 登录名和密码 在 heroku 网站中 转到 我的应用程序 并选择已安装 ClearDB 的应用程序 在顶角单
  • 稀疏矩阵-矩阵乘法

    我目前正在使用稀疏矩阵 并且必须将稀疏矩阵 矩阵乘法与全矩阵 矩阵乘法的计算时间进行比较 问题是稀疏矩阵计算比全矩阵计算慢得多 我正在使用压缩行存储来压缩我的矩阵 并且将两个矩阵相乘非常耗时 四倍for循环 所以我想知道是否有更好的压缩格式
  • Highchart 日期选择器

    我正在尝试让 jquery ui datepicker 与 highcharts 一起使用 以便用户可以选择一个日期 例如 用户选择 10 月 10 日至 10 月 25 日 用户选择日期后 高图应重新绘制并显示已完成的项目的小时数以及任务