class GerbilCharts::Models::DiscreteTimeRange

DiscreteTimeRange

The range is exactly as specified by individual values. The labels are simply those values formatted based on overall time window

Attributes

points[R]

Public Class Methods

new(points_arr=[]) click to toggle source
# File lib/gerbilcharts/models/discrete_time_range.rb, line 11
def  initialize(points_arr=[])
      @points=points_arr
end

Public Instance Methods

each_label() { |t, format_value(t)| ... } click to toggle source

provide labels

Yields two items (value - seconds since Jan 1 1970, string label)
# File lib/gerbilcharts/models/discrete_time_range.rb, line 17
def each_label
             @points.each do |t|
                     yield t, format_value(t)
             end
end
each_tick(tpl) { |t| ... } click to toggle source

provide ticks (per label interval)

# File lib/gerbilcharts/models/discrete_time_range.rb, line 33
def each_tick(tpl)
  @points.each do  |t|
    yield t
  end
end
format_min_value() click to toggle source

format min value completely

# File lib/gerbilcharts/models/discrete_time_range.rb, line 40
def format_min_value
        return format_value(@points.first) 
end
format_value(val) click to toggle source

format the discrete time value

# File lib/gerbilcharts/models/discrete_time_range.rb, line 55
def format_value(val)
      df = @points.last - @points.first 

      if df  >  2*24*30                    # > 2months get monthly labels
              val.strftime("%b")
      elsif df  > 1*24*30                  # 1-2 months get days
              val.strftime("%b %d")
      elsif df > 1*24*7                      # > 1 week get days
              val.strftime("%a")
      else
              val.to_s
      end
end
rmax() click to toggle source
# File lib/gerbilcharts/models/discrete_time_range.rb, line 23
def rmax
      @points.first
end
rmin() click to toggle source
# File lib/gerbilcharts/models/discrete_time_range.rb, line 27
def rmin
      @points.last
end
scale_factor(val) click to toggle source

scales a value with respect to the range

# File lib/gerbilcharts/models/discrete_time_range.rb, line 46
def scale_factor(val)
      df = val - @points.first
      rg = @points.last - @points.first
      return 0 if rg==0.0
      return df/rg
end