2014-02-13 3 views
1

Я работаю над проектом с использованием платформы Sinatra под названием Dashing. Часть моего проекта заключается в создании графика с использованием RickShaw Graph. Моя проблема в том, что я не могу отображать названия месяцев и даты на оси X. Я использую coffeescript для отображения этих значений. Вот код для графа:Невозможно отобразить Месячные имена на графике Рикши на Coffeescript

class Dashing.Graph extends Dashing.Widget 



@accessor 'points', Dashing.AnimatedValue 

    @accessor 'current', -> 
    return @get('displayedValue') if @get('displayedValue') 
    points = @get('points') 
    if points 
     points[points.length - 1].y 

#ready is triggered when ever the page is loaded. 
    ready: -> 
    container = $(@node).parent() 
    # Gross hacks. Let's fix this. 
    width = (Dashing.widget_base_dimensions[0] * container.data("sizex")) + Dashing.widget_margins[0] * 2 * (container.data("sizex") - 1) 
    height = (Dashing.widget_base_dimensions[1] * container.data("sizey")) 
    @graph = new Rickshaw.Graph(
     element: @node 
     width: width 
     height: height 
     renderer: @get("graphtype") 
     series: [ 
     { 
     color: "#fff", 
     data: [{x:0, y:0}] 
     } 
     ] 
    ) 

    @graph.series[0].data = @get('points') if @get('points') 
    time = new Rickshaw.Fixtures.Time() 
    days = time.unit("day") 

    x_axis = new Rickshaw.Graph.Axis.Time(
     graph: @graph 
     timeUnit: days 
    ) 
    y_axis = new Rickshaw.Graph.Axis.Y(graph: @graph, tickFormat: Rickshaw.Fixtures.Number.formatKMBT) 
    @graph.render() 

Из того, что я понял из Рикша Graph API доступен здесь:

https://github.com/shutterstock/rickshaw/blob/master/src/js/Rickshaw.Fixtures.Time.js

он говорит, что вы можете указать имя устройства. Поэтому для этого экземпляра я использовал «день» только для тестирования, но это, похоже, не работает. Любая помощь будет замечательной.

ответ

0

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

var xAxis = new Rickshaw.Graph.Axis.Time({ 
    graph: graph, 
    timeFixture: new Rickshaw.Fixtures.Time.Local() 
}); 

Светильник заботится о диапазоне времени, отображаемого и запускает соответствующий уровень детализации Fo даты/времени форматирования, например увеличение времени от нескольких часов до нескольких часов.

Вы также можете создать свой собственный «времени прибор» и установить его там, посмотрите на Rickshaw.Fixtures.Time или Rickshaw.Fixtures.Time.Local

В качестве альтернативы, указать фиксированный интервал ака «устройства вы всегда хочу показать:

var timeFixture = new Rickshaw.Fixtures.Time(); 
var unitHour = timeFixture.unit('hour'); 
var xAxis = new Rickshaw.Graph.Axis.Time({ 
    graph: graph, 
    timeUnit: unitHour, 
    timeFixture: timeFixture 
}); 
+0

Спасибо за ответ, я думаю, проблема в том, что я не обновил файл Rickshaw.min.js, поскольку он был обновлен. У более старой версии не было Time.Local. Для любого, кто хочет получить последнюю версию, вы можете получить его здесь: https://raw.github.com/shutterstock/rickshaw/master/rickshaw.min.js – Joshi