Morris.js中的周数不正确

时间:2015-08-10 07:39:49

标签: javascript morris.js

我通过here检查周数。我检查了第29周是从2015年7月12日到2015年7月18日。但是在morris图表中,w29是2015年7月19日至25日。我在哪里可以快速纠正这个问题?

enter image description here

// JS

var line = new Morris.Line({
        element: 'line-chart',
        resize: true,
        data: result_week,
        xkey: 'week',
        ykeys: ['price'],
        labels: ['Price'],
        xLabels: ['week'],
        lineColors: ['#3c8dbc'],
        hideHover: 'auto',
        smooth: false
    });

此外,任何方式都可以将x轴标签显示为' 2015-W29'而不是日期格式?

请指教。谢谢。

更新: 我在减去第-1周的时候改变了morris.js,我知道它在-1之前是不对的。但是仍然希望能有更好的解决方案。问题仍然存在!感谢。

"week": {
  span: 604800000,
  start: function(d) {
    return new Date(d.getFullYear(), d.getMonth(), d.getDate());
  },
  fmt: function(d) {
    // return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate()));
    Date.prototype.getWeek = function() {
        var onejan = new Date(this.getFullYear(), 0, 1);
        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);
    }

    return "" + (d.getFullYear()) + " W" + (Morris.pad2(d.getWeek() - 1));
  },
  incr: function(d) {
    return d.setDate(d.getDate() + 7);
  }
},

2 个答案:

答案 0 :(得分:1)

一种方法是provide your own hoverCallback() function

  

提供此选项的功能以生成自定义悬停图例。   该函数将使用悬停图例下的行索引,作为参数传递给构造函数的options对象,包含默认生成的悬停图例内容HTML的字符串,以及包含传入的行的原始数据的对象数据选项。

在该功能中,您可以调整显示的周数(完全覆盖content或仅修改周数)。

答案 1 :(得分:0)

我发现了同样的问题。您可以解决定义自己的 dateFormat xLabelFormat 函数的问题。

这些函数为您提供unix纪元时间作为唯一参数。对于X轴使用周数,unix纪元时间将是错误的:您必须减去7天(如您所知)。

绝对不是解决方案,但它不需要对主库进行任何更改。 希望有人能尽快解决这个问题。