人力车堆积多图

时间:2013-11-28 16:44:55

标签: coffeescript rickshaw dashing

我正在使用此multi-graph Dashing widget。它工作正常,但它只使用两个数据系列,我想再添加一个。我已将.coffee文件修改为

    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()

然而,当我运行破折号时,它没有显示任何内容(甚至不是我的其他小部件)。它只是一个空白屏幕。谁能告诉我这里发生了什么?

编辑:

我已经更多地解决了这个问题。看起来一切正常,直到我在series:中添加第三个数据系列似乎这导致它无法工作。

1 个答案:

答案 0 :(得分:2)

在这里,尝试使用rickshawgraph widget 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>