Commit Graph

97 Commits

Author SHA1 Message Date
Mark Liversedge
89017fe2a5 Stress Metric Prototypes
Added a few new training stress metrics whilst discussing
and working on a multicomponent view of training stress.

This is all a wip falling out of discussions around stress
metrics beyond the old TSS/BikeScore models.

For now this just includes;
1. Aerobic Training Impact Scoring System on PM/PMC
2. Work (Kj) above/below CP on PM/PMC
3. Aerobic TISS on the Ride Plot

There is lots more to come; specifically around Anaerobic TISS,
looking again at polarised training and personalised training stress
based upon the individual's CP model.
2014-03-17 20:51:57 +00:00
Mark Liversedge
99aee959a2 Fix LTM legend colours
.. when user changes the background color for charts the
   legend can be difficult to read as it is always in black.

.. we now update the legend and it's widgets to change the text
   color when the chart is refreshed.
2014-03-12 11:54:27 +00:00
Mark Liversedge
83cb089908 LTM Compare Fixup Tooltip
.. now shows a tooltip on the stack charts so will also
   fix normal mode stacked too.
2014-02-06 16:33:02 +00:00
Mark Liversedge
d213a90324 LTM Compare Fixup Markers
.. show event and season markers on the compare plot
   helps to provide context against the week/month offsets

.. also fixed up how bars are lined up and that each plot
   in the compare stack has the same x-axis
2014-02-06 15:52:47 +00:00
Mark Liversedge
317f83d72b LTM Compare Fixup legend
.. always hide the meaningless legends for trend, outlier
   and best curves since they are the same color as the
   curves already listed in the legend.

We should apply this to the normal view too.
2014-02-06 12:52:23 +00:00
Mark Liversedge
7a83da2ee6 Compare mode for LTM
You can now compare seasons / date ranges across or between
athletes on the LTM charts.

This is only shown on the stack chart as we need one chart
per data series - in a similar vein to the AllPlot chart.

There are some tidy ups left to do over the next few days;

- Data table needs updating to support compare mode
- Event markers need to be shown and in the right color
- PMC curve data is slow, needs some kind of optimisation
- The tooltip is missing and needs to be put back
- Ensure the new stack frame looks correct when using a
  dark plot background (or anything other than white)
- Consider how to handle zooming when there is only one
  data series and hence only one chart for compare
2014-02-05 20:40:24 +00:00
Mark Liversedge
88daadd8b6 Fix shading zorder
.. so power shading doesn't hide altitude

Fixes #772
2014-02-03 20:18:09 +00:00
Mark Liversedge
971901c773 Small circle topN
.. when no symbol chosen (instead of a hideous
   great rectangle, yuck).
2014-02-03 19:37:38 +00:00
Mark Liversedge
ecaacca5b3 LTM Data Table Fixups
.. fix PMC SEGV
.. fix for summary of NO data

Will now skip all zero values when summarising
by day, but not for week, month or year.

Fixes #782
2014-02-01 21:50:04 +00:00
Mark Liversedge
c8edba547d Labels for topN need a bit more spacing
.. because there is a big symbol too
2014-02-01 11:31:09 +00:00
Mark Liversedge
1d7e7c1492 LTM labels on topN
.. coz the first thing you tend to do is hover over the
   point to see what the value is anyway!
2014-02-01 11:22:15 +00:00
Mark Liversedge
9b0d8f09df Fix Data Label placement of last point
.. the if/else block was never called for the last point on a
   curve due to a logic error.
2014-01-31 22:55:44 +00:00
Mark Liversedge
cca9b7221b Fix SEGV on data labels with 1 data point
.. references offset -1 in array
2014-01-31 19:44:55 +00:00
Mark Liversedge
94c3681ad7 LTM Labels Fixes
.. for bar chart
.. and set axis
2014-01-31 17:16:04 +00:00
Mark Liversedge
ce2deef793 LTM Data Labels
.. option to show a label on chart points
2014-01-31 16:29:43 +00:00
Mark Liversedge
ea493a4405 Fix PMC LTM SEGV
.. cut and paste error!
2014-01-19 19:01:22 +00:00
Mark Liversedge
df15888b0b AllPlot Compare Mode
.. extending the interval compare to the allplot chart.
2014-01-03 14:59:20 +00:00
Mark Liversedge
613e7ebf39 LTM chart user selectable trend lines
.. now allows the user to select the type of trend
   line for a curve, only two options at present;

   * linear (linear regress)
   * quadratic (quadratic lsm)
2013-12-19 11:48:55 +00:00
Mark Liversedge
a7ac061114 Accidentally comitted increase in trend points
..was experimenting with fewer and more points on the trend
  line and accidentally committed it alongside the changes
  to fix the LTM axis scale setting.
2013-12-18 21:15:26 +00:00
Mark Liversedge
0bd6b77003 Fix LTM axis scale setting
.. dumb bug set all scales to same value!
2013-12-18 20:41:49 +00:00
Mark Liversedge
618cce57ee Quadratic Least Squares Trend Line
Added a quadratic least squares trend line for the LTMplot
as the linear regression was generally too blunt.

This is a hack to get the code into the repo -- will know work
on refining the LTMPlot settings to enable users to specify
the kind of trend line they want.

The new trend line might also be useful for other curve fitting
functions (e.g. realtime virtual power curve, a peak power chart
by cadence/pedal speed).
2013-12-18 13:52:37 +00:00
Mark Liversedge
8aee630180 Fix LTM trend line
.. broken on All Dates selections.

It must be time to introduce a polynomial fit or somesuch
as the linear regress is a little simplistic for most cases.
2013-12-17 13:35:58 +00:00
Mark Liversedge
80cb8f464d LTM Plot honour plot background color
.. more of the same as recently updated similarly for
   CP, PfPv, Histogram, AllPlot etc
2013-12-15 23:28:18 +00:00
Damien
7230c1822d LTMPlot: fix show/hide legend 2013-12-12 23:40:24 +01:00
Mark Liversedge
e80243eea1 QWT 6.1 canvas() revert and LTM ToolTip fixups
Reverted the update to the QWT 6.1 code to make QwtPlot::canvas()
return a QwtPlotCanvas -- it now returns  QWidget.

This means our local copy of Qwt is the same as the published version
so we should be able to stop maintaining our own copy when Uwe pushes
the multiaxis stuff with 6.2.

Also fixed the LTM tooltip - the zoomer has been removed.
2013-12-11 17:58:35 +00:00
Mark Liversedge
f2e85366a4 Fix LTM plot x-axis 2013-12-11 15:48:24 +00:00
Mark Liversedge
a6007c11ed Fix LTM chart axes
.. using QwtAxisId type instead of an int cured most ills.
2013-12-11 13:27:13 +00:00
Mark Liversedge
f8763e6379 REGRESS: Remove translateMetrics() from LTMPlot
This is a regression to remove the metric translation
functionality from LTMPlot.

WE WILL REINTRODUCE BEFORE RELEASE!

It has been regressed because;

1. It crashes on QT5 with Win32

2. It has significant performance penalties;

   It really should not instantiate an LTMTool object
   (Ale did discuss this with me and I gave it the go
   ahead, so my bad).

3. It should be executed on applySettings() not on
   each refreshPlot().

4. It has a bug regarding uunits being lost and breaking
   sharing of a common axis.
2013-12-10 19:54:00 +00:00
Mark Liversedge
baba5cc9d2 QT5 -- Part 3 of 3
Fixup crashes and major issues created by porting
to QT5. These have included;

* Fix CP plot log scale
* AllPlot axes and tooltip
* DBAccess prepare/bind bug
* LTMSettings crash
* LTMWindow zoomer/picker crash
* LTMPlot axes hack

There are still issues remaining but we can start
working through them at leisure -- the product now
builds and runs.
2013-12-09 21:21:51 +00:00
Mark Liversedge
c3a189b25c QT5 -- 2 of 3
Fixup all the GC code to use the QWT 6.1 code.
It needed canvas() to be patched to return a
QwtPlotCanvas and not a QWidget.

We could probably get round that with a cast.

When we switch to QWT 6.2 with the multiaxis
support formally baked in we can fix the code
as needed.

Now compiles and links without issues.
2013-12-09 12:26:55 +00:00
Mark Liversedge
aa8605e8d5 QT5 -- 1 of 3
Porting the codebase to QT 5 (5.2) to get the
latest bug fixes, performance and improved platform
support.

This first part is to fixup the codebase to compile
on Qt 5, but some aspects have been broken (video).

The second part is to migrate from Qwt 6.0.1 to the
latest Qwt for multiaxis support.

The third part will be to fixup any platform specific
issues or issues identified at runtime.
2013-12-09 09:57:13 +00:00
Mark Liversedge
4d6b78f222 Cache StressCalculator in LTMPlot
A bit of a compromise since really we should move the
stress calculators to the Athlete class and reuse when
no filtering is applied.

This code fix just means the SC is not recalculated for
each of the individual curves (LTS, STS etc) and pretty
much halves (or better) the time taken to refresh the
LTMPlot.

For those with very few rides (<500) this isn't much of
an issue, but for some with lots (2000 or more) it can
be quite tedious.
2013-12-06 19:32:41 +00:00
Mark Liversedge
1914b6c31c UX: Add to intervals flow
.. in the find intervals dialog it makes more sense to
   close the dialog once add to activity has been pressed.
2013-11-13 10:29:28 +00:00
Mark Liversedge
623dca7a26 UI Nits: Less is more
Further removal of chart decorations ala the recent
changes to the ride plot, now applied to the other
charts.
2013-11-11 22:04:06 +00:00
Mark Liversedge
e533cbfa26 Add Minimum W' Metric
It TREBLES the amount of time required to refresh the
metrics, so will need to be optmised before 3.1 is released.

But it should only need to run once.

I've also added a 'RideMetric::Low' type which we could
also apply to weight.
2013-10-31 16:49:43 +00:00
Mark Liversedge
914ab505d8 Fix User Defined LTM durations bugs
.. refresh didn't clear old curves
.. didn't honour any filter being applied
2013-10-28 20:57:21 +00:00
Mark Liversedge
8ca61dfe34 Plot Peak Power et al 2 of 2
Updated RideFileCache and LTMWindow/Plot to
plot the user defined durations for peak power.

Actually we support all the different meanmax
measures available in the CP chart, so you can
now track peaks for user defined durations of;

            * Power
            * Watts per Kg
            * xPower
            * NP
            * Heartrate
            * Speed
            * Cadence
            * Torque
            * VAM

I have not spent much time optimising for performance
but reusing the same 'seek' approach used by the recent
update for best() and tiz() functions in the datafilter.

Fixes #322.
2013-10-28 19:29:28 +00:00
Mark Liversedge
46f70de6db Urgent Fixup to previous commit
.. to make sure the v2 LTMSettings
   uses the bestSymbol.

Just pushing this (WIP) to make sure
we don't get half baked LTM settings
from people building against the previous
commit.
2013-10-28 17:58:04 +00:00
Mark Liversedge
6189a8ec39 Plot Peak Power et al 1 of 2
Update to let users specify a custom duration
to plot on LTM for peak power, vam, wpk etc.

This update is to the LTM chart settings and
the reading/writing of chart settings.

Next update will update LTMWindow/LTMPlot to
retrieve and plot the values from the CPX files.

Note: the values will not plot yet, the next
      commit in this series is required.
2013-10-28 12:34:17 +00:00
Mark Liversedge
fdbbf4273b LTM bars cosmetics
Just made gap slightly smaller to make it easier to
compare and overall the proportions 'feel better'.
2013-10-27 15:08:02 +00:00
Mark Liversedge
a367b34fb9 LTM Chart Settings improved UX
The definition of curves is rationalised to match the
new design mockups in readiness for introducing user
defined peak durations for power et al.

For now this patch cleans the UX and makes it much
easier to add/edit/remove curves.

Fixes #548
2013-10-27 14:34:17 +00:00
Mark Liversedge
a2a962120c A lot less assert
There still some assert left in the code, but removed
a fair number of the examples where, its just as easy
to handle the condition gracefully, without crashing.

By 3.1 we will have eradicated assert from the code.
2013-08-04 11:06:07 +01:00
Mark Liversedge
0a51fdebb5 Move filters from MainWindow to Context
.. we notify search/filter updates via context rather
   than MainWindow
2013-07-27 13:51:09 +01:00
Mark Liversedge
59fd0db564 Move specialFields from MainWindow to Context
.. and tidy up a few unneccessary references to mainWindow
2013-07-14 11:51:34 +01:00
Mark Liversedge
9d8fbad0d2 Fixup MainWindow refactor Part 2
.. Minor oopsie with references to context->mainWindow->athlete
   instead of simply context->athlete.

The MainWindow refactor will be complete when references to
the mainWindow class is for gui reasons only.
2013-07-12 08:57:49 +01:00
Mark Liversedge
05f1d577db Refactor MainWindow Part 2 of 5
Decoupled classes from MainWindow to reference Context
and Athlete (and introduced a couple of new headers).

We no longer pass around a MainWindow pointer to children
but pass a context instead.

There are still a few pieces left in MainWindow that need
to move to a better place;
    * Setting/clearing filter selection
    * Working with Intervals
    * Adding/Deleting Rides
    * Save on Exit

As mentioned previously there are lots of other parts to
this refactor left to do;
    * break MainWindow Gui elements into Toolbar and Views

    * migrate from RideItem and Ridelist to ActivityCollection
      and Activity classes that are not tied into gui elements.

    * introduce Application Context and AthleteCollection
2013-07-11 14:02:02 +01:00
Mark Liversedge
e407237ac0 MainWindow Refactor Part 1 of 5
Breaking the MainWindow 'god object' into
separate classes for Athlete and Context.

Further updates will need to;
- break MainWindow Gui elements into Toolbar and Views

- migrate from RideItem and Ridelist to ActivityCollection
  and Activity classes that are not tied into gui elements.

- introduce Application Context and AthleteCollection

Once these are done we will be in a position to decouple
most classes from mainwindow and also introduce tabbed
athletes.
2013-07-07 15:50:28 +01:00
Alejandro Martinez
b28ef13b3c Use Distance as a PMC metric
Fixes #570
2013-04-14 18:10:12 -03:00
Mark Liversedge
edb93e96e0 Use Work as a PMC metric
.. twas very trivial to add.

Fixes #564.
2013-04-11 19:39:35 +01:00
Mark Liversedge
1d0c8c5ae8 Deprecate the old INITIAL[SL]TS settings
Since you can no longer edit them but they were
still being used by stress calculator to seed initial
Short Term and Long Term Stress.
2013-04-09 14:35:31 +01:00