1

私はダッシュ レールを使用しており、API から返されるブール値に応じて、ウィジェットの背景色を緑/赤に変更しようとしています。私は次の仕事をしています:

Dashing.scheduler.every '1m', first_in: 8 do
  Dashing.send_event('all_good', status: MixpanelHelper.all_good?)
end

coffeescript が含まれるウィジェット:

onData: (data) ->
  if data.status
    $(@node).css('background-color', '#42b2aa')
  else
    $(@node).css('background-color', '#e85c28')

そしてerbが含まれるダッシュボード:

    <div data-id="all_good" data-view="Mywidget" data-title="All good" data-goal="95%" data-suffix="%"></div>

しかし、色の変化は引き起こされていません。データを正しく渡していませんか?

4

2 に答える 2

1

数日前にダッシュを使い始めたばかりで、同じ問題がありました。私がそれを解決した方法は、ready: と onData: の両方のイベントの 2 つの場所に配置することです。

  ready: ->
    # This is fired when the widget is done being rendered
    @setColor(@get('status'))

  onData: (data) ->
    # Handle incoming data
    # You can access the html node of this widget with `@node`
    # Example: $(@node).fadeOut().fadeIn() will make the node flash each time data comes in.
    @setColor(@get('status'))
    $(@node).fadeOut().fadeIn()

  setColor: (status) ->
    if status
      switch status
          when 'RUN' then $(@node).css("background-color", "#29a334") #green
          when 'FAIL' then $(@node).css("background-color", "#b80028") #red
          when 'PEND' then $(@node).css("background-color", "#ec663c") #orange
          when 'HOLD' then $(@node).css("background-color", "#4096ee") #blue

私はそれが最善の解決策ではないと思います.使用できる別のイベントがある可能性があります.私はまだ知らない.それを見つけたらこの回答を更新します.

于 2014-02-28T02:34:01.827 に答える