Commit 56e682fb authored by Paul Asmuth's avatar Paul Asmuth
Browse files

gauge rendering w/ gauge-js

parent 0e7a20c8
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -12,6 +12,14 @@ module Enumerable

end

module Haml::Filters::Gaugejs
  include Haml::Filters::Base

  def render(text)
    "<FNORDMETRIC-GAUGEJS>#{text}</FNORDMETRIC-GAUGEJS>"
  end
end

class Symbol
  alias :intern :to_sym
end
+8 −6
Original line number Diff line number Diff line
@@ -10,18 +10,20 @@ module FnordMetric::GaugeRendering

private

  def render_page(in_file)
    exec_js = []
    content = render_haml(in_file)
    content.scan(/<FNORDMETRIC-GAUGEJS>(.*)<\/FNORDMETRIC-GAUGEJS>/m){ |x| exec_js << x }
    content.gsub!(/<FNORDMETRIC-GAUGEJS>(.*)<\/FNORDMETRIC-GAUGEJS>/m, "")
    { :html => content, :exec => exec_js.flatten * "" }
  end

  def render_haml(in_file)
    haml_engine = Haml::Engine.new(File.read(
      File.expand_path("../../../web/haml/#{in_file}.haml", __FILE__)
    )).render(binding) 
  end

  def render_file(in_file)
    File.read(
      File.expand_path("../../../web/#{in_file}", __FILE__)
    )
  end

  def parse_interval(interval_str)
    match = interval_str.match(/([0-9]+)-([0-9]+)/)
    raise "invalid interval: #{interval_str}" unless match
+13 −39
Original line number Diff line number Diff line
class FnordMetric::TimeseriesGauge < FnordMetric::Gauge

  def render(namespace, event)
    # colors = ["#2F635E", "#606B36", "#727070", "#936953", "#CD645A", "#FACE4F", "#42436B"]

    @interval = parse_interval(event["interval"])

    series_gauges.each do |series, gauge|
      puts @interval.inspect
      puts gauge.values_in(@interval).inspect
    end
    interval = parse_interval(event["interval"])

    # @opts["series"].each do |skey, series|
    # colors = ["#2F635E", "#606B36", "#727070", "#936953", "#CD645A", "#FACE4F", "#42436B"]
    # @opts["series"][skey]["color"] ||= colors.unshift(colors.pop).first
    #   @series_timelines[skey] = timeline.dup
    #   @series_queries[skey] = FnordQuery::Query.new("#{series["query"]}")
    # end

    # query = FnordQuery::Query.new("#{@opts["query"]} since(#{t_since}) until(#{t_until})")

    # puts "tick: #{@tick}"
    # puts "time: #{Time.at(t_since).to_s}-#{Time.at(t_until).to_s}"

    # backend.on_finish do
    #   render_result
    #   runner.send(:shutdown, true)
    # end

    @series_render = series_gauges.map do |series, gauge|
      {
      :html => render_haml(:timeseries_gauge),
      :exec => render_file('fnordmetric.views.timeseries_gauge.js')
        :name  => series,
        :color => "#0066cc",
        :data  => gauge.values_in(interval).to_a
          .sort{ |a,b| a[0] <=> b[0] }
          .map { |t,v| { :x => t, :y => v||0 } }.reverse
      }
    end

    render_page(:timeseries_gauge)
  end

  def execute(cmd, context, *args)
    incr_series(context, *args) if cmd == :incr
  end
@@ -60,19 +47,6 @@ private
    end]
  end

  # def render_result
  #   @series_render = @opts["series"].map do |skey, sopts|
  #     {
  #       :data  => @series_timelines[skey].map { |t,v| 
  #         { :x => t, :y => v } 
  #       }.reverse,
  #       :name  => sopts["name"],
  #       :color => sopts["color"]
  #     }
  #   end
  #  
  # end

end

# class FnordMetric::NumericGauge < FnordMetric::MultiGauge
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ FnordMetric.views.gaugeView = (function(gauge_name){
    });

    var now = (new Date()).getTime();
    var init_interval = now + "-" + (now-(3600*24));
    var init_interval = (now-(3600*24)) + "-" + now;
    load_interval(init_interval);
  }

+1 −1
Original line number Diff line number Diff line
@@ -7,5 +7,5 @@ FnordMetric.widgets.timeseriesWidget().render({
    name: "fnord",
    color: "0f0"
  }]
  //series: #{@series_render.to_json}
  series: #{@series_render.to_json}
});  
Loading