Currently, GC interpolates time gaps in all TCX files as a result of smart
recording. However, this overlooks periods of inactivity (stopped at a light
for instance).
1. Provide a configuration option, that if enabled, will tell GC to interpolate
time gaps in TCX files as if they were a result of smart recording. If the
option is not enabled, then interpolation will not occur.
2. Provide a maximum "high water mark" (in seconds) for these time gaps. The
default HWM is 25 seconds, but is user configurable.
Any time gaps that exceed the high water mark can be fixed via the Fix Gaps
tool under the toolbar.
Fixes#74.
The zone ranges configuration page caused a SEGV when deleting the
last zone. On inspection the zone configuration needed to be
revised since the UI was confusing and didn't allow fine grained
user editing (relying upon manual editing of the power.zones file).
The UI has been redesigned and fine grained editing of ranges, zones
and default zones is now supported.
The Zones class has been slightly modified to support the new UI and
existing members are better commented. In addition, the read/write
functions have been updated to always include the DEFAULTS section and
to set defaults according to manual zone setups when it is not present
(legacy support).
There are now 10 TimeInZone metrics to match the maximum of 10 zones
the user can define.
Fixes#78.
Fixes#34.
User configurable data entry for recording information about
each workout.
FEATURES:
* Config UI for defining tabs and fields to maintain
* Config UI for defining keywords and colors
* Data maintenance UI on RideSummaryWindow
* "Special" Metadata fields are related to current variables
* Read/Write new fields/metric overrides via GcRideFile
* Metadata extraction in WKO files
* Calendar uses keyword and color config
* Numeric metadata is plottable on the Metric charts
*Metric refresh has been optimised
A user configurable chart for showing ride metrics and
other calculated values over time.
* Uses SQLITE database to store metrics
* Supports any metric available from the metric factory
* Adds new MaxHr, VI, Peak Power and Time In Zone metric
* Also includes LTS/STS/SB for PM charting
* Aggregates in days, weeks, months or years
* Reads and Updates seasons.xml
* Adds cycles and adhoc date ranges in seasons.xml
* Date ranges can be selected on the plot with shift-left click
* Allows users to customise preferences for color, symbols et al
* Allows user to customise metric names and unit names
* Supports smooth curves and topN highlighting
* Has a linear regress trend line function
* Allows users to save charts to charts.xml
* A default charts.xml is built-in
* A chart manager to import/export/rename/delete charts etc
* Provides a tooltip to provide basic datapoint information
* Performance Manager adjusted to use the MetricDB
* User configurable setting for SB calculation (today/tomorrow)
This commit adds a page to the config dialog in which the user can choose
which metrics GC will show for intervals. The GUI design could use some work,
but the functionality is there. All implemented metrics are available to
choose, and choices are saved across restarts.
The left side of MainWindow is now a toolbox which contains
Ride Analysis and Racing and Training options. The Right side
tabs have been reorganised and associated with the toolbox.
To support the population of the Racing and Training left tool
the config dialog has been updated to enable the user to configure
the location of their workouts.
In addition, the config dialog now calls upon MainWindow to issue
a configUpdate() signal to notify widgets when config has been
updated. This is a refactoring of the existing mechanism that
only called realtimeWindow->updateConfig, now any widget can
connect to the MainWindow signal and re-read its config appropriately.
Currently, the TrainTool and RealtimeWindow widgets have been coded to
use this.
The ConfigDialog is modal, so it needs to delete itself. However, the
existing code contained a bunch of destructors with calls to delete on
widgets. That's wrong. Widgets are automatically parented on being added to
layouts, the parent widgets delete their children in their own destructors.
So remove all the explicit deletes.