Commit a253760b authored by Paul Asmuth's avatar Paul Asmuth
Browse files

core: allow widgets to render uninitialized zero config gauges

parent c92330fd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ require "fnordmetric/gauge_modifiers"
require "fnordmetric/gauge_validations"
require "fnordmetric/gauge_rendering"
require "fnordmetric/gauge"
require "fnordmetric/zero_config_gauge"
require "fnordmetric/gauges/timeseries_gauge"
require "fnordmetric/gauges/toplist_gauge"
require "fnordmetric/gauges/distribution_gauge"
+3 −1
Original line number Diff line number Diff line
@@ -165,7 +165,9 @@ class FnordMetric::Namespace
  end

  def build_widget(opts)
    _gauges = [opts[:gauges]].flatten.map{ |g| @gauges.fetch(g) }
    _gauges = [opts[:gauges]].flatten.map do |g|
      @gauges[g] || ZeroConfigGauge.new(g, self)
    end
    widget_klass = "FnordMetric::#{opts.fetch(:type).to_s.capitalize}Widget"
    widget_klass.constantize.new(opts.merge(:gauges => _gauges))
  end
+94 −0
Original line number Diff line number Diff line
class ZeroConfigGauge

  class EmtpyGauge

    def self.tick
      60
    end

    def self.retention
      tick * 10
    end

    def self.tick_at(time, _tick=tick)
      (time/_tick.to_f).floor*_tick
    end

    def group
      "Gauges"
    end

    def unit
      nil
    end

    def key_nouns
      ["Key", "Keys"]
    end

    def key(_append=nil)
      "----empty-gauge----"
    end

    def tick_key(_time, _append=nil)
      "----empty-gauge----"
    end

    def tick_keys(_range, _append=nil)
        ["----empty-gauge----"]
    end

    def retention_key(_time, _append=nil)
        "----empty-gauge----"
    end

    def two_dimensional?
      true
    end

    def three_dimensional?
      false
    end

    def progressive?
      false
    end

    def unique?
      false
    end

    def average?
      false
    end

    def has_series?
      false
    end

  end

  def initialize(key, namespace)
    @key = key
    @namespace = namespace
  end

  def name
    @key
  end

  def title
    @key
  end

  def method_missing(*msg)
    gauge = @namespace.gauges[@key]

    if gauge
      gauge.send(*msg)
    else
      EmtpyGauge.send(*msg)
    end
  end

end
+1 −1
Original line number Diff line number Diff line
@@ -336,7 +336,7 @@ FnordMetric.widgets.timeseriesWidget = function(){
    }

    function updateChart(first_time, silent){
      if(!silent){ $(opts.elem).css('opacity', 0.5); }
      if(!silent){ $(opts.elem).css('opacity', 0.7); }
      updateRange();
      redrawDatepicker();
      requestValuesAsync();
+1 −3
Original line number Diff line number Diff line
@@ -2,15 +2,13 @@ require "fnordmetric"

FnordMetric.namespace :myapp do

=begin
  # render a timeseries graph
  widget 'Sales',
    :title => "Sales per Minute",
    :gauges => [:sales_per_minute],
    :type => :timeline,
    :width => 100,
    :autoupdate => 10
=end
    :autoupdate => 1

end

Loading