Class: GerbilCharts::Models::DiscreteTimeRange
- Inherits:
-
Object
- Object
- GerbilCharts::Models::DiscreteTimeRange
- Defined in:
- lib/gerbilcharts/models/discrete_time_range.rb
Overview
DiscreteTimeRange
The range is exactly as specified by individual values. The labels are simply those values formatted based on overall time window
Instance Attribute Summary collapse
-
#points ⇒ Object
readonly
discrete points.
Instance Method Summary collapse
-
#each_label ⇒ Object
provide labels Yields two items (value - seconds since Jan 1 1970, string label).
-
#each_tick(tpl) ⇒ Object
provide ticks (per label interval).
-
#format_min_value ⇒ Object
format min value completely.
-
#format_value(val) ⇒ Object
format the discrete time value.
-
#initialize(points_arr = []) ⇒ DiscreteTimeRange
constructor
A new instance of DiscreteTimeRange.
- #rmax ⇒ Object
- #rmin ⇒ Object
-
#scale_factor(val) ⇒ Object
scales a value with respect to the range.
Constructor Details
#initialize(points_arr = []) ⇒ DiscreteTimeRange
Returns a new instance of DiscreteTimeRange.
11 12 13 |
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 11 def initialize(points_arr=[]) @points=points_arr end |
Instance Attribute Details
#points ⇒ Object (readonly)
discrete points
9 10 11 |
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 9 def points @points end |
Instance Method Details
#each_label ⇒ Object
provide labels Yields two items (value - seconds since Jan 1 1970, string label)
17 18 19 20 21 |
# 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) ⇒ Object
provide ticks (per label interval)
33 34 35 36 37 |
# 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 ⇒ Object
format min value completely
40 41 42 |
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 40 def format_min_value return format_value(@points.first) end |
#format_value(val) ⇒ Object
format the discrete time value
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# 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 ⇒ Object
23 24 25 |
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 23 def rmax @points.first end |
#rmin ⇒ Object
27 28 29 |
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 27 def rmin @points.last end |
#scale_factor(val) ⇒ Object
scales a value with respect to the range
46 47 48 49 50 51 |
# 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 |