Commit Graph

91 Commits

Author SHA1 Message Date
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
Mark Liversedge
01c4b436e6 Search/Filter on toolbar applies to Charts
When the user free text searches or applies a data filter in
the top right toolbar search box it gets applied to any charts
that plot data from many rides, including;

- CP curve
- Calendar
- Histogram
- LTM
- TreeMap
- Summary

I need to update on a Mac to no longer use a Mac text search box
but now use a search filter box on the top right.
2013-04-05 16:23:16 +01:00
Mark Liversedge
5c3a662b29 LTM: Add fill curves option
.. so you can fill below the curve.
.. also added a 'version' field for the file format for metric
   details, so we can add more fields later.
2013-03-16 11:17:09 +00:00
Mark Liversedge
3739d3e734 LTM tooltip for groupby weeks is misleading
.. it lists start date for this week to start date for next week
.. now changed to say 'Week commencing <date>'.

Fixes #501.
2013-03-08 12:50:42 +00:00
Mark Liversedge
d385657f29 LTMPlot fix baseline setting
.. it was lost when fixing bar style drawing.
.. maybe we should also allow fill under curves?
2013-03-02 09:26:11 +00:00
Mark Liversedge
b6ea47808f UI Nits: Less vibrant gradients
.. go back to more GC-like color defaults, which became a little
too vibrant in a recent update to introduce linear gradients to
the CP, Histogram and LTM plots.
2013-02-23 16:34:09 +00:00
Mark Liversedge
e191b46205 Code Cleaning: LTM sources
Addressing or removing 'XXX' code alerts across the Long Term
Metrics source files.

This is part of a code cleanup prior to V3.0 release.
2013-02-07 12:04:44 +00:00