class FnordMetric::NumbersWidget
Public Class Methods
execute(namespace, event)
click to toggle source
# File lib/fnordmetric/widgets/numbers_widget.rb, line 3 def self.execute(namespace, event) resp = if event["cmd"] == "values_for" execute_values_for(namespace.gauges[event["gauge"].to_sym], event) end return false unless resp resp.merge( :type => "widget_response", :widget_key => event["widget_key"] ) end
execute_values_for(gauge, event)
click to toggle source
# File lib/fnordmetric/widgets/numbers_widget.rb, line 16 def self.execute_values_for(gauge, event) unless gauge return { "error" => "gauge not found..." } end _t = Time.now.to_i if at = event["at"] value = if at =~ /sum\((.+)\)/ vals = gauge.values_in(FnordMetric::Util.parse_time($1).._t+gauge.tick) vals.values.compact.map(&:to_f).inject(&:+) elsif at =~ /avg\((.+)\)/ vals = gauge.values_in(FnordMetric::Util.parse_time($1).._t+gauge.tick) (vals.values.compact.map(&:to_f).inject(&:+) || 0) / vals.size.to_f else gauge.value_at(FnordMetric::Util.parse_time(at)).to_i end return({ "cmd" => "values_for", "at" => event["at"], "gauge" => gauge.name, "value" => value }) end values = {}.tap do |out| event["offsets"].each do |off| if off.to_s.starts_with?("s") offset = 0 span = (gauge.tick * off.to_s[1..-1].to_i) values = gauge.values_in((_t-span).._t+gauge.tick) value = values.values.compact.map(&:to_i).sum else offset = off.to_i * gauge.tick span = gauge.tick value = gauge.value_at(_t-offset) end out["#{gauge.name}-#{offset}-#{span}"] = { :value => value, :desc => "$formatOffset(#{offset}, #{span})" } end end { "cmd" => "values_for", "gauge" => gauge.name, "values" => values } end
Public Instance Methods
data()
click to toggle source
Calls superclass method
FnordMetric::Widget#data
# File lib/fnordmetric/widgets/numbers_widget.rb, line 66 def data super.merge( :series => gauges.map(&:name), :series_titles => gauges.map(&:title), :series_units => Hash[gauges.map{ |g| [g.name, g.unit] }], :offsets => (@opts[:offsets] || [0, 1, "s30"]), :autoupdate => (@opts[:autoupdate] || 60) ) end
has_tick?()
click to toggle source
# File lib/fnordmetric/widgets/numbers_widget.rb, line 76 def has_tick? false end