动态更改Dashing小部件

时间:2016-08-24 20:47:37

标签: ruby coffeescript sinatra dashing

我使用基于ruby的Dashing框架构建了一个仪表板,所有内容似乎运行良好,但我希望能够更改其中一个List小部件的背景颜色( mywidget )基于列表中的一个值。

我的updatelist.rb作业文件目前看起来像是:

hashdata = Hash.new({ value: 0 })

SCHEDULER.every '10s' do

  File.open('xxx.txt').each do |line|
    field = line.split(;).first
    value = line.split(;).last

    if ['Status', 'Active', 'Duration].include? field
     hashdata[field] = { label: field, value: value }
    end
  end
  send_event('mywidget', { items: hashdata.values })
end

它正在阅读的文件( xxx.txt )的格式如下:

Status; Good
Active; No
Duration; 1000

我想根据状态值更改列表小部件的背景颜色,即Good = green,Average = yellow,Poor = red。

我该怎么做?在咖啡脚本中添加一些东西似乎是明显的解决方案,但我无法看到如何实现它

1 个答案:

答案 0 :(得分:1)

你在coffeescript中需要代码是正确的。我建议如下:

class Dashing.List extends Dashing.List

color: () -> 
  data = @get('items')
  status = # code to process color from your data (I'm not sure exactly your format)
  switch status
    when "Good" then "#33cc33" # green
    when "Average" then "#ffff00" # yellow
    when "Poor" then "#ff0000" # red
    else "#000000"

onData: (data) ->
  # change the background color every time that new data is sent
  $(@get('node')).css 'background-color', @color()