Написать собственный форматер для Google Charts Api - PullRequest
6 голосов
/ 06 июля 2011

Я хочу создать график для отображения моего времени за 10 000 пробежек.Все работает как надо, единственная проблема, которая у меня есть, это то, что я хочу отформатировать, как отображается время.

В настоящее время время отображается в виде числа, которое представляет секунды.Например, 30-минутный пробег сводится к 10800 секундам.Средства форматирования, предоставляемые Google, охватывают много вещей, но я не очень доволен тем, что они предоставляют.

http://code.google.com/apis/chart/interactive/docs/reference.html#formatters

К сожалению, нет информации о том, как реализовать свой собственныйформатировщик.Есть ли шанс, что я смогу расширить средство форматирования, или есть интерфейс, который нужно реализовать?

Первое, что я бы сделал, это сделал бы разбор числа 10800 до приятного времени, например 30: 00,00 (30 минут,0 секунд, 0 миллисекунд).Может быть, это уже возможно с шаблонизатором шаблонов, но я не понимаю, как это происходит, так как в нем задействованы вычисления, и не знаю, как реализовать это в шаблонизаторе шаблонов.

Спасибо за вашу помощь.Johnny

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Используйте DateFormat с пользовательским шаблоном.Например:

google.visualization.DateFormat({pattern: "mm:ss.SSS"});

Предостережение заключается в том, что здесь отображается время суток объекта JS Date, поэтому вам нужно будет указать время выполнения в виде дат JS.Так что либо укажите фактическое время суток, в которое были взяты ваши данные.Или, если вы хотите просто показать относительное время с начала запуска, вы можете сделать что-то вроде этого:

new Date(new Date('Jan 01 2000').getTime() + sampleTime)

... где sampleTime - время каждой точки выборки в миллисекундах.(Это просто устанавливает время в миллисекундах с полуночи 01.01.2000, поэтому час / минута / секунда будет отражать ваше время пробега)

0 голосов
/ 26 сентября 2014

Натолкнулся на похожую проблему с геокартой, где было всего несколько секунд, и нужно было отобразить ее как чч: мм: сс.Не смог справиться, но я смог получить его в мм: сс, что было приемлемо

Я перевел общее количество секунд в десятичную форму как мм.сс.например, 200 секунд - это 3:20, поэтому я пометил это как 3.20 и передал значение на диаграмму как таковое, а затем на географической диаграмме я использовал числовой форматер для использования: в качестве десятичного форматера

var formatter = new google.visualization.NumberFormat({
    decimalSymbol: ':'
});

По умолчаниюдесятичное число равно 2, поэтому оно выглядит как 3: 20.

...