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