我有Dashing工作,现在想添加一些'组合'小部件。
这样一个小工具可以添加来自(例如)Facebook和Twitter的数字。我还有两个独立的小部件,一个用于Facebook,另一个用于Twitter。
我可以创建一个名为twitter+facebook.rb
的作业,这样可以解决问题,但我现在想添加第三个和第四个来源。我不希望最终得到一个大型工作文件,但twitter.rb
和google-analytics.rb
以及facebook.rb
和mailcimp.rb
等与(例如){{ 1}}。
是否可以在作业之间传递值?
答案 0 :(得分:1)
我目前在Dashing中没有看到派生值的方法。
现在实现此目的的一种方法是使用猴子修补send_event
来计算派生值。定义了特定于源的作业后,添加一个用于计算组合数据的作业,如下所示:
# List of event ids you use to compute the combined value
INPUT_VALUES=%w(facebook_likes twitter_followers)
# This method is run when one of INPUT_VALUES changes
def compute_combined_social(values)
value = values['facebook_likes']['current'] +
values['twitter_followers']['current']
send_event('social-combined', {current: value})
end
# Hook send_event to update aggregates when depending values change
alias :orig_send_event :send_event
def send_event(id, body, target=nil)
r = orig_send_event(id, body, target)
if INPUT_VALUES.include? id
# get current value for each input value
values = Hash[INPUT_VALUES.map do |id|
[id, YAML.load(Sinatra::Application.settings.history[id])['data']]
end]
compute_combined_social values
end
r
end
如果有足够的兴趣,那么为Dashing本身添加更通用的解决方案会很有用。
答案 1 :(得分:1)
您可以创建一个窗口小部件,用于绑定来自两个源的数据,并将其组合在表示层中。