Class: GerbilCharts::Models::DiscreteTimeRange

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#pointsObject (readonly)

discrete points



9
10
11
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 9

def points
  @points
end

Instance Method Details

#each_labelObject

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_valueObject

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

#rmaxObject



23
24
25
# File 'lib/gerbilcharts/models/discrete_time_range.rb', line 23

def rmax
  @points.first
end

#rminObject



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