2013-11-28 3 views
1

Я работаю с этим multi-graph Dashing widget. Он работает правильно, но он использует только две серии данных, и я хочу добавить еще один. Я не модифицировали файл .coffee вRickshaw Stacked Multi-graph

class Dashing.Mgraph extends Dashing.Widget 

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

    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: 'area' 
     stroke: false 
     series: [ 
     { 
     color: "#fff", 
     data: [{x:0, y:0}] 
     }, 
     { 
      color: "#222", 
      data: [{x:0, y:0}] 
     }, 
     { 
      color: "#333", 
      data: [{x:0, y:0}] 
     } 
     ] 
    ) 

    @graph.series[0].data = @get('points') if @get('points') 

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

    onData: (data) -> 
    if @graph 
     @graph.series[0].data = data.points[0] 
     @graph.series[1].data = data.points[1] 
     @graph.series[2].data = data.points[2] 
     @graph.render() 

Однако, когда я бегу лихой, ничего она отображается (даже не мои другие виджеты). Это просто пустой экран. Может ли кто-нибудь сказать мне, что здесь происходит?

EDIT:

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

+0

Не уверен, что если мой вопрос остается неясным, или никто не знает answer ... – user1893354

+1

Просто интересно, если вы столкнулись с тем же вопросом с владельцем мультиграфа на git-хабе. – sam

+0

Не владелец, но я разместил его на gigaub лихорадки. Пока нет ответа. Полагаю, я должен опубликовать его там, хотя, спасибо. – user1893354

ответ

2

Вот, попробуйте использовать rickshawgraph виджет https://gist.github.com/jwalton/6614023

Вот мой .rb

points1 = [] 
points2 = [] 
points3 = [] 
(1..10).each do |i| 
    points1 << { x: i, y: 10 } 
    points2 << { x: i, y: 10 } 
    points3 << { x: i, y: 10 } 
end 
last_x = points1.last[:x] 

SCHEDULER.every '2s' do 
    points1.shift 
    points2.shift 
    points3.shift 
    last_x += 1 
    points1 << { x: last_x, y: rand(50) } 
    points2 << { x: last_x, y: rand(10) } 
    points3 << { x: last_x, y: rand(100) } 

    series = [ 
     { 
      name: "set1", 
      data: points1 
     }, 
     { 
      name: "set2", 
      data: points2 
     }, 
     { 
      name: "set3", 
      data: points3 
     } 
     ] 
    send_event('convergence', series: series) 
end 

Вот мой .erb

% content_for :title do %>My super sweet dashboard<% end %> 
<div class="gridster"> 
<ul> 
    <li data-row="1" data-col="1" data-sizex="2" data-sizey="1"> 
    <div data-id="convergence" data-view="Rickshawgraph" data-title="Convergence" data-unstack="true" data-stroke="true" data-default-alpha="0.5" data-color-scheme="compliment" data-legend="true" data-summary-method="last"></div> 
    </li> 
</ul> 
</div>