Class: Fit4Ruby::Lap
- Inherits:
-
FitDataRecord
- Object
- FitDataRecord
- Fit4Ruby::Lap
- Includes:
- RecordAggregator
- Defined in:
- lib/fit4ruby/Lap.rb
Constant Summary
Constants inherited from FitDataRecord
Instance Attribute Summary collapse
-
#lengths ⇒ Object
readonly
Returns the value of attribute lengths.
-
#records ⇒ Object
readonly
Returns the value of attribute records.
Attributes inherited from FitDataRecord
Instance Method Summary collapse
-
#avg_stride_length ⇒ Object
Compute the average stride length for this Session.
- #check(index, activity) ⇒ Object
-
#initialize(records, previous_lap, field_values, first_length_index, lengths) ⇒ Lap
constructor
Create a new Lap object.
Methods included from RecordAggregator
#aggregate, #aggregate_ascent_descent, #aggregate_geo_region, #aggregate_heart_rate, #aggregate_speed_distance, #aggregate_stance_time, #aggregate_strides, #aggregate_vertical_oscillation
Methods inherited from FitDataRecord
#<=>, #==, #get, #get_as, #inspect, #set, #set_field_values, #write
Methods included from Converters
#conversion_factor, #fit_time_to_time, #secsToDHMS, #secsToHM, #secsToHMS, #speedToPace, #time_to_fit_time
Constructor Details
#initialize(records, previous_lap, field_values, first_length_index, lengths) ⇒ Lap
Create a new Lap object.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/fit4ruby/Lap.rb', line 31 def initialize(records, previous_lap, field_values, first_length_index, lengths) super('lap') @lengths = lengths @meta_field_units['avg_stride_length'] = 'm' @records = records @previous_lap = previous_lap @lengths.each { |length| @records += length.records } @first_length_index = first_length_index @num_lengths = @lengths.length if previous_lap && previous_lap.records && previous_lap.records.last # Set the start time of the new lap to the timestamp of the last record # of the previous lap. @start_time = previous_lap.records.last. elsif records.first # Or to the timestamp of the first record. @start_time = records.first. end if records.last @total_elapsed_time = records.last. - @start_time end set_field_values(field_values) end |
Instance Attribute Details
#lengths ⇒ Object (readonly)
Returns the value of attribute lengths.
22 23 24 |
# File 'lib/fit4ruby/Lap.rb', line 22 def lengths @lengths end |
#records ⇒ Object (readonly)
Returns the value of attribute records.
22 23 24 |
# File 'lib/fit4ruby/Lap.rb', line 22 def records @records end |
Instance Method Details
#avg_stride_length ⇒ Object
Compute the average stride length for this Session.
79 80 81 82 83 |
# File 'lib/fit4ruby/Lap.rb', line 79 def avg_stride_length return nil unless @total_distance && @total_strides @total_distance / (@total_strides * 2.0) end |
#check(index, activity) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/fit4ruby/Lap.rb', line 57 def check(index, activity) unless @message_index == index Log.fatal "message_index must be #{index}, not #{@message_index}" end return if @num_lengths.zero? unless @first_length_index Log.fatal 'first_length_index is not set' end @first_length_index.upto(@first_length_index - @num_lengths) do |i| if (length = activity.lengths[i]) @lengths << length else Log.fatal "Lap references length #{i} which is not contained in " "the FIT file." end end end |