... do not allow Upload of charts containing User Metrics (as they will not work for other users)
... do not allow Upload of trivial charts (without configuration) - as they do not provide any value for others
... when downloading "R" charts - check if R is active - if not, inform the user that he/she needs R for the chart to work
We now place a reasonable upper limit on the number of ticks shown
on an AllPlot chart to prevent unbounded memory allocation and
crash when one of the activities to be merged has a wide data range
due to large anomalous data points.
There are two paths to displaying the power/time overlay on a workout block:
* Hover over the block
* Select the qwkcode line corresponding to the block
Both of these paths had their own uniquely flawed method of calculating the block duration to display. The first path stored the previous time point as a truncated integer number of seconds, then subtracted it from the current, double precision time point. This resulted in occasional over-reported durations. The second path took the double precision difference between the current and previous time points, then truncated that difference for display. This resulted in occasional under-reported durations.
Both of these paths now consistently report the same value. The value shown will take the format ss.s for times less than 60s, or hh:mm:ss for times 60s or more.
Qwkcode is limited to integer values of seconds. When a workout is specified in qwkcode then saved to an ERG file, the interval durations are rounded from integer seconds to fractional minutes with 2 decimal places of precision. When the ERG file is read, it is translated to a WWPoint object that stores time as double seconds. To accurately calculate the duration of a time interval defined by two WWPoints we should round the individual points first then take the integer difference. The table below demonstrates the consistency of rounding on both ends of the qwkcode -> ERG -> qwkcode round trip.
| qwkcode (original) | ERG time (rounded from qwkcode) | WWPoint time (precisely calculated from ERG time) | qwkcode (rounded from WWPoint) |
|--------------------|---------------------------------|---------------------------------------------------|--------------------------------|
| 1 | 0.02 | 1.2 | 1 |
| 2 | 0.03 | 1.8 | 2 |
| 3 | 0.05 | 3 | 3 |
(3 seconds is the smallest unit that fits evenly into a base ten fractional minute, so this pattern will repeat without loss of precision.)
.. from December 7th 2016 read access (for downloading
from TrainingPeaks) has been revoked, even for paid
up members.
.. write access (upload) is not revoked.
.. This is essentially anti-competitive behaviour and
returns TrainingPeaks and their products, once again
to that of a 'closed' product.
.. We will no longer support their service since we
cannot and will not promote such behaviours now
or ever.
.. We are now considering the best way to purge all
other references to their trademarks and remove
any indication that their products are endorsed.
.. they were removed from code recently but still
lingered harmlessly in the codebase.
.. now moving into the deprecated folder to stop
them from being used again in the future.
.. we no longer build with QT4, so deprecate it in Travis
.. there are still some users that build with QT4 on Linux/OpenBSD
but we no longer seek to support this configuration officially