Библиотека javascript Rickshaw: строки для оси X

У меня есть следующий массив:

var data = [ { x: "2013-10-22T22:56:25.534Z", y: 0 }, { x: "2013-10-22T22:56:25.524Z", y: 162 }, { x: "2013-10-22T22:56:25.514Z", y: 0 } ];

И так далее. Всего 50 объектов, каждый со значением x и y. Этот массив следует использовать для рисования диаграммы с помощью этой библиотеки рикш: http://code.shutterstock.com/rickshaw /.

Как вы видите выше, ось X должна визуализировать отметку времени в строковом формате. Все выглядит нормально, но я получаю сообщение об ошибке: Uncaught x and y properties of points should be numbers instead of string and number

Кто-нибудь знает, как мне настроить библиотеку рикши, чтобы отображать отметку времени (строку) по оси X диаграммы?

Обновление A: Попытаться решить проблему в библиотеке рикш Как предлагается здесь (Rickshaw - библиотека диаграмм js: нужны строки вместо чисел на осях), может быть возможно добавить функцию, которая охватывает строку формат тоже. Но я понятия не имею, как мне завершить этот форматер, чтобы он работал для моего проекта.


person Kevin    schedule 03.07.2014    source источник


Ответы (1)


Я не специалист по библиотекам javascript Rickshaw. Судя по их примерам и вашему журналу ошибок, он ожидает значения объектов X и Y в типе INTEGER, но здесь type for X is "String".

Таким образом, вместо того, чтобы передавать время в формате String, вы можете использовать pass the UNIX Timestamp- типа INT.


Чтобы преобразовать дату и время в отметку времени Unix в Javascript, используйте подключаемый модуль Date.js.

Преобразовать обычную дату в метку времени unix

Просто прокрутите свои координаты X и измените их на Unix TimeStamp-

var changeDateTimeToTimestamp = function(data){
    for(var key in data){
        data[key].x = new Date(data[key].x).getTime() / 1000;
    }
    return data;
}

var data = [ { x: "2013-10-22T22:56:25.534Z", y: 0 }, { x: "2013-10-22T22:56:25.524Z", y: 162 }, { x: "2013-10-22T22:56:25.514Z", y: 0 } ];
var newData = changeDateTimeToTimestamp(data);
//console.log(newData);
person Avisek Chakraborty    schedule 03.07.2014
comment
Спасибо за Ваш ответ. Отметка времени, которую я хочу использовать, взята из API в json. Я должен нам это. Я попытался преобразовать строку в интерегер, но безуспешно. Я также нашел это: [ссылка]stackoverflow.com/questions/13061214/. Но я не понимаю концепции... - person Kevin; 03.07.2014
comment
Я внедрил ваше обновление. Но после выполнения функции результат т.е. для 2013-10-22T22:56:25.534Z просто 2013 (int). То же самое для других строк :-( Для 1287788185 это работает. Но у меня есть этот неприятный формат с дефисами и двоеточиями: в строке. - person Kevin; 03.07.2014
comment
да. Так и должно быть. Если вы думаете о ДИАГРАММЕ, она принимает только значения координат X, Y в ЧИСЛАХ, например. (3,5); (10, 20) и т. д. Как можно построить точку, имеющую String в координатах. - person Avisek Chakraborty; 03.07.2014
comment
Функция javascript parseInt() делает Ineger из String. Таким образом, передавая строку типа 2013-10-..., она сохраняет только начальную числовую часть (2013) как целое число. - person Avisek Chakraborty; 03.07.2014
comment
Вы определенно правы в отношении целочисленного и строкового подхода. В примерах рикши я нашел это: github.com/shutterstock /rickshaw/blob/master/examples/ Это может быть решением, но мне нужно знать, как автоматически заполнять карту моими строками... есть идеи? - person Kevin; 03.07.2014
comment
Проверьте мой новый РЕДАКТИРОВАТЬ в ответ - person Avisek Chakraborty; 03.07.2014
comment
Большое спасибо, Ави С! С вашей функцией рикша-диаграмма знает, как обрабатывать целые значения. к сожалению, отметка времени не отображается в исходном формате. Но для начала это нормально, и я могу продолжать свою работу. - person Kevin; 03.07.2014
comment
Рад узнать, помогло. Продолжайте голосовать ;) - person Avisek Chakraborty; 03.07.2014