Commit Graph

20 Commits

Author SHA1 Message Date
Ale Martinez
42fa49c50f Add sport field to RideItem/RideDB as primary field
Exiting isRun/isSwim are preserved and new isRide/isXtrain added.
Use them in DataFilter to provide isRide, isRun, isSwim and isXtrain
and in RideSummary for better filtering of activities in rides, runs
swims and xtrains.
Part 1 of #3280
2020-04-06 19:13:43 -03:00
Mark Liversedge
f8af6334fb Estimator lazy refresh
.. Refresh model estimates when rides added, deleted, saved.

.. Lazy refresh will cancel any pending or running threads and
   trigger a new one in 15 secs time.

.. This strategy allows us to call a lazy refresh even when importing
   large number of rides, since the start will be delayed and cancelled
   by the next ride added etc.

.. The thread stop() function is also called by the destructor to stop
   when the user exits and avoiding delay/SEGV on exit.
2018-04-01 14:46:30 +01:00
Mark Liversedge
6e6db666c5 Refactor PD Estimates fix numerous SEGV
.. new Estimator class to refresh model estimates in a thread.

.. localised all data access to the new class to resolve issues
   with thread safety.

.. RideSummary and LTMPlot do not trigger refresh of the estimates

.. added a QMutex around access in Athlete::getPDEstimates and the
   code in Estimator::run that updates them.

NOTE:

   will still need a follow-up commit to resolve estimate refresh
   e.g. after ride saved, or rides imported or rides downloaded from
   a cloud service. This is a challenging problem since refreshes
   need to be 'very lazy' to avoid wasted cycles.

Fixes #2820
2018-04-01 12:41:56 +01:00
Mark Liversedge
0860fe771f OpenData prompt for permission and post
.. at startup we ask the user for permission to share

.. once permission is granted the upload is performed and
   re-done every year, so long as > 100 workouts have been
   collected since the last time.
2018-03-18 19:51:45 +00:00
Mark Liversedge
afff2c92bc OpenData new class to post to service
.. Will prepare and post data to an OpenData server running
   in a background thread:

   * will find servers from www.goldencheetah.org
   * uses first server it finds that is running
   * prepares and sends data

.. need to write the code to get explicit permission from
   the user to do it, then send data when worthwhile.

.. thinking this is annually, but only if > 100 new workouts.
2018-03-18 17:05:46 +00:00
Mark Liversedge
6bed8fc55d Fix compat metric TSS zero value in DataFilter
.. phew! this was a subtle bug.

.. the SpecialFields class tells the data filter what
   type of thing each symbol equates to.

.. it was saying TSS was metadata not a metric.

.. this is becuase SpecialFields is setup before the
   user metrics are loaded, so it only saw it as a
   metadata field.

.. we now refresh context.specialFields after the
   user metrics are loaded. So this will not just
   fix TSS but ALL user metrics that have an override
   defined in metadata.
2018-03-05 12:05:41 +00:00
Mark Liversedge
a7e17e378c Create TrainingPeaks Compatibility Metrics
.. as usermetrics that alias the old metric name to
   the renamed metric.

.. need to follow up with restrictions on the use of
   the compatibility metrics.
2018-02-17 18:49:14 +00:00
Ale Martinez
b99e8f54f8 Fixes MeanSquareRoot aggregation in RideCache
In LTMPlot it is Ok
Fixes #2762
2018-01-31 20:52:20 -03:00
Mark Liversedge
70593976cb Cloud Auto Download - 3 of 3
.. Gui notifications of background activity

.. a small notification area at the bottom of the analysis
   sidebar shows checking and download status.

.. also fixed up the ride list to not select them, since that
   is irritating if your in the middle of doing something.
2017-04-15 17:52:04 +01:00
Mark Liversedge
ccbba3e0a2 Cloud Auto Download - 1 of 3
.. initial plumbing to get the auto downloader integrated
   into context, athlete and ridecache refresh.

.. part 2 will need to perform the download functions

.. part 3 to add the GUI / notification of progress
2017-04-14 15:40:49 +01:00
Mark Liversedge
bf8d8a8f95 Cloud Refactor - Add Account Wizard Part 1 of 4
.. full wizard now done, will write appsettings.

.. need to now look at how OAuth can be call mid-config as
   a refactor if OAuthDialog in part 2

.. need to also look at how folder selection can be called using
   "in-progress" config in part 3

.. need to tidy up special topics in Part 4, such as google drive
   id and todays plan handling coach/athlete selection.
2017-03-31 17:34:53 +01:00
Leif Warland
16e2451e90 Added HRV metric 2017-02-28 14:18:58 +01:00
Joern
dd88dd909d RideImport
... in addition to DateTime in the .json File name (which is in local Time), also check for duplicates using UTC from RideCache to avoid duplicate imports if user changes his PC TimeZone (e.g. when travelling)
... the problem e.g. occurs in Autoimport where the same files would be imported again, if the PC TimeZone changes
2017-02-14 22:02:50 +03:00
Mark Liversedge
a38696e25d Data Processor 'On Save' and Snippets
.. a data processor can now be configured to run on save

.. in addition, the data processor is now passed the operation
   that is triggering it: "Manual", "ADD", "UPDATE", "DELETE",
   "IMPORT".

.. a new data processor has been added to write a JSON file to
   the snippet directory (added to the athlete structure).

.. this is so we can output a snippet every time an activity is
   added, updated or deleted (i.e. runs "on save").

.. these JSON snippets can be used to update external datastores
   where coaches use other analytic software but don't want to
   manually sync GC changes with there external stores.
2016-11-12 22:36:44 +00:00
Alejandro Martinez
d1ed2d7b51 Trends RideSummary Shows only Relevant Metrics on activities lists
Avoiding non relevant metrics for each sport allows to
show more relevant metrics on the available columns.
2016-10-10 10:59:53 -03:00
Alejandro Martinez
ddcbd287c7 Speedup isMetricRelevantForRides method
Shortcut or is enough
2016-10-08 09:50:26 -03:00
Alejandro Martinez
ca262a28ce Skip non relevant metrics for RideSummary in Trends view
Adds isMetricRelevantForRides(specification, metric) to RideCache
to check if a metric isRelevant for some of the activities passing
the specification
Also reduces from 3 to 1 the calls to getRideTypeCounts
2016-10-07 21:17:43 -03:00
Alejandro Martinez
f4fac0b3c3 Fixed removal of planned workouts
Rename failed due to wrong directory
2016-03-26 11:32:31 -03:00
Mark Liversedge
01d8ed9c09 Thread Safety for PD Estimates (SEGV)
.. we refresh in a thread so need to protect
   access to them via a QMutex.
2016-03-24 20:03:45 +00:00
Mark Liversedge
fbf970fa7e Move RideCache to Core
.. it was in FileIO
2016-02-25 16:37:12 +00:00