2015-08-10 3 views
1

Я проверяю номер недели через here. Я проверил неделю 29 с 12 июля 2015 года - 18 июля 2015 года. Но в morris chart, w29 - 19-25 июля 2015 года. Где я могу исправить это быстро?Недельный номер Неверный номер в Morris.js

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 
    }); 

Кроме того, любой способ может показать этикетку х-оси, как формат даты '2015-W29' вместо?

Прошу совета. Спасибо.

ОБНОВЛЕНИЕ: Я изменил morris.js минусом недели -1, я знаю, что это неправильно, минус 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); 
    } 
}, 
+0

Это зависит от того, как вы определяете первую неделю года. – zerkms

+0

@zerkms Я никогда не определяю. Где определить? пожалуйста посоветуй. – hahahaha

+0

Я не имел в виду программное определение, но определение термина. В некоторых случаях первая неделя начинается с первого понедельника года, иногда - с 1 января. И оба являются «действительными». – zerkms

ответ

1

Одним из способов является provide your own hoverCallback() function:

Обеспечить функцию на эту опцию, чтобы генерировать пользовательские легенды при наведении курсора. Функция будет вызываться с индексом строки под легендой наведения, объектом опций, переданным конструктору в качестве аргументов, строкой, содержащей созданный по умолчанию текст легенды наведения hover, и объект, содержащий исходные данные для строки, переданной в опции данных.

В этой функции вы можете отрегулировать отображаемый номер недели (либо полностью переопределить content, либо изменить только номер недели).

0

Я нашел ту же проблему. Вы могли бы решить определить свой собственный dateFormat и xLabelFormat функции.

Эти функции предоставляют вам время unix epoch как только параметр. Используя недели для оси X, время эпохи unix будет неправильным: вы должны вычесть 7 дней (как вы уже поняли).

Определенно не решение, но оно не требует каких-либо изменений в основной библиотеке. Надеюсь, что кто-то исправит эту проблему как можно скорее.

Смежные вопросы