class PostRunner::DataSources

The DataSources objects can generate a table that lists all the data sources in chronological order that were in use during a workout.

Public Class Methods

new(activity, unit_system) click to toggle source

Create a DataSources object. @param activity [Activity] The activity to analyze. @param unit_system [Symbol] The unit system to use (:metric or

:imperial )
# File lib/postrunner/DataSources.rb, line 31
def initialize(activity, unit_system)
  @activity = activity
  @fit_activity = activity.fit_activity
  @unit_system = unit_system
end

Public Instance Methods

to_html(doc) click to toggle source
# File lib/postrunner/DataSources.rb, line 41
def to_html(doc)
  ViewFrame.new('data_sources', "Data Sources", 1210, data_sources,
                true).to_html(doc)
end
to_s() click to toggle source
# File lib/postrunner/DataSources.rb, line 37
def to_s
  data_sources.to_s
end

Private Instance Methods

data_sources() click to toggle source
# File lib/postrunner/DataSources.rb, line 48
def data_sources
  session = @fit_activity.sessions[0]

  t = FlexiTable.new
  t.enable_frame(false)
  t.body
  t.row([ 'Time', 'Distance', 'Mode', 'Speed Source', 'Distance Source',
          'Cadence Source', 'Elevation Source', 'Heart Rate Source',
          'Power Source', 'Calories Source'  ])
  start_time = session.start_time
  @fit_activity.data_sources.each do |source|
    t.cell(secsToHMS(source.timestamp - start_time))
    t.cell(@activity.distance(source.timestamp, @unit_system))
    t.cell(source.mode)
    t.cell(device_name(source.speed))
    t.cell(device_name(source.distance))
    t.cell(device_name(source.cadence))
    t.cell(device_name(source.elevation))
    t.cell(device_name(source.heart_rate))
    t.cell(device_name(source.power))
    t.cell(device_name(source.calories))
    t.new_row
  end

  t
end
device_name(index) click to toggle source
# File lib/postrunner/DataSources.rb, line 75
def device_name(index)
  @fit_activity.device_infos.each do |device|
    if device.device_index == index
      if device.device_type
        return (DeviceList::DeviceTypeNames[device.device_type] ||
                device.device_type) + " [#{device.device_index}]"
      else
        return "Unknown [#{device.device_index}]"
      end
    end
  end

  ''
end