Commit 8576119d authored by Paul Asmuth's avatar Paul Asmuth
Browse files

timeseries widget: render all numbers

parent f72150c0
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -9,8 +9,6 @@ BACKLOG
- store per-session-data
- callback on session-flush
- report: print number of samples, interval-size on topright via scalaexp-buttonstyle
- timeseries-gauge: overview all numbers
- timeseries-gauge: trends
- timeseries-widget: tooltip -> show key noun   
- fix pie widget
- timeseries-gauge: overview series weights
+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ class FnordMetric::TimeseriesGauge < FnordMetric::Gauge

      @series[series] = { 
        :color => colors.unshift(colors.pop).first,
        :data => Hash[@zooms.map{ |int| [int, ts.timeseries(@interval, int) ] }]
        :data => Hash[@zooms.map{ |int| [int, ts.timeseries(@interval, int) ] }],
        :timeseries => ts
      }
    end

+28 −0
Original line number Diff line number Diff line
@@ -40,6 +40,34 @@ class FnordMetric::Timeseries
    FnordMetric::Timeseries.new(res)
  end

  def sum(range = (ticks.first..ticks.last))
    @timeline
      .inject(0){ |s,(t,v)| s + (range.include?(t) ? value_at(t) : 0) }
  end

  def trend(range = (ticks.first..ticks.last))
    range ||= (ticks.first..ticks.last)    

    rvals = @timeline.to_a
      .select{ |t,v| range.include?(t) }
      .sort{ |a,b| a.first <=> b.first }
      .map{ |t,v| value_at(t) }

    (rvals.last - rvals.first).to_f / rvals.first
  end

  def ticks
    @timeline.keys.sort
  end

  def value_at(time)
    if @timeline[time][1].to_i > 0
      @timeline[time][0] / @timeline[time][1].to_f
    else
      @timeline[time][0]
    end    
  end

  def to_json(&block)
    @timeline.to_a
      .sort{ |a,b| a[0] <=> b[0] }
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@
    elem: $('.widget_histogram_bars'),
    height: 320,
    no_headbar: true,
    values: #{@histogram.json_histogram([12, @histogram.max || 1].min)}
    values: #{@histogram.json_histogram([23, @histogram.max || 1].min)}
  });


+10 −11
Original line number Diff line number Diff line
@@ -27,23 +27,22 @@
            %span.swatch(style="background:#{sopts[:color]}; display:inline-block;")
            %span= series  
      
      -FnordMetric::TICKS[tick, @interval.size].each do |zoom|
      %tr
          %td
            .ui_value{:"data-timerange-offset" => zoom, :"data-offset" => -1}
        %td Total (<span class="ui_value" data-timerange="#{@interval.size}"></span>)
        -@series.each do |series, sopts|
          %td
              .ui_value.large.left{:"data-value" => 23}
              .ui_trend.left{:style => "margin-left:5px", :"data-trend" => 1}
            .ui_value.large.left{:"data-value" => sopts[:timeseries].sum, :style => "min-width:70px;"}
            .ui_trend.left{:style => "margin-left:5px", :"data-trend" =>  sopts[:timeseries].trend}

      -FnordMetric::TICKS[tick, @interval.size].each do |zoom|
        %tr
          %td
          Total (<span class="ui_value" data-timerange="#{@interval.size}"></span>)

            .ui_value{:"data-timerange-offset" => zoom, :"data-offset" => -1}
          -@series.each do |series, sopts|
            %td
            .ui_value.large.left{:"data-value" => 23}
            .ui_trend.left{:style => "margin-left:5px", :"data-trend" => 1}
              -srange = ((@interval.last-zoom)..@interval.last)
              .ui_value.large.left{:"data-value" => sopts[:timeseries].sum(srange), :style => "width:70px;"}
              .ui_trend.left{:style => "margin-left:5px", :"data-trend" => sopts[:timeseries].trend(srange)}