Class: PulseMeter::Visualize::SeriesExtractor::Hashed

Inherits:
Simple
  • Object
show all
Defined in:
lib/pulse-meter/visualize/series_extractor.rb

Instance Method Summary collapse

Methods inherited from Simple

#initialize, #opts_to_add

Constructor Details

This class inherits a constructor from PulseMeter::Visualize::SeriesExtractor::Simple

Instance Method Details

#parse_data(value) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/pulse-meter/visualize/series_extractor.rb', line 38

def parse_data(value)
  if value
    if value.is_a?(String)
      JSON.parse(value)
    else
      value
    end
  else
    {}
  end
end

#point_data(value) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/pulse-meter/visualize/series_extractor.rb', line 50

def point_data(value)
  data = parse_data(value)
  data.keys.map do |k|
    {
      y: to_float(data[k]),
      name: series_title(k)
    }
  end
end

#series_data(timeline_data) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/pulse-meter/visualize/series_extractor.rb', line 69

def series_data(timeline_data)
  series_data = {}
  parsed_data = timeline_data.map do |sd|
    data = parse_data(sd.value)
    data.keys.each{|k| series_data[k] ||= {name: series_title(k), data: []}}
    [sd.start_time.to_i*1000, data]
  end

  series_names = series_data.keys.sort
  parsed_data.each do |data|
    series_names.each do |k|
      series_data[k][:data] << {x: data[0], y: to_float(data[1][k])}
    end
  end
  series_data.values
end

#series_title(key) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/pulse-meter/visualize/series_extractor.rb', line 60

def series_title(key)
  annotation = @sensor.annotation
  if annotation && !annotation.empty?
    "#{annotation}: #{key}"
  else
    key
  end
end