【问题标题】:Morris Line Chart: get point value when clicked莫里斯折线图:单击时获取点值
【发布时间】:2020-06-02 04:46:30
【问题描述】:

不幸的是,在寻找有关此问题的答案一天之后,我无法在任何地方找到它。如果有人可以在这里帮助我,将不胜感激:

我想获取用户点击的点值。因此,例如在所附图像中,当用户单击如图所示时,我希望获得值为“ra_user3”的值。我目前得到 ra_user1 这是不正确的。我得到了正确的 clickedDate。

我的 JS 代码:

// LINE QaqcRA_CHART qaqc
var QaqcRA_user_color = <?php echo json_encode($QaqcRA_user_color); ?>;
var QaqcRA_user_label = <?php echo json_encode($QaqcRA_user_label); ?>;
var QaqcRA_users = <?php echo json_encode($QaqcRA_users); ?>;

var line = new Morris.Line({
  element: 'QaqcRA_charts',
  resize: true,
  data: <?php echo json_encode($QaqcRA_charts); ?>,
  parseTime: false,
  xkey: 'ra_updated_on',
  xLabels: 'Inspection Date',
  xLabelAngle: 45,
  hideHover: 'false',
  ykeys: QaqcRA_user_label,
  labels: QaqcRA_user_label,
  lineColors: QaqcRA_user_color,
  hoverCallback: function(index, options, content, row) {

    var finalContent = content;

    return finalContent;
  }
});

$("#QaqcRA_charts svg").on('click', function(evt) {

  var a = evt.target;
  var target_result = JSON.stringify(a);
  console.log("target_result: " + target_result); // target_result: {"raphael":true,"raphaelid":139}

  var clickedDate = $(".morris-hover-row-label").html().trim();
  var clickedPoint = $(".morris-hover-point").html().trim();
  var comp = clickedPoint.split(":");
  var clickedUser = comp[0];

  console.log("clickedDate: " + clickedDate); // clickedDate: 20 May 2020
  console.log("clickedUser: " + clickedUser); // clickedUser: ra_user1

});

【问题讨论】:

    标签: javascript morris.js


    【解决方案1】:

    你用来拦截点击事件的方式不好。你应该这样写:

        var line = new Morris.Line({
          element: 'QaqcRA_charts',
          resize: true,
          data: <?php echo json_encode($QaqcRA_charts); ?>,
          parseTime: false,
          xkey: 'ra_updated_on',
          xLabels: 'Inspection Date',
          xLabelAngle: 45,
          hideHover: 'false',
          ykeys: QaqcRA_user_label,
          labels: QaqcRA_user_label,
          lineColors: QaqcRA_user_color,
          hoverCallback: function(index, options, content, row) {
    
            var finalContent = content;
    
            return finalContent;
          }
        }).on('click', function(a, row) {
          // here you should be able to handle the click event
          console.log(a,row);
        });
    

    然后您就可以访问您单击的 xkey 的一系列数据;

    【讨论】:

    • 根据您的建议。我得到 a=2 和 row={"ra_updated_on":"2020 年 5 月 20 日","ra_user1":"0","ra_user2":"15","ra_user3":"9"}。它没有给我点击的确切“ra_user3”。这里的 a 是指 X 轴的第二个元素。我仍然缺少 Y 轴。如果您能提供进一步帮助,将不胜感激。谢谢
    • 抱歉,您无法获得您在系列中单击的确切点,目前 MorrisJS 中不提供该点。唯一的方法是在圆圈上添加一个点击事件,但这是一项艰巨的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多