Commit Graph

5 Commits

Author SHA1 Message Date
Mark Liversedge
d6c8949355 Major RideMetric compute() refactor
Update of all metrics to work with a RideItem
not directly with a RideFile.

When iterating over the activity samples we now
use a Specification and RideFileIterator to bound
the set of samples used. This means that we can
compute metrics for intervals without having to
create a temporary ridefile.

RideItem now has first class members for zoneRange,
hrZoneRange and paceZoneRange to avoid calculating
for every metric which are stored in RideDB.json.

Compare pane continues to construct a ride file
when working with intervals since it is used lots
of charts, this is unlikely to ever change.

A SEGV in compare intervals has been fixed where
interval items were repointed to temporary compare
pane objects that are deleted - see RideItem::setFrom.

THIS COMMIT CONTAINS 3 REGRESSIONS:
1. TcxRideFile no longer computes metrics
2. FitlogRideFile no longer computes metrics
3. WorkoutWizard no longer computes metrics

-- The workout wizard will be replaced with a new
   Workout editor, whilst the RideFile metrics
   may be deprecated (but considering options)
2015-12-16 11:36:02 +00:00
Mark Liversedge
105a3b05db RideFileIterator
.. useful for simplifying iteration over the ride
   samples in the metric compute() method and possibly
   elsewhere in the code

.. will iterate for rides and intervals.
2015-12-12 22:46:54 +00:00
Mark Liversedge
4c9dc5615a Specification Class Interval Support
.. the specification class is used for filtering
   rides but now also supports filtering ride points

.. this is so we can refactor the metric code to
   use a specification when computing metrics

.. the next update will include a refactor of
   all the metric compute() functions to use this
   new approach
2015-12-12 09:40:46 +00:00
Mark Liversedge
aebec00813 LTM Filter for a curve
.. allow the data selected for a curve to filter
   as well. So you can e.g. plot duration riding vs
   duration biking on the same plot.
2015-08-14 11:23:53 +01:00
Mark Liversedge
b737dcbebd Introduce Specification class
.. used to create a 'specification' against which we match
   a rideitem when plotting etc.

.. so rather than passing an array/vector/list of data when
   calling a plot, we pass the 'specification' to use instead.

.. the plots themselves should now iterate across the shared
   ride cache only plotting the items that pass the specification.

.. this should reduce memory usage and increase performance.
2014-12-17 10:57:57 +00:00