Compare commits

...

2534 Commits

Author SHA1 Message Date
Mark Liversedge
d46801f4a0 V3.2 RC1X
.. Release Candidate after some late commits
   before RC1 was issued.
2015-06-19 15:07:51 +01:00
Mark Liversedge
8dde97bca2 RideMetric::isLowerBetter()
.. seems redundant, but at least reflect the type() of
   metric when deciding; if the metric is defined as
   being of type RideMetric::Low then return true
   otherwise false.

.. the metric can override this method if needed if
   is is still only an average (e.g. weight ?)
2015-06-19 09:02:41 +01:00
Mark Liversedge
884ba768b5 Merge pull request #1409 from amtriathlon/master
Added error message for unsupported Lap Swimming FIT files
2015-06-19 07:47:21 +01:00
Alejandro Martinez
84c911c2e2 Added error message for unsupported Lap Swimming FIT files
Until proper handling is added better to give an error message,
otherwise an activity with no data is created causing confusion.
2015-06-18 20:26:25 -03:00
Mark Liversedge
148064ed81 Add Core Temperature
.. New derived data series representing an estimate of core temperature
   on the basis of HR changes.

   * shown on AllPlot and RideSummary
   * 2 new metrics; max and avg core temperature

.. This has been based upon "Estimation of human core temperature from
   sequential heart rate observations" Mark J Buller, William J Tharion,
   Samuel N Cheuvront, Scott J Montain, Robert W Kenefick, John
   Castellani, William A Latzka, Warren S Roberts, Mark Richter,
   Odest Chadwicke Jenkins and Reed W Hoyt. (2013). Physiological
   Measurement. IOP Publishing 34 (2013) 781–798.
2015-06-18 18:41:04 +01:00
Mark Liversedge
42f449a7ae Merge pull request #1408 from amtriathlon/master
Peak Pace metrics need to be RideMetric::Low
2015-06-18 13:48:36 +01:00
Alejandro Martinez
816a1a520b Peak Pace metrics need to be RideMetric::Low
For "Group By" to work properly in LTM charts
2015-06-18 09:38:53 -03:00
Mark Liversedge
7cc8e302de Merge pull request #1404 from amtriathlon/master
Fixed wrong caching when CPPlot is filtered by activity type
2015-06-17 17:11:22 +01:00
Alejandro Martinez
a6d7e565b3 Enable Efficiency Factor and Aerobic Decoupling metrics for Running
Fixes #1407
2015-06-17 11:28:58 -03:00
Mark Liversedge
4c83f55c3e V3.2 Release Candidate 1
.. all features now complete, bar a couple of minor
   pending changes.

.. upgrade process feature complete, bar some minor
   cosmetic nits for colors/metadata

.. time to validate the code changes since February
   with the user community and freeze new features
2015-06-17 12:39:48 +01:00
Mark Liversedge
916e8ee7a1 Add W'bal Time In Zone (3c of 3c)
.. add W'bal Zoned to Histogram
   - for a ride
   - for a date range
   - *NOT* for a compared ride
   - for a compared date range

This makes the last of the updates for W'bal
in zone, but highlights the issues related to
W'bal being held in a different structure to
the rest of the ride data.

Need to think on how that might work better
for intervals.
2015-06-17 12:22:00 +01:00
Alejandro Martinez
a5d4754cdc Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-06-16 11:08:13 -03:00
Mark Liversedge
42ef6ba55e Logic error in FIT reader
.. introduced with multi-session update
.. need to audit and thoroughly test that code
2015-06-16 13:44:49 +01:00
Mark Liversedge
c6ad4d3ee9 Reconise Alexandre Prokoudine
.. for Russian translation contribution
2015-06-16 08:04:09 +01:00
Mark Liversedge
7ff3af85b2 Merge pull request #1405 from prokoudine/master
Updated Russian translation
2015-06-16 08:01:32 +01:00
Alexandre Prokoudine
fc1d44ef06 Updated Russian translation 2015-06-16 02:57:21 +03:00
Alejandro Martinez
8bf4454230 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-06-15 19:46:49 -03:00
Mark Liversedge
eff23d9bfb Fix SEGV in W'bal ridefilecache
.. when computing the distribution due to problems
   casting double to int for nan/inf values.
2015-06-15 22:00:01 +01:00
Alejandro Martinez
9c14f78c54 Fixed wrong caching when CPPlot is filtered by activity type 2015-06-15 16:05:14 -03:00
Mark Liversedge
997616546c Add W'bal Time In Zone (3b of 3c)
.. add W'bal Zoned to Histogram
   - for a ride
   - for a date range
   - for a compared ride
   - for a compared date range

.. still need to update ridesummary to show
   summary of w'bal zone distribution (3c)
2015-06-15 13:37:29 +01:00
Mark Liversedge
d8063d4980 Add W'bal Time In Zone (3a of 3c)
.. add W'bal distribution to Histogram
   - for a ride
   - for a date range
   - for a compared ride
   - for a compared date range

.. still need to revisit to do in zones (3b)

.. still need to update ridesummary to show
   summary of w'bal zone distribution (3c)
2015-06-15 10:43:28 +01:00
Mark Liversedge
6306967a54 Add W'bal Time In Zone (2 of 3)
.. add metrics and trends chart
2015-06-14 10:52:21 +01:00
Mark Liversedge
d6690cd5ae Add W'bal Time In Zone (1 of 3)
.. adding it to the CPX file
2015-06-14 09:32:01 +01:00
Mark Liversedge
5b6a652f0a Route Intervals Colour
.. not gray !
2015-06-13 19:47:24 +01:00
Mark Liversedge
f9591812ce Discard data with no time or distance
.. we need one or the other !
2015-06-13 17:33:04 +01:00
Mark Liversedge
2b8bccb04e Merge pull request #1400 from amtriathlon/master
Set Pace Zone Shading and Pace units according to sport in CV chart
2015-06-13 07:18:53 +01:00
Alejandro Martinez
8496e66dd4 Set Pace Zone Shading and Pace units according to sport in CV chart
In activities it depends on selected activity, bests are automatically filtered.
In range mode it can be set by sidebar or home filters for single sport
2015-06-12 21:38:21 -03:00
Mark Liversedge
344bcc23a9 Fix SEGV on zoom change when isolated in AllPlot
.. that code is horrible.
2015-06-12 17:12:05 +01:00
Joern
2fda2bf37f Merge pull request #1399 from Joern-R/master
Update Translation DE
2015-06-12 18:03:48 +02:00
Joern
94aa07e101 Update Translation DE
... translation DE
2015-06-12 18:08:12 +02:00
Mark Liversedge
6835e8188c Add Climb Rating metric
.. based upon Fiet-type formula elevation^2 / distance.
   From an idea on Dan Conelly's blog.

   Some examples:
      Mt Ventoux        - 121
      Alpe d'Huez climb - 83
      Galibier          - 81
      Glandon           - 66

.. so it's not perfect, but gives a good sense of hard
   versus easy !
2015-06-12 15:29:01 +01:00
Mark Liversedge
e469bc333f Add qmake's '.qmake.stash' to .gitignore 2015-06-11 16:10:00 +01:00
Mark Liversedge
5eeaf0810d Recognise Alex Harsanyi 2015-06-09 19:58:32 +01:00
Mark Liversedge
12615590e3 Revert "RideFile::isRun() -- only use the "Run" tag to clasify a file as running" 2015-06-09 19:56:33 +01:00
Mark Liversedge
573adb1ef2 Merge pull request #1397 from alex-hhh/multisport-import-2
Import multisport FIT files
2015-06-09 19:54:25 +01:00
Mark Liversedge
88ca6f9f39 Tweak route drop dialog
.. titlebar and button layout.
2015-06-08 19:54:29 +01:00
Alex Harsanyi
f73686b4ff RideFile::isRun() -- only use the "Run" tag to clasify a file as running
For multi-sport files, the bike section might record vertical oscillation or
ground contact time from the HRM-RUN sensor when moving in and out of
transition.
2015-06-08 22:05:46 +08:00
Mark Liversedge
65fc5f84a2 Merge pull request #1396 from amtriathlon/master
Use sport specific metric for PMC in RideSummaryWindow
2015-06-08 13:09:06 +01:00
Alejandro Martinez
0275d4b52f Use sport specific metric for PMC in RideSummaryWindow
For single ride use sport specific base metric
For date range use sport specific base metric if filtered activity
list is homogeneous or combined otherwise.
2015-06-07 22:52:33 -03:00
Mark Liversedge
c49e16f375 Add Sustained in Zone to trend layout
.. new chart to plot sustained time in zone.
2015-06-07 16:51:18 +01:00
Claus Assmann
9c057191b5 Fix comment typos 2015-06-07 16:31:56 +01:00
Mark Liversedge
4a2513c1c7 errant copy paste in last commit
.. setting table rowCount when it shouldn't. It was a
   harmless line of code but would confuse people later
   on when editing this code
2015-06-07 12:16:48 +01:00
Mark Liversedge
203b03686b Tweak drag/drop routes compare pane
.. sort so most recent first

.. if dropping less than 10 items then add checked
   otherwise add them unchecked.
2015-06-07 12:13:04 +01:00
grauser
761d82b509 Add Color to Segment name 2015-06-06 22:38:26 +02:00
Mark Liversedge
7da90c4c0e Add Date to Segment name
.. when matching on drop into compare pane as they all
   arrive with the same name !
2015-06-05 22:04:52 +01:00
Mark Liversedge
7fb8eb66d1 Add matched segments on drop into compare pane
.. pops up a dialog to ask if you want to just add this
   segment (the default) or add all intervals on this
   segment for a season (you can select a season).
2015-06-05 20:43:20 +01:00
Mark Liversedge
1f93856f31 Missed SustainMetric.cpp in last commit 2015-06-04 21:04:43 +01:00
Mark Liversedge
df997a5e0e Sustained Time in Zone Metrics
.. how much time is spent on sustained efforts
   in each zone.
2015-06-04 21:00:09 +01:00
Mark Liversedge
5a3ad8887e Merge pull request #1394 from Joern-R/fit
FIT File Read - Exception not catched
2015-06-04 16:50:37 +01:00
Joern
51242da94d FIT File Read - Exception not catched
... exception "Truncated" for the "final" read call of the FIT file
reader was not catched, causing termination of the program (problem
reported with an example file being truncated at the end)
2015-06-04 17:18:11 +02:00
grauser
b9438037b8 Remove qDebug 2015-06-03 22:40:32 +02:00
Mark Liversedge
cc7bbbec48 Plot Sustained on CP plot in compare mode
.. compare seasons
2015-06-03 21:37:09 +01:00
Mark Liversedge
768e6f835c Less qDebug() 2015-06-03 21:05:10 +01:00
grauser
55fb4d68c6 RideFile: Don't use 0.0 as min or max for gps lat/lon 2015-06-03 19:52:45 +02:00
Mark Liversedge
b02a869674 bool not BOOL 2015-06-03 16:41:05 +01:00
Mark Liversedge
36f57ac240 Merge pull request #1392 from amtriathlon/master
Discover Peak Pace intervals for running and swimming
2015-06-03 16:14:19 +01:00
Alejandro Martinez
038e6f5098 Discover Peak Pace intervals for running and swimming 2015-06-03 12:05:54 -03:00
Mark Liversedge
d2a2b4b9e0 CP rangemode plot effort logic fix
.. to now consider the ride intervals when plotting
   for a date range!
2015-06-03 15:20:27 +01:00
Mark Liversedge
1a7ea91efd Add Sustained Efforts to CP Chart
.. overlay all sustained efforts on the curve
2015-06-03 14:59:56 +01:00
Alex Harsanyi
7fdedf0bfe Add support for reading multi sport FIT files.
Multisport FIT files are imported as separate activities, one for each session
in the file.

The internal storage format for multisport files was also changed form TCX to
JSON, as the TCX file would not store advanced metrics, like the left-right
balance from the Garmin Vector power meter.
2015-06-03 20:47:24 +08:00
Mark Liversedge
f5dd509c9e Fix W' Power metric
.. use all seconds not just those above CP !
2015-06-02 16:22:22 +01:00
Mark Liversedge
2e1b347851 Add W' Power metric
.. as W' work (joules from time spent above CP) divided by duration.
   This represents the W' contribution to Average Power.
2015-06-02 15:09:32 +01:00
Mark Liversedge
5fc448c6ab Fix interval painting and lazy delete
.. the lazy delete was a horrible hack and memory leak.
   So, now the paint delegate no longer dereferences the
   IntervalItem * from the QTreeWidgetItem.

   Instead we use setData for UserRole+1 to store the interval
   color when constructing the trees. The paint function can
   get this directly and we avoid any contention when the
   intervals are deleted and created.

   The lazy delete can be removed and deleted once the changes
   have been notified via intervalsUpdate().
2015-06-02 10:56:28 +01:00
grauser
03bd38f497 Correct GPS route search optimisation 2015-06-01 23:49:24 +02:00
grauser
391ca0d29c SlfParser: Read start date in last format 2015-06-01 23:47:06 +02:00
Mark Liversedge
7ae35dbcf8 Lazy Delete IntervalItems in RideItem
.. since they are deleted in threads and affect the gui

.. to avoid the overhead of cross-thread mutex we just
   delete intervals lazily; each time we refresh them
   the last lot are wiped away.
2015-06-01 18:51:55 +01:00
Mark Liversedge
eb413b7c3f Fix paint SEGV on RideItem::updateIntervals()
.. zaps interval items whilst they are referenced in
   the interval tree etc.
2015-06-01 13:54:50 +01:00
Mark Liversedge
16f13542f2 Set default chrome on Yosemite
.. to match the new UI.
2015-06-01 10:50:11 +01:00
Mark Liversedge
c10cd99360 Fix NewCyclistDialog bugs
1. Zones config was being written to wrong path
2. Pmax label and Edit were orphaned, not on a layout
3. Upgrade dialog popped up on open

Fixes #1380
2015-06-01 08:53:48 +01:00
Mark Liversedge
48ac3aebbe EFFORTS found using metadata only
.. if no zones are configured.
2015-05-31 23:52:02 +01:00
Mark Liversedge
05f4997fca Added "Pmax" override in metadata
.. only used in interval discovery
2015-05-31 23:21:59 +01:00
Mark Liversedge
c69b2b2e96 TT analysis fixups
.. SEGV on setting CP when no zones configured. Since
   RideItem::updateIntervals() dereferenced a range
   when CP is set, but none existed.

.. fixup use of Metadata field "W'" to override settings
   in Metrics tab.
2015-05-31 22:18:17 +01:00
Mark Liversedge
ea980149ca Mark MATCHES that are To Exhaustion
.. name and also red color.
2015-05-31 13:34:22 +01:00
Mark Liversedge
dfc058cd04 Autodiscover MATCHES
.. and add them to the ride EFFORTS
2015-05-31 13:05:22 +01:00
Mark Liversedge
2e818e9428 Merge pull request #1387 from Joern-R/pull1
Auto-Intervals - Translation Enablement
2015-05-30 08:29:51 +01:00
Mark Liversedge
33a711b03a Fix interval offsets
.. when adjusting sample offsets to start from zero
2015-05-29 20:44:45 +01:00
Mark Liversedge
6c8e32180a Revert GPS route search optimisation
.. it fails to find my segments !
2015-05-29 20:22:56 +01:00
Mark Liversedge
509a123989 Interval List indicate high quality
.. with a sidebar indicator

.. we may need to change when we have planned workouts
   as the intervals will need to match the plan.

.. but we can use the same concept of 'quality' when
   comparing a full activity with what was planned.
2015-05-29 19:50:47 +01:00
Joern
675efe966e Auto-Intervals - Translation Enablement
... enable Translation for Text is auto-determined intervals
... adjust Translation DE for the changes
2015-05-29 19:53:11 +02:00
Joern
c00eefe89a Merge pull request #1382 from Joern-R/master
Update - Translation DE
2015-05-29 18:39:25 +02:00
Mark Liversedge
aaa03aa34a LTM no span slider in tile view
.. too much going on !
2015-05-29 14:43:41 +01:00
Mark Liversedge
082ee3b4c0 Allow user to stop tracking a segment
.. in case you add one that isn't useful.
2015-05-29 12:42:41 +01:00
Mark Liversedge
41890c852a Power Zone metric has 1 decimal
.. to indicate how far into the zone we got, so
   3.1 is 10% into zone 3, whilst 7.9 is seriously
   high Neuromuscular power, but below Pmax

.. we use Pmax to bound the upper value when calculating
   how deep we got into the very upper zone; so it is
   possible for the metric to be 8.x when only 7 zones
   are defined (when the power value is > Pmax)
2015-05-29 10:18:09 +01:00
Mark Liversedge
3dca5ab996 W'bal y-axis consistency
.. in stack mode always start from min W'bal or 0, whichever
   is smaller. This makes it easier to identify when W'bal
   is (or is not) being consumed across rides.
2015-05-29 09:54:20 +01:00
Joern
995920eb8b Update - Translation DE
... update Translation
2015-05-28 18:56:18 +02:00
grauser
785e1cb231 Route: QVariant add .toDouble() 2015-05-27 21:11:39 +02:00
Mark Liversedge
b8c21ca895 Change the color of an interval
.. in the IntervalEditDialog
2015-05-27 16:04:15 +01:00
Mark Liversedge
471afd21a0 Interval Sidebar show Interval Color
.. using same kind of decoration as the ride list
   with a small bar to indicate the chosen color
   for the interval.
2015-05-27 15:37:45 +01:00
Mark Liversedge
aea510ec68 Interval Summary EXCLUDING selected intervals
.. when looking at a ride and working with intervals it
   is sometimes useful to look at the rest of the ride
   exluding the intervals selected.

.. we now show the metrics for the intervals selected,
   followed by for each interval then lastly for the
   rest of the activity i.e. excluding the intervals
   selected.
2015-05-27 06:18:53 +01:00
grauser
d742775ec4 Remove last wrong commit 2015-05-26 23:45:35 +02:00
grauser
76a79df78e Route Search: Add comment 2015-05-26 23:29:15 +02:00
grauser
8223a20b77 Route Search: verify Min-Max Lat-Lon before searching 2015-05-26 23:27:25 +02:00
grauser
d503003e17 SlfParser: update for last vesions 2015-05-26 23:27:25 +02:00
Mark Liversedge
aaf6b486b8 Fix SEGV on drag/drop ride into compare pane
.. when moved to passing RideItem* from RideFile* we
   forgot to change for dropping entire ride !
2015-05-26 21:32:40 +01:00
Mark Liversedge
0e34307d2d Fix SEGV when delete last ride
.. currentRideItem() is NULL, and IntervalSummaryWindow
   was dereferencing the pointer before checking if it
   was NULL.
2015-05-26 21:08:35 +01:00
Mark Liversedge
2f43e564d8 Overlapping Sustained Efforts
.. we now filter sustained efforts by zone rather than picking
   the very best non-overlapping effort.

.. this means that a L7 sprint mid way through a L4 climb within
   a L3 ride will find find 3 sustained intervals rather than just
   the sprint.
2015-05-26 16:39:14 +01:00
Mark Liversedge
4979ac585a Fox off-by-one for Zone/Level
.. they start at 0, not 1 in class Zones but users
   think in terms of Zones 1-7 !
2015-05-26 09:25:59 +01:00
Mark Liversedge
4b52dda7c4 Simplify EFFORTS intervals
.. just place TTE, EFFORTS and SPRINTS under
   the EFFORTS interval type.

.. this is getting ready for handling overlapping
   efforts rather than just the very best.
2015-05-25 20:16:44 +01:00
Mark Liversedge
bc24f52f35 Move W'bal plot next to Power
.. in AllPlot. So you can see how power/W'bal compares

.. it would be neat to let users move them around themselves
   but thats for another day
2015-05-25 18:25:18 +01:00
Mark Liversedge
f2c423be5d Route finding skips on when found
.. to avoid finding the same segment twice if it
   is a shortish one that finishes nr a stop point
   like traffic lights or top of a hill.
2015-05-25 17:03:48 +01:00
Mark Liversedge
3d6f079147 Qt::ItemNeverHasChildren is from QT 5.1.1 not 5.0
.. fix compiler failure on QT5.0.x
2015-05-25 11:40:06 +01:00
Mark Liversedge
3b8bcca4b6 Fix Withings URL trailing slash ('/')
.. when the URL for the webservice is created it places
   a slash between the host info from preferences and the
   service path:

   http://wbsapi.withings.net/measure?action=getmeas ..

   By default, the withings server configuration has a
   trailing slash, which results in a URL of the form:

   http://wbsapi.withings.net//measure?action=getmeas ..

   The double slash here ----^^ used to be accepted by
   the Withings servers but more recently it is rejected
   so this patch removes any trailing slash before
   constructing the full path.
2015-05-25 09:55:12 +01:00
Mark Liversedge
cf8c3d3fee Revert "Only look for first occurrence of segment"
.. if you do hill repeats or loops then this commit
   isn't at all helpful to you !. This reverts the
   commit b90c5c0894.
2015-05-24 08:40:51 +01:00
Mark Liversedge
b90c5c0894 Only look for first occurrence of segment
.. to avoid duplicate entry for a 'small and
   partial' match in route search
2015-05-23 21:25:38 +01:00
Mark Liversedge
51077668e5 Route Search Refactor Part 2 of 2
.. Route segments are found during interval refresh

.. Config/routes.xml only holds config now

.. The fingerprint for a rideitem includes the route
   fingerprint now so it will refresh automatically
   when the routes config changes

.. if no routes are defined then no work is done, so the
   amount of work is really defined by the user

NOTE: RouteWindow, and now, RouteItem will need to
      be reworked and fixed up for v4.0
2015-05-23 18:40:10 +01:00
Mark Liversedge
a3cee46676 Reinstating Interval functions: MULTI-SUMMARY
.. summarising when >1 interval selected.
2015-05-23 15:52:04 +01:00
Mark Liversedge
47afd82d9e Route Search Refactor Part 1 of 2
.. clean code and get ready to add background
   scanning for routes

.. next update will add background scanning
2015-05-23 13:38:07 +01:00
Mark Liversedge
f7f4578241 No Zones or CP then don't search for TTE
.. pointless searching for a default value.
2015-05-23 10:37:16 +01:00
Mark Liversedge
947190a683 Fix AllPlotInterval SEGV on SAVE
.. it optimises out setRide when it is the same ride as currently
   being plotted, but the intervals will have changed since they
   were reloaded

.. so we always notify of intervals changed after intervalsUpdate()
   just in case other charts skip refresh when the selected ride is
   the same as the one they are already showing
2015-05-23 09:18:09 +01:00
grauser
6f7546b6ba AnalysisSidebar: Reinstate interval SORT in list 2015-05-23 08:48:23 +02:00
grauser
d8b3e500ac AnalysisSidebar: Reinstate interval DRAG/DROP in list 3 2015-05-22 21:49:06 +02:00
Mark Liversedge
e2a56fd8a4 Reinstating Interval functions: ADD VIA FIND DIALOG
.. by click and drag
2015-05-22 19:17:39 +01:00
Mark Liversedge
25c5b7f8b8 Refactor RideFile out of IntervalItem
.. and a few nits to get Routes to compile, but it
   needs to be aligned to the intervalsUpdate() method
   in RideItem.
2015-05-22 18:41:59 +01:00
Mark Liversedge
63dbaa25d9 Reinstating Interval functions: ADD ON GOOGLE MAP
.. by click and drag
2015-05-22 17:20:02 +01:00
Mark Liversedge
ba748461d7 User Intervals Tree always at top
.. in sidebar
2015-05-22 15:13:21 +01:00
Mark Liversedge
f1775c800b Fixups Add Interval on AllPlot
.. fix by distance mode
.. remove findPeakPower from sidebar
2015-05-22 14:57:38 +01:00
Mark Liversedge
5f4357a232 Reinstating Interval functions: ADD ON ALLPLOT
.. by click and drag
2015-05-22 14:47:43 +01:00
Mark Liversedge
88b668f604 Fix interval metric refresh after edit
.. when the start/stop is changed.
2015-05-22 12:15:35 +01:00
Mark Liversedge
597dccff9c Reinstating Interval functions: RENAMING/RENUMBERING
.. rename a number of intervals in one go
2015-05-22 11:58:16 +01:00
Mark Liversedge
70d6fd192b Reinstating Interval functions: EDIT
.. not extending to include new members, just the old
   functionality reinstated for now.
2015-05-22 10:26:35 +01:00
Mark Liversedge
645d392a08 Remove qDebug() erroneously committed 2015-05-22 08:47:19 +01:00
Mark Liversedge
5c745e60d4 Reinstating Interval functions: SELECT/DESELECT
.. from interval navigator or map marker
2015-05-22 08:41:26 +01:00
Mark Liversedge
f8a0900ee1 Retain selection status when intervals updated
.. since we are called to refresh when intervals
   are updated within the RideItem
2015-05-22 07:31:24 +01:00
grauser
53bf19ebc6 AnalysisSidebar: Reinstate interval DRAG/DROP in list 2
- Apply change to RideFile
2015-05-22 08:15:31 +02:00
Claus Assmann
9679c48cae Fix QT4.8 drag/drop update compile error
.. Qt::NeverHasChildren is QT5 only
.. Calling signal instead of notifier in Context
2015-05-22 06:54:26 +01:00
grauser
fc320c30c3 AnalysisSidebar: Reinstate interval DRAG/DROP in list (correction2)
Let Drag non User intervals for compare pane
2015-05-21 23:03:29 +02:00
grauser
0c76544c34 AnalysisSidebar: Reinstate interval DRAG/DROP in list (correction)
Last commit correction
2015-05-21 22:37:27 +02:00
grauser
c1f642d520 AnalysisSidebar: Reinstate interval DRAG/DROP in list 2015-05-21 22:36:05 +02:00
Mark Liversedge
bff5de5a85 Add SSL to versions list
.. so we can see if it is compiled in !
2015-05-21 14:38:13 +01:00
Mark Liversedge
e4daf3b770 Add Metric for Power Zone
.. so you can see what zone an interval was actually in. This is
   largely useful for sustained intervals but also for peaks.
2015-05-21 09:50:40 +01:00
Mark Liversedge
2f96e475ec Fixup sidebar refresh after RideItem::updateIntervals()
.. by introducing a specific signal to trigger it.

.. its very specific, but its more flexible (and a lot less
   work) than adopting a model for the QTreeView that would
   be a better 'architecture'.
2015-05-20 05:55:55 +01:00
grauser
7643c2cb00 Power Zones: Update existing HR range 2015-05-19 23:34:06 +02:00
grauser
b1946b50bc Power Zones: Update existing range 2015-05-19 22:47:30 +02:00
Mark Liversedge
1e3f7227e2 Fix IntervalSidebar SEGV on Save
Rebuilds the interval tree when a ride is saved and
refreshes intervals as a result.

There are a number of other scenarios that will also
need to call a sidebar refresh as a result of the
intervals being updated.

* edit ride data
* change metadata

There may be others lurking. This needs a review of
the code pathways leading to RideItem::updateIntervals()
and how we keep the sidebar in sync.
2015-05-19 21:17:12 +01:00
grauser
3b3c98187f Auto Interval Discovery : Update SPRINT detection 4 2015-05-19 21:13:00 +02:00
Mark Liversedge
2dda61bee3 Zone fingerprint include Pmax fixup
.. needed to change in two places in Zones.cpp !
2015-05-19 19:32:30 +01:00
grauser
d5238b7cf1 Auto Interval Discovery : Update SPRINT detection 3
try with 3 components model
2015-05-19 19:01:51 +02:00
Mark Liversedge
2ae96d3d8e Fix syntax error in RideItem.cpp 2015-05-19 11:49:59 +01:00
Mark Liversedge
fabd6bffc9 Fix off by on in the effort algorithm
.. subtraction in integrated series is for the period
   after the current point (i) not from the current point.
2015-05-19 11:43:28 +01:00
Mark Liversedge
353527af13 Fix off-by-two effort/sprint discovery
.. the integrated joules and resampling to 1sec code
   was not taking into account the first sample is 0 seconds
   and was incrementing 1 sample early too.

   As a result the integrated series was 2seconds ahead of the
   recorded data, meaning the discovered efforts and sprints
   would have a start time 2 seconds ahead of where they
   should have been.
2015-05-19 10:55:56 +01:00
grauser
81a3d487e6 Auto Interval Discovery : Update SPRINT detection 2 2015-05-18 23:18:27 +02:00
grauser
4690f0e605 Auto Interval Discovery : SPRINT detection correction 2015-05-18 22:12:07 +02:00
grauser
d285ec8d97 Auto Interval Discovery : Update SPRINT detection 2015-05-18 21:30:39 +02:00
grauser
d12d18c701 Auto Interval Discovery : SPRINT detection 2015-05-18 19:57:09 +02:00
Mark Liversedge
9027e1db02 Reinstating Interval functions: DELETE
.. you can now delete interval(s) via the hamburger menu
   or by right-clicking a specific interval.
2015-05-18 18:41:51 +01:00
Mark Liversedge
758e9256a1 Establish runtime link for USER intervals
.. from IntervalItem to RideFileInterval when
   the ridefile is opened
2015-05-18 15:44:21 +01:00
Mark Liversedge
c1739199b2 Fixups For JsonRideFile.y
.. for intervals now as pointers
2015-05-18 14:21:50 +01:00
Mark Liversedge
d5ae1bf685 RideFile::intervals_ now array of pointers
.. so we can keep a reference to the user interval
   in a ridefile from the rideitem and not worry about
   trying to match or handle index offsets into the array

.. this is required to fixup the relationship between
   an IntervalItem and a RideFileInterval in RideItem
   and RideFile respectively.
2015-05-18 13:57:21 +01:00
Mark Liversedge
2912982132 Reinstating Interval functions: ZOOM
.. you can now zoom out / zoom in for an interval.
.. the rest of the menus items are also shown but not active yet.
2015-05-18 12:25:32 +01:00
Mark Liversedge
ffce828c77 Add Pmax to Zones::fingerprint()
.. and minor cosmetic on edit.
2015-05-17 21:00:53 +01:00
grauser
66afa908b1 Power Zones: Add Pmax (with CP and W') 2015-05-17 21:14:08 +02:00
Mark Liversedge
3054541d3b Computrainer Serial Protocol Docs
.. should have added this a long time ago!
2015-05-17 15:31:00 +01:00
Mark Liversedge
f9c496f150 WKO+ 3 File Format Documentation
.. should have added to the repo a long time ago.
2015-05-17 15:26:20 +01:00
grauser
dec099fd21 Auto Interval Discovery : Update CLIMB detection 4 2015-05-17 10:02:53 +02:00
grauser
f292e523e2 Auto Interval Discovery : Update CLIMB detection 3 2015-05-16 20:18:38 +02:00
Mark Liversedge
ac77ff53d7 Add MMP % metric
.. good for intervals and shows the percentage of the
   PD model power duration you exercised at in the interval.
2015-05-16 16:33:59 +01:00
Mark Liversedge
b100ebbde4 Add Sustained Efforts
.. anything over 85% of the power for duration versus the configured
   CP and W' between 2mins and 1hr will be flagged as a sustained
   effort via the intervals for a ride.
2015-05-16 14:31:31 +01:00
Mark Liversedge
39b92ac29c Auto interval TTE uses 'quality'
.. searches for highest interval rather than longest
.. fixed double refresh() caused by calls to ride()
2015-05-16 13:48:44 +01:00
Mark Liversedge
50d4e9bde1 Search all interval names
.. not just user defined ones
2015-05-16 10:08:30 +01:00
Mark Liversedge
12b0ab68ac TTE time string not seconds
.. instead of 301s we now say 05:01
2015-05-15 23:52:19 +01:00
Mark Liversedge
54db2720e6 Fix SEGV on drag interval tree
.. reference IntervalItem* that is null for the
   interval type trees.
2015-05-15 13:17:33 +01:00
Mark Liversedge
4b32ed544c Autodiscovery of TTE efforts
.. they're pretty rare, but this code will find
   any TTE efforts between 1hr and 2 minutes.

.. it will be extended to find sustained efforts
   but this is just to get the code started
2015-05-15 11:00:13 +01:00
Mark Liversedge
ac947f6a32 Fix SEGV in CriticalPowerWindow
.. during initial startup when myRideItem is null
2015-05-14 22:26:04 +01:00
Mark Liversedge
3b90f147e4 Don't use QVector::removeAt() !
.. its not available on Qt 4
2015-05-14 14:51:29 +01:00
grauser
7312122cb0 Auto Interval Discovery : Update CLIMB detection 2 2015-05-13 23:13:08 +02:00
grauser
08c7eb4959 Auto Interval Discovery : Update CLIMB detection 2015-05-12 21:41:23 +02:00
grauser
644a8f069e Auto Interval Discovery : Add a ROUTE detection 2015-05-12 21:41:23 +02:00
grauser
edf9b826ff JouleDevice: Correct Joule GPS identification 2015-05-12 21:41:23 +02:00
Mark Liversedge
461501fe21 Drag and Drop interval into compare pane
.. fixup mime type pack/unpack code using IntervalItem
   from QTreeWidgetItem::data().
2015-05-12 20:05:28 +01:00
Mark Liversedge
502e671bc7 Chart menu rename "Close" to "Remove Chart"
.. it was misleading to most users and reflected the
   code structure more than the user interaction model !
2015-05-12 06:27:29 +01:00
Mark Liversedge
80ab042b25 3D Chart use RideItem::intervalsSelected()
.. it missed out on the refactor for intervals.
2015-05-12 05:43:47 +01:00
Mark Liversedge
166c8c6132 Escape interval names in rideDB.json
.. to make sure intervals with quotes in them don't
   break the parser.
2015-05-11 21:59:25 +01:00
Mark Liversedge
ca4de3b676 Fix color config update for Interval tree
.. it wasn't being reset when you changed the
   color config in options > appearance.
2015-05-11 21:34:53 +01:00
Mark Liversedge
a78214944f Fix rideDB.json growing !
.. needed to clear metric array for intervals when
   load() at startup !

.. also don't seek power bests when power not available
2015-05-11 20:07:02 +01:00
Mark Liversedge
8f03f38981 Merge pull request #1367 from amtriathlon/master
Added Peak Pace metrics for running and swimming
2015-05-11 11:17:48 +01:00
Alejandro Martinez
db2f25fc0b Added Peak Pace metrics for running and swimming
Durations are the same as for power except for 1 sec and 5 sec.
2015-05-10 20:15:22 -03:00
Mark Liversedge
377310c24f Sidebar Interval Type Font Bold 2015-05-10 17:51:00 +01:00
Mark Liversedge
05b19bc5b6 Fix Scatterplot SEGV interval
.. lots of issues introduced by refactor
2015-05-10 14:32:53 +01:00
Mark Liversedge
5ee6ae15b7 Don't point hover on PEAK POWER
.. in allplot, its really distracting !
2015-05-10 13:33:29 +01:00
Mark Liversedge
6cff666215 Interval Selected Fixups
.. GoogleMap wasn't working
.. CP ignored interval selection
2015-05-10 13:19:39 +01:00
Mark Liversedge
02d8add9b3 Fix RideDB format error
.. wrote empty METRICS array when all metrics zero in an
   interval. Its pretty rare but breaks the parser

.. this means that metric were being refreshed on every run
2015-05-10 11:38:24 +01:00
Mark Liversedge
70c9587428 Auto discover peak power
.. starting to get slow computing metrics for the
   longer duration intervals, need to think closely
   about the performance impact of this.
2015-05-10 10:52:47 +01:00
Mark Liversedge
9a9424f924 Fix SEGV allplot hover compare mode
.. tries to look at intervals for null rideitem
2015-05-10 09:47:51 +01:00
Mark Liversedge
3332b0228c Fix startKM/stopKM in RideDB.json
.. was getting lost due to cut and paste error

NOTE: you will also need to delete RideDB.json to get
      the problem fixed. I didn't think it was worthwhile
      updating the version number since no dev releases
      are out, noone except developers will be affected.
2015-05-10 09:14:09 +01:00
Mark Liversedge
67db9d59c8 Fix SEGV in PfPv item select
.. replotting in intervalHover was broken during
   the refactor for interval discovery
2015-05-10 09:00:23 +01:00
Mark Liversedge
9e63c6ee7d Don't wipe interval summary
.. on hover when intervals are selected
2015-05-10 08:44:55 +01:00
Mark Liversedge
6b2a2dbb65 Auto Interval Discovery (Part 3a of 3)
In this part we have now reinstated the sidebar interval tree
but it is refactored out of athlete and into AnalysisSidebar
where it belongs.

* you can hover and select/deselect intervals in the sidebar

Left to do;

* All the interval operations like sort, drag and drop, find
  delete etc do not work at present and will require some work

* Add a color button to the tree to let the user change the color
  for USER defined intervals

* Add more types of intervals to the discovery; esp routes and
  sustained intervals
2015-05-10 08:30:13 +01:00
Mark Liversedge
100c0be881 Auto Interval Discovery (Part 2 of 3)
In this part we have updated all the charts to reference
the RideItem::intervals() members instead of the TreeWidget
and RideFile::intervals().

The code to create/change/delete intervals is not included
so selecting and editing on charts/sidebar is disabled til
part 3 of the update, but hover should work properly.

Still left todo in future updates;

    * Updates to the interval sidebar to list intervals
      in a tree (by interval type) with a color selector

    * Code to create, edit, delete etc the intervals via
      the rideitem/intervalitem and see them reflected in
      the ridefile

    * Update to search for all the different types of
      IntervalItems including routes and sustained intervals
2015-05-09 18:56:42 +01:00
grauser
b0c4b7786f Auto Interval Discovery : Add a first (test) CLIMB detection 2015-05-04 23:05:42 +02:00
grauser
4500899d0e JouleDevice: add getJouleType method 2015-05-04 22:26:36 +02:00
grauser
9751a85bf7 JouleDevice: Add Joule GPS+ device type 2015-05-04 22:15:08 +02:00
Mark Liversedge
1710c37f92 Fix BEST Symbol clash
.. not sure why tbh, but lexer symbols clashed with
   enums.

.. so removed BEST interval type - we may just add them
   back as BESTPOWER, BESTHR etc later
2015-05-04 21:04:48 +01:00
Mark Liversedge
9e59e5d60c Freetext search looks at interval names
.. now we have it available in the cache we can
   search interval names when performing a free text
   search.
2015-05-04 19:55:23 +01:00
Mark Liversedge
e9b9bb6c04 Deprecated and missed off commit 2015-05-04 18:20:05 +01:00
Mark Liversedge
8a3e35b880 IntervalItem::refresh()
Computes the metrics for an interval and creates a temporary
ridefile locally so you don't have to.

.. previous design should have pushed this into the
   class instead of performing it in RideItem

.. now there should be no reason to create a ridefile
   during interval discovery.
2015-05-04 18:17:33 +01:00
Mark Liversedge
90c053f09f Auto Interval Discovery (Part 1 of 3)
In this part we have added Intervals to RideDB.json and
are refreshed within RideItem, including interval metrics.

At present the IntervalItems are loaded from the ride file
and we ignore peaks and entire laps in favour of creating
them in the discovery code.

Still left todo in future updates;

* Updates to the interval sidebar to list intervals
  in a tree (by interval type) with a color selector

* Update all the interval charts and dialogs to use IntervalItem
  and the updated sidebar

* Update to search for all the different types of
  IntervalItems including climbs and routes

NOTE: We will not be adding an Interval view until v4.0
2015-05-04 15:59:16 +01:00
Mark Liversedge
4b81b6ddc5 Mac QT5 hide toolbar on fullscreen
.. to avoid glitch related to native widgets in toolbar and
   inability to switch back from fullscreen mode on a Mac.

.. see QTBUG https://bugreports.qt.io/browse/QTBUG-43299
   which doesn't look like it will be fixed any time soon.
2015-05-02 13:26:35 +01:00
Mark Liversedge
feba99481c Code Spring Clean
.. compiler nits
2015-05-02 12:25:01 +01:00
Mark Liversedge
bf4ca0af64 Remove old Intervals View
.. we are taking a different approach for v3.2

.. the auto discovery will augment rides and maintain a cache
   of all intervals across all rides

.. the discovered intervals will be selectable alongside ride
   intervals in the sidebar

.. new interval views will be developed in v4.0
2015-05-01 14:03:40 +01:00
grauser
0daae7f020 Interval: Add a temporary model for Interval view 2015-04-30 18:38:43 +02:00
grauser
49e964f585 Interval: Add interval type (Device, User, Peak, Route,...) 2015-04-30 18:20:22 +02:00
Mark Liversedge
de1262b010 Fix SEGV Mac with LTM spanslider style
.. applying to buttons before they had been created.
2015-04-25 15:18:22 +01:00
Mark Liversedge
bc87b16acf Add SpanSlider to LTM Chart
.. so we can zoom / span on charts.

.. have not applied to stack or compare mode
2015-04-25 13:49:23 +01:00
Mark Liversedge
008e217ec0 Add another /10 for Workbeats
.. brings it back to same scale as BikeScore
2015-04-24 10:37:21 +01:00
Mark Liversedge
cdc8857536 Workbeat Stress
.. heartbeats x joules, when unfit you may generate low watts
   but with a high hr, as opposed to the other way around.

.. an attempt to combine central and peripheral stress, can be
   used to compare with power only stress metrics
2015-04-24 10:01:47 +01:00
grauser
58c8c0bf2a Model: Some tests 2015-04-14 08:00:58 +02:00
grauser
59bc0c3307 Update French translation 2015-04-14 08:00:58 +02:00
Mark Liversedge
b100fc23de Fix label isolation UI nit
.. kept showing labels that should be hidden when hovering
   over an axis.
2015-04-11 10:03:56 +01:00
Mark Liversedge
dbfee3db52 Typo += instead of plain =
.. has same effect since sample.km is zero until we get to
   this line, but it is misleading to read.
2015-04-10 09:11:07 +01:00
Mark Liversedge
f5bfcb112b Racermate fix to accumulate distance
.. not averaging it !
2015-04-10 09:04:16 +01:00
Mark Liversedge
a9150d8a4e Scatter connect dots when not framed
.. when selecting intervals the points on a scatter plot
   are joined when they are not being framed against the
   rest of the ride

.. this is to provide some context about the order the
   data was generated in.

.. would be nice if we could have arrows (vectors)
2015-04-10 08:36:07 +01:00
Mark Liversedge
bdf346a2e8 Better comments in TxtRideFile resampling code
.. not happy about distance handling, its not right, need
   to accumulate not average.
2015-04-09 22:08:23 +01:00
Mark Liversedge
f4434892dd Racermate Fixed 1s Samplerate
.. racermate format for VELOtron and Computrainer use
   a variable rate recording, mostly due to PC interrupts
   and workload (e.g. 620ms, 619ms, 624ms sample rates)

.. so we resample on import to 1s samples, the 1000ms sample
   rate can be changed in the code to 500ms or whatever

.. this is needed to enable resampling and merging with other
   data files, most notably from Moxy.

Fixes #1359
2015-04-09 20:23:55 +01:00
Mark Liversedge
926a08f1b6 About Dialog - libsamplerate
.. show on the version dialog

.. fix up 'delete' -> 'free()' for malloc'ed
   memory used with libsamplerate
2015-04-08 20:59:52 +01:00
Mark Liversedge
9d0e3e241e Add ability to export all csv
.. for batch export
2015-04-08 17:21:24 +01:00
Mark Liversedge
3f1b9fe5d1 RideFile::resample() use libsamplerate
.. if it is available.
2015-04-08 14:03:11 +01:00
Mark Liversedge
7a5d937336 Merge pull request #1358 from aevanforeest/master
Added virtual power for Elite Arion Mag rollers
2015-04-08 11:19:37 +01:00
aevanforeest
474148670b Added virtual power for Elite Arion Mag rollers 2015-04-08 12:15:00 +02:00
aevanforeest
37edf945d8 Added virtual power for Elite Arion Mag roller 2015-04-08 12:13:43 +02:00
Mark Liversedge
878776e051 Add RideFile::arePresent()
.. to get a list of all data series that are present in the ridefile
.. used when working with libsamplerate to pack/unpack data series
2015-04-08 10:51:39 +01:00
Mark Liversedge
e96fcd170c New optional library libsamplerate
.. this has been added to support some data handling activity
   to support a blood glucose study and is not really for general
   usage.

.. the libsamplerate library is being used in ridefile::resample()
   which is only used by merge and export.

.. we may choose to formalise this library later but for now it
   is not required for any functionality and is not used in
   release builds.
2015-04-08 10:08:15 +01:00
Mark Liversedge
1ef8910db8 Add DPI Scaling Factor
.. set when on a Windows platform, but not used.

.. when testing on a QT 5.4 release the font metrics appear
   to take the scaling factor into account, but adding the code
   for compatibility in the future (if we need it)
2015-04-07 17:54:51 +01:00
Mark Liversedge
3e2cf20255 Add support for vpower on CycleOps Magneto Pro
Fixes #688
2015-04-07 10:59:16 +01:00
Mark Liversedge
ad9398208f Add Support for Elite Muin 2013
.. as provided by "muinuser" on github

Fixes #1075
2015-04-07 10:40:55 +01:00
Mark Liversedge
a5fb9846f1 It's named after AJ Ward-Smith
.. not Ward/Smith or Ward Smith.
2015-04-06 20:10:54 +01:00
Mark Liversedge
99e455a1c4 Ward/Smith Fixup
.. LOL. Mike warned me to use wPmax not Pmax and I still
   went ahead and made that mistake.

D'Oh.
2015-04-06 12:06:23 +01:00
Mark Liversedge
50ddbe62ab Add WardSmith to CP History
.. and little fixup for code (cut/paste error)
2015-04-06 12:00:58 +01:00
Mark Liversedge
ae29908a3d Add Ward/Smith Model 2015-04-06 11:47:06 +01:00
Mark Liversedge
9a41e4a897 Merge pull request #1356 from Deadolus/qwtindlabels
Adding Indended Plot Markers for AllPlot
2015-04-05 16:57:13 +01:00
Simon Egli (Silzo)
787932f183 Adding Indended Plot Markers for AllPlot
I intentionally didn't add the IndendPlotMarkers to all markings,
but only to the interval markers at the top of the plot.

NOTE: the height of the spacing is actually what Qwt tells us
is the textheight.
I think this spacing is rather big.
We might want to reduce it somehow in the future.

Signed-off-by: Simon Egli (Silzo) <smn.egli@gmail.com>
2015-04-05 17:47:15 +02:00
Mark Liversedge
e9b834f553 Reset/set warn save on exit flag
.. in options/preferences, since if you uncheck it there is
   no way of setting it back on again (!)
2015-04-05 10:44:17 +01:00
Mark Liversedge
3eb3698d6f Merge pull request #1349 from kamilj/master
New Virtual Power device - Minoura V270/V150/V130/LR340/LR540 Trainer and bug fixes
2015-04-04 16:19:42 +01:00
Mark Liversedge
a37c91e004 Merge pull request #1355 from Deadolus/qwtindlabels
Adding a class that enables indending QwtPlotMarkers.
2015-04-04 16:17:21 +01:00
Simon Egli (Silzo)
602d108b82 Adding a class that enables indending QwtPlotMarkers.
This commit is adding a new class QwtIndPlotMarker that will enable us
to indend Labels. The usage is pretty much the same,
please look at the changes in LTMPlot.cpp to see what will
change for using the new class.
So far the functionality is implemented for horizontally written labels only.

This solves the issue of all Labels (e.g. Seasons and events in LTMPlot case)
being on one line and thus being unreadable.

Signed-off-by: Simon Egli (Silzo) <smn.egli@gmail.com>
2015-04-04 13:56:21 +02:00
shmoo
57314d0f56 Order of operations for ELITE SUPERCRONO POWER MAG Trainer 2015-03-23 18:42:29 +01:00
shmoo
42c3ac51e2 Order of operations for SARIS POWERBEAM PRO Trainer 2015-03-23 18:36:04 +01:00
shmoo
296c59f0e4 Order for operations for Minoura V100 Trainer 2015-03-22 16:17:12 +01:00
shmoo
ba3487b112 A more accurate calculation, typo 2015-03-22 16:06:18 +01:00
shmoo
3cc415f208 A more accurate calculation 2015-03-22 16:02:49 +01:00
shmoo
dce1add51b New Virtual Power device - Minoura V270/V130/LR320/LR540 Trainer 2015-03-22 15:13:15 +01:00
grauser
10003e4806 Translation: lupdate + some fr translation 2015-03-20 07:30:13 +01:00
Damien
805ff21cb9 WithingsDownload: correct new and received measures numbers
We can receive 0 value without error.
In this case we don't want to display negativ value
and we don't want to update the cache.
2015-03-16 21:55:30 +01:00
Damien
aca583ee0b CvsRideFile: Update CP Plot export importation 2015-03-16 21:50:22 +01:00
Damien
33158f9ba9 LTMPlot: Add event on last day 2015-03-16 21:50:22 +01:00
Mark Liversedge
485004f030 Merge pull request #1335 from amtriathlon/master
Fixed distance from LapsEditor in Manual Workouts with imperial units
2015-03-16 19:22:19 +00:00
Mark Liversedge
511eb77df6 Merge pull request #1343 from cleeland/feature/add_zwift_device
Add FIT file device ID parsing for Zwift.
2015-03-16 19:21:48 +00:00
Mark Liversedge
bd9775bb9f Recognise Stephan Lips
.. in contributors
2015-03-16 17:21:00 +00:00
Stephan Lips
9fea4f8ad3 SRM Powercontrol 8 FIT support
.. the PC8 uses FIT files (yay!) and this patch ensures we set the
   device type properly.
2015-03-16 17:19:42 +00:00
Chris Cleeland
d0fc5627b5 Add FIT file device ID parsing for Zwift.
There is no official proclamation that ID 260:0 is officially assigned
to Zwift; it is simply the value observed in data files downloaded from
Zwift for the author. A support request opened with Zwift requesting
confirmation has gone unanswered.
2015-03-02 08:28:10 -06:00
Joern
3bf39f4f3f Merge pull request #1341 from Joern-R/t1
Update Wiki
2015-02-28 09:34:54 +01:00
Joern
ca02ed4454 Update Wiki
... 3.2 Screenshots
2015-02-28 09:35:39 +01:00
Alejandro Martinez
7c3219a6c2 Fixed distance from LapsEditor in Manual Workouts with imperial units 2015-02-24 11:13:38 -03:00
Mark Liversedge
0f2fc731a2 Merge pull request #1333 from amtriathlon/pwx
Added support for smart recording and lap swimming in pwx files
2015-02-24 06:55:04 +00:00
Alejandro Martinez
fc026ec219 Added support for smart recording and lap swimming in pwx files
Smart recording interpolation fills the gaps in pwx files present
when the original .fit or .tcx files had them.
Test files for running: 1 activity in .fit, .tcx and .pwx formats
Lap swimming expands the sample-per-length and pause to 1-sec sampling.
Test files for lap swimming: 2 activities in .pwx format,
one from Garmin 910xt other from Finis SwimSense.
2015-02-23 21:09:36 -03:00
Mark Liversedge
c4a819db67 Added heartbeats metric
.. count of heartbeats per interval
2015-02-23 16:10:43 +00:00
Mark Liversedge
39fb140b82 Merge pull request #1331 from Joern-R/tree
TreeMap - UI nits/improvements
2015-02-23 15:14:15 +00:00
Joern
3151b1fee3 Merge pull request #1332 from Joern-R/de
Update Translation DE
2015-02-22 13:30:41 +01:00
Joern
750fac2606 Update Translation DE
... new terms and corrections
2015-02-22 13:30:36 +01:00
Joern
f3d015b2bb TreeMap/LTM Popup - Variable not filled
... counter variable not filled after moving from rides to activities
2015-02-22 13:07:17 +01:00
Joern
528221170c TreeMap - UI nits/improvements
... draw Level 1 text at the end to have full contrast (not overlapped
by level 2 brush)
... dynamically choose font size for Level 2 texts from 4 options (based
on available space in rectangle) - easier readable on big screen - still
usable on small screen
2015-02-22 12:32:54 +01:00
Mark Liversedge
e21540f469 Robot sets tHb and SmO2
.. to help with testing
2015-02-22 09:42:31 +00:00
Joern
6fde93afe0 Merge pull request #1329 from Joern-R/xml2
Missed to remove old "file.open"  code line
2015-02-21 19:18:38 +01:00
Joern
59da5f83b2 Missed to remove old "file.open" code line
... need to be removed
2015-02-21 19:11:17 +01:00
Mark Liversedge
ad160cbf05 Merge pull request #1328 from Joern-R/xml2
Report- File "Open for Write" errors
2015-02-21 18:07:39 +00:00
Joern
5df7503904 Report- File "Open for Write" errors
... for all config files, which need to be written, show error Popup, if
file cannot be openend in "Write" mode
2015-02-21 19:03:23 +01:00
Mark Liversedge
9e3b33638f Merge pull request #1327 from Joern-R/xml
Error handling - if XML file is "write-protected"
2015-02-21 11:52:22 +00:00
Joern
1d11a6b7ca Error handling - if XML file is "write-protected"
... report error when any of the "*-layout.xml" files cannot be written
to (e.g. due to write protection
2015-02-21 11:50:55 +01:00
Mark Liversedge
ddef4ec356 Merge pull request #1326 from Joern-R/test
Upgrade - Folder - verify upgrade demand
2015-02-20 16:39:54 +00:00
Joern
3c409241b7 Upgrade - Folder - verify upgrade demand
... check if the  "folder-upgrade" has really taken place - if not
reset, Upgrade Flag to force the new folder structure upgrade
... (allows to revert to the pre-upgrade backup of a folder structure -
which during test already had be successfully upgraded and therefore
marked as being ok).
2015-02-20 17:39:44 +01:00
Mark Liversedge
b60c93e343 Merge pull request #1325 from amtriathlon/master
Disabled pause expansion in lap swimming .tcx files when Smart Recording...
2015-02-20 15:40:08 +00:00
Alejandro Martinez
18d8d131ab Disabled pause expansion in lap swimming .tcx files when Smart Recording is disabled
To be consistent and allow the user to load de file without modifications if desired
2015-02-20 12:36:01 -03:00
Mark Liversedge
0b5af0d7b6 Merge pull request #1324 from dresco/ANT
ANT: Opening incorrect device
2015-02-19 22:23:47 +00:00
Mark Liversedge
9e510ca08b Merge pull request #1322 from amtriathlon/tcx
Add support for pool swimming tcx files from Garmin Connect
2015-02-19 22:22:51 +00:00
Jon Escombe
d43ee7b6a4 ANT: Opening incorrect device
Train view can display invalid data after opening the
wrong ANT sensor.
2015-02-19 15:19:53 +00:00
Alejandro Martinez
ea37db2167 Add support for pool swimming tcx files from Garmin Connect
When Sport="Other", there is no GPS data but there is distance information
it is assumed the file cames from lap swimming.
They have one Trackpoint per length, which are expanded to one point per second
in similar way to Smart Recording and laps without Trackpoints to signal pauses
which are expanded to one point per second up to 10x Smart Recording HWM.
Added contributed Garmin FR910xt pool swim file to test/rides folder
2015-02-19 12:01:12 -03:00
Mark Liversedge
e0688da2d7 Merge pull request #1321 from Joern-R/ramp
Manual Ride Dialog - some nits
2015-02-18 19:19:35 +00:00
Mark Liversedge
4856e58dac Merge pull request #1320 from amtriathlon/master
Fixed conversion errors in pace units
2015-02-18 19:18:20 +00:00
Joern
e3e00f2761 Manual Ride Dialog - some nits
... allow resizing of Dialog Window (if using bigger fonts/translation)
to see all texts
... allow entry of Average Speed with precision (1) - like the metric is
defined
2015-02-18 20:11:32 +01:00
Alejandro Martinez
92145eac34 Fixed problem with cached Pace metrics when using imperial units
Added a non-virtual value method to retrieve the value to be stored in caches,
independent of metric settings.
2015-02-18 15:55:49 -03:00
Alejandro Martinez
c5a536e10f Fixed conversion error in swim pace units 2015-02-18 15:06:08 -03:00
Alejandro Martinez
ad822a9472 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-17 18:12:21 -03:00
Mark Liversedge
2cbca0a812 Improve Charting of tHb
.. more decimal places and truncate y axis to narrow range
   it falls between.

.. still gets blown by zero values, but thats a data issue
2015-02-16 16:51:38 +00:00
Mark Liversedge
744ddc4a31 Merge pull request #1317 from Joern-R/t1
Estimates Plot - some fixes
2015-02-15 15:29:20 +00:00
Joern
fe93793e5b Estimates Plot - some fixes
... shift plot if start date is earlier than any Power Estimates exist
... enhance grouping (calculation of averages for month/years/all
grouping)
... adjust estimates calculation
... to calculate non-overlapping weeks data
... to not create any "infinite" data for weeks before the first Power
based actitivity exists
2015-02-15 16:11:58 +01:00
Mark Liversedge
d254e0b9ae Merge pull request #1316 from Joern-R/column
Dump/QVector Assert - when date range does not match data
2015-02-15 09:40:44 +00:00
Joern
c42b003715 Dump/QVector Assert - when date range does not match data
... e.g. when having a data range 2015 - where the data is only
available 2013 to mid 2014
2015-02-14 16:56:07 +01:00
Alejandro Martinez
1cfc023473 Adjust decimals for distance metric and max rows in LapsEditor 2015-02-13 22:31:03 -03:00
Alejandro Martinez
9e2b6079f4 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-13 15:58:39 -03:00
Mark Liversedge
5ea16e9b1e Fix Veloclinic model t=0 bug 2015-02-13 14:09:57 +00:00
Alejandro Martinez
a6484a3430 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-13 09:42:39 -03:00
Mark Liversedge
a78dce2cb9 Add Veloclinic CP slider
.. to adjust when seeking estimate for CP
2015-02-13 11:51:33 +00:00
Alejandro Martinez
a9a31edb3a Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-10 09:14:40 -03:00
Mark Liversedge
4b953a214c Merge pull request #1314 from amtriathlon/master
Enabled edition of Pace zones lows in pace units
2015-02-10 07:01:57 +00:00
Alejandro Martinez
d63fdb6126 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-09 20:17:53 -03:00
Alejandro Martinez
ecc02d22b7 ManualRideDialong Override time_riding to duration
For backward compatibility, but only if we don't have better information
2015-02-09 19:41:20 -03:00
Alejandro Martinez
0a44e4c7ab Enable edition of Pace zones lows in pace units
Display and edition in Pace units, according to sport preferrences
Pace 00:00 is used to represent 0 kph
Fixed PaceZones::read to allow non-integer limits
2015-02-09 19:30:36 -03:00
Mark Liversedge
87f0729d43 Revert RideMetric::imperialPrecision()
.. introduced within bae36e6b
2015-02-09 22:07:29 +00:00
Mark Liversedge
c84cfae01d Less Spacing in AllPlot settings
.. makes the dialog smaller for those running on a
   small screen.
2015-02-09 18:42:40 +00:00
Alejandro Martinez
5fd2873df2 AllPlotWindow - add average power to the end of the selection name only if not zero
It's annoying when there is no power
2015-02-09 14:30:06 -03:00
Mark Liversedge
5b1e035517 Column Chooser scrollable
.. it was too difficult to use as a big matrix
2015-02-09 15:03:33 +00:00
Mark Liversedge
2b0de63b32 Merge pull request #1313 from amtriathlon/master
Reset metric value and count before to call compute on update
2015-02-09 14:38:26 +00:00
Alejandro Martinez
1be93193fe Reset metric value and count before to call compute on update
Follow up from #1310, to contemplate other metrics where compute method doesn't set them
2015-02-09 11:25:49 -03:00
Mark Liversedge
dd339a0a2e Merge pull request #1312 from amtriathlon/master
Ensured compute method call setValue for Run/Swim metrics
2015-02-09 08:48:58 +00:00
Alejandro Martinez
1577af489b Ensured compute method call setValue for Run/Swim metrics
Fixes #1310
Also for BikeScore and prevents division by zero in XPower when recIntSecs == 0
2015-02-08 23:24:19 -03:00
Joern
226e2c928d Merge pull request #1311 from Joern-R/wiki2
Update Wiki
2015-02-08 18:24:48 +01:00
Joern
4531765d1b Update Wiki
... some screenshots
2015-02-08 18:24:53 +01:00
Mark Liversedge
613f6f6a89 Merge pull request #1309 from Joern-R/upgrade3
Upgrade - enforce root() clean-up
2015-02-08 14:19:18 +00:00
Joern
e7d2faa381 Upgrade - enforce root() clean-up
... problems on deleting the source files (even they have have been
successfully copied to /target) are now reported as error (which require
to be cleaned up before Upgrade is marked as "successful")

... reason is that such "orphan" files may cause problems - e.g. if the
"upgrade-successful" indicator get's lost and we want to start 3.2 with
a fully cleaned file structure.
2015-02-08 12:46:30 +01:00
Mark Liversedge
bc301d091f Merge pull request #1307 from amtriathlon/master
Fixed lack of reset for paceZoneSelectedArray in PowerHIst
2015-02-07 23:37:04 +00:00
Alejandro Martinez
7b5c0b0eb2 Fixed lack of reset for paceZoneSelectedArray in PowerHIst 2015-02-07 20:26:01 -03:00
Mark Liversedge
3d630442c9 Merge pull request #1306 from Joern-R/c
Calendar Text not shown if language <> "en"
2015-02-05 18:11:53 +00:00
Joern
f5afd6c112 Calendar Text not shown if language <> "en"
... column "Calendar Text" must not be translated in GcCalendarModel.h
(since it's also not translated in "SpecialFields" any more)
2015-02-05 19:03:06 +01:00
Mark Liversedge
8b609d2da2 Diary Layout for v3.2
.. more of a 'dashboard' than calendar view

.. the calendar will be updated in v4.0
2015-02-05 17:45:01 +00:00
Mark Liversedge
f70a01ca48 Merge pull request #1304 from Joern-R/upgrade
Upgrade - More checks/messages
2015-02-05 16:35:49 +00:00
Joern
97854bdd8c Upgrade - More checks/messages
... check for valid Activity Filename format "YY_MM_DD_HH_MM_SS" (for
non-JSON files before conversion)
... check if the  Activity filename contains a valid date/time
... report if File is not readable - not just "skip" it
2015-02-05 17:31:18 +01:00
Mark Liversedge
17bb16708d Add aPower versions of Skiba Metrics
.. aBikeScore, axPower etc.
2015-02-05 14:42:56 +00:00
Mark Liversedge
ff8aba4ec2 Add Coggan metrics from aPower
.. so can adjust stress for altitude, which is useful for
   those that train at altitude regularly (e.g. training camps).
2015-02-05 14:32:04 +00:00
Mark Liversedge
226e81608e Increment DBSchema for last commit
.. to force a recompute of the metrics
2015-02-05 13:47:39 +00:00
Mark Liversedge
46c02ea4e6 Merge pull request #1303 from amtriathlon/master
Use Duration when Time Moving is zero in Session RPE and Daniels EqP
2015-02-05 13:43:31 +00:00
Alejandro Martinez
36991ae45e Use Duration when Time Moving is zero in Session RPE and Daniels EqP
Similar to TRIMP points, Fixes #1265
2015-02-05 10:35:53 -03:00
Mark Liversedge
b6b2472419 Merge pull request #1301 from amtriathlon/master
Simplified IntervalSummaryWindow removing Pace special cases
2015-02-05 07:31:47 +00:00
Alejandro Martinez
9348dcf52d Removed special case for Pace in RideSummary
Used RideItem::getStringForSymbol
Modified RideCache::getAggregate to use RideMetric::toString
2015-02-04 21:30:47 -03:00
Alejandro Martinez
5703cfa116 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-04 17:56:07 -03:00
Mark Liversedge
efe7a5d0dd Fix RideNavigator::cursorRide()
.. new ridecache model and proxy interaction needed
   fixing up -- cursorRide() was not working at all !

Fixes #1300
2015-02-04 20:34:54 +00:00
Alejandro Martinez
34e7bb6d08 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-02-04 09:32:02 -03:00
Mark Liversedge
fd07763891 Merge pull request #1299 from amtriathlon/master
Several fixes related to run and swim metrics based on errors reported by users
2015-02-04 06:59:51 +00:00
Alejandro Martinez
234481a541 Simplified IntervalSummaryWindow removing Pace special cases 2015-02-03 23:35:45 -03:00
Alejandro Martinez
ea5599b76e Fixed GOVSS and SwimScore estimation when there is no speed channel but distance is overriden
Distance/Duration is a better approximation for Avg Speed than 0.0
and Duration is better than Time Moving in GOVSS/SwimScore estimation
for these cases.
2015-02-03 21:32:16 -03:00
Alejandro Martinez
7517b359e3 Simplified RideSummaryWindow removing some Pace special cases
Using the overriden methods.
The aggregation special case remains.
2015-02-03 20:49:09 -03:00
Alejandro Martinez
821542c7fe Fixed Pace and Swim Pace units setting
Pace and xPace metrics use GC_PACE units setting
Pace Swim and xPace Swim metrics use Swim GC_SWIMPACE units setting
2015-02-03 20:19:08 -03:00
Alejandro Martinez
436128f340 Fixed lower-is-best for Pace metrics
Also removed isTime since time formatting assumes seconds and they are in minutes,
it remains pending to change formating to mm:ss.
2015-02-03 15:06:10 -03:00
Mark Liversedge
816ff5f3a1 Merge pull request #1291 from amtriathlon/LapsEditor
LapsEditor - Initial Version for swimming and running
2015-02-03 16:21:36 +00:00
Mark Liversedge
23503aa25f Scatter Plot Garmin PS shows TE
.. cut and paste error.
2015-02-02 22:32:05 +00:00
Mark Liversedge
d7c5e705cf Yosemite Scope Bar Button Sizes
.. made them slightly wider on Yosemite
2015-02-02 20:53:56 +00:00
Mark Liversedge
7035c09d37 Fix RideMetadata Flush and Focus SAVE bug
.. metadata only flushed when ride marked dirty, but
   ride won't be marked dirty until metadata focus/edit
   ends.

.. because opening a menu doesn't change focus we need to
   use the flush event to trigger the focus/edit end function
2015-02-02 19:28:35 +00:00
Mark Liversedge
ad65688ece Merge pull request #1297 from Joern-R/rename
Combined Pull request (with different topic commits)
2015-02-02 16:40:35 +00:00
Mark Liversedge
ac8174ea4d Merge pull request #1295 from amtriathlon/master
Updated Spanish Translation
2015-02-02 16:39:58 +00:00
Mark Liversedge
0f9bd25847 Merge pull request #1245 from stschake/tacxvortex-refresh-load
Periodically refresh Tacx Vortex load setpoint to avoid dropouts
2015-02-02 16:39:29 +00:00
Mark Liversedge
528aa2400f Config Changes on keywords field changes
.. if you changed the field that was being used to color
   the ride list it wouldn't spot it and refresh.
2015-02-02 16:08:27 +00:00
Mark Liversedge
907ba634c2 Refresh RideFileCache when Weight changes
.. was not refreshed previously (!)

.. need to optimise this to only recompute w/kg stuff
   rather than the entire cache for the ride when its
   just because the athlete weight changed.
2015-02-02 13:38:52 +00:00
Joern
aea39b8ec8 Update Translation DE
... corrections/completion
2015-01-31 19:26:54 +01:00
Joern
d18c6346d4 Translation Enablement
... ErgDB Download - enable Translation
... fix double count for succesful downloads
2015-01-31 19:24:52 +01:00
Joern
7e1b7729dd HelpWhatsThis - Rename "Ride" by "Activity
... adjus the Wiki pathes to new names
2015-01-31 19:13:38 +01:00
Alejandro Martinez
26f6a36cba Updated Spanish Translation 2015-01-30 18:58:56 -03:00
Joern
d4065d3c99 Merge pull request #1294 from Joern-R/de
Update Translation DE
2015-01-30 19:49:58 +01:00
Joern
f14b785dbc Update Translation DE
... rename "Rides" to "Aktivity"
2015-01-30 19:49:05 +01:00
Mark Liversedge
54707abcd8 Time Riding renamed to Moving
.. to reflect multsport use
2015-01-30 16:51:29 +00:00
Joern
d9ff54c2ad Merge pull request #1293 from Joern-R/wike
Wiki: Terminology: Rename Ride->Activity
2015-01-30 17:44:50 +01:00
Joern
5454c45fbd Wiki: Terminology:Ride->Activities -
... update filenames so that fit to the updated Wiki documents
2015-01-30 17:44:23 +01:00
Mark Liversedge
fb994fa5e7 Rename Ride to Activity
.. across the code, except where it clearly is a ride
   e.g. importing PowerTap or SRM
2015-01-30 10:59:56 +00:00
Mark Liversedge
728c9a6537 Merge pull request #1292 from Joern-R/smart
Fit-File Format - Smart Recording
2015-01-30 09:35:05 +00:00
Alejandro Martinez
2286f670df LapsEditor - Initial Version for swimming and running
Allows to generate data points for manual activities from series of
work/rest intervas with distance/duration information and reps count.
It is enabled once sport is entered as Swim or Run and distance units
follows pace preferences for the selected sport.
Duration and Distance for the activity are calculated from laps information,
but it can be overridden by the user.
If LapsEditor is reactivated the lap information is preserved to allow corrections,
provided the sport is not changed.
Input method for duration is selected for simplicity and easy of input using
numeric pad, tab and enter.
2015-01-29 20:47:19 -03:00
Joern
f1a37ea895 Fit-File Format - Smart Recording
... fix .FIT format Smart Recording (similar logic like for .TCX)
... use the GC-Preferences Settings to determine if Gaps shall be filled
(and which Gap size)
2015-01-29 19:02:50 +01:00
Mark Liversedge
8a4295996d Recognise Jan de Visser
.. in contributors on about dialog
2015-01-28 22:39:10 +00:00
Jan de Visser
6632226e00 Use the FIT 'sport' field and it's associated enum. Populate the RideFile 'Sport' tag and switch between cycling and running cadence.
Swim files are recognized and the 'Sport' tag is properly filled, but nothing else particularly useful is read. Not even date/time.
2015-01-28 22:37:16 +00:00
Mark Liversedge
ae7d4f511a Merge pull request #1290 from amtriathlon/master
Updated Spanish Translation
2015-01-27 14:53:54 +00:00
Alejandro Martinez
c146c04aef Updated Spanish Translation 2015-01-27 11:49:02 -03:00
Mark Liversedge
0feefc4a26 Merge pull request #1289 from amtriathlon/master
Fixed minor interval alignment issue
2015-01-27 13:32:57 +00:00
Alejandro Martinez
7015011adb Fixed minor interval alignment issue
The problem is barely noticeable in cycling activities but
annoying for run and swim intervals.
Added synthetic .csv for testing.
2015-01-27 09:52:41 -03:00
Joern
c643ad2e0a Merge pull request #1287 from Joern-R/wiki
Wiki Update
2015-01-26 18:44:56 +01:00
Joern
86cade882d Wiki Update
... corrected pictures
2015-01-26 18:44:22 +01:00
Mark Liversedge
48d10ea033 Add Sigma to FIT manufacturers
Fixes #1286
2015-01-26 09:40:57 +00:00
Damien
7b07a380fc ANT: use QDateTime for lastCadenceMessage 2015-01-26 08:16:41 +01:00
Damien
8518cdb643 Update Translation FR (1/2) 2015-01-26 08:16:41 +01:00
Mark Liversedge
a9e0ef14b6 Merge pull request #1283 from Joern-R/workout
Workout Creator - Show Ride Time / Translation Enablement
2015-01-25 14:28:53 +00:00
Joern
411ea4e77a Workout Creator - Show Ride Time / Translation Enablement
... show summary time_riding in workout wizard
... add translation enablment tr() to Workout Wizard
2015-01-25 12:26:12 +01:00
Mark Liversedge
a7f4585d70 Merge pull request #1282 from amtriathlon/master
Added completers to Sport and Workout Code fields in ManualRideDialog
2015-01-25 09:29:03 +00:00
Alejandro Martinez
1cf7b14bee Added completers to Sport and Workout Code fields in ManualRideDialog
So input method is the same as in RideMetadata
2015-01-24 21:55:40 -03:00
Joern
98065ede18 Merge pull request #1281 from Joern-R/de
Update Translation DE
2015-01-24 16:32:34 +01:00
Joern
09718b708b Update Translation DE
... Translation DE
2015-01-24 16:32:10 +01:00
Mark Liversedge
85f4351ffa Merge pull request #1280 from Joern-R/rename
Folder Upgrade adjust to 3.2 Version naming
2015-01-24 13:50:57 +00:00
Joern
fa5642c95f Folder Upgrade adjust to 3.2 Version
... make Upgrade Marker release independent
... adjust the texts from 3.11 to 3.2 verson id

... this will just make the Upgrade procedure run ONCE again for
Athletes which have been converted by a DEV build - but just to
check/report sucess
2015-01-24 14:22:37 +01:00
Mark Liversedge
a888f6a77b Merge pull request #1279 from amtriathlon/master
Fixed GOVSS & SwimScore for manual workouts
2015-01-24 11:59:44 +00:00
Alejandro Martinez
bbc978b77a Fixed GOVSS & SwimScore for manual workouts
Forgot to include relative intensity
2015-01-24 08:49:14 -03:00
Alejandro Martinez
f394e68b67 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-23 20:36:05 -03:00
Mark Liversedge
1afcc52cbe Merge pull request #1274 from amtriathlon/master
Fixed Pace units in IntervalSummaryWindow
2015-01-23 23:33:04 +00:00
Alejandro Martinez
22885a7dbc Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-23 20:32:06 -03:00
Alejandro Martinez
5cc97fe0dc Fixed Pace units in IntervalSummaryWindow
Run and Swim Pace/xPace follow pace unit preferences
2015-01-23 20:27:42 -03:00
Damien
e4d6a5e22c ANT: Priority for cadence from cadence or speed/cadence sensor
fixes #502
2015-01-23 23:36:40 +01:00
Alejandro Martinez
beca209de4 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-23 17:09:58 -03:00
Mark Liversedge
d3f0ab5449 Merge pull request #1273 from amtriathlon/master
Fixed Speed units in manual workouts and Pace units in Ride Summary
2015-01-23 20:08:33 +00:00
Alejandro Martinez
74f9206c0d Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-23 17:02:10 -03:00
Alejandro Martinez
c4d99dd2b7 Fixed Pace units in RideSummary
Pace values and unit names now follow preferences, the code is ugly
it should use toString method, probably with a context parameter.
2015-01-23 16:59:18 -03:00
Mark Liversedge
8f4d318199 Tile mode honour color config changes
.. as background didn't change on color config
2015-01-23 19:22:54 +00:00
Alejandro Martinez
0bcc78613a Fixed average speed units in manual workout
It is edited according to preferences and stored in kph
2015-01-23 15:42:27 -03:00
Mark Liversedge
c5cd8cc140 Oops. css() color logic wrong way round 2015-01-23 17:57:58 +00:00
Mark Liversedge
4b271749a0 Diary Sidebar highlight current month
.. signpost what we've selected
2015-01-23 17:46:25 +00:00
Mark Liversedge
6e414a4774 Fix train chart refreshing
.. when config changes
2015-01-23 16:22:54 +00:00
Mark Liversedge
07a6af5904 Fix Apply themes for Trend background color
.. will still need to set to sensible default as
   part of the upgrade process.
2015-01-23 16:00:52 +00:00
Mark Liversedge
1d230f04f2 Merge pull request #1272 from amtriathlon/master
Added GOVSS/SwimScore for manual workouts
2015-01-23 15:34:39 +00:00
Alejandro Martinez
7df3ab909a Add Estimated SwimScore for manual workouts
Based on average speed and duration
2015-01-23 12:25:51 -03:00
Alejandro Martinez
ca323c9f66 Add Estimated GOVSS for manual workouts
Based on average speed and duration
2015-01-23 12:22:36 -03:00
Mark Liversedge
d03fbcd975 More QSslSocket.h 2015-01-23 14:36:29 +00:00
Alejandro Martinez
efd3859d2e Calculated avg Speed in Manual workout Dialog
Useful to deverive metrics for running and swimming activities
By default is dist/time, but it can be overriden for backward compatibility.
2015-01-23 10:19:57 -03:00
Mark Liversedge
c934e8b4d0 Aesthetic Tweaks
.. tile mode highlights on mouse over for a more
   fluid feel, and better feedback

.. can customise the trend view charts background

.. fixed a SEGV on apply preset in chart setup

.. this is part of a set of updates to update the
   standard setup to be more complete so the user
   can pretty much run off a standard config.
2015-01-23 12:06:03 +00:00
Mark Liversedge
4fcb015976 OAuthDialog compile error QSslSocket.h
.. which is not included if you don't use KQOAuth.
2015-01-23 09:39:44 +00:00
Mark Liversedge
6b521b0be1 Merge pull request #1271 from amtriathlon/master
Fixed sport tag on TCX file export
2015-01-22 19:15:58 +00:00
Alejandro Martinez
2a5ab3f228 Fixed sport tag on TCX file export
Enabled translation and restricted output values to
("Biking", "Running", "Other")
2015-01-22 15:04:05 -03:00
Mark Liversedge
1897156616 Merge pull request #1270 from amtriathlon/master
Set Sport Tag for TCX files
2015-01-22 15:19:37 +00:00
Alejandro Martinez
685699729a Set Sport Tag for TCX files
According to http://www8.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd
Sport can be ("Biking", "Running", "Other"), it is mapped to "Bike", "Run" or nothing.
2015-01-22 12:09:23 -03:00
Mark Liversedge
16573ffe98 Fix CalDAV SSL connect() 2015-01-21 18:57:30 +00:00
Mark Liversedge
a45ab6d56b Merge pull request #1266 from Joern-R/dav
CalDAV - add error handling
2015-01-21 18:30:00 +00:00
Joern
49b1210031 CalDAV - add error handling
... if configuration for requested feature is missing (but not in
MainWindow - initial download)
... any network errors coming back

... to simplify error analysis - since the API call may have multiple
reasons to fail (configuration, network, proxy,ssl,...)
2015-01-21 19:27:23 +01:00
Mark Liversedge
ee0592a246 Reset isolation in LTM
.. it was getting out of sync when switching tabs
   or athletes and further issues when events occurred
   possibly causing a SEGV
2015-01-21 10:29:45 +00:00
Mark Liversedge
35bb937dc5 Let user disable hovering on allplot
.. it irks some people.
2015-01-21 08:13:51 +00:00
Mark Liversedge
ca34011082 Show CP on ErgFilePlot
.. makes interpreting W'bal curve a bit easier
2015-01-20 21:32:35 +00:00
Mark Liversedge
f8544eb4af Fix CP SEGV tile mode create interval
.. fencepost in create interval data
2015-01-20 20:39:44 +00:00
Mark Liversedge
a6737eb84c Merge pull request #1263 from Joern-R/interv
De-activate "Route" related feature (if not selected)
2015-01-20 19:24:44 +00:00
Mark Liversedge
049f527d09 Merge pull request #1262 from Joern-R/ssl
OAuth - check for SSL
2015-01-20 19:24:21 +00:00
Joern
e73fbc5902 Merge pull request #1264 from Joern-R/wiki1
Wiki 3.11 Update
2015-01-20 18:48:44 +01:00
Joern
ae964ae5b6 Wiki 3.11 Update
... Preferences / Athlete
2015-01-20 18:47:05 +01:00
Joern
6c9de3597b De-activate "Route" related feature (if not selected)
... deactivate "create route from interval" menu entries in SideBar
2015-01-20 18:43:35 +01:00
Joern
d7212f1d69 OAuth - check for SSL
... since QT does not come with SSL by default - check if SSL is
available on the system
2015-01-20 18:17:04 +01:00
Mark Liversedge
bd126a0620 Import Workout from Wizard
.. Fixes #663
2015-01-19 20:16:56 +00:00
Mark Liversedge
f742c143dc Fix AllPlot Reference Line SEGV
Fixes #996
2015-01-19 19:47:04 +00:00
Damien
5514d3d2bb GoogleMap: Select interval : keep first selected point 2015-01-19 20:14:40 +01:00
Mark Liversedge
43d572edde Fix Device Config and Wizard Interaction
.. when you add a device using the wizard from preferences
   it resets the model to reflect the changes made.

Fixes #785
2015-01-18 21:25:54 +00:00
Mark Liversedge
c98cc0e3ea Merge pull request #1260 from Joern-R/caldav
Calendar - Refresh and Upload - Google CalDAV
2015-01-18 18:20:47 +00:00
Joern
338e265969 Calendar - Refresh and Upload - Google CalDAV
... adds authorization required for new Google CalDAV interface
... adds CalDAV configuration variant (Generic vs. Google)
... corrects Refresh from Google to GC (as they a using a non-complient
XML-tag prefix)

... comment unused CalDAV features - which are not enhanced for Google
CalDAV as they are not used yet
2015-01-18 16:28:06 +01:00
Mark Liversedge
45ef3fbf10 Fix duplicate stress curve bug
.. LTM stress curves had the same symbol name and
   so some were not deleted when the date range changed
   leaving curves on the plot

.. we now set the best symbol for stress curves so we
   have a unique name for each curve
2015-01-18 12:17:56 +00:00
Mark Liversedge
c09bc0bae4 Summarise Intervals Selected First
.. show the summary of all selected intervals first
   not last in the interval summary window
2015-01-17 10:19:16 +00:00
Mark Liversedge
9092f19f2c Best Intervals are Yellow
.. on interval navigator etc

.. so you don't get lots of labels on the plot
2015-01-17 10:05:29 +00:00
Mark Liversedge
b555c0cc86 Add ToolTip to IntervalNavigator
.. just the interval name
2015-01-17 09:51:53 +00:00
Mark Liversedge
04cabf1c44 Merge pull request #1252 from Joern-R/intervals
Add "GC_HAS_INTERVALS" for Route Window
2015-01-16 17:56:25 +00:00
Joern
979cc891fe Merge pull request #1253 from Joern-R/wiki
Wiki - Update 3.11
2015-01-16 18:54:10 +01:00
Joern
e492a58b92 Wiki - Update 3.11
... new and updated Screenshots for 3.11
2015-01-16 18:52:05 +01:00
Joern
35bd254a70 Add "GC_HAS_INTERVALS" for Route Window
... do not allow Route Window if not demanded
2015-01-16 18:35:18 +01:00
Mark Liversedge
b1e2ea3a8f Merge pull request #1251 from Joern-R/qwt
QWT Build
2015-01-15 17:46:14 +00:00
Joern
43fc25dd3c QWT Build
... remove $$replace and use the latest src.pro code from QWT lib (which
allows in-source and out-of-source/shadow build)

($$replace - for unknown reasons - creates an empty string/fails if the
input string contains mixed Upper and Lower case characters - which it
happening in many file systems)
2015-01-15 18:03:15 +01:00
Damien
930a335855 Metrics: Add Calories based on average HR
fixes #1249
2015-01-14 22:37:20 +01:00
Damien
6ba4bebe57 GoogleMap: Add a searchPoint method 2015-01-14 22:37:19 +01:00
Mark Liversedge
14413fcb94 Fix SEGV in LTMPlot on negative date range
.. time should, in theory, always fly forwards, no quarks here.
2015-01-14 16:03:40 +00:00
Mark Liversedge
b888e58ac4 Revert qwt/src/src.pro
.. will break out of source builds in QT Creator

.. means everyone else's builds will still work

.. happy to apply change if it doesn't break builds for others

Fixes #1247
2015-01-14 14:11:05 +00:00
Mark Liversedge
758ef4086d Fix Moxy Tool for Speed/Cadence recording
.. tool to shift data from the speed and cadence data series
   into the tHB and SmO2 series respectively.
2015-01-14 10:57:39 +00:00
Mark Liversedge
f85fd89af7 Remove reference to Lucene 2015-01-14 10:32:50 +00:00
Mark Liversedge
b32c01464f Improved Search Text Parsing
.. splits into words but will allow user to escape using the quote
   character (") or the backslash (\).

.. so <"hello world" \"this\" t\est> will result in three strings
   <hello world> <"this"> and <test>
2015-01-14 10:26:47 +00:00
Mark Liversedge
df94e42e58 Deprecate Lucene
.. use a simple free text search against the ridecache now we
   have all the texts available and in memory

.. no need to maintain an index, no dependency on a horrid lib
   with nasty dependencies and its faster too

.. the free text search is very simple, will need to bolster it
   over time e.g. it matches text not words
2015-01-13 20:52:01 +00:00
Stefan Schake
b5f45d20e6 Periodically refresh Tacx Vortex load setpoint to avoid dropouts
Signed-off-by: Stefan Schake <schake@embedded.rwth-aachen.de>
2015-01-13 21:21:14 +01:00
Mark Liversedge
b68487fbbe Merge pull request #1244 from Joern-R/curves
LTM - Curves Settings - Add Resorting of Curves
2015-01-13 19:28:57 +00:00
Joern
86d4528991 LTM - Curves Settings - Add Resorting of Curves
... add "Up" - "Down" function for Curves Table Items in LTM Settings

(particular useful when add a curve in Stacked View and wanting to have
that curve shown at first position)
2015-01-13 19:17:03 +01:00
Mark Liversedge
ba29c2d3f9 Merge pull request #1243 from Joern-R/test
UI Nit - Time Display - change to 24h format
2015-01-13 16:19:37 +00:00
Joern
d33f800f73 UI Nit - Time Display - change to 24h format
... A/P format does not work properly in QT 5.x.x in non-UK installation
locale of OS
... so adjusted here to hh:mm format
2015-01-13 17:16:11 +01:00
Damien
418d45b253 Pages: Correct index in defaults processor 2015-01-12 22:59:58 +01:00
Damien
c58cdca7d1 RideSummary: Remove unused variables 2015-01-12 22:36:59 +01:00
Damien
6163ed4083 GoogleMap: Add a first Interval Selection feature
Need to resolve how to handle when the ride is on the same position twice or more
2015-01-12 22:29:04 +01:00
Damien
45f033f8a3 CPPlot: Some model testing 2015-01-12 22:27:11 +01:00
Mark Liversedge
493f0a6274 Fix Lucene full refresh SEGV
.. on windows especially, there were issues with the call to
   IndexWriter::addDocument() resulting in an exception.

.. the introduction of a QMutexLocker to manage the mutex locking
   seems to have fixed things, but they only seemed to manifest
   on Windows.
2015-01-12 21:10:20 +00:00
Mark Liversedge
13909a8495 Merge pull request #1242 from Joern-R/averages
TE/PS - Average Calculation
2015-01-12 19:06:05 +00:00
Joern
7b2f8f0e9b TE/PS - Average Calculation
... change calcuation of Averages for TE/PS by using the delivered
samples with valid values (> 0) and the number of delivered data samples
> 0 as the basis
2015-01-12 19:46:40 +01:00
Mark Liversedge
92a065fc5d Ignore points not in zone not add to Z7
.. by returning -1 from whichZone if the value doesn't
   match any zone definition.
2015-01-12 08:23:49 +00:00
Mark Liversedge
ebbd954734 Metadata changing recursion
.. this should fix 'hangs' when edit finished.
2015-01-12 07:52:28 +00:00
Mark Liversedge
15da5e929d Merge pull request #1241 from amtriathlon/master
Hide irrelevant interval metrics
2015-01-12 07:25:22 +00:00
Alejandro Martinez
19a0359957 Hide irrelevant interval metrics
In Ride Summary
2015-01-11 22:00:38 -03:00
Alejandro Martinez
0c9a02e743 Make Pace not relevant only for swims
Since Pace Swim conveys the same information in units more usual for swimming
For backward compatibility it is kept relevant for any other sport
2015-01-11 21:56:59 -03:00
Mark Liversedge
52edebd096 Correct use of beginRemoveRows()
.. last update didn't fix the indexes.
2015-01-11 22:13:30 +00:00
Mark Liversedge
2e522c6728 Add HHb and O2Hb to Scatterplot
.. they were forgotten previously.
2015-01-11 22:08:36 +00:00
Mark Liversedge
b41326d39f Fix beginRemoveRows() SEGV
.. on delete ride
2015-01-11 22:08:08 +00:00
Mark Liversedge
c0616fa5af Merge pull request #1239 from Joern-R/fix
Fix - .JSON not updated with man.l changes directly after Import or Download
2015-01-11 17:31:51 +00:00
Joern
5f6cfe278a Fix - .JSON not updated with manual changes immediately after Import or Download
... correct the path in RideItem after updating RideCache to the final
path (since RideItem has a local buffer for the path - which is e.g.
used at "Save Ride") any manual changes after the import will create a
new .JSON in /tmpActivities and not update the original .JSON in
/activities

(Problem only occurs when using the in-memory data after an Import or
Downlaod)
2015-01-11 18:33:54 +01:00
Mark Liversedge
1330b003a7 Recognise Yves Arrouye and Philip Willoughby 2015-01-11 16:47:35 +00:00
Mark Liversedge
06ec7d61ad Merge pull request #1238 from WillerZ/master
Changes to build on OS X with spaces in path
2015-01-11 16:44:42 +00:00
Philip Graham Willoughby
fbffd1b467 Revert erroneous translation deletion
This partially reverts commit dd57141184.
2015-01-11 16:42:09 +00:00
Philip Graham Willoughby
dd57141184 Changes to build on OS X with spaces in path 2015-01-11 16:25:24 +00:00
Joern
01f8013b37 Merge pull request #1236 from Joern-R/master
Translation DE
2015-01-11 15:14:08 +01:00
Joern
8d98c5901c Translation DE
... update/correct Translation
2015-01-11 15:17:41 +01:00
Mark Liversedge
3be79d45f1 Merge pull request #1235 from Joern-R/ride
Introducing /quarantine for acvitities cause RideCache to crash/dump
2015-01-11 12:47:48 +00:00
Joern
f655dbdde8 Introducing /quarantine for acvitities cause RideCache to crash/dump
... for RideImport and RideDownload the created .JSON files are firstly
stored in /tempActivities and only moved to /activities after
successfull updating RideCache (with this files with "bad data" cause
RideCache calculations to crash can be identified when starting GC again

... in GC CrashDialog the /tempActivities are documented in the Crash
Log and moved to /quarantine for further analysis

... small addition - the existence of the new directory structure is
verified when opening an Athlete - missing directories are added to
ensure a consistent structure being in place at all times
2015-01-11 13:22:47 +01:00
Mark Liversedge
220b0f2842 Color Code PMC Metrics on Summary
.. but to avoid being too 'opinionated' about the users
   training we limit to the really obvious things and
   don't offer any opinion on middling values.

.. LTS > 80 is green > 100 is blue
.. SB < 40 is red -- overtraining
.. RR < -4 or > 8 is red -- detraining or overextending

.. it borders on bollocks given each athlete is different
   and training is about managing the overreaching and recovery
   to push at those boundaries

.. might end up removing this altogether .. but might flag
   stuff up for newbies
2015-01-11 10:56:26 +00:00
Mark Liversedge
32b18da693 Hide irrelevant interval metrics
.. in the interval sidebar
2015-01-11 09:43:14 +00:00
Mark Liversedge
44eb69c4a7 RR on Summary
.. after reinstating ramp rate now putting back onto summary
2015-01-11 09:32:11 +00:00
Mark Liversedge
7d33f3c754 Merge pull request #1232 from amtriathlon/master
Fixed NaN in xPower when there are no samples
2015-01-10 22:57:12 +00:00
Mark Liversedge
72ce3cc4b1 Fix bad Skiba PMC and nan/inf metric values
.. value that result in nan/inf values need to be cleansed
   to ensure the metric array in the rideitem is clean

.. because we load values from json we clean anyway in
   PMC data since it seriously breaks the skiba PMC and
   development users will have bad data.
2015-01-10 22:54:08 +00:00
Alejandro Martinez
fb2f9932a5 Fixed NaN in xPower when there are no samples
It propagates to Bike/SwimScore and plays havoc with PMC
2015-01-10 19:46:06 -03:00
Mark Liversedge
c18ea6eb44 Increment Build ID post ridecache
.. as need to reflect that before new development
   builds go out.

.. does not have any impact on processing or upgrade
2015-01-10 20:23:07 +00:00
Mark Liversedge
32985d5d4d RideMetadata QTextEdit signals
.. was updating as you typed which created a nasty lag
   but updated the metadata and metrics constantly

.. on one hand it was reassuring to see things change as
   you typed, but on the other hand it was pretty tedious

.. we now catch focus change on text edits, see if they've
   been changed and then trigger an update if that is the case
2015-01-10 19:26:27 +00:00
Mark Liversedge
e6f7817b6d Set metacrc on RideItem::refresh()
.. even if not using Lucene, its used to spot meta
   changes including things like CP et al.
2015-01-10 18:14:21 +00:00
Damien
5f6c595472 CVSRideFile: Add import for CPPlot export 2015-01-10 19:04:25 +01:00
Mark Liversedge
6c412fc27c Scale Tooltip for W'bal 2015-01-10 14:51:40 +00:00
Mark Liversedge
bb7c6a304a Increment DBSchemaVersion for TriScore et al 2015-01-10 08:37:33 +00:00
Mark Liversedge
93f78a8f32 Merge pull request #1229 from amtriathlon/master
Added Swim Metrics
2015-01-10 08:09:03 +00:00
Alejandro Martinez
cb9d9239a4 Added Swim Metrics
SwimScore, xPace and Pace for Swimming
TriScore for combined PMC
2015-01-09 21:59:27 -03:00
Mark Liversedge
b7c8a49e7d isRelevantForRide for Coggan/Skiba metrics
.. so not shown on runs and swims
2015-01-09 18:26:17 +00:00
Mark Liversedge
670d3e5fca Merge pull request #1228 from amtriathlon/master
Add isRelevantForRide to metrics in GOVSS.cpp
2015-01-09 15:00:46 +00:00
Mark Liversedge
cae4b8b47b Overlay title bar nit
.. frame needed over title esp when in white.
2015-01-09 14:58:27 +00:00
Alejandro Martinez
599205813b Add isRelevantForRide to metrics in GOVSS.cpp 2015-01-09 11:10:13 -03:00
Mark Liversedge
728186a51e Turn off tooltip on RideNavigator
.. could have sworn i did this before.
2015-01-09 10:36:39 +00:00
Mark Liversedge
585801aa1a Merge pull request #1227 from amtriathlon/master
Enabled Pace Zone shading and bining for swimming in speed histogram
2015-01-09 09:30:04 +00:00
Alejandro Martinez
0369508910 AllPlot tooltip shows speed in pace units according to sport 2015-01-08 20:41:05 -03:00
Alejandro Martinez
e556b398b2 Enabled Pace Zone shading and bining for swimming in speed histogram 2015-01-08 19:31:11 -03:00
Mark Liversedge
7cce1cf0ce Merge pull request #1226 from Joern-R/links
Help - What's this
2015-01-08 19:37:19 +00:00
Joern
2845a3efc9 Help - What's this
... add missing links for some widgets
... correct/enhance URL's to Wiki
2015-01-08 20:40:55 +01:00
Mark Liversedge
22580fdf70 Tooltip Padding
.. looks a tiny bit better.
2015-01-08 19:05:46 +00:00
Mark Liversedge
0af1bf78a5 Fix CP Estimates
.. we filtered out the CP2 and CP3 estimates by checking
   for non-zero values for PMax and FTP that neither of
   these models provide estimates for !
2015-01-08 15:39:55 +00:00
Mark Liversedge
e2ea640cbe Fix underMouse for LTM legend curve toggle
.. underMouse() seems to be dependant upon enter/leave events
   and is unreliable as a result.
2015-01-08 14:43:32 +00:00
Mark Liversedge
2e914c281e Improved LTM legend click to toggle curve
.. does all labels etc and integrates in with the rest
   of the LTM chart and CurveColors classes.

.. underMouse() seems weird when legend is updated, might need
   to find a better way to work out if/which legend was clicked.
2015-01-08 13:23:48 +00:00
Mark Liversedge
6a95e206b0 LTM Toggle Curves clicking on Legend
.. but need to integrate with curve isolation
2015-01-07 23:18:24 +00:00
Mark Liversedge
80e53dcf2f Fix LTM library SEGV
.. didn't set the specification when updating the
   LTMSettings when using a sidebar preset
2015-01-07 22:59:42 +00:00
Damien
39d044576f RideMetrics: add isRelevantForRide for HR and cadence (avg and max) 2015-01-07 22:32:22 +01:00
Damien
3dba2c58f5 RideMetrics: add isRelevant for Aerobic Decoupling and SmO2 metrics 2015-01-07 19:36:34 +01:00
Damien
d8cf1e3d08 LeftRightBalance: isRelevantForRide use DataFlag 2015-01-07 19:10:35 +01:00
Mark Liversedge
5c54b50722 Ratios are averages not peaks
.. for Power/HR and NP/HR ratio metric aggregation
2015-01-07 17:31:38 +00:00
Mark Liversedge
74e4d9e440 Merge pull request #1225 from amtriathlon/master
Separate Swims in Trends Summary
2015-01-07 16:07:50 +00:00
Alejandro Martinez
3d9f8eea70 Separate Swims in Trends Summary
Update spanish translation
2015-01-07 13:01:27 -03:00
Alejandro Martinez
a8d310262b Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-07 12:59:28 -03:00
Mark Liversedge
dc8cb24f43 Delete Rides during refresh
.. place on a delete list and clear them once
   the ridecache refresh completes.
2015-01-07 15:32:05 +00:00
Mark Liversedge
f5ba4743da Restart RideCache refresh on Config changes
.. need to restart any in-progress refresh if you change
   config that affects it whilst it is running !
2015-01-07 15:08:41 +00:00
Mark Liversedge
404d8c84fe Withings download + RideCache
.. if we get measures whilst the ridecache is being refreshed
   it can cause a problem - and the refresh needs to be restarted
   anyway.

.. download now stops and restarts any refresh.
2015-01-07 15:03:45 +00:00
Alejandro Martinez
4b51aa2f27 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-07 09:24:46 -03:00
Mark Liversedge
d4e0653500 ToolTip honour Appearances Config
.. it was hardcoded !

.. still looks fugly, we should do something about that ...
2015-01-07 11:51:10 +00:00
Mark Liversedge
b18d1a1b46 Added isSwim
.. to RideItem and DataFilter
2015-01-07 10:14:53 +00:00
Mark Liversedge
c1a5c46e8b Merge pull request #1224 from amtriathlon/master
Time in pace zone metrics for swim activities
2015-01-07 07:29:43 +00:00
Damien
a734430afa RideSummaryWindow: Only test relevant in ridesummary 2015-01-07 07:58:23 +01:00
Alejandro Martinez
6b0cc37f83 Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2015-01-06 22:24:54 -03:00
Alejandro Martinez
c633a4c29f Spanish translation update 2015-01-06 21:23:16 -03:00
Damien
6f7c6af50d RideSummaryWindow: Only add Left/Right Balance if relevant 2015-01-07 00:07:32 +01:00
Alejandro Martinez
8759580c39 Time in pace zone metrics for swim activities
Shown in activity summary
computed if there are swim pace zones defined and the activity isSwim
isSwim() looks just at Sport="Swim" for now
2015-01-06 19:55:40 -03:00
Damien
168a3abc69 BasicRideMetrics: Add Power Phase length 2015-01-06 22:39:04 +01:00
Damien
5ac2aa1d6a BasicRideMetrics: Avg for Power Phase only when we have a phase end 2015-01-06 21:45:25 +01:00
Damien
aa3d8e0d76 RideEditor: Change column order 2015-01-06 21:39:12 +01:00
Damien
4cfd7386a2 RideEditor: Correct column label 2015-01-06 21:25:55 +01:00
Damien
80790d72d6 BasicRideMetrics: Correct copy-paste error 2015-01-06 21:21:48 +01:00
Damien
7ce398a251 Garmin Cycling Dynamics : Switch on Power Phase 2015-01-06 18:44:27 +01:00
Mark Liversedge
13a0a998ea Increment DBSchemaVersion
.. for new Garmin Cycling Dynamics metric averages
2015-01-06 09:31:19 +00:00
Damien
db4a4a0809 Garmin Cycling Dynamics : Switch off Power Phase 2015-01-06 00:15:08 +01:00
Damien
bae36e6b2a BasicRideMetrics: Add metrics for Garmin Cycling Dynamics - part 1 (Avg) 2015-01-05 23:00:44 +01:00
Mark Liversedge
d81db266f3 Model Reset on addRide
.. headings are already adjusted in the ridecachemodel so
   need to look for new name for CalendarText

.. this is a bit of a hack, but then so is the CalendarText
   metadata field - it should be a first class RideItem class
   member and be maintained alongside date etc
2015-01-05 20:27:46 +00:00
Mark Liversedge
86a599bfb8 Fix SEGV when adding/deleting metadata fields
.. model header data updates need to trigger a reset
   of the views and internal state e.g. index of the
   calendar text and the headings_ string list.
2015-01-05 20:10:42 +00:00
Mark Liversedge
011ad14e6f Import TrainingPeaks Manual entries
.. hr, spd, power and work are all missing from the
   data they provide, but things like duration and TSS work
2015-01-05 17:51:36 +00:00
Joern
09605fbc3e Merge pull request #1222 from Joern-R/de
Translation DE
2015-01-05 18:30:18 +01:00
Joern
51cc29906c Translation DE
... update
2015-01-05 18:34:52 +01:00
Mark Liversedge
ad556808c5 For PMC metrics best should highlight Peaks
.. we now highlight peak values when highlighting topN
   or bottomN values on the LTM plot
2015-01-05 14:20:12 +00:00
Mark Liversedge
313feeab63 Tiny nit, positioning of sport selector.
.. just to make it super obvious to users.
2015-01-05 13:46:34 +00:00
Mark Liversedge
503a1b4de0 Merge pull request #1221 from amtriathlon/master
Added Swim Pace Zones to Config
2015-01-05 13:34:26 +00:00
Alejandro Martinez
5345a69cdf Added Swim Pace Zones to Config
Pace zones available for Run and Swim using Skiba's guidelines
file pace.zones was renamed to run-pace.zones and swim-pace.zones added
2015-01-05 10:08:20 -03:00
Mark Liversedge
38ddf01adc Merge pull request #1220 from Joern-R/train1
Train View - add TE/PS/LR Balance - Real Time Metrics
2015-01-05 12:42:20 +00:00
Joern
b12e853a36 Train View - add TE/PS/LR Balance - Real Time Metrics
... Torque Effectiveness
... Pedal Smoothness
... L/R Balance
(mainly for Vector - but implemented following standard ANT+ message
rules
2015-01-05 13:39:18 +01:00
Mark Liversedge
825372bca8 Climb intervals in Green
.. and also tidy up use of isPeak() etc

.. starting to wonder if we need to a) auto find intervals on import
   and then b) list them in a tree c) allow user to select a 'class'
   of intervals to show (i.e. select all climbs)
2015-01-05 12:08:37 +00:00
Mark Liversedge
03d6a8b11a Interval Navigator colors config
.. update when the config changes
2015-01-05 10:49:01 +00:00
Damien
5284447498 FitRideFile: Add new FIT fields
Especially for Vectors new metrics
	- Left and Righ Platform Center Offset - eg: -8mm and -11mm
	- Left and Right Top dead Center  - eg: 10° and 11°
	- Left and Right Bottom dead Center  - eg: 203° and 210°
	- Left and Right Peak Power Phase Start - eg: 83° and 76°
	- Left and Right Peak Power Phase End - eg: 115° and 125°
2015-01-05 08:01:33 +01:00
Mark Liversedge
26d232c171 Fix TrainingPeaks.com GPS data precision
.. it wasbeing lost when uploading via PWX file format because
   the data was not being stored with enough precision.
2015-01-04 20:09:10 +00:00
Mark Liversedge
73144ae7a1 Add Peripedal CSV support
.. and a test ride too.
2015-01-03 11:02:23 +00:00
Alejandro Martinez
bbd4063781 Pace Zones tidy up
Previous to support run&swim pace zones
2015-01-02 16:26:36 -03:00
Mark Liversedge
17fecc41c7 Reinstate Ramp Rate (RR)
.. on LTM plots

.. and rr(metric) function in datafilter
2015-01-02 12:05:41 +00:00
Mark Liversedge
17597e052d LTMTool nit
.. describing a stress metric as type 'metric'
   instead of 'stress' in the curves list
2015-01-02 10:49:03 +00:00
Mark Liversedge
c7e71646c0 Use ANY metric as LTS/STS/SB input
.. so now you can use the PMC for any load/stress measure.
2015-01-02 10:23:49 +00:00
Mark Liversedge
5529bcff66 Merge pull request #1218 from Joern-R/flow
TCX - consider XML namespace prefix for extension fields
2015-01-02 10:05:30 +00:00
Joern
99ea36cad5 TCX - consider XML namespace prefix for extension fields
... consider XML namespace prefix generically
... specifically required to also support for Polar Flow TCX and others
2015-01-02 11:05:16 +01:00
Mark Liversedge
d255ae5f92 Don't fill curves on FullPlot
.. even if its selected in options.
2015-01-02 08:03:49 +00:00
Mark Liversedge
d80a326d66 DataFilter Dynamic Bug
.. leaf traversal returned parent dynamic not ours.
2015-01-01 20:04:27 +00:00
Mark Liversedge
b3dbeb2517 Leaf::isDynamic SEGV
.. traversing null branches.
2015-01-01 19:30:34 +00:00
Mark Liversedge
4d381b877c Dynamic DataFilter Query
.. will rerun as ride selection changes.

.. but will never stop until cleared so use at your
   own risk, as will run EVERY time you select a
   different ride.
2015-01-01 17:57:36 +00:00
Mark Liversedge
fb5c6a2bcf Datafilter date 'current' to complement 'today'
.. but need to think how we can refresh when current ride changes.
2015-01-01 16:40:40 +00:00
Mark Liversedge
9c9dc93567 Merge pull request #1215 from Joern-R/de
Update Translation DE
2015-01-01 16:34:36 +00:00
Mark Liversedge
13b093ff23 LTM refresh on Ride Save
.. in case the peak powers have changed in the
   ridefilecache.
2015-01-01 15:58:17 +00:00
Mark Liversedge
580a5a780a Histogram refresh on Ride Save
.. when cache needs to be refreshed.
2015-01-01 15:55:01 +00:00
Mark Liversedge
7b2423afac CP Plot Refresh Saved Data
.. remove a missed XXXREFRESH marker to get the CP bests
   curve refreshed when a ride is saved in the period of
   the bests curve.

.. would be nice if we showed the current in-memory version
   rather than insisting on the on-disk .. need to adjust
   ridefilecache to traverse the ridecache for that !
2015-01-01 15:27:49 +00:00
Claus Assmann
b71aa39d3a Backup Rename error message
.. the "bak" directory was added during the development cycle
   and will not be present for users that worked with an early
   development build

.. when deleting rides the "bak" rename will fail due to the missing
   directory

.. the error message has been changed to provide the details of the
   directory where the failure is occurring to help signpost users
   to the problem
2015-01-01 13:13:32 +00:00
Mark Liversedge
36c0f0365c Errant qDebug 2015-01-01 11:48:49 +00:00
Mark Liversedge
0a5cb2b4a3 W'bal and Derived refresh
.. during mass update, not just on data change.
2015-01-01 11:28:01 +00:00
Mark Liversedge
6c5f726bf5 Fix delete/add ride bugs
.. fix a few SEGV!
2015-01-01 09:58:11 +00:00
Mark Liversedge
5102b7e75c HelpWindow Size
.. just a minor nit to make the window a more
   appropriate size given the content.
2015-01-01 09:05:35 +00:00
Mark Liversedge
04c3d8cee7 RideNavigator Clear Zero and NaN values
.. tidy up the output
2014-12-31 23:15:07 +00:00
Mark Liversedge
2fb17922d3 Fix double imperial/metric conversion
.. RideNavigator doesn't need to do metric converson anymore
   because the RideCacheModel handled conversion to a string!
2014-12-31 22:50:58 +00:00
Mark Liversedge
2566ca38f5 RideCache TODO Documentation
.. need to think about the remaining (existing)
   problems related to refresh and not ridecache.
2014-12-31 19:55:09 +00:00
Mark Liversedge
f4dc2cae81 Revert Ride cache refresh and notify
.. fixup ride revert to saved version so all the charts
   refresh properly after the metrics etc are recomputed.
2014-12-31 19:50:24 +00:00
Mark Liversedge
99023f0756 Discard Cache on Exit Discard Changes
.. we don't save the currently cached metrics etc
   for rides that we discard on exit (i.e. don't save)

.. the metrics etc will then get recomputed when you
   restart GoldenCheetah.
2014-12-31 19:33:10 +00:00
Mark Liversedge
3f6b6d2577 Refresh done, remove qDebug
.. refresh is complete pending a couple of tricky
   scenarios to resolve in the next week or so.
2014-12-31 17:48:10 +00:00
Mark Liversedge
50f8582570 Fixup Appearances check on Mac
.. where we don't have config for scrollbars and headings.
2014-12-31 16:16:20 +00:00
Mark Liversedge
94d733b75b Refresh Metrics on Metadata values changing
.. in case things like Weight, CP or W' metadata was changed
2014-12-31 15:35:02 +00:00
Mark Liversedge
f39214cbe8 RideItem recompute NP etal when data changes
.. just before signalling plots to redraw
2014-12-31 15:30:06 +00:00
Mark Liversedge
b28d7a5a40 Refresh AllPlot when WBAL config changes
.. extracted out CONFIG_WBAL to support this
2014-12-31 15:22:55 +00:00
Damien
7c776ddcff CvsRideFile: don't use msecsSinceStartOfDay 2014-12-31 16:08:41 +01:00
Mark Liversedge
f2d17652ea Honour PMC constants
.. and refresh when they change.
2014-12-31 14:52:54 +00:00
Mark Liversedge
56b5114af7 Update Note coloring during RideItem::checkStale()
.. it takes as long to check if its out of date
   as it does to just change it !

.. would be pointless to kick of a refresh just for this.
2014-12-31 14:06:21 +00:00
Mark Liversedge
16ab91985a Fix AllPlotInterval SEGV
.. trying to reference context->ride in constructor (!)
2014-12-31 13:58:27 +00:00
Mark Liversedge
3ccd49acea FreeBSD #include "time.h"
.. needed in Fit and Bin ridefiles for time_t, which for
   some other reason compiles cleanly on Linux.
2014-12-31 13:52:23 +00:00
Mark Liversedge
c5afdf0022 Merge pull request #1216 from Joern-R/auth
Adding "Help Overview" Window
2014-12-31 13:44:20 +00:00
Joern
a9543c050a Adding "Help Overview" Window
... Help Overview Window added to MainWindow - containing
.. Info on new "Shift"+"F1" Context specific Help
.. Links to Golden Cheetah Tutorials, Science, User's Guide, FAQ
2014-12-31 14:35:15 +01:00
Mark Liversedge
9a17258f44 Notify config changed - NOTECOLOR, FIELDS
.. notify if the metadata configuration has been changed

.. also snuck in a change to take hysteresis out of the
   power zones fingerprint - it should not have been there
2014-12-31 13:18:34 +00:00
Mark Liversedge
8cfd02f8b5 Notify config changed - APPEARANCE
.. Needed to move about some of the color config
   methods and remove the unneeded object from
   mainwindow and initialise global color settings
   in main() instead.
2014-12-31 12:36:18 +00:00
Joern
bccdf10335 Update Translation DE
... update Translation DE
... correct Help Text/Links
2014-12-31 11:29:10 +01:00
Mark Liversedge
ec217367c3 Notify config changed - UNITS, GENERAL, PMC
.. Weight changes when units change which is a bit
   crappy, should fix that somehow.
2014-12-31 10:26:28 +00:00
Mark Liversedge
d78c0bf402 Notify config changed - ATHLETE
.. notify if Athlete weight or height were changed by
   the user during the config dialog

.. no longer included in zones fingerprint

.. ridecache now picks up on specific config changes
2014-12-31 09:32:47 +00:00
Mark Liversedge
59a17cc7db Notify config changed - ZONES
.. notify if Pace, HR or Power zones were changed by
   the user during the config dialog
2014-12-31 09:07:02 +00:00
Damien
3567d2d7bf CvsRideFile: Add Freemotion Bike cvs
fixes #1168
2014-12-30 22:15:18 +01:00
Mark Liversedge
02d83a982c Recognise Stefan Schake
.. for Tacx Vortex support in v3.11
2014-12-30 19:37:14 +00:00
Mark Liversedge
16336ca1d3 Merge pull request #1214 from Joern-R/help
KML File Creation - enhancements
2014-12-30 19:04:18 +00:00
Joern
9d3f48869a KML File Creation - enhancements
... fix problem of not visible track (Windows,...)
... use "run" data series if track isRun()
... add "start" and "end" placemark
... enable translation of texts
2014-12-30 20:07:10 +01:00
Mark Liversedge
327c1b2102 Merge pull request #1213 from stschake/tacxvortex
Basic support for Tacx Vortex trainers
2014-12-30 18:29:18 +00:00
Mark Liversedge
5bb5dc3d9e Refresh Summary every 5 seconds
.. not constantly (!)
2014-12-30 15:59:45 +00:00
Mark Liversedge
377cde71c3 Histogram refresh during background refresh
.. just forces a replot if in range.
2014-12-30 15:51:01 +00:00
Mark Liversedge
6cbf83928c RideSummary refresh during background refresh
.. but only if plotting a date range
2014-12-30 13:40:20 +00:00
Mark Liversedge
19ec794fb2 CP replot during background refresh
.. ridefilecaches return incomplete flag if data not available
   when aggregating (plotting during a refresh).

.. CP plot will refresh as the background update takes place.

.. this occurs even during a comparison.
2014-12-30 13:25:39 +00:00
Mark Liversedge
365778fb0c RideNavigator XXXREFRESH cleanse
.. no need to uplift this from the old metricDB as the model
   now spots changes at an individual ride item basis AND
   will refresh during a background refresh too.
2014-12-30 11:07:31 +00:00
Mark Liversedge
55928938ef RideImportWizard XXXREFRESH cleanse
.. no need to uplift the code that used to call for a metric
   refresh after rides were imported since the addRide function
   will now refresh for individual rides.
2014-12-30 11:05:32 +00:00
Mark Liversedge
24500c3700 Diary Sidebar refresh during background update
.. colors change on sidebar calendar as the rides
   are processed.
2014-12-30 10:39:59 +00:00
Mark Liversedge
3b4e2b4372 Developer slow refresh
.. add DEFINES += SLOW_REFRESH to slow down the
   background refresh on hosts with good performance
   when testing refresh code !
2014-12-30 10:39:07 +00:00
Mark Liversedge
15df8e51cf Histogram refresh on rideChanged()
.. just force replot using existing method.
2014-12-30 10:23:46 +00:00
Mark Liversedge
39e691b4b4 Aerolab refresh on rideChanged()
.. just replot, no optimisation.

.. Aerolab needs some love .. maybe allow
   overlaying intervals and autofind them too.
2014-12-30 10:12:12 +00:00
Mark Liversedge
0d0c3dacbe HrPw refresh on rideChanged()
.. just forces a replot
2014-12-30 09:46:11 +00:00
Mark Liversedge
25604491d7 PfPv Plot (QA) refresh on rideChanged()
.. just forces a replot
2014-12-30 09:38:40 +00:00
Stefan Schake
01bec9218e Integrate Tacx Vortex with ANT device logic
Signed-off-by: Stefan Schake <schake@embedded.rwth-aachen.de>
2014-12-30 03:55:53 +01:00
Stefan Schake
fb8179d298 Keep track which data page a Tacx Vortex ANTMessage refers to
This ensures we only access initialized fields in the message

Signed-off-by: Stefan Schake <schake@embedded.rwth-aachen.de>
2014-12-30 03:55:52 +01:00
Stefan Schake
e1a1f6ab4f Split Tacx Vortex requests from client to more closely match Tacx behavior
Signed-off-by: Stefan Schake <schake@embedded.rwth-aachen.de>
2014-12-30 03:55:52 +01:00
Stefan Schake
315d4fe1f3 Add Tacx Vortex ANT message decoding/encoding
Signed-off-by: Stefan Schake <schake@embedded.rwth-aachen.de>
2014-12-30 03:55:51 +01:00
Stefan Schake
e5f178a453 Add Tacx Vortex ANT channel type
Signed-off-by: Stefan Schake <schake@embedded.rwth-aachen.de>
2014-12-30 03:55:50 +01:00
Mark Liversedge
30cfaf853a Withings, Summary + Cache refresh update
.. when downloading withings data the cache is refreshed

.. when the cache refreshes it notifies the *current* ride
   changes if it is refreshed

.. ridesummary has been updated to process rideChanged() signals.
2014-12-29 22:41:08 +00:00
Mark Liversedge
17b4477a8c Google Map refresh on rideChanged()
.. just forces a replot
2014-12-29 22:04:25 +00:00
Mark Liversedge
e814d98797 GcWindowResgistry compile nit 2014-12-29 21:49:09 +00:00
Mark Liversedge
178dc6dbed Disable interval ranking
.. it is too slow. Need to think about how to implement
   this with good performance.

.. if you really want it then add
   DEFINES += GC_HAVE_RANKING
   to gcconfig.pri
2014-12-29 21:25:03 +00:00
Claus Assmann
db28f52368 Another configChanged() script error
.. sed s/configChanged()/configChanged(qint32)/g
   messed up calls. This is probably the last.
2014-12-29 20:06:55 +00:00
Mark Liversedge
2927cae26e Fix ModelPlot compile error
.. configChanged(qint32) was introduced by a refactoring
   script that I was using for mass updates.
2014-12-29 19:39:20 +00:00
Claus Assmann
47801c2b52 Clucene is optional ! 2014-12-29 19:37:04 +00:00
Mark Liversedge
3c3b8e91e4 Interval Season Ranking
.. how does this interval rank for the season it
   belongs to ?

.. if out of season then rank for all time.
2014-12-29 19:30:30 +00:00
Mark Liversedge
9e8905a7f1 Merge pull request #1211 from Joern-R/fullplot
Fullplot - Alt/Slope de-activated
2014-12-29 16:59:33 +00:00
Mark Liversedge
0d6a75342a Merge pull request #1207 from Joern-R/help
Update "WhatsThis" - help
2014-12-29 16:59:20 +00:00
Joern
1a3941ac38 Fullplot - Alt/Slope de-activated
... correct Alt/Slope behavriour in FullPlot (default = inactive)
... handle Alt/Slope status properly when switching back/forth between
Compare Mode and normal Plot view
2014-12-29 17:54:29 +01:00
Mark Liversedge
f1c9bbfa06 Scatter refresh on rideChanged()
.. just forces a replot
2014-12-29 16:46:56 +00:00
Mark Liversedge
07bc4249e3 Remove qDebug
.. can uncomment during development
2014-12-29 16:29:29 +00:00
Mark Liversedge
282d35db32 AllPlot refresh on rideChanged()
.. just needs to force a replot
2014-12-29 16:23:47 +00:00
Mark Liversedge
a4237e158e Default Sport values
.. of Bike, Run, Swim
2014-12-29 16:10:19 +00:00
Mark Liversedge
254f463760 Introduce Context::rideChanged() signal
.. to let charts etc know that the *current* ride has
   changed and will need to be replotted

.. the editor / dataprocessor functions have also been
   integrated into the RideItem to notify the change

.. there is a qDebug() in RideCache in lieu of updating
   all the charts to refresh on this signal.
2014-12-29 16:03:02 +00:00
Mark Liversedge
c40630c1ca Fix RideFileCache refresh bugs
.. didn't update mean max array

.. always ignored very first data point (!) which was usually
   unnoticed since first point usually lots of zeroes.
2014-12-29 15:54:52 +00:00
Mark Liversedge
5692d362d0 ConfigChanged Part 1 of 3
.. introduce concept of configChanged(what) to
   pass details of what config has been changed

.. fixed zones changes to re-read after write
   to correct the save twice to get changes to
   zones bug.

.. next parts need to spot changes (part 2) and
   then action appropriately (part 3)
2014-12-29 13:41:50 +00:00
Mark Liversedge
e7399ba4f2 Lucene empty index optimisation
.. rather than check if lucene index contains every ride
   upon startup just force a rebuild of the index is missing.

.. if the index gets out of sync its because people are copying
   data and so they should delete the index when they do so
   to make sure it stays in sync
2014-12-29 10:24:10 +00:00
Damien
8be9f8a7b9 RideFileInterval: QMap use < to differentiate keys (2) 2014-12-28 23:42:27 +01:00
Damien
ce88839674 IntervalPlot: Hide in Compare mode 2014-12-28 23:42:27 +01:00
Damien
627e9fd71e IntervalPlot: set by distance 2014-12-28 23:42:27 +01:00
Damien
379db8b6c1 IntervalPlot: Clear interval hover 2014-12-28 23:42:27 +01:00
Mark Liversedge
6ae209c21b Refresh Events Documentation
.. start to document the events that wil require
   a refresh, but doesn't describe the 'refresh'
   that is needed (e.g. data, metric, cache, chart)
2014-12-28 22:09:26 +00:00
Damien
a214c96278 IntervalPlot: Add Double-Click interval to Zoom 2014-12-28 18:27:08 +01:00
Mark Liversedge
486c4d536c Selected Intervals Summary
.. in sidebar, we summarise for all the selected intervals.

.. we take into account if they overlap, so two intervals
   of 10 and 5 mins where the 5 min interval is wholly
   contained within the 10 minute interval will be summarised
   as 10 minutes not 15 minutes duration.
2014-12-28 13:34:55 +00:00
Mark Liversedge
936d3fe77d Add Double-Click interval to Zoom
.. in the interval sidebar
2014-12-28 12:18:34 +00:00
Mark Liversedge
cea492019c Fix Lucene 'Lock timeout' / thread issues
.. the lucene index writing during RideCache updates needed
   to avoid conflicts between multiple threads writing at
   the same time.

.. just added a QMutex around write operations - reading is
   still thread safe and can occur in parallel.
2014-12-28 10:42:15 +00:00
Damien
b4a54e5de1 RideFileInterval: QMap use < to differentiate keys 2014-12-28 09:48:16 +01:00
Damien
15e7589f70 IntervalPlot: don't group Matches 2014-12-27 16:49:21 +01:00
Damien
6ff7a0e5d6 IntervalPlot: color for Match 2014-12-27 16:12:46 +01:00
Mark Liversedge
78e2b63596 RideDB ::save() after ::refresh()
.. rather than waiting for close, since if there is a
   crash etc after the refresh it needs to run again.
2014-12-27 14:20:55 +00:00
Damien
c9334343cc IntervalPlot: thinner lines 2014-12-27 00:11:02 +01:00
Damien
d6e8f08521 IntervalPlot: correct IntervalsChanged() 2014-12-26 23:46:05 +01:00
Damien
6a459b89e4 IntervalPlot: recalc only if open 2014-12-26 22:48:59 +01:00
Mark Liversedge
80acabbc96 Fix Initialiser for Interval Plot
.. need to initialise in constructor.
2014-12-26 21:47:18 +00:00
Damien
1db138138b IntervalPlot: recalc after interval changed 2014-12-26 22:35:40 +01:00
Damien
a04894bc2a IntervalPlot: change height 2014-12-26 22:25:05 +01:00
Damien
a703c69d2e Interval: Correct multiple overlap 2014-12-26 21:37:23 +01:00
Damien
7878c33f0b AllPlotWindow: Add interval plot 2014-12-26 21:20:33 +01:00
Mark Liversedge
78a058880a No more WANT_RIDECACHE
.. its not optional !
2014-12-26 19:24:36 +00:00
Mark Liversedge
4cb47c7abd Fix Meta Autocomplete ranking
.. when using '*' for values we autocomplete based upon
   previously entered values for the field, but we didn't
   take into account ranking.

.. now the autocomplete list is ranked to most popular values
   complete first.
2014-12-26 10:56:33 +00:00
Mark Liversedge
6a2e9b9c67 Remove obsolete filter code
.. from RideSummaryWindow as it is no longer needed since
   we moved to using a specification object to manage the
   filter sets and date ranges to filter on.
2014-12-26 10:11:56 +00:00
Mark Liversedge
83a5c7d84e Fix Ride Selection Bug
.. was using the wrong index for filename when searching
   for the ride in the navigator.

.. should now highlight the current ride properly.
2014-12-26 09:51:53 +00:00
Mark Liversedge
9fe930dca5 Support Magellan GPX extensions
.. using the GPX format they add extensions to record
   power, heartrate and cadence using element names
   power, heartrate and cadence ! (way to simple!)

.. thanks to Wenqi Zhang for the sample.
2014-12-26 09:22:52 +00:00
Mark Liversedge
33be087c2f RideSummary list recent rides first
.. iterate from most recent rides first.
2014-12-26 09:11:06 +00:00
Mark Liversedge
98720f099e Use C++ <cmath> not C <math.h>
.. it clashes, and also its deprecated for C++ sources
2014-12-25 20:38:18 +00:00
Mark Liversedge
9c1f110d3a Add Lucene Index if missing
.. as well as checking the metaCRC RideItem will add the
   ride to the lucene index if it is missing.
2014-12-25 19:43:50 +00:00
Mark Liversedge
995d5fb4f1 Lucene search index migrate to RideItem
.. now when we refresh a ride item it will also
   update the lucene index, but only if the texts
   have changed since we last updated it.
2014-12-25 16:37:42 +00:00
Mark Liversedge
e08955d599 Fix fencepost in LTM data table
.. seems wrong but is right.
2014-12-25 14:10:12 +00:00
Mark Liversedge
7ad2bda418 RideFileCache now refreshed in RideItem
.. and fixed sort order problem
2014-12-25 13:59:38 +00:00
Mark Liversedge
3561188711 CP overlay title nit
.. xxx/yyy is bad UX
2014-12-25 10:26:07 +00:00
Mark Liversedge
f88a85b244 Add Date strings to datafilter
.. to enable queries such as;

   Date > "2014/02/28"
   for rides since 28th February 2014

.. might be useful to allow localised dates
   but using this makes it easier to document !

.. a query like today > "1900/01/01" will pass
   on all rides, but user being an idiot.
2014-12-25 09:49:42 +00:00
Mark Liversedge
da679d3f20 Add Date arithmetic to DataFilter
.. use "Date" and "Today" which evaluate to the number
   of days since 1st Jan 1900.

.. so a filter for the last 90 days would be:
   (Today - Date) < 30

.. will add date strings next.
2014-12-25 09:12:34 +00:00
Mark Liversedge
44aea09d97 Deprecate SQL metricDB
.. removes across the code base

.. need to fixup RideFileCache and Lucene refresh
   within the RideItem/RideCache framework, they will
   NOT be refreshed at present

.. need to look at how charts get refreshed on data
   changes now RideItem provides a more granular
   mechanism (look for XXXREFRESH in code)

.. New Intervals code will definitely NOT compile
   and needs to be redesigned/reimplemented to fit
   in with the ride cache
2014-12-24 20:24:34 +00:00
Mark Liversedge
a8192d863d RideCacheModel Part 2 of 3
.. add/remove ride now works

.. fixed metric value in data()

.. need to test (especially with the diary
   window and new athlete with zero rides and
   then import, add, delete, change, sort
   merge, split etc and push update to
   fix such bugs in Part 3
2014-12-24 19:05:52 +00:00
Mark Liversedge
fe2e9b467b RideCacheModel Part 1 of 3
.. getting the model in and integrated with the
   ride list and diary

.. next steps to connect up to ridecache methods
   ::addRide and ::removeCurrentRide.

.. then fix up nits/bugs with diary view etc
2014-12-24 17:36:46 +00:00
Joern
2a5187c478 Update "WhatsThis" - help
.. add short texts and make translatable
.. first 3.11 Wiki .jpg changes
2014-12-24 14:06:08 +01:00
Mark Liversedge
db967076dd KQOAuth lib in src.pro
.. use -l and let the linker decide which lib to link in
   rather than specifying.
2014-12-24 08:57:13 +00:00
Joern
bc1e3c2713 Switch to kQOAuth
.. this removes the dependencies on liboauth and friends
   and replaces it with a single lib.

.. the library is available from http://github.com/kypeli/kQOAuth

.. the only current feature that requires OAuth is tweet
   your ride, but this lib will provide the services for
   future oauth services.
2014-12-23 20:25:25 +00:00
Mark Liversedge
a2c13f4cbd Minor nits 2014-12-23 15:01:09 +00:00
Mark Liversedge
ea56e65b88 CTL/ATL/TSB Min, Max and Avg on Summary
.. when looking at month by month you can see where you
   are peaking, building, tapering or detraining.
2014-12-23 12:04:34 +00:00
Mark Liversedge
9a11cf5452 Show CTL et al on date range summary
.. not sure about how we show range and today value but we
   can fix the cosmetics later on.
2014-12-23 09:51:39 +00:00
Mark Liversedge
1bb4c3264b Clean unneeded refs to metricDB
.. starting to sunset the code now. Need to sort the sqlModel
   for the ridecache and then it can be retired completely.
2014-12-22 22:39:36 +00:00
Mark Liversedge
c1307da442 Default to Sync tab on TP dialog
.. its where you usually switch to.
2014-12-22 22:03:16 +00:00
Mark Liversedge
4483b734d1 TP Download Dialog use Date Range
.. was broken to ignore date ranges when migrating
   to use the RideCache.
2014-12-22 19:14:05 +00:00
Mark Liversedge
c3c64c9912 Fencepost PMC data bug
.. caused 0 values to show for first day/week/month
2014-12-22 18:22:03 +00:00
Mark Liversedge
8e9232f2d1 Fix Filter PMC bug
.. if a filter was being applied we created a local PMC
   but also filtered on dates, this caused the PMC data
   that was generated to only represent the activities in
   the period selected !

.. thanks to Ale Martinez for pointing this out.
2014-12-22 17:54:26 +00:00
Mark Liversedge
5f39c9e226 Migrate LTM DataTable to use RideCache
.. and actually uses the LTMPlot functions to aggregate
   data so should be easier to maintain and also match the
   charts.
2014-12-22 12:03:21 +00:00
Mark Liversedge
bedf369a02 LTMPopup now fully migrated to RideCache
.. now when called by the LTM chart it uses the ride cache
   and not the SQL data.
2014-12-22 10:37:01 +00:00
Mark Liversedge
bc2391f089 Less Spacing for Bests / Intervals
.. now they show PMC data too, needs more space.
2014-12-22 09:47:35 +00:00
Mark Liversedge
ed778d8b1c Erroneous qDebug() in FitRideFile
.. was working on an interval problem and left a
   qDebug() in by accident on last commit
2014-12-21 22:10:50 +00:00
Mark Liversedge
c9278b9fef RideItem destructor
.. no memory leaks here !
2014-12-21 22:03:36 +00:00
Mark Liversedge
a399c73de8 Fix SEGV on delete ride in AllPlot hover
.. tries to traverse the ride data after its been deleted.
2014-12-21 21:53:30 +00:00
Mark Liversedge
e37d0da017 Fix SEGV in PMCData on Import ride
.. when refreshing summary window PMC metrics.
2014-12-21 21:15:03 +00:00
Mark Liversedge
b11c750ae8 Add ATL, CTL, TSB aliases to DataFilter
.. for sts(TSS), lts(TSS) and sb(TSS)
2014-12-21 19:01:02 +00:00
Mark Liversedge
118a5fc4e4 Add PMC data filter functions
lts(metric), sts(metric), sb(metric) all return the PMC
value for the metric in question for the date of the ride
and therefore allow you to select rides based upon PMC data.

e.g. sb(TSS) > -5

could be considered a way of looking for rides when you were
in a well tapered state, or at least, when you should be able
to perform well.

or, e.g. lts(TSS) > 100

could be a way of looking for rides at peak form (if 100 is
a peak CTL for you).
2014-12-21 17:34:21 +00:00
Mark Liversedge
2c4b2568fd TP Dialog Size
.. needs to be bigger, always end up resizing it !
2014-12-21 15:06:31 +00:00
Mark Liversedge
6ca48b3621 Get withings weight on same day as ride
.. should have checked for date <= not < ride date.
2014-12-20 21:00:45 +00:00
Mark Liversedge
16fa4017d3 Don't show model range for ride summary 2014-12-20 20:46:44 +00:00
Mark Liversedge
0a91cf9ef6 Merge pull request #1205 from Joern-R/creator
Allow "Out-Of-Source" Build (Original patch by yarrouye)
2014-12-20 20:30:30 +00:00
Joern
70ff5f91e5 Allow "Out-Of-Source" Build (Original patch by yarrouye)
... separated the "out-of-source" patch from yves from original pull
request
... the patch allows to use e.g. QTCreators "Shadow-Build" feature so
that GC is build not in source, but in a different directory
.. this is useful when using QTCreator and switch between different QT
versions / 32/64 bit builds - since every build resides in a separate
directory from GC source

-- since the original commit (at least from GitHub view) is shown in a
mixed pull request with other commits - this is a seperated version of
the single commit
2014-12-20 17:38:14 +01:00
Mark Liversedge
a33dff05e5 Show TSB add time of athlete best
.. on ridesummary
2014-12-19 22:35:54 +00:00
Mark Liversedge
d10ac1eb84 Add PMC metrics to ride summary
.. bit of a hack, will make it configurable, but quite
   useful to see what the state of TSB was for the day
   of the ride being summarised.
2014-12-19 21:26:59 +00:00
Damien
075db59373 Interval: Correct overlap of highlighted intervals 2014-12-19 21:32:05 +01:00
Mark Liversedge
9a6879f033 Remove GoldenCheetah Racing Credentials
.. its not going to happen and begs the question.
2014-12-19 19:56:02 +00:00
Mark Liversedge
fdf3760dee Migrate CRC from DBAccess to RideFile
.. and wipe a few more SummaryMetric references
2014-12-19 19:30:18 +00:00
Mark Liversedge
b8402088d7 Summary redraw bug
.. moved check for isVisible() in dateRangeChanged() and
   it stopped refresh on startup.
2014-12-19 17:53:18 +00:00
Mark Liversedge
5cb9696b09 RideCache update invalidate PMC
.. so it is recalculated when chart refreshes.
2014-12-19 17:26:38 +00:00
Mark Liversedge
c2db6a66a2 Fix two-a-days on PMC
.. only kept stress for first ride on two-a-days when
   calculating daily stress.

.. I think I've made this mistake a few times before !
2014-12-19 16:50:04 +00:00
Mark Liversedge
8f8e2a63ad Migrate PMC data to Athlete
.. so it is shared across charts when no filtering
   is applied.

.. when filtering is applied then LTMPlot manages
   the PMC data itself.

.. now we use the ridecache the PMC update is really
   fast anyway.
2014-12-19 16:35:24 +00:00
Mark Liversedge
eb3b245dab Remove old references to SummaryMetrics
.. cleaning up from last few commits.
2014-12-18 19:10:47 +00:00
Mark Liversedge
d1d1d885de Migrate LTM Compare and Bests to use RideCache
.. still PMC fixups to remove SummaryMetrics left

.. Data Table now broken, needs fixing too.
2014-12-18 18:45:35 +00:00
Mark Liversedge
973a497355 Migrate LTM Metric/Meta curve to use RideCache
.. seems ok, now need to address bests and compare
2014-12-18 16:28:30 +00:00
Mark Liversedge
bf4522b639 Merge pull request #1202 from Joern-R/translate
Update Translation DE
2014-12-18 15:43:19 +00:00
Mark Liversedge
279ec56d13 Migrate LTM TimeofDay Curve to use RideCache
.. picking off the LTM charts piece by piece !
2014-12-18 15:41:12 +00:00
Mark Liversedge
40b9be717f Rename SummaryBest to AthleteBest
.. and move to RideCache.h
2014-12-18 14:59:18 +00:00
Mark Liversedge
e7ef34a122 Retire getAggregated + getBests
.. from SummaryMetrics
2014-12-18 14:22:36 +00:00
Joern
39762171fe Update Translation DE
.. update DE
2014-12-18 15:15:14 +01:00
Mark Liversedge
8f034fa5b2 RideCache::refreshUpdate(QDate)
.. updated to now pass the date at which the update has
   got to. So charts on need to refresh if the data they
   need is prior.
2014-12-18 13:57:06 +00:00
Mark Liversedge
7a5ca6f36a Fix reverse sorting of RideItem*
.. qSort needed a greaterThan function that worked
   with pointers not objects, so now we really do
   refresh in reverse.
2014-12-18 12:27:15 +00:00
Mark Liversedge
9f35459b55 RideCache refresh in reverse
.. also uses a copy to avoid delete/insert issues when adding
   and deleting rides during a refresh

.. but still need to consider the delete operation and marking
   items as in process or something
2014-12-18 11:35:18 +00:00
Mark Liversedge
40db32a56d LTM refresh during update
.. just playing with the concept, not neccessarily how
   things will pan out.

.. If you delete rideDB.json and start GC then switch
   to a PMC whilst the cache is being computed and look
   at all dates you will see the chart refresh as data
   arrives.
2014-12-17 23:45:07 +00:00
Mark Liversedge
e201b62064 CLucene is optional !
.. oops
2014-12-17 20:46:27 +00:00
Mark Liversedge
8a462b43fe Migrate RideSummary (Compare) to use RideCache
.. ride summary window is now free of metricDB

PHEW!
2014-12-17 18:36:49 +00:00
Mark Liversedge
698a598927 Migrate RideSummary (DateRange) to use RideCache
.. but compare mode still uses metricDB

.. and the code is still in need of tidy up
2014-12-17 17:03:45 +00:00
Mark Liversedge
31c9f6151e Migrate DiarySidebar to use RideCache
.. in the month/week summary.
2014-12-17 15:53:01 +00:00
Mark Liversedge
f9cc3cc83a Migrate LTMSidebar to use RideCache
.. just the summary widget basically.
2014-12-17 15:45:40 +00:00
Mark Liversedge
bf7c80b73d Migrate TreeMap LTMPopup to use RideCache
.. the other half, LTMWindow using LTMPopup is now commented
   out and will need to be fixed when LTMWindow migrates to RideCache
2014-12-17 14:36:21 +00:00
Mark Liversedge
0697af7e9a Histogram no longer slow
.. so we don't need a lag betweem metric selection
   and re-plotting.

.. this was/is only relevant to plotting metrics
2014-12-17 12:05:40 +00:00
Mark Liversedge
72fadc23ac Migrate Histogram to use RideCache
.. and specification, but only when plotting a metric
   over a date range.
2014-12-17 11:58:58 +00:00
Mark Liversedge
01ac756ef1 Migrate TreeMap to use RideCache
.. and therefore also using the Specification approach.
2014-12-17 11:25:35 +00:00
Mark Liversedge
b737dcbebd Introduce Specification class
.. used to create a 'specification' against which we match
   a rideitem when plotting etc.

.. so rather than passing an array/vector/list of data when
   calling a plot, we pass the 'specification' to use instead.

.. the plots themselves should now iterate across the shared
   ride cache only plotting the items that pass the specification.

.. this should reduce memory usage and increase performance.
2014-12-17 10:57:57 +00:00
Mark Liversedge
56fd645277 Migrate AutoFilter to use RideCache
.. in LTMSidebar
2014-12-17 10:13:05 +00:00
Damien
a2f44e718f MetaData: Add default values 2014-12-17 08:17:11 +01:00
Mark Liversedge
3782f31952 FilterSet::pass() and DateRange::pass()
.. moving away from passing data when working with groups of
   rides to passing constraints instead.

.. so FilterSet allows us to pass a collection of filters
   that can then be applied to data.

.. in this way the plots can iterate over cached data selecting
   rideitems based upon constraints applied by the user.

.. these need to be embedded into LTM, TreeMap, Histogram etc
2014-12-16 20:47:17 +00:00
Mark Liversedge
67903db188 Migrate StressCalculator to use RideCache
.. still a bit funky with the filtering, there is probably
   some scope to simplify that, but at least now its only
   a list of pointers not objects on the stack.
2014-12-16 13:53:16 +00:00
Mark Liversedge
2e3ee9c07a Migrate RideMetadata to use RideCache
.. for distinct values -- still does NOT update the
   in memory store in rideitem when metadata changes
2014-12-16 12:39:07 +00:00
Mark Liversedge
90db8a87be Migrate TP Download Dialog to use RideCache
.. stop using the metric db
2014-12-16 11:59:55 +00:00
Mark Liversedge
f8b18278c8 Migrate ManualRideDialog to use RideCache
.. for metric estimation
2014-12-16 11:37:35 +00:00
Mark Liversedge
0fe2d1b6f6 Removing unneeded MetricDB references
.. in RideFile and TwitterDialog
2014-12-16 11:15:25 +00:00
Mark Liversedge
ead01c69e9 Migrate DataFilter to use RideCache
.. no longer uses metricDB but traverses in memory cache
   and should be a lot faster.

NOTE: the line endings for DataFilter.{cpp,h} have been
     changed from dos to unix format which has resulted in
     the entire file being changed, apologies but needed to
     clean that up anyway.
2014-12-16 10:57:22 +00:00
Mark Liversedge
1025aa95f7 Migrate listRideFiles()
.. from RideFileFactory to RideCache

.. to enforce/encourage developers to use the ridecache
   to access rides/data rather than going to disk for it.
2014-12-16 10:23:03 +00:00
Mark Liversedge
43a966e4a5 Fix Qt4 build of WhatsThis? 2014-12-15 16:47:10 +00:00
Mark Liversedge
e88ac85f29 PD Estimates use 12 week rolling window
.. the clunky old way of using a 2 month rolling window has
   been reworked to use a 12 week rolling window making the
   code less susceptible to jumping around esp. on 1st of the month!
2014-12-15 15:05:18 +00:00
Mark Liversedge
e9a7442103 Merge pull request #1200 from Joern-R/help2
Enable Context Help (Shift+F1) using "QT's - What's This"
2014-12-14 18:12:38 +00:00
Joern
0610575a7c Enable Context Help (Shift+F1) using "QT's - What's This"
... adds "What's this" to (hopefully) most of the widgets (please report
on missing ones)
... defines draft "Whats' this" texts including a
context specific WikiLink

.. Help Key for all platforms is <Shift>+<F1> + in some widgets
"RightMouse - Click"

... Tested on Win and Mac (On Mac QtMacButton seems not supporting
"What's this") - so here <Shift>+<F1> has no result.

... ToDo: Create final texts and links based on the to be updated 3.11
Wiki
2014-12-14 18:55:42 +01:00
Mark Liversedge
b105204b66 Add RideFileCache to RideItem
.. so available for current ride

.. and refreshed() when notifyDataChanged() is called

.. but not many classes call it!

.. we are moving to having the filecache read from the
   RideCache rather than straight from disk so we have an
   in-memory and persisted version.
2014-12-14 15:35:53 +00:00
Damien
901933e58d ScatterPlot: ignore zero in one function 2014-12-13 16:33:30 +01:00
Damien
3de714a629 ScatterPlot: ignore zeros in compare mode 2014-12-13 15:52:53 +01:00
Mark Liversedge
ca90b79a34 Fix Navigator coloring
.. if isRun the logic was wrong when user has selected coloring
   the background not just a smaller accent to the right.
2014-12-13 09:49:16 +00:00
Mark Liversedge
96d2bea2d8 Refresh cache when version changes
.. so ONLY change version number of a refresh is going
   to be needed !!!

.. I updated rideDB version to 1.1 to ensure present gets
   refreshed as it is used by the PD model estimate code
2014-12-13 09:26:59 +00:00
Mark Liversedge
62e9ae6b96 Fix SEGV on array overrun
.. in scatterplot smoothing.
2014-12-12 22:21:30 +00:00
Damien
4fb31ee2ea ScatterPlot: Add smoothing 2014-12-12 22:09:04 +01:00
Mark Liversedge
6bd1ef1cc2 Merge pull request #1199 from amtriathlon/master
GOVSS and xPace
2014-12-12 21:00:38 +00:00
Alejandro Martinez
ee0faf430c Refined Aero and KE contributions to running power
Added comments and references
2014-12-12 16:12:49 -03:00
Mark Liversedge
2492108d35 Progress line show()
.. called when progressUpdate() too as it may well
   miss the first signal (e.g. switch view during a
   refresh).
2014-12-12 18:13:53 +00:00
Mark Liversedge
7b8d1c4054 Fix TwitterDialog
.. for getRideMetric migration

.. also simplified the code that generated the message since
   it was hideous; cut-paste lazy code.
2014-12-12 16:01:15 +00:00
Mark Liversedge
3a1c7309f3 Migrate refreshPDEstimates
.. from MetricAggregator to RideCache

.. will need to wipe out your rideDB.json before
   running to ensure present is set correctly.
2014-12-12 14:56:48 +00:00
Mark Liversedge
e97045703a Add RideItem ::color, ::isRun and ::present
.. as primary fields, and also load/save to cache.
2014-12-12 14:08:11 +00:00
Mark Liversedge
f4ad330a5f Isolating Intervals code
.. it will almost certainly break when metricDB is retired
   so isolating it a little further, we can fix it up once
   the ridecache code is done.
2014-12-12 13:18:59 +00:00
Mark Liversedge
6f32e16f6b More Header Nits
.. MetricAggregator declared getFirstLast() that basically
   doesn't exist (and no idea what it was for!)
2014-12-12 13:02:58 +00:00
Mark Liversedge
4b3abd3787 Migrate getRideMetrics() and friends
.. from DBAccess to RideCache

.. and also SummaryMetrics::getForSymbol() now available in
   RideItem to access the precomputed metrics for a single
   ride.
2014-12-12 12:53:40 +00:00
Mark Liversedge
c2b23a060c MetricAggregator header nit
.. still declared getAllMeasures()
2014-12-12 11:32:25 +00:00
Mark Liversedge
ae1ea97728 Migrate getDistinctValues(field)
.. from DBAccess to RideCache.
2014-12-12 11:28:04 +00:00
Mark Liversedge
656e8f9363 Measures code cleanup
.. removing any remaining references to measures in the
   code. We now use withings only and that is handled
   in a non-generic manner.

.. measures and equipment are likely to get put into
   v3.3 once we've done planning.
2014-12-12 10:59:45 +00:00
Mark Liversedge
b95ff295cd Migrate getAllFilenames()
.. from MetricAggregator to RideCache
2014-12-12 10:40:32 +00:00
Mark Liversedge
9b5065dc34 Migrate getAllDates()
.. from DBAccess to RideCache
2014-12-12 10:24:15 +00:00
Mark Liversedge
0840980ad6 Migrate Export Metrics as CSV
.. from MetricDB to RideCache
2014-12-12 10:15:26 +00:00
Alejandro Martinez
7adb64fe27 Minor fix in spanish translation and xPace format 2014-12-11 14:20:55 -03:00
Damien
de5538dbe9 ScatterPlot: Add ignore zero special case for LR Balance 2014-12-10 23:14:02 +01:00
Damien
4d482e7b6d ScatterPlot: Add NoTemp special case 2014-12-10 22:44:47 +01:00
Damien
d1863e6641 Device: Correct last commit 2014-12-10 21:35:59 +01:00
Mark Liversedge
8d378bde5e Merge pull request #1177 from chet0xhenry/feature/translation
Androidify App
2014-12-10 20:27:23 +00:00
Damien
1a4765016c Device: modify wheel size configuration
fixes #986
2014-12-10 20:59:02 +01:00
Mark Liversedge
5d13307f96 RideCache::load()
.. loads the cache/rideDB.json back on startup to avoid
   any refresh of metrics etc

.. uses a lex/bison JSON parser, not because of performance
   since its only run one at startup, but because;

   * QtJSON support is only available in QT5
   * mvjson uses a DOM model that creates a memory overhead
   * the existing bison/lex parser works well and is easy to
     use as a template for this

We now have a good mechanism for metrics and metadata refresh,
cache and recovery so can look at using it in the charts and
the ride navigator next !
2014-12-10 19:34:09 +00:00
Mark Liversedge
293d389baf Stray connect() in ScatterWindow 2014-12-10 13:53:55 +00:00
Damien
57b6b9fc8f Config: modify wheel size configuration 2014-12-10 00:10:42 +01:00
Damien
c106d17c4c ScatterPlot: Add trend line 2014-12-09 22:35:12 +01:00
Mark Liversedge
848b90c804 Merge pull request #1194 from amtriathlon/master
Update Spanish Translation
2014-12-09 19:12:55 +00:00
Alejandro Martinez
d3a49a633a Update Spanish Translation 2014-12-09 16:11:03 -03:00
Mark Liversedge
96ecd617db Simplify Lucene Method
.. it ignored most of the parameters so lets simplify
   and make it just look at ride() -- this may simplify
   even further to the tags in future.
2014-12-09 15:15:49 +00:00
Mark Liversedge
e19b78dada Only save Withings on SUCCESS
.. moved the overwrite of the withings cached response
   to when we know we got something successfully.

.. previously we overwrote regardless of what we received
   which means that when we have firewall/network type issues
   the cache was overwritten with blank data !
2014-12-09 14:34:04 +00:00
Mark Liversedge
2cc47da374 RideCache refresh on addRide
.. but only refreshes the ride added rather than looking everywhere.
   So, when we are importing large numbers of activities it won't
   repeatedly run a full refresh (which was bonkers).
2014-12-09 13:59:10 +00:00
Mark Liversedge
98dc3448cf RideCache Exit gracefully
.. if we close GC during a background refresh operation
   then the refresh is cancelled and cache saved in whatever
   state it is in now .. the user clearly didn't want to wait !
2014-12-09 11:29:50 +00:00
Mark Liversedge
3cf5b2fe56 RideCache::save() UTF-8 with a BOM
.. same as the ridefile.json
2014-12-08 22:52:26 +00:00
Mark Liversedge
6c31fe82e1 rideDB.json Indentation nit
.. yeah, I'm a bit OCD.
2014-12-08 22:35:08 +00:00
Mark Liversedge
111577088a RideCache::save()
.. dumps the ridecache to cache/rideDB.json
2014-12-08 22:12:06 +00:00
Claus Assmann
3277b96897 Fixup RideCache on QT < 5
.. QtConcurrent header names changed.
2014-12-08 20:02:34 +00:00
Mark Liversedge
e5ca8ae880 RideCache compute metrics
.. when refresh() is called for a rideitem it will
   now compute the metrics for the entire ride

.. when a ride is opened the cache is also updated
   at the same time.
2014-12-08 19:38:01 +00:00
Mark Liversedge
dddaf19531 Temporary Fixup
.. refresh metricDB when new withings data downloaded

.. but refreshes for all dates that have data for now, this
   will be resolved shortly.
2014-12-08 17:59:59 +00:00
Mark Liversedge
713d97c120 Remove RideCache refresh sleep!
.. added to slow things down on my developer PC as its
   to fast to notice when I'm testing.

.. also left in an erroneous line clearing RideItem::isstale
   which is also wrong as breaks separation of concerns
2014-12-08 17:24:50 +00:00
Mark Liversedge
22584288ca Ridecace Measures deprecated from SQLite
This is quite a big patch with lots of nasty interdependencies
all collected together but essentially it deprecates;

* Measures are no longer stored in SQL tables
* Zeo support has been dropped (they went bust)

To achieve this there are a large number of updates;

* Withings json is now cached in /cache and in the Athlete
  class. So can be traversed in memory rather than SQL

* All "measures" on LTM have been removed and the only metric
  left is "Athlete Weight" that cascades from withings to ride
  "Weight" metadata value to athlete settings to a 80kg default

* RideCache is now refreshed, but only for metadata. This is needed
  to cache the "Weight" metadata from rides when calculating weight.

* JsonRideFile parser is now re-entrant since it will run in parallel
  during RideCache refreshes (using the QtConcurrent::map()
  framework).

BUT NOTE

* This is about deprecating the Measures table more than anything
  else. Functionally we are in pretty much the same place; just that
  data is stored in a different place.

  e.g. metric/imperial handling of weight is not fixed yet, no
  metrics are in the cache yet, load/save of the cache is not done
  so startup is slow etc.
2014-12-08 16:48:58 +00:00
Chet Henry
75fdd97998 Fix inital screen load value format bug 2014-12-07 07:24:56 -07:00
Chet Henry
89bd88189d Even though ridelogger doen't use fit the ant+ plugin does 2014-12-07 07:24:56 -07:00
Chet Henry
57d485e117 Syncronize values, keys and keylables
Also don't wait for unpaired ant devices forever
2014-12-07 07:24:56 -07:00
Chet Henry
f3fbc3b026 Fix but with prefence update and screen. 2014-12-07 07:24:55 -07:00
Chet Henry
0d7fbb7b8d Lighter Ant+ connections 2014-12-07 07:24:55 -07:00
Chet Henry
fe03e9264e More ant code clean up 2014-12-07 07:24:55 -07:00
Chet Henry
c5cc16ab00 Clean up ant code 2014-12-07 07:24:55 -07:00
Chet Henry
278cec18ba Add classes to proguard keep 2014-12-07 07:24:55 -07:00
Chet Henry
3570faa3e1 Adding Proguard 2014-12-07 07:24:55 -07:00
Chet Henry
ac54877334 Extendable File Format
All file formats to be extended

Also fixed a bug in the display of values
2014-12-07 07:24:55 -07:00
Chet Henry
0d4120db6f Clean up code, reduce memory and make the world a better place 2014-12-07 07:24:55 -07:00
Chet Henry
07c2ff444e Fix textview overflow in display 2014-12-07 07:24:55 -07:00
Chet Henry
ac925c6c43 Update view on sensor list change 2014-12-07 07:24:55 -07:00
Chet Henry
1e94b2baf1 Clean up currenValues view and better style of dashboard 2014-12-07 07:24:55 -07:00
Chet Henry
ac6627f353 Replace default diamater with circumference and increase it to 2.096 2014-12-07 07:24:55 -07:00
Chet Henry
92560d81eb Better frount screen layout 2014-12-07 07:24:55 -07:00
Chet Henry
aa4b2ca552 Change gzip extention to gz for bash completion 2014-12-07 07:24:55 -07:00
Chet Henry
ee65b435c9 Fix wheel size bug 2014-12-07 07:24:55 -07:00
Chet Henry
ecafc4b8e4 Comment out unimplemented message 2014-12-07 07:24:55 -07:00
Chet Henry
62b7cdc1be Add wheel diamater configuration 2014-12-07 07:24:55 -07:00
Chet Henry
82d79085f4 Allow user to display imperial units 2014-12-07 07:24:55 -07:00
Chet Henry
d14e078c38 Fix ant+ ui flow 2014-12-07 07:24:55 -07:00
Chet Henry
7ab124f522 Better theme and style 2014-12-07 07:24:55 -07:00
Chet Henry
9725f62eda Light theme and better sample view 2014-12-07 07:24:55 -07:00
Chet Henry
f7a276d93e Fixup Settings
Add configurable display of sensors
Add configurable text size
Disable preferences if ride is logging
2014-12-07 07:24:55 -07:00
Chet Henry
62772295fd Reduce memory footprint and improve service performance 2014-12-07 07:24:55 -07:00
Chet Henry
9d5ade417c Fix problems and wait a bit for ant+ pairing 2014-12-07 07:24:55 -07:00
Chet Henry
632d637f00 better grid view of data 2014-12-07 07:24:55 -07:00
Chet Henry
2d2d3dac2f Better api version support 2014-12-07 07:24:55 -07:00
Chet Henry
f5a61672f3 Make app more android like
Changed preferences to use android stype prefs
Allowed values to be passed to main screen
Start and stop ride in main menu
2014-12-07 07:24:54 -07:00
Chet Henry
f5b9b60502 Adding view of current data 2014-12-07 07:24:54 -07:00
Chet Henry
b7fa8e4ba8 Add a lot more string to strings.xml also add reset settings wf 2014-12-07 07:24:54 -07:00
Chet Henry
ad57cd0826 Allows strings to be translated
Moved all string to strings.xml
Also removed WorkoutRepeatSteps.fit because it was unneeded
2014-12-07 07:24:54 -07:00
Mark Liversedge
b84d4f1ad7 RideWindow copy/paste error
.. surprised it works !
2014-12-07 09:51:56 +00:00
Mark Liversedge
c4849d78f2 Minor logic error 2014-12-07 00:20:17 +00:00
Mark Liversedge
03c73d9af7 Merge pull request #1191 from amtriathlon/master
Enabled CP Models for Speed series
2014-12-07 00:15:23 +00:00
Mark Liversedge
dc5beca607 RideCache / RideItem fixups
.. fingerprint for range should not take into account the
   start/end date as its irrelevant and will change

.. RideItem now responsible for refresh and status updating
   on the rideitem

.. framework seems good now; only rides that need to be refreshed
   will get asked for a refresh -- but need to look more closely
   at how we derive 'Weight' for each rideitem now...
2014-12-07 00:11:44 +00:00
Alejandro Martinez
aeb3eed27e Enabled CP Models for Speed series
Results are shown in metric units for speed/distance and pace units according to user preferences
2014-12-06 20:48:31 -03:00
Mark Liversedge
aba0e5b933 RideItem separation of concerns
.. instead of making the caller keep rideitem up to date etc
   we are going to move to it looking after itself.

.. the first part of this is to make it responsible for checking
   if it is stale and computing fingerprints etc

.. the next part will be making it responsible for refreshing
   the cached values.

One big thing too:

.. the fingerprint is now based upon the zone config that applies
   for the date of the ride -- not all zone config. So if the config
   changes but not for the date of this ride (e.g. set a new CP starting
   from today) then the old data does not get marked as stale.
2014-12-06 08:48:34 +00:00
Mark Liversedge
5c9da4de37 RideCache Framework Update
.. needed to clean RideItem a touch

.. needed to isolate intervals code as it has some
   problems and breaks metricaggregator for normal
   use.

.. found a bit of Context code in MainWindow.cpp (!!)
2014-12-05 23:06:28 +00:00
Mark Liversedge
282ecdef63 RideCache Background Refresh Framework
.. subtle, thin progress bar on tabview to notify
   when background updates are in progress

.. background updating code created but does not
   perform a refresh yet, just sleeps for 0.2s

.. to enable 'visibility' of the code use WANT_RIDECACHE
   to the defines in gcconfig.pri
2014-12-05 20:08:32 +00:00
Mark Liversedge
0a00fd88bf Merge pull request #1189 from Joern-R/fix2
Athlete Subdirs - improvements
2014-12-05 17:48:54 +00:00
Joern
1683ae9e2e Athlete Subdirs - improvements
.. added /BAK subdir where all actvities .BAK files are stored
.. do not delete any original files in /imports /downloads when deleting
activity
.. copy deleted activity .JSON as .BAK into /BAK subfolder
.. adjust upgrade procedure to copy .BAK files to /BAK
2014-12-05 18:44:11 +01:00
Mark Liversedge
89569e1331 Merge pull request #1188 from mtbkeith/master
code cleanup of build warnings
2014-12-05 16:13:46 +00:00
Mark Liversedge
6680a71499 Merge pull request #1187 from Joern-R/fix1
GC Upgrade 3.11 - adjustment
2014-12-05 16:09:05 +00:00
Joern
27c0d100f5 GC Upgrade
.. do not force User to scroll down to proceed
.. change "proceed" text to be more clear
2014-12-05 17:11:09 +01:00
Reynolds
e9a2acdbc6 Merge branch 'master' of https://github.com/mtbkeith/GoldenCheetah
# By Mark Liversedge
# Via Mark Liversedge
* 'master' of https://github.com/mtbkeith/GoldenCheetah:
  Added RideCache
  Introduce the RideCache
  Turn off interval hover on leave
2014-12-05 10:59:43 -05:00
Mark Liversedge
f87adaa89a Added RideCache
.. source files missed off last commit
2014-12-05 15:33:19 +00:00
Mark Liversedge
a61c1e3217 Introduce the RideCache
.. just a refactor of ridelist out of Athlete for now
   but will shortly be refreshing in background and
   loading and saving to rideDB.json
2014-12-05 15:30:54 +00:00
Mark Liversedge
4c3c1a7582 Turn off interval hover on leave
.. so you get hover notifications only when
   hovering, as soon as the mouse leaves the chart
   the hover goes away.
2014-12-05 11:57:02 +00:00
Keith Reynolds
6a4a3eb02a Remove unused local method 'unquote'
Fix virtual function to proper signature for QXmlAttributes reference and prevent hiding.
2014-12-04 18:04:08 -05:00
Mark Liversedge
1ae3fb8811 Added RideMetric::index()
.. each metric now has an index (identifier) that can is numeric
   starting at 0 and going up.

.. it can be used to offset into an array when we add a cache for
   storing precomputed metrics.
2014-12-04 13:54:42 +00:00
Mark Liversedge
13ea19c159 Tidy up RideItem.h
.. the cache code can start now !
2014-12-03 20:38:08 +00:00
Mark Liversedge
85d4b59295 Fixup 3D plot for RideItem zones
.. missed in last commit.
2014-12-03 20:21:30 +00:00
Mark Liversedge
aea550c267 Remove Zones from RideItem
.. they are in Athlete::zones() et al now

.. this refactor was missed in the 3.0 mainwindow
   refactoring and is part of the prep to use RideItem
   as an in memory cache instead of the old metricDB
2014-12-03 19:06:07 +00:00
Mark Liversedge
ee02071461 QVector::removeAt(int) is new
.. so use ::remove() instead for QT4 compatibility.
2014-12-03 15:30:40 +00:00
Mark Liversedge
00ea1bfc86 Merge pull request #1186 from amtriathlon/master
Fixed copy and paste error
2014-12-03 15:28:18 +00:00
Alejandro Martinez
d6bbbfe112 Fixed copy and paste error 2014-12-03 12:23:38 -03:00
Mark Liversedge
f07ba8c8f7 Merge pull request #1185 from amtriathlon/master
Added xPace metric
2014-12-03 15:12:45 +00:00
Alejandro Martinez
acac8d307a Added xPace metric
Computed as the constant pace on flat surface with the same LNP
2014-12-03 10:48:13 -03:00
Mark Liversedge
5515467dd9 Add RideMetric::toString(bool useMetricUnits)
.. so we can now call that instead of doing the conversion
   and formatting all over the code !

NOTE: it still needs to be /called/ in the code, that change
      will need to be applied everywhere a metric is displayed
      to the user.
2014-12-03 12:36:40 +00:00
Mark Liversedge
106c98255e Save Command flushed Metadata first
.. to fix long standing bug with saving whilst editing
   a field. But still leaves a problem if exiting whilst
   editing a field (which is a bit weird tbh).
2014-12-03 10:57:07 +00:00
Mark Liversedge
f148481ada Finally remove Old Ride list QTreeWidget !
.. its been there since the beginning at the heart of the code
   as a registry of the rides (RideItem) and controlling the
   selection of rides.

.. in v3.0 we stopped showing it, but it was still created and
   then hidden immediately. But removing the 'spine' of the code
   was seen as a step too far.

.. this is the first part of moving from SQL to a NoSQL cache
   for ride metrics, metadata and measures -- RideItem is now
   no longer inheriting from QTreeWidgetItem with all the issues
   that brings.

.. since its right at the heart there are likely to be unforeseen
   bugs as we go, especially since it affects the ride navigator.

.. add/delete has been tested a fair amount and should be reliable.
2014-12-03 10:33:50 +00:00
Alejandro Martinez
f15ef1e223 Ignored /release to keep git quiet on windows 2014-12-02 13:52:51 -03:00
Mark Liversedge
43afccd81b Merge pull request #1183 from amtriathlon/master
Spanish Translation Update
2014-12-01 19:29:23 +00:00
Alejandro Martinez
a7397e7ae7 Spanish Translation Update 2014-12-01 14:34:01 -03:00
Damien
7318c79237 ScatterWindow: Add Compare mode for 2D Plot 2014-11-30 23:21:30 +01:00
Mark Liversedge
7d68e103ca Merge Activity recalc derived series
.. e.g. so O2Hb and HHb are done for Moxy
2014-11-30 21:57:42 +00:00
Damien
a7526242b0 JouleDevice: Remove BETA label 2014-11-28 07:12:29 +01:00
Damien
bfd606218b CsvRideFile: Parse Powertap Imperial CSV (if exists?) 2014-11-27 23:54:37 +01:00
Damien
6308a34717 CsvRideFile: Parse time in generic CSV 2014-11-27 23:05:23 +01:00
Damien
ae765755c4 CSVRideFile: Add new series 2014-11-27 21:36:32 +01:00
Mark Liversedge
ac2fad1305 More decimals for tHb tooltip
.. on AllPlot
2014-11-27 11:50:26 +00:00
Damien
b0bac869f7 CsvRideFile: Correct GC parser 2014-11-27 08:42:15 +01:00
Mark Liversedge
ed4176709d Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2014-11-26 22:02:37 +00:00
Mark Liversedge
553500596c Add Min, Max, Average SMO2
.. and add to summary
2014-11-26 22:01:46 +00:00
Damien
13d5db0bd1 TrainView: Record in GC CVS format 2014-11-26 22:22:08 +01:00
Mark Liversedge
d835ed5861 Remove errant qDebug() 2014-11-26 20:17:54 +00:00
Mark Liversedge
f8a73d2f4d Add SmO2 to Histogram
.. from Moxy
2014-11-26 19:23:47 +00:00
Mark Liversedge
c1ecc6826a Merge pull request #1173 from Joern-R/import
Autoimport - do not process if no files determined
2014-11-26 18:18:16 +00:00
Joern
87cfa6d1dc Autoimport - do not process if no files determined
... do not process the popup if no files with the correct extensions
were found / the directories were empty
... (this does not address to skip files which were already imported !)
2014-11-26 19:20:16 +01:00
Mark Liversedge
2a6ad65dc1 Merge pull request #1172 from Joern-R/ugrade
Upgrade v3.11 - Folder Conversion - troubleshooting
2014-11-26 17:35:00 +00:00
Joern
3868096745 Upgrade v3.11 - Folder Conversion - troubleshooting
... add Link to Wiki Troubleshooting guide to Upgrade Log in case errors
have occured
2014-11-26 18:36:37 +01:00
Mark Liversedge
56a07f8106 Merge pull request #1171 from chet0xhenry/feature/enable_sdcard
Make app relocatable to sdcard and make files readable by default
2014-11-26 10:58:40 +01:00
Chet Henry
8925bc20e5 Make app relocatable to sdcard and make files readable by default 2014-11-25 17:59:45 -07:00
Mark Liversedge
e8bee5c56c Merge pull request #1169 from Joern-R/translation
Translation DE - Correction
2014-11-25 20:11:01 +01:00
Joern
16f1bba797 Translation DE - Correction
... Text for "Upgrade" typos,...
2014-11-25 20:10:16 +01:00
Mark Liversedge
b12d966aef Fix Merge Wizard Saving Bug
.. RideItem() is horrible
.. but it kinda works so just work around it
2014-11-25 15:53:41 +00:00
Claus Assmann
52408ad1b5 More spelling errors
.. Mark cannot spell for tofu.
2014-11-25 11:42:08 +00:00
Mark Liversedge
0db864a4d9 MU import
.. to keep code safe, but not activated.
2014-11-24 22:21:50 +00:00
Claus Assmann
35eb416bd2 Fix comment spelling errors
.. lots of them !
2014-11-24 15:37:56 +00:00
Mark Liversedge
1cd85fa415 Merge pull request #1166 from amtriathlon/master
Added pace to tooltip for speed curve in AllPlot
2014-11-23 21:28:42 +01:00
Alejandro Martinez
edc094e9fa Added pace to tooltip for speed curve in AllPlot
Only when the activity is a run
2014-11-23 17:18:40 -03:00
Mark Liversedge
24deab0feb More Moxy delimeters
.. ignore blank lines too.
2014-11-23 19:39:34 +00:00
Mark Liversedge
23a7f40b30 Merge pull request #1163 from Joern-R/upgrade1
GC Upgrade 3.11 - Log Autoscroll
2014-11-23 18:30:20 +01:00
Joern
957bd3ea1f GC Upgrade 3.11 - Log Autoscroll
... Log automatically scrolls when it's created - so no extra check if
end of log was reached required to process
2014-11-23 18:22:48 +01:00
Mark Liversedge
7707f757b0 Merge pull request #1162 from Joern-R/upgrade
GC Upgrade 3.11 enhancements
2014-11-23 17:49:10 +01:00
Joern
251f5c862e GC Upgrade 3.11 enhancements
... make Upgrade Check Window smaller (with scrollable Text)
... only allow to proceed if Text is scrolled down to end (full read)
... in Upgrade Log, only allow to proceed to athlete if Log has been
scrolled down to the end
2014-11-23 17:24:05 +01:00
Mark Liversedge
4ffed24c4d Merge pull request #1161 from Joern-R/translate
Translation DE - 3.11 - First Update
2014-11-23 15:37:46 +01:00
Joern
8f923813ac Translation DE - 3.11 - First Update
... Update Translation for DE
... Correct text for GC Upgrade
2014-11-23 14:58:55 +01:00
Mark Liversedge
9b6ddc7aa7 Merge pull request #1159 from chet0xhenry/feature/call_home
Add Crash Detection SMS and Gzip Compression
2014-11-23 09:05:55 +01:00
Chet Henry
7d23b9ef0f Increase crash magnitude to 3g 2014-11-22 20:29:52 -07:00
Chet Henry
1853f0d8f1 Add better crash detection and clean up dialog message title mix up 2014-11-22 20:19:31 -07:00
Chet Henry
7a627f6322 Add gzip compresion and emergency contact
The ride files will now be .json.gzip
Users will also now be able to add an emergency contact phone number.
Ride logger will use that number to update the contact on the riders current
location.  It will also notify them if the acceleration is above 15 or m/s^2.
If so the emergency contact will get an sms with the current location.

TODO:  15m/s^2 is easy to trip.  I need to research a way to minimize false positives.
2014-11-22 17:16:55 -07:00
Mark Liversedge
5afcbed029 Revert "Fix CyclingAnalytics upload"
This reverts commit ca3ee9cef6.
2014-11-22 18:07:36 +00:00
Mark Liversedge
7e84981736 Merge pull request #1154 from chet0xhenry/feature/crc
Feature/crc
2014-11-21 23:12:02 +01:00
Mark Liversedge
424498010a Merge pull request #1152 from chet0xhenry/feature/allow_extra_data_in_imported_json
Allow for extra data in the array of series
2014-11-21 23:03:21 +01:00
Chet Henry
d0bc460039 Add methods to help write data 2014-11-21 14:42:27 -07:00
Chet Henry
7d6cb2bdf4 Fix null exception from clean up 2014-11-21 14:40:10 -07:00
Chet Henry
5cc118ca5d A bit more clean up 2014-11-21 14:40:10 -07:00
Chet Henry
ce3607b699 More comments and more cleaning 2014-11-21 14:40:10 -07:00
Chet Henry
641a21af89 CRC
Clean up, Refactor and Comment
2014-11-21 14:40:10 -07:00
Chet Henry
ee5f032588 Fix json format for GC
Change month format in ride headder
Make sure numbers are formatted correctly ie not scientific notation
Log all current values:
  Perviously it only logged values that were measured.
  However, if GC doesn't see the other values it assumes they are zero.
2014-11-21 14:40:10 -07:00
Chet Henry
bd7082f877 Fix wrong date format on json ride file. 2014-11-21 14:40:10 -07:00
Mark Liversedge
2a53f30141 Added Watts:RPE ratio
.. compare average power to the rpe rating.
2014-11-21 19:33:41 +00:00
Mark Liversedge
e0c7c932ba Merge pull request #1153 from amtriathlon/master
Added pace zone shading to CPPlot
2014-11-21 19:40:42 +01:00
Alejandro Martinez
1554865415 Added pace zone shading to CPPlot
When enabled it is convenient to set a filter for running activities in the chart since this is not done automatically yet
2014-11-21 15:25:26 -03:00
Chet Henry
c6246b11ae Remove reference_list change 2014-11-21 08:54:39 -07:00
Mark Liversedge
a9a4b924a1 Deprecate kickr command channel
.. Wahoo don't do that anymore.

.. now use the same channel as the device and just send plain old
   ANT+ messages to set slope etc (why they didn't do that in the
   first place is absolutely beyond me)

.. getting ready to implement Kickr for the THIRD time !!!
2014-11-21 14:58:14 +00:00
Chet Henry
cf422d6830 Allow for extra data in the array of series 2014-11-20 16:02:45 -07:00
Mark Liversedge
5052554422 Merge pull request #1151 from amtriathlon/master
Fixed pace histogram shading when there is no Pace Zones defined
2014-11-20 22:06:16 +01:00
Alejandro Martinez
35b8f05380 Fixed pace histogram shading when there is no Pace Zones defined 2014-11-20 17:41:09 -03:00
Mark Liversedge
a745dfdcc3 Fix PaceZone crash in PowerHist
.. cut and paste error
2014-11-20 20:01:53 +00:00
Mark Liversedge
757bf50807 Moxy sleep wait for clear to complete
.. give it a chance to clear before trying to exit
   engineering mode.
2014-11-20 14:16:35 +00:00
Mark Liversedge
bf2b7d0605 More CP tooltip
.. model curve is null when not shown, so better
   check before ignoring the tooltip update
2014-11-20 13:59:16 +00:00
Mark Liversedge
db34e57a65 Ignore Moxy 'delimeters'
.. the Moxy device sends blank lines to delimit recordings
   that we try and parse; so now we just ignore them.
2014-11-20 11:37:22 +00:00
Mark Liversedge
e326fb8704 Add .qmake.stash to .gitignore
.. just to keep git status honest
2014-11-20 11:11:01 +00:00
Mark Liversedge
26e6639ae5 Hide tooltip in CPPlot
.. when not hovering over a curve, this worked ok for power
   but not for anything else. Because the signal was ignored
   when not showing power in pointHover.
2014-11-20 11:09:08 +00:00
Mark Liversedge
62adda849f Merge pull request #1150 from amtriathlon/master
Add pace to tooltip in CV chart
2014-11-20 07:49:58 +01:00
Alejandro Martinez
36da18b78f Add pace to tooltip in CV chart
Fixed units selection in histogram tooltip, it is independent of pace units
NB: CV chart currently doesn't obey units setting for speed, it is fixed to kph
2014-11-19 21:34:29 -03:00
Mark Liversedge
d618f0d8cd Merge pull request #1137 from Joern-R/conversion
Fix Metric/Imperial - conversion issues
2014-11-19 16:30:30 +01:00
Mark Liversedge
5cbba9efcd Merge pull request #1149 from jonbev/separate-run-summary-table
Split summary table into rides and runs
2014-11-19 15:20:13 +01:00
Jon Beverley
7c5a86aa96 Split summary table into rides and runs
Might be nice to have a different metric set for rides and runs but a
bit beyond me at the moment.
2014-11-19 13:54:42 +00:00
Mark Liversedge
2439781748 Merge pull request #1148 from jonbev/fix-pace-units-in-tooltip
Fix pace units in tool tip for non metric units
2014-11-19 13:06:41 +01:00
Jon Beverley
0ba6757d3e Fix pace units in tool tip for non metric units 2014-11-19 12:03:16 +00:00
Mark Liversedge
df62267090 Merge pull request #1146 from amtriathlon/master
Added pace to tooltip for speed histogram
2014-11-19 08:12:21 +01:00
Alejandro Martinez
2745900954 Added pace to tooltip for speed histogram
Except when we know the activity is not a Run
2014-11-19 00:10:10 -03:00
Mark Liversedge
ca3ee9cef6 Fix CyclingAnalytics upload
.. bit of a hacky fix, but practical enough.
2014-11-18 21:25:17 +00:00
Mark Liversedge
4b213a085a Merge pull request #1145 from chet0xhenry/master
Synchronize Writes to JSON file in Ride Logger
2014-11-18 22:16:29 +01:00
Chet Henry
f82b22da5a Clean up white space 2014-11-18 14:05:25 -07:00
Chet Henry
50e7228ea6 Syncronize writes to build valid json 2014-11-18 14:05:24 -07:00
Mark Liversedge
137349a907 Fix merge resampling rounding
.. I know its a lazy method but at least use the right
   numeric format. LOL. What a twit.
2014-11-18 20:54:16 +00:00
Mark Liversedge
09c997dc4b Merge pull request #1142 from chet0xhenry/master
Add a Ride Logger App for Android
2014-11-18 10:50:10 +01:00
Mark Liversedge
f42b8c109b Merge pull request #1144 from amtriathlon/master
Added Polarized Zones to HR and Speed histograms
2014-11-18 07:50:34 +01:00
Alejandro Martinez
0e4525da11 Added Polarized Zones to HR and Speed histograms 2014-11-17 21:50:57 -03:00
Chet Henry
a1cefcb1ff Initial commit of contrib Ride Logger for Android
Logs rides to json files in Documents/Rides
Supports Ant and most internal sensors on Android:
Power, Heart Rate, GPS, Pressure, Temp, Acceleration...
2014-11-17 16:05:29 -07:00
Mark Liversedge
7486aec760 Merge pull request #1141 from amtriathlon/master
Fixed time in polarized pace zones should be computed only for running a...
2014-11-17 22:57:46 +01:00
Alejandro Martinez
9846815f4a Fixed time in polarized pace zones should be computed only for running activities 2014-11-17 18:52:54 -03:00
Mark Liversedge
af545cc541 Merge pull request #1140 from amtriathlon/master
Added Polarized Zones distributions for hr and kph series to cache
2014-11-17 22:02:18 +01:00
Alejandro Martinez
7266ad7817 Added Polarized Zones distributions for hr and kph series to cache 2014-11-17 17:13:08 -03:00
Damien
ea3160bbe5 Aerolab: Correct dVE for imperial units
fixes #1025
2014-11-16 22:53:29 +01:00
Mark Liversedge
d98212e624 Merge pull request #1138 from amtriathlon/master
Fixed scaling for pace zone shading in speed histogram with imperial units
2014-11-16 22:00:33 +01:00
Damien
9dc4398ae3 DBSchemaVersion: 91 after TimeInZone and HRTimeInZone fix in last commit 2014-11-16 21:58:10 +01:00
Damien
50b4ae41ca TimeInZone: no time is data is not present
fixes #1126
2014-11-16 21:45:48 +01:00
Alejandro Martinez
a681bb8196 Fixed scaling for pace zone shading in speed histogram with imperial units 2014-11-16 17:42:24 -03:00
Alejandro Martinez
03ba468d8f Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2014-11-16 17:05:04 -03:00
Damien
8eccd0b682 CVSRideFile: Use ibike headwind even without dfpm power 2014-11-16 20:56:07 +01:00
Joern
3fc8bee85f Fix Metric/Imperial - conversion issues
In LTM Plot and on Summary Windows conversion
... data already converted for the curves was converted again
... for "Best" Summary the conversion was missing

Referring to issues #1067 #1071 (see also comments on issue #1069
2014-11-16 19:20:25 +01:00
Mark Liversedge
334a7bfc40 Merge pull request #1136 from Joern-R/best
Fix - Best xxTime y-Axis bug #1086
2014-11-16 16:55:20 +01:00
Joern
ec7d2ee647 Best xxTime y-Axis bug #1086
... rideCache access in getAllBestsFor did not honour series-decimals
2014-11-16 15:24:44 +01:00
Mark Liversedge
2cbe27ced4 Merge pull request #1135 from Joern-R/cpvamscale
VAM CP x-axis bug #1085
2014-11-16 14:16:28 +01:00
Joern
a91e53a02b VAM CP x-axis bug #1085
... fixed by
...... not considering Y-Axis values in the 0 to 4.993 minutes range
which are not shown for VAM anyway
... both in standard view and in compare view / intervals and date
ranges
... handle intervals below 4.993 minutes properly (since they are not
shown in CP VAM)
2014-11-16 12:58:39 +01:00
Damien
6444df2178 IntervalSidebar: Add bests navigator 2014-11-16 12:33:44 +01:00
Mark Liversedge
1f5fe35b83 Recognise Keith Reynolds 2014-11-16 08:27:41 +00:00
Keith Reynolds
bcc19c94ef In CriticalPowerWindow add a Percent of Best to the hover message for the current ride when not in "Percent of Best" mode. 2014-11-16 08:24:10 +00:00
Mark Liversedge
064b32db90 Merge pull request #1134 from rclasen/sharedialog
always include ShareDialog
2014-11-15 23:58:24 +01:00
Rainer Clasen
a0531d293a always include ShareDialog
... but limit what individual services are build/offered based on oauth
availability (Strava, CyclingAnalytics). Load's of ifdef... making me
think about alternative solutions - especially now that the common
uploader base class allows to stuff them in a List/map/vector/whatever.
2014-11-15 23:22:07 +01:00
Alejandro Martinez
3d2c8660ba Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2014-11-15 17:07:34 -03:00
Mark Liversedge
34a6f5d6d2 Merge pull request #1133 from amtriathlon/master
Pace zone shading and binning for running activities in speed histogram
2014-11-15 21:05:08 +01:00
Alejandro Martinez
c6dee10f8d Merge branch 'master' of https://github.com/GoldenCheetah/GoldenCheetah 2014-11-15 16:58:17 -03:00
Mark Liversedge
d4b3cbacf2 Restructure Menus
.. added Edit for all ride data processors now we
   have quite a few to select from

.. shifted a few things around to make important
   options more prominent (e.g. Share) and less important
   ones less prominent (e.g. Heat Map)
2014-11-15 19:41:15 +00:00
Alejandro Martinez
2adcabf239 Pace zone shading and binning for running activities in speed histogram 2014-11-15 15:49:38 -03:00
Mark Liversedge
4406981b78 Merge pull request #1132 from rclasen/sharedialog
use Sharedialog for Trainingstagebuch + VeloHero, further improvements
2014-11-15 19:04:28 +01:00
Rainer Clasen
783d9869c5 ShareDialog optimizations
introduced a base clase for the individual uploaders to reduce code
duplication.

This made it possible to
- default to download a ride to a service if it wasn't uploaded, yet.
- grey out checkboxes for services without credentials
2014-11-15 17:04:45 +01:00
Rainer Clasen
aa4770ca05 use ShareDialog for VeloHero and Trainingstagebuch
adjusted velohero + Trainingstagebuch upload to use new ShareDialog
2014-11-15 17:04:37 +01:00
Rainer Clasen
f1d9e6de4c fix tab order for password settings
tab order defaults to the order widgets are created - and not the order
they're added to the grid widget.

Reordered code to bring creation + adding of Widgets in sync.
2014-11-15 17:04:29 +01:00
Mark Liversedge
ded3c0c14c Merge pull request #1131 from Joern-R/auto
Auto-Import - "no files selected" UI improved
2014-11-15 11:26:44 +01:00
Joern
dcb2dcf59a Auto-Import - "no files selected" UI improved
... do not show "files table" and progress bar
... only provided "Finish" button to close the window
2014-11-15 11:28:26 +01:00
Mark Liversedge
500ca79693 MergeAdjust give user more rope ..
.. and they will hang themselves !

.. seriously, the limits to the merge offsets
   added no real value but would annoy a user
   where the rides needed to be aligned to a
   greater proportion.

.. adjust can shift the offset for the entire
   length of the ride
2014-11-15 09:53:27 +00:00
Mark Liversedge
7bfe92df2d Tweak Merge Adjust Code
.. logic error mean't the merge adjust only applied
   in one direction and also when ride got longer
   or shorter it was not reflected on the plot.
2014-11-15 09:34:15 +00:00
Mark Liversedge
39ce98a959 HACK: AllPlot SEGV Fix
.. line 1289 of AllPlotWindow was updated to rebuild the
   plots when the ride was dirty, but it looks like there is
   a strange interaction when rideItem doesn't change and
   rideItem->ride() does.

NOTE: rides will not be refreshed after merge wizard completes
      until this is fixed up in AllPlotWindow.
2014-11-15 09:06:34 +00:00
Mark Liversedge
7d1b59d0a4 Fix AllPlot Fill setting
.. was not always set, lost when removing the reference
   to parent->paintbrush in recent update.
2014-11-14 22:10:51 +00:00
Mark Liversedge
e3f67b7830 Merge pull request #1129 from rclasen/vhero
Upload to Velo Hero
2014-11-14 21:55:27 +01:00
Mark Liversedge
e8886aec4b Merge Wizard Mac Tweaks
.. a few tidy ups to make it look right
   when running on Mac OSX
2014-11-14 20:44:36 +00:00
Mark Liversedge
5bb19fd630 Merge pull request #1130 from Joern-R/gear1
Fix Gear Ratio SEGV - addition to Hack Fix
2014-11-14 19:47:27 +01:00
Mark Liversedge
d56bd21156 Updated Merge Tool Part 2c (last part)
.. UX to adjust now complete.

We may need to tidy a few things up, but this
is now good for working with the Moxy at the
very least.
2014-11-14 18:45:40 +00:00
Joern
48058676ec Fix Gear Ratio SEGV - addition to Hack Fix
... handle Gear Ratio as part of the existing logic - just without
smoothing
... solves SEGV problem in Compare Mode (and probably other areas of
AllPlot)
2014-11-14 19:42:53 +01:00
Cyclenerd
b0ed28ba97 Upload to Velo Hero
Upload workouts (PWX export) to Velo Hero (http://www.velohero.com).

Author: Nils Knieling
Reviewed: Rainer Clasen
2014-11-14 17:54:25 +01:00
Mark Liversedge
75886a70af Updated Merge Tool Part 2b of 2abc
.. need to save away with analyse() and combine()
   now complete, and working pretty well on my data

.. now to work on the last piece, the 'adjust' page
   to shift data-series left and right manually (for
   cases where the calculated offsets are wrong or
   need to be tweaked by the user)
2014-11-14 11:26:20 +00:00
Mark Liversedge
f80427d98e Updated Merge Tool Part 2a of 2a/b
.. page flow and join sorted

.. committing before resolving the merging code
   - analyse() to identify offsets
   - combine() to merge into a working copy
   - ux for sliding offsets on a fullplot

.. next commit will complete this update to the
   merge tool

NOTE: MERGE IS NOT CURRENTLY WORKING SO PLEASE
      DO NOT USE IT !!!!
2014-11-13 20:02:25 +00:00
Mark Liversedge
4f2a4179bb Gear Ratio SEGV Hack Fix
.. need to check if this hack fixes SEGV before raising
   with Joern.
2014-11-13 19:56:15 +00:00
Mark Liversedge
d1334d8dff Make Intervals view optional till v3.2
.. we will develop over the next few months but it will
   not be ready for v3.11 so making it optional.
2014-11-13 08:05:04 +00:00
Damien
9b982731cd IntervalNavigator: Add the interval 2014-11-12 23:39:17 +01:00
Damien
6b992b963a IntervalNavigator: Remove intervals from SubRide 2014-11-12 23:33:29 +01:00
Damien
87432d611d IntervalNavigator: Add new files 2014-11-12 23:02:56 +01:00
Damien
08987d693a IntervalView: Add a new intervals View 2014-11-12 22:29:40 +01:00
Damien
11c026cf29 RouteSegment: Add a new sidebar 2014-11-12 22:29:40 +01:00
Mark Liversedge
25ee643094 Updated Merge Tool Part 1 of 2
.. data can be sourced from file, download or list

.. next to update the mode (join or merge) and the
   merge strategy and parameters.

.. will also need to update the download dialog to
   allow you to specify which downloaded rides to
   process -- at present the merge tool assumes that
   the download dialog will only return 1 result

.. pleased with the way the download dialog is embedded
   within the wizard, will use that for other things!
2014-11-12 12:55:35 +00:00
Mark Liversedge
04423b1385 JSON Strings and GC Tokens
.. fix json writing so that user metadata no longer conflicts
   with the tokens used by GoldenCheetah, e.g. a user entered
   "NM" in the workout code and that conflicted with the
   token used to delimit a torque value.

.. all user strings are now saved with a space " " appended to
   the value and when read, if there is a trailing space it is
   removed.
2014-11-12 06:28:31 +00:00
Mark Liversedge
8c2c7c9286 Add ride resampling method
.. to convert from one recording interval to another
   when merging files.

.. this is a utility function that will be used by the
   merge rides wizard
2014-11-11 16:38:18 +00:00
Mark Liversedge
68904300e3 Qwt support QT 5.4
.. we should think about removing our local version
   of QWT since we no longer need it.
2014-11-09 15:13:26 +00:00
Mark Liversedge
fae700e3c3 Merge pull request #1124 from Joern-R/query
Namedsearches - Escape for XML special chars
2014-11-09 15:11:13 +01:00
Joern
92cfbbd02f Namedsearches - Escape for XML special chars
... in the escape &, ' and " as special XML chars where missing
....... causing that a rule for cLucene with "&&" could be stored, but
got lost on reading
2014-11-09 15:06:46 +01:00
Mark Liversedge
d09f896950 Merge pull request #1123 from amtriathlon/master
Fixed stored height setting to be in meters instead of cm
2014-11-09 15:02:33 +01:00
Alejandro Martinez
f0f428090a Fixed stored height setting to be in meters instead of cm 2014-11-09 10:51:11 -03:00
Mark Liversedge
b77ab9c5ab Merge pull request #1122 from Joern-R/dir2
AthleteDirectory - Folder Structure - small fixes
2014-11-09 14:08:04 +01:00
Mark Liversedge
e39493ceef Merge pull request #1121 from Joern-R/autoimport
AutoImport - 2nd version
2014-11-09 14:07:40 +01:00
Joern
3f45e8541b AthleteDirectory - Folder Structure - small fixes
... New Athlete -> Unnecessary "Upgrade Popup" - removed
... Typo in Upgrade Popup Text fixed
2014-11-09 11:30:21 +01:00
Joern
a73d5df95c AutoImport - 2nd version
... multiple pathes per Athlete (on Athlete-Preferences - AutoImport
TAB) - option per Path if Import shall be done or not (e.g. for
temporary de-activation without removig a path)
... configuration stored in XML file in /config subdir
... no "stealth" mode any more - but full log of Rides to be imported
with option to "Abort" the import process at any time
2014-11-09 10:58:23 +01:00
Mark Liversedge
da73b072ed Fix Spline resampling
.. should be periodic not natural

.. should apply to sub-second samples too !
2014-11-09 09:48:59 +00:00
Mark Liversedge
693da5fadd Merge pull request #1120 from amtriathlon/master
Add heigth to athlete's data to use in GOVSS metric
2014-11-09 09:19:33 +01:00
Alejandro Martinez
0322d5f25b Add heigth to athlete's data to use in GOVSS metric
Defaults to Stillman average based on weigth, allows per ride override.
2014-11-08 21:44:07 -03:00
Mark Liversedge
31cce4a67b Data flags O (Moxy) and R (Running Dynamics)
.. for filtering.
2014-11-08 19:54:40 +00:00
Mark Liversedge
96b1467b39 Fix Merge Wizard Infinite Loop
.. before working on UX and Moxy support
2014-11-08 16:38:21 +00:00
Mark Liversedge
6c62ee1819 Fixup Moxy Download for circular data
.. the download has data in a circular buffer - when you overrun
   the buffer it starts back at the beginning and then downloads
   that data as-is.

.. we now sort the downloaded data before extracting it into rides
   and ignoring rides < 1 minute long.
2014-11-07 19:41:48 +00:00
Mark Liversedge
c9aa0052ad Update DB version for GOVSS
.. for Ale Martinez recent update
2014-11-07 06:48:28 +00:00
Mark Liversedge
cb9967bf28 Merge pull request #1114 from amtriathlon/master
Initial GOVSS implementation
2014-11-07 07:45:05 +01:00
Alejandro Martinez
b535d2676e Initial GOVSS implementation
Includes LTP, RTP, IWF and GOVSS metrics with PMC integration
2014-11-06 22:09:35 -03:00
Mark Liversedge
02a585c6e0 Moxy Download CSV
.. header missing CR at eol.
2014-11-06 22:14:58 +00:00
Mark Liversedge
ae03d72708 Tidy up Moxy download logging
.. more to the point and clean.

.. also gives update as data downloading to
   ressure user something is happening.
2014-11-06 19:44:04 +00:00
Mark Liversedge
ae5a27f9c6 Slightly Improved Moxy Download
.. split into separate rides when gap is greater
   than 30 minutes between samples

.. discard subsequent rides that are less than a
   minute long

BUT: Does not help resolve merge challenge and really
     should let the user select which rides to import
     regardless of how much data they contain.
2014-11-05 21:03:19 +00:00
Mark Liversedge
45496f2f92 Moxy Fit tHb
.. divide by 100 not 10
2014-11-04 22:00:59 +00:00
Mark Liversedge
0906dcba4a Basic Moxy Download 2 of 2
.. works for download and clear

.. is pretty basic as the downloaded data
   is treated as a single ride

.. need to think about how we can split into rides
   and refactor the tool to create multiple rides
   with the user selecting which to download.
2014-11-04 21:59:32 +00:00
Mark Liversedge
22e5fb5a25 Added Moxy file for testing 2014-11-04 20:36:11 +00:00
Mark Liversedge
6a0714c645 Moxy FIT file support
.. type 54/57 in .fit file for thb and smO2
2014-11-04 14:31:17 +00:00
Mark Liversedge
80f97951b0 Fix Moxy header copyright and ifdef 2014-11-03 20:34:00 +00:00
Mark Liversedge
66570337b3 Basic Moxy Download 1 of 2
.. device IO is working ok

.. need to add in processing and creation
   of a ridefile in part 2
2014-11-03 20:30:35 +00:00
Mark Liversedge
00d2e989d4 Merge pull request #1111 from Joern-R/files1
AthleteDirectory - Folder Structure Part 2 of 2 + Always create .JSON
2014-11-02 19:55:47 +01:00
Joern
230f028037 AthleteDirectory - Folder Structure Part 2 of 2 + Always create .JSON
... create folder structure for existing and new athletes
... upgrade existing athlete to new structure when opening / incl.
logging and error handling
... convert any "Downloaded" file to .JSON directly - store source file
in /downloads
... convert any "Imported" file to .JSON directly - store source file in
/imports
2014-11-02 19:55:01 +01:00
Mark Liversedge
0bf8a8ab89 Merge pull request #1109 from rclasen/timeriding
fix "Time Riding" for rides without kph
2014-11-02 17:26:08 +01:00
Mark Liversedge
51af6ba76d Merge pull request #1108 from rclasen/ltmcurves
LTM curves: edit metric on double click
2014-11-02 17:25:08 +01:00
Rainer Clasen
f27462a4f5 LTM curves: edit metric on double click
more comfortable alternative to select + click edit button: allow double
clicking on a row in the metric list to edit it's settings.
2014-11-02 16:27:18 +01:00
Rainer Clasen
656fb90590 fix "Time Riding" for rides without kph
"Time Riding" was only calculated when the ride had kph values - although
it's then also including time without kph but cadence. This caused it to
skip all time spent on the trainer (... if there's no sensor on the rear
wheel).

This patch makes it consistently calculate "Time Riding" if there's kph or
cad... might be worth to count time with pwr or similar running metrics,
too.
2014-11-02 16:26:43 +01:00
Mark Liversedge
e3850a6146 Accidentally left a debug() in CsvRideFile
.. so deleting it !
2014-11-01 18:12:53 +00:00
Mark Liversedge
8b21c0994f Fix Help URLs
.. and add link to the forum
2014-11-01 17:25:23 +00:00
Mark Liversedge
b0aca1f42c More Moxy TimeStamps
.. x:x:x format without zero padding (!?) causes
   the QT fromString functions to fail.
2014-11-01 15:20:07 +00:00
Mark Liversedge
7e2542b915 Always show span slider on ride plot
.. the left/right scrolling is useful and takes very little
   screen estate so always enable it

.. the full plot can still be show/hidden with the chart
   controls
2014-11-01 09:42:02 +00:00
Mark Liversedge
c7cdffe68c Realtime Moxy Part 2b of 3
.. added moxy to the realtime plots.

last piece is to update the realtime file format to
include moxy data -- moving away from powertap csv
2014-11-01 09:27:07 +00:00
Mark Liversedge
8cd29d5555 Realtime Moxy Part 2a of 3
.. telemetry is plotted in dialwindow

.. need to do a part b which is the realtime plot
   of thb, smo2, o2hb and hhb to complete part 2
2014-10-31 22:26:02 +00:00
Mark Liversedge
bdc00585ca Realtime Moxy Part 1 of 3
.. added config and page decoding for Moxy

Next steps are (2) add telemetry to realtime data structure
                   and display on the realtime chart and telemetry

               (3) add SmO2 and tHb to file format which means moving
                   away from powertap csv format (!)
2014-10-31 21:15:06 +00:00
Mark Liversedge
e6c2152171 Moxy Reader update
.. get timestamp from file not line number (to make sure
   drops in recordings are not lost as they are numerous)

.. duplicate each line to get 1s recording that makes it
   easier to merge manually (until the merge function is
   fixed to handle these kinds of issues)
2014-10-31 15:25:26 +00:00
Mark Liversedge
4d9ce4c5ed MIO GPX file support
.. power incorrectly stored as xml element named "power"
   and not "gpxdata:power"
2014-10-30 19:17:31 +00:00
Damien
92834fbc86 RouteSegment: Small changes before bigger ones 2014-10-28 23:14:45 +01:00
Mark Liversedge
a95ef5b8d3 Better Ride View Setup
.. especially when in tiled mode
2014-10-26 08:28:29 +00:00
Mark Liversedge
245eba65e6 Merge pull request #1103 from Joern-R/files
AthleteDirectory - Introduce Folder Structure Part 1
2014-10-25 21:38:22 +02:00
Joern
f1447d2664 AthleteDirectory - Folder Structure Part 1
... introduce new "home" Folder structure object representing the
previous flat-folder
... adjust relevant QDir home - access to use the sub-folder method of
the new object

Note: the new structure is not yet active ! - everything is written to
the main folder still

To Do:
... add upgrade procedure for existing folder content to merge to the
new folders
2014-10-25 19:08:27 +02:00
Mark Liversedge
db3e580aa8 Expand to use space in Options/Prefs
.. when it is resized instead of just adding
   or removing space between close/save buttons
   and the config widgets
2014-10-25 11:43:54 +01:00
Mark Liversedge
cda1266960 Fix Avatar selection and make menu icon
.. when opening a new athlete
2014-10-25 11:14:11 +01:00
Mark Liversedge
bca7cba11e Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-10-25 09:52:16 +01:00
Mark Liversedge
bfd052973d Train View closer to original
.. 'felt' upside down !
2014-10-25 09:51:40 +01:00
Mark Liversedge
abedd19b7c Merge pull request #1102 from Joern-R/master
Wiki - Correction - Help About
2014-10-24 18:32:39 +02:00
Joern
6de25f3d01 Wiki - Correction - Help About
... New Picture "Help-About" to document the Athlete Library Path
2014-10-24 18:30:58 +02:00
Joern
9799e8774f Gear Ratio - Coloring in PvPV plot
... option to show the datapoints depending on a gear ratio intervall
... gear-ratio 0 to 1 -> Red
... gear ratio 1.01 to 2.49 -> Yellow
... gear ratio 2.5 to 3.99 -> Green
... gear ratio 4 to max (7.00) -> Blue
2014-10-24 16:37:15 +02:00
Mark Liversedge
8ac171d06e Merge pull request #1101 from Joern-R/gear2
Gear Ratio - Coloring in PvPV plot
2014-10-24 16:36:56 +02:00
Mark Liversedge
1607bda7f4 Train View Layout Update
.. show TSS and W' bal
.. reorganise to show realtime and performance plot
2014-10-24 14:44:51 +01:00
Mark Liversedge
1d398be89e Add HHb and O2Hb to Allplot
.. so you can now look at oxy v deoxy as a time
   series against hr and power.
2014-10-23 21:52:31 +01:00
Mark Liversedge
f583de0801 O2Hb and HHb added to AllPlot Controls
.. now for the slog to add to the charts !
2014-10-23 20:36:57 +01:00
Mark Liversedge
17f23f8b28 Add HHb and O2Hb derived series
.. to split oxy/deoxy haemoglobin
.. need to add to ride chart too
2014-10-23 20:14:27 +01:00
Mark Liversedge
93d0799bc2 Placeholder for Moxy SandC cuckoo
.. the Moxy can be configured as a SandC sensor, so in
   readiness for ANT+ support in GC just adding code to
   spot it.

.. will also need to update this for when it is paired
   as a muscle oxygen monitor

.. will need to add SmO2 and tHb realtime data telemetry

.. will also need to add code to device config to notify
   when SandC is spotted as a moxy
2014-10-23 19:02:45 +01:00
Mark Liversedge
30484e1af7 Add W'bal TAU Config
.. it is only used in realtime mode
2014-10-23 13:26:51 +01:00
Mark Liversedge
1230a9eb40 Plot W'bal on the fly in train mode
.. uses a fixed TAU of 300s so need to add some
   way of configuring it for on the fly calculations
2014-10-23 12:12:23 +01:00
Mark Liversedge
99defb5885 Fix W'bal in Train Performance Plot
.. code still needs to be refactored !
2014-10-23 09:15:10 +01:00
Mark Liversedge
c65553d063 Merge pull request #1100 from Joern-R/gear1
Add Gear Ratio related functions in multiple areas
2014-10-22 17:19:14 +02:00
Joern
eb5a6a9497 Add Gear Ratio related functions in multiple areas
.. RideFile - add rounding approach for gear values (different roundings
depending on value) - leading to discrete GearRatio values
.. AllPlot - exclude Gear Ratio from Smoothing (to keep the discrete
value) - and change curve type to "Steps"
.. ScatterPlot - specific handling for GearRatio since values between
0.01 and 1 are relevant for GearRatio and must not be filtered out
.. RideFileChache - add Distribution Data for Gear Ratio and fix
Distribution Cache for DataSeries with > 0 decimalsFor
.. Histogram - add GearRatio to Histograms (both Rides and Trends)
2014-10-22 17:14:18 +02:00
Mark Liversedge
189ab96a48 Put SmO2 and tHb on more appropriate axis
.. as the scales were too high when shared with things like
   power and torque and made them difficult to see

.. also now color shared axis according to what are selected;
   so if only one series selected it will get that color rather
   than e.g. yLeft,0 always being red
2014-10-22 11:48:06 +01:00
Mark Liversedge
13bc58e18f Comment for pace zones
.. just to explain how they were derived
2014-10-21 09:12:26 +01:00
Mark Liversedge
3202181142 Merge pull request #1098 from amtriathlon/master
Changed default pace zone scheme
2014-10-20 18:56:36 +02:00
Alejandro Martinez
8004deecd1 Changed default pace zone scheme to match the guidelines in Dr Skiba's book "The triathletes Guide to Training with Power" 2014-10-20 13:39:28 -03:00
Mark Liversedge
fb641681bf Honor Pace units prefs in Summary/Interval Summary
.. for the original "Pace" metric
2014-10-17 21:59:29 +01:00
Mark Liversedge
8fc1fac7ed Quadratic Trend on LTM fencepost 2014-10-17 14:29:01 +01:00
Mark Liversedge
4f498436b1 Limit Gear Ratio
.. to whatever the maximumFor value is as dodgy data can
   yield really high values; anything over 6 is probably
   wrong for most high gears (53x10 = 5.3)
2014-10-16 22:38:48 +01:00
Mark Liversedge
db1a1cbcb6 3d plot new series
.. but there is a fidelity issue; need to take into
   account series with decimal places
2014-10-16 21:19:30 +01:00
Mark Liversedge
516118847c Scatterplot SmO2, tHB, Running, Gear ratio
.. bit of a catch up to add those series to the 2d plot
2014-10-16 20:54:16 +01:00
Mark Liversedge
0555b9b05f Fix SEGV on Match labels isolation
.. needed an extra saveState() after labels have been
   added to the chart to reflect they have been wiped
2014-10-16 19:16:46 +01:00
Mark Liversedge
223ee29b89 Customise Colors for New Series
.. Moxy smo2 and thb
.. Garmin Running Dynamics
.. Gear Ratio
2014-10-16 18:33:25 +01:00
Mark Liversedge
243923c135 Ride Plot Running Dynamics and Moxy (2 of 2)
.. added to the ride plot, but now need to think
   about customising and setting a default color
   for the six (!) data series.
2014-10-16 17:23:35 +01:00
Mark Liversedge
e62259f5ca AllPlotWindow Settings
.. still too big !
2014-10-16 11:54:53 +01:00
Mark Liversedge
3d00475450 Gear Ratio Derived Data Series
.. added to code but not displayed on allplot etc

.. will add to allplot when doing running dynamics and moxy
   data series (next couple of days)
2014-10-16 11:26:01 +01:00
Mark Liversedge
10b5d4a589 Ride Plot Running Dynamics and Moxy (1 of 2)
.. plotting the new running dynamics data series;
   ground contact time, vertical oscillation and cadence

.. plotting the moxy data;
   muscle oxygen (absolute) and haemoglobin mass (relative)

.. just added to the controls (AllPlotWindow)

.. part 2 is the slog to add to the plots (ugh)
2014-10-16 10:15:43 +01:00
Mark Liversedge
0eeb434bef Ride Plot Settings
.. restructure to make some space for running dynamics
   and moxy muscle oxygen and haemoglobin mass
2014-10-16 09:51:25 +01:00
Damien
a9e17ffa65 RouteSegment: Search routes in new ride 2014-10-15 23:22:51 +02:00
Mark Liversedge
3942c0a594 Fix SEGV on webBridgeForRoute
.. same fix as applied to GoogleMapControl
2014-10-15 21:20:33 +01:00
Damien
c094aa92b0 RouteSegment: Search route in interval 2014-10-15 21:08:09 +02:00
Mark Liversedge
96f9076c9b Add Running Pace Zones (2 of 3)
.. metrics for time in zone
.. summary on ride summary

Still need to add to cache, histograms and allow editing
of custom zones in a sensible manner (currently edited in kph/mph)
2014-10-14 12:13:08 +01:00
Mark Liversedge
070082b1c0 Copyright messages in PaceZones
.. in truth the code is largely a copy of Zones.{cpp,h}
   written by Sean, but it seemed a bit odd to not show
   that I introduced the file and the changes.

.. recognising that it doesn't /really/ matter much at all !
2014-10-12 22:15:12 +01:00
Mark Liversedge
ca7ef59573 Add Running Pace Zones (1 of 3)
.. in this first part we just add the pace.zones file
   and basic configuration of critical velocity history
   in the configuration pane.

.. in part 2 we need to fixup custom zones and consider
   how they might be adjusted for VDOT/Daniels etc etc

.. in part 3 we need to add pace zones to the ridefile
   cache and then histogram and summary charts.
2014-10-12 22:06:05 +01:00
Mark Liversedge
2102a0f7bb Merge pull request #1094 from Joern-R/autoimport
Auto/Stealth Ride Import when opening an Athlete
2014-10-12 21:02:35 +02:00
Joern
809696d9b3 Auto/Stealth Ride Import when opening an Athlete
...  import Ride Files automatically from a defined Directory per
Athlete
...  runs silently/without "Import Rides" Widget if the files can be
imported/copied/... without error or warning
...  Preferences->Athlete- defines
... the directory - per Athlete and- if the function is active at all
(default is OFF)
... the error handling
... report back ALL errors and warnings by opening the RideImportWizard
popup
... report back Errors and Warnings - but ignore the "File exists"
warning (so that the import directory can be continously supplied with
new files, without the need to remove the already imported ones)
2014-10-12 19:28:16 +02:00
Mark Liversedge
40556883e6 Fast W'bal integration
Dave Waterworth has fixed my implementation of W'bal to
remove my "optimisations" and fix the math.

The W'bal is now computed in a single pass and is just
as fast as the differential form from Andy Froncioni but
has the benefit that is still uses Tau.

Many thanks to Dave, and I'll write this up shortly.
2014-10-11 12:40:05 +01:00
Mark Liversedge
15183e16be Add Labels on Matches in Ride Plot
.. makes it easier to scan and see where it got to without
   having to mouse over the points one by one
2014-10-11 11:28:14 +01:00
Mark Liversedge
71a7323a40 Merge pull request #1079 from Joern-R/pull1
AllPlotWindow - Alt/Slope - improve texts
2014-10-10 21:33:01 +02:00
Mark Liversedge
b92c4d67a4 Merge pull request #1089 from Joern-R/pull2
AllPlot: Some Curves missing - when "Stacked View" = "X" / "By Series" = " "
2014-10-10 20:20:31 +02:00
Joern
8ba99d9907 AllPlot: in Stacked View = yes / By Series = no - Curves missing
... NP, AP, XP and TE, PS curve are not shown as indicated by "Checked"

when changing between rides, "Checked" settings are ignored
2014-10-10 19:38:17 +02:00
Damien
dc56efd4bd AllPlot: show balance in stack view only if checked 2014-10-10 16:42:11 +02:00
Mark Liversedge
4906783478 Google Map Overlay
.. and interval hover on marker

.. need to also show interval on hover as gray path
   but find a way of doing it without duping the code
   in the webpage js.
2014-10-09 22:20:15 +01:00
Mark Liversedge
9703161743 Merge pull request #1082 from Joern-R/columns
Ride Navigator - Table View - Columns resizing improved
2014-10-08 21:04:03 +02:00
Joern
20819fedc3 Ride Navigator - Table View - Columns resizing improved
... improved resizing by not changing other column sizes in "resizing"
... considering keeping a minimum column size of 20
... consideringkeeping all columns within the visible widget space
2014-10-08 20:03:56 +02:00
Mark Liversedge
379989ed1c Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-10-03 22:09:35 +01:00
Damien
1777ce0854 Bin2RideFile: Correct invalid ride time after pause+interval 2014-10-03 22:09:14 +01:00
Mark Liversedge
0b9962f614 Slope/Alt Color Scheme
.. changed to match typical col profile color schemes
2014-10-03 22:08:22 +01:00
Damien
489c9e5988 Bin2RideFile: Correct invalid ride time after pause+interval 2014-10-03 17:55:42 +02:00
Damien
3fabc6810a RouteSegment: Manage RouteSegment (alpha version) 2014-10-02 22:55:54 +02:00
Joern
e09e2a3ba9 AllPlotWindow - Alt/Slope - improve texts
... improve texts for Imperial unit setting
2014-10-02 12:53:26 +02:00
Mark Liversedge
635b425bf6 Add Garmin FR620 Device Type
.. to FitRideFile
2014-09-30 18:36:03 +01:00
Mark Liversedge
98967f3574 Merge pull request #1078 from Joern-R/pull2
AllPlot - Alt/Slope - sync. setting when switching between views
2014-09-30 19:03:48 +02:00
Joern
4b1a62d68f AllPlot - Alt/Slope - switching between views
... the Alt/Plot settings were not in sync between standard anc compare
view (changes in compare view had not impact on standard view - when
de-activating compare)
... Alt/Plot is now also visible in "fullPlot" as this helps to find
sections to zoom in (by checking the color coding)
2014-09-30 17:33:48 +02:00
Mark Liversedge
502ceb5ffb Code Nit Fixups
.. compile time errors and warnings for recent commits
   on slope / altitude.
2014-09-30 12:32:15 +01:00
Mark Liversedge
0c91318f38 Merge pull request #1077 from jonbev/Move-Slope-to-Derived
Move slope to derived
2014-09-30 13:23:10 +02:00
Jon Beverley
4fa35a72c0 Move slope to derived in RideFile 2014-09-30 12:18:08 +01:00
Mark Liversedge
8bd8ffd27b Merge pull request #1076 from Joern-R/pull_allplot
All-Plot - Add "Slope" and "Alt/Slope" curves
2014-09-30 13:12:54 +02:00
Joern
b6d4f3fa2b All-Plot - Add "Slope" and "Alt/Slope" curves
... add "Slope" curve based on Slope Data in Ride Files (with separate
new color)
... add "Alt/Slope" curve based on "Altitude" data series
... sections on "Alt/Slope" have 3 options -  1min/100 m OR 5min/500 m
OR 10min/1000 m
... color / slope assignments are defined in AllPlotSlopeCurve (to look
it up)
... if a plotted section is wide enough the slope % (distance) / VAM
(time) value is shown above
2014-09-30 12:41:06 +02:00
Mark Liversedge
bceb7c6664 Fix UUID for Season
.. must be unique as used to select even when
   name is changed or translated.

.. Thanks to Claus Assmann for the fix.
2014-09-27 10:09:14 +01:00
Mark Liversedge
454e8c2cc5 Don't summarise power zones on runs
.. will need to show pace when its ready
2014-09-26 14:45:20 +01:00
Mark Liversedge
27f23fe4f9 Allow isRun in Filter
.. isRun is a bool, so isRun = 0 or isRun = 1
   will filter for runs.

.. note isRun does more than just look at sport
   it also checks if there are running data series
   in the file and may extend to more over time
2014-09-26 14:33:26 +01:00
Mark Liversedge
0a90063bd9 Metadata Completer Wildcard
.. if you set the values list to '*' in the metadata
   configuration it will inline expand to any previously
   entered value.
2014-09-26 12:02:12 +01:00
Mark Liversedge
7831550668 Differentiate between Runs and Rides
.. isRun() and associated logic
.. ride list darkens runs so they stand out
2014-09-26 11:09:07 +01:00
Mark Liversedge
9efcc7ba3a Fix Copy/Paste Precision
.. Copy in the ride editor lost some precision for the
   lat/lon fields which made it unusable for copying gps
   data into spreadsheets etc.

Fixes #1074
2014-09-26 09:30:47 +01:00
Mark Liversedge
b92564d719 Matches tidy
.. no need for 1 dp
.. no need for unit description
2014-09-25 22:37:10 +01:00
Mark Liversedge
4b1a31891c OOps. Colors for last commit
.. used wrong version, this is more in keeping with the
   color approach and stock colors; darkGray and PLOTMARKER.
2014-09-25 19:22:48 +01:00
Mark Liversedge
6da909a7c7 Highlight best if today !
.. on the trend summary, if the best is for today then
   lets highlight it so it jumps out :)
2014-09-25 19:17:24 +01:00
Mark Liversedge
f4d902dcbb Add Garmin Running Dynamics Data
.. read from FIT/TCX
.. write to JSON
.. view in Editor

NOTE: They are not on any of the charts yet.
2014-09-25 14:31:06 +01:00
Mark Liversedge
36e7fb7caf Merge pull request #1065 from Joern-R/pull1
Last Opened Athlete stored
2014-09-19 16:01:51 +02:00
Mark Liversedge
95b3b5aa92 Initialise Record count WKO+ file reader
.. don't accept an empty wko+ file.

Fixes #1064
2014-09-19 13:40:10 +01:00
Mark Liversedge
d7662133ce Fix RideNavigator No Focus text color
.. was gray on gray which didn't work well !
2014-09-19 11:04:01 +01:00
Joern
c4f8e12237 Last Opened Athlete stored
... last opened was not stored any more in 3.1 final build
2014-09-17 18:50:30 +02:00
Mark Liversedge
c4a48590be Merge pull request #1059 from Joern-R/pull2
AllPlot - Smoothing also for "Left Border"
2014-09-14 16:43:05 +02:00
Joern
5b84ceb1dc AllPlot - Smoothing also for "Left Border"
Problem:
... data points of "Smoothing" settings are set to Zero in result
... this cause e.g. Zero Altitude Values when Plot Smoothing is active
Solution:
... also most left values are "smoothed" now (using only the datapoint
left of them to create the average)
2014-09-14 16:05:43 +02:00
Mark Liversedge
4a4459b6f7 TP.com fixups
.. title metadata

.. title of dialog
2014-09-12 13:18:38 +01:00
Jon Beverley
122b352ee0 Ignore src/debug/ folder 2014-09-11 15:20:55 +01:00
Damien
092c84090a CPPlot: Power zone shading for watts/kg 2014-09-09 22:42:52 +02:00
Damien
df81fdcc92 CPPlot: correct xBttom axis ticks 2014-09-09 22:29:31 +02:00
Mark Liversedge
47fb5068df Add HrNp Ratio
.. to echo HrPw
2014-09-09 16:11:02 +01:00
Mark Liversedge
3578c9caca Add HrPw Metric
.. as a ratio of Average Power to Average Heartrate
   hrpw = ap / ahr
2014-09-07 22:15:12 +01:00
Mark Liversedge
a0d6d6d865 Add Last 2 Months to Seasons
.. jump from 38 days to 3 months is a bit much
2014-09-07 17:36:48 +01:00
Mark Liversedge
3d91e0d392 Make no video the default
.. in gcconfig.pri

Fixes #1052
2014-09-06 11:46:40 +01:00
Mark Liversedge
6caf97ddb9 Merge pull request #1050 from Joern-R/pull3
New Metrics for MTB(mainly) - Bike - Time Carrying / Elevation Gain Carrying
2014-09-05 13:52:46 +02:00
Joern
89d03987c9 New Metrics for MTB - Bike Carrying Time/Elevation Gain
... 2 new metrics (estimates) mainly relevant for MTB or Race bike steep
passes
... a) Time Carrying = moving < 8kph, gaining height, no power, no
cadence
... b) Elevation Gain carring = same criteria, but adding up the
elevation gain

Since there is a certain level of error, the metrics is named as "Est".
2014-09-05 13:31:21 +02:00
Mark Liversedge
10788a4cc8 Merge pull request #1049 from Joern-R/master
JSON char > 127 codepage problem (Issue #1028)
2014-09-04 22:00:55 +02:00
Joern
31ea0f86f6 Revert "Revert "JSON char > 127 codepage problem""
This reverts commit 91397851a10739350339743d89467cfa5a38fc24.
2014-09-04 19:50:24 +02:00
Mark Liversedge
32a49f4c2a Merge pull request #1048 from jonbev/HeatMap
Typo correction on maxLat
2014-09-04 14:42:44 +02:00
Jonathan Beverley
27782ffb9a Typo correction on maxLat 2014-09-04 13:36:47 +01:00
Mark Liversedge
93e5f724cf Merge pull request #1047 from jonbev/HeatMap
Heat map
2014-09-04 13:59:40 +02:00
Jon Beverley
2795f7e073 Change Heatmap to use google maps 2014-09-04 12:50:57 +01:00
Jon Beverley
8ee12aa8ca Add Heat Map 2014-09-04 12:50:57 +01:00
Damien
b440a2af9e CPPlot: Correct crash after switching between Veloclinic and Power plot 2014-09-04 07:31:11 +02:00
Damien
7d72213dfa CPPlot: Correct time for wprime 2014-09-03 23:06:52 +02:00
Damien
44d0a6c11d CPPlot: Add ride plot for veloclinic plot 2014-09-01 22:18:34 +02:00
Damien
75480a60ab CPPlot: Place shade mode labels for veloclinic plot 2014-09-01 21:54:32 +02:00
Damien
d862ff6acb CPPlot: Standard ScaleDraw (not time) for velocliniplot 2014-09-01 21:37:16 +02:00
Damien
87a886100b CPPlot: Add Veloclinic plot
TODO :
  no percentage or heat in this plot
  compare mode
  cp adjustment if no model
  ...
2014-08-31 22:09:28 +02:00
Mark Liversedge
6b1fabff55 Missing from last commit 2014-08-29 19:30:57 +01:00
Mark Liversedge
392d4f2ed3 Apply fix tools early
.. when opening a file and they are 'auto' so the results can
   be used by the derived tool (does NP etc)
2014-08-29 16:29:53 +01:00
Mark Liversedge
71d62bffed Add a tool to derive Torque
.. will be useful to look id out of saddle efforts in
   conjunction with delta torque
2014-08-29 14:49:38 +01:00
Mark Liversedge
381faed61b Show ride count in ride summary
.. when doing a date range, not just in compare mode
2014-08-29 13:25:32 +01:00
Mark Liversedge
b54552d496 W'bal calc optimise
.. use exp() not pow()
2014-08-28 22:59:23 +01:00
Mark Liversedge
a7b2e3f226 Fix Derive Power fixup for auto run
.. if power is already present, or alt or speed are missing
   then the fix derive power postProcess won't try and derive
   power for the ride

.. this is so you can add it as an 'auto' tool and derive power
   values for rides that don't have power but do have speed and
   altitude.
2014-08-28 22:05:07 +01:00
Mark Liversedge
ba5be12bb7 Merge pull request #1039 from jonbev/PercentagePowerAdjustTool
Add power adjustment tool
2014-08-28 17:58:55 +02:00
Jon Beverley
a0156aab27 Add power adjustment tool 2014-08-28 16:57:12 +01:00
Mark Liversedge
6dafc611d9 Fixup Derive Power Tool
.. don't set cadence to 85, use 85 as default if cadence absent
.. some small code nits to shutup compiler
2014-08-28 16:38:59 +01:00
Mark Liversedge
85f6912619 Fixup src.pro
.. FixElevation listed with Qxt src files
2014-08-28 16:24:10 +01:00
Mark Liversedge
50241e91eb Merge pull request #1014 from jonbev/FixElevation
Fix elevation
2014-08-28 17:22:19 +02:00
Jon Beverley
5fe2058bae Merge remote-tracking branch 'origin/FixElevation' into FixElevation 2014-08-28 16:19:08 +01:00
Jon Beverley
2b690f2d31 Fix line endings in src.pro 2014-08-28 16:18:51 +01:00
Jon Beverley
0e980dbc31 Add fix elevation
Added useFilter=true onto the mapquest call and added a bit of smoothing
2014-08-28 16:13:32 +01:00
Mark Liversedge
a79074834a Merge pull request #1038 from jonbev/DerivePowerInFixTool
Derive power in fix tool
2014-08-28 17:05:04 +02:00
Jon Beverley
2ec1fe4beb Merge remote-tracking branch 'origin/DerivePowerInFixTool' into DerivePowerInFixTool 2014-08-28 15:46:01 +01:00
Jon Beverley
b2b6db2a8f Add acceleration adjustments
Cap power at 1000w
2014-08-28 15:45:26 +01:00
Jon Beverley
bf2f830f52 Move Derive power to own fix tool 2014-08-28 15:45:25 +01:00
Jon Beverley
1579c68f9b Add acceleration adjustments
Cap power at 1000w
2014-08-28 15:33:59 +01:00
Jon Beverley
640d3b7721 Move Derive power to own fix tool 2014-08-28 10:07:41 +01:00
Mark Liversedge
981d97c2ed Added Motor Units to the science doc 2014-08-25 15:16:49 +01:00
Mark Liversedge
68992c129d Matches metric
.. how many >2kj matches did you burn ?

.. also taken out the power/slope derived data series
   since Jon is migrating it to a fix tool
2014-08-23 20:08:46 +01:00
Mark Liversedge
85fc57de37 Less qDebug on ANT+
.. it seems to be working ok

.. it provides too much output, even for debugging purposes

.. it isn't relavent for 99% of users now its in the master
   repository and being compiled up and used
2014-08-23 12:49:03 +01:00
Mark Liversedge
3c0506bef7 Fix Crash on Clear during LTM compare seasons
.. initialising settings too late.
2014-08-22 19:09:41 +01:00
Mark Liversedge
04a95545ec Merge pull request #1033 from dresco/cadence_fix
Fix for cadence only sensor
2014-08-22 19:09:43 +02:00
Mark Liversedge
42d7661ca0 Recognise Omar Torres 2014-08-22 16:44:55 +01:00
Mark Liversedge
9d469f771d Merge pull request #1032 from amtriathlon/master
Spanish translation fixes contributed by Omar Torres
2014-08-22 17:42:27 +02:00
Alejandro Martinez
72124addef Spanish translation fixes contributed by Omar Torres (omar.torres@gmail.com) 2014-08-22 12:10:44 -03:00
Jon Escombe
d94f9f7130 Fix for cadence only sensor
Was not detecting that pedalling had stopped, therefore the previous
cadence rate was displayed indefinitely.
2014-08-22 14:13:33 +01:00
Mark Liversedge
964676e94f Science Doc Updates
.. remove references to aerobic and anaerobic threshold as they
   are not really used in the literature anymore

.. remove talk of training interventions and just point out that
   power at LT2 (CP/FTP) is a good indicator of endurance performance

.. we should add a section on MU recruitment and fatigue and
   training interventions with the new features in v3.2
2014-08-22 10:03:22 +01:00
Mark Liversedge
b65be86f1d Merge pull request #1031 from amtriathlon/master
Fixes translation error found by spanish users
2014-08-21 19:21:59 +02:00
Alejandro Martinez
83eb4a2ec7 Fixed spanish translation error reported by 3.1 user 2014-08-21 14:00:23 -03:00
Mark Liversedge
de268dabf1 Merge pull request #1023 from Joern-R/pull1
Add new metric - Elevation Loss
2014-08-20 19:46:22 +02:00
Joern
ce5a8d8e9a Add new metric - Elevation Loss
... for rides having different start/end points (e.g. stage races) this
metric adds information
2014-08-20 19:42:47 +02:00
Mark Liversedge
06fc40a6b4 Fix Constant Alt Initialisation Bug
.. now inits the bool.
2014-08-20 08:39:26 +01:00
Mark Liversedge
a0e55fee9d Set start time/km to zero
.. when opening a ride file.
2014-08-19 18:50:14 +01:00
Mark Liversedge
10640ae3f0 Charette not Charete 2014-08-18 21:51:02 +01:00
Mark Liversedge
9051ff3baf QVector::length() is QT5 only
.. so changed to count() which does the same.
2014-08-18 17:39:58 +01:00
Mark Liversedge
09e73f05c3 Recognise Christian Charete
.. in the contributors
2014-08-18 16:08:28 +01:00
Christian Charete
183608d797 Mac compile error on no libusb 2014-08-18 16:07:06 +01:00
Jon Beverley
94c4492db2 Fix line endings in src.pro 2014-08-18 12:27:40 +01:00
Mark Liversedge
85d1fbe822 Update build id for 3.11 development 2014-08-18 10:18:17 +01:00
Mark Liversedge
37c4152ed2 Default for "Title" when uploading
.. via "Chris C" on the developer list.
2014-08-18 10:08:51 +01:00
Mark Liversedge
99d10960d9 Merge pull request #995 from jonbev/upstream
Add Derived Data (slope & power so far)
2014-08-18 10:56:45 +02:00
Mark Liversedge
347783211f KICKR ANT+ Initial Support
.. the code has been updated to support the Wahoo Kickr
   via an ANT+ USB stick.

.. this requires the Kickr to be running a beta firmware
   of version v1.3.15. This can only be loaded via the
   Wahoo utility.

.. for those that have access to the beta firmware this
   patch will work, for all others they will need to wait
   for the formal release by Wahoo.

.. the code contains *lots* of debug and does not yet support
   calibration and slope mode is largely untested.
2014-08-18 09:46:04 +01:00
Mark Liversedge
0789fdea98 Template announcement
.. for posts to the usual websites

   * bikeradar
   * weight weenies
   * wattage google group
   * timetriallingforum.co.uk
   * golden cheetah announce, users, developers

Will require formatting into the markup each site requires
but will take the effort out of formulating text
2014-08-18 08:58:42 +01:00
Mark Liversedge
41f5cd19d6 Merge pull request #1019 from jonbev/WikiConvertor
Fix links in FAQ index page
2014-08-18 09:19:27 +02:00
Jon Beverley
3c0db9efa3 Fix links in FAQ index page 2014-08-18 08:18:26 +01:00
Mark Liversedge
66c525e2aa Merge pull request #1018 from jonbev/WikiConvertor
Wiki convertor
2014-08-17 22:55:03 +02:00
Jon Beverley
56afa3c938 Add Wiki Convertor
Will run on linux with mono installed. Haven't tried Mac's.
2014-08-17 21:48:17 +01:00
Mark Liversedge
cc215a1e5c Version 3.1 Release
.. update of build and upgrade processing for
   release 3.1 final update.
2014-08-17 20:26:10 +01:00
Mark Liversedge
9ae1102467 Merge pull request #1017 from Joern-R/pullwiki1
Wiki Update
2014-08-17 10:38:22 +02:00
Mark Liversedge
2908f01196 Merge pull request #1016 from Joern-R/pull7
Fix - AllPlot - Smoothing
2014-08-17 10:37:52 +02:00
Mark Liversedge
526e459071 Merge pull request #1015 from Joern-R/pull5
Fix - Compare Rides-Summary Page: AvgHR, AvgPw,... = 0
2014-08-17 10:36:34 +02:00
Joern
67991077f7 Wiki Update
... Zoom Feature in All Plot
2014-08-16 19:05:58 +02:00
Joern
677fc9079d Fix - AllPlot - Smoothing
... values in the ride plot deviate from the ride data since smoothing
takes place even if the sample time is equal to the smoothing interval
(for which the expectation is that the original samples are plotted)
2014-08-16 17:03:03 +02:00
Joern
e500bfcfa9 Fix - Compare Rides-Summary Page: AvgHR, AvgPw,... = 0
... if a metric occurs in more than section (total, avg, maxima,
metrics) the value on the Ride Summary Chart in CompareRides mode
displays "0"
2014-08-16 12:28:01 +02:00
Jon Beverley
feb579ac70 Add fix elevation
Added useFilter=true onto the mapquest call and added a bit of smoothing
2014-08-15 10:55:35 +01:00
Jon Beverley
ef4d1bc8b4 Ignore 2014-08-15 09:04:14 +01:00
Mark Liversedge
ace540a572 Merge pull request #1012 from Joern-R/pull4
Fix - .JSON import of chars > 127 on QT5 problem (leading to ? in text fields)
2014-08-14 21:27:10 +01:00
Joern
ac2a809106 Fix - .JSON import of chars > 127 on QT5 problem (leading to ??? in texts)
... on QT5 the conversion of chars > 127 did not work (ending with ???)
when loading a .JSON ride file
... by this change the implicite type cast (char to QString) when
calling "unprotect" does not take place any more, so the lexer string
must be 'Local8Bit' to what is has been converted when reading the file
... again QT has changed behavior of locale related processing in QT5
(all this worked fine in QT4)
2014-08-14 16:00:00 +02:00
Mark Liversedge
bc0cba5f46 "Fix" some cppcheck warnings
.. these are trivial changes that are mostly to adjust syntax
   used in the code so cppcheck doesn't get confused.

   Thanks to Bart Coddens for pointing these out.

   CppCheck is available from:
   https://www.icts.uiowa.edu/confluence/display/BRAINSPUBLIC/Using+Cppcheck+To+Produce+Better+Code
2014-08-13 09:14:44 +01:00
Mark Liversedge
7dba1d204f Science doc update from review
.. LT1/LT2 definitions
2014-08-10 22:09:40 +01:00
Mark Liversedge
14578f7398 Minor fixup to FAQ 2014-08-10 21:30:50 +01:00
Mark Liversedge
dda1597a8d 3.1 FAQ Updates
.. minor changes to reflect how things now work in 3.1
2014-08-10 21:17:18 +01:00
Mark Liversedge
8200066d68 3.1 Release Notes 2014-08-10 20:41:26 +01:00
Mark Liversedge
b976905e68 Avoid saveState() warning on object name
.. by setting it for the unified toolbar on a Mac.
2014-08-10 16:16:09 +01:00
Mark Liversedge
ce5bd9f9d1 Add Lactate Threshold section to Science Doc
.. inspired by Prof Seilers layman's document on Lactate Threshold.
   [may still be available here: https://www.dropbox.com/s/vgxjbo32i0o94nt/The%20Lactate%20Threshold_Seiler.pdf]
2014-08-10 13:58:58 +01:00
Mark Liversedge
997c432167 Merge pull request #1010 from Joern-R/pull3
Small-Plot - wrong Axis Scaling and Labels
2014-08-10 13:33:13 +01:00
Joern
9f0b61e642 Small-Plot - wrong Axis Scaling and Labels
... wrong Axis IDs causing the following problems
... X-Axis - not considered time, but high (wrong label/wrong scale)
... Y-Axis - altitude curve not properly scaled
... use similar minimum scale for altitude like AllPlot
... attach Alt-curve first (to be in background)

(used/tested at HrPw window, Split Activity Wizard, Merge Activity
Wizard)
2014-08-10 14:22:49 +02:00
Mark Liversedge
9871100259 Don't blank CP chart in trends
.. when there is no ride selected / manual entry because
   we plot a date range not a single ride !
2014-08-10 10:11:51 +01:00
Mark Liversedge
684970ef0f Merge pull request #1008 from Joern-R/pull2
Wiki - HR-vs-Power
2014-08-09 18:34:42 +01:00
Joern
13bbfb876e Wiki - HR-vs-Power
... added HR vs Power chart explanation to Wiki
2014-08-09 18:07:06 +02:00
Mark Liversedge
9286d4f2fd Merge pull request #1002 from jonbev/WindowsWindowState
Reopen window in maximised state (windows)
2014-08-08 21:17:11 +01:00
Jon Beverley
cde54eba51 Change to use Qt saveState & restoreState
Should work on Win, Mac & Linux.
2014-08-08 11:16:04 +01:00
Jon Beverley
e4ed56bb8f Revert "Ignore"
This reverts commit 7e3d8dcaaf.
2014-08-08 11:13:48 +01:00
Mark Liversedge
1cb483654e remove global QApplication *application
.. it is available from the macro qApp anyway.
2014-08-07 22:25:03 +01:00
Jon Beverley
7e3d8dcaaf Ignore 2014-08-07 14:51:27 +01:00
Mark Liversedge
b470523cd3 Merge pull request #1003 from Joern-R/pull1
Translation DE
2014-08-06 14:14:17 +01:00
Joern
abea23dc9c Translation DE
...  small corrections
...  adding final texts
2014-08-06 15:11:10 +02:00
Mark Liversedge
9bdda8ebc5 Hr:Pw marker color nit 2014-08-06 11:01:15 +01:00
Jon Beverley
250d9d1abe Reopen window in maximised state (windows) 2014-08-06 09:49:22 +01:00
Mark Liversedge
8917556ad0 WASP packet protocol document
.. added to contrib
2014-08-05 21:21:06 +01:00
Mark Liversedge
5fe3e9bddf Merge pull request #999 from Joern-R/pullwiki
Wiki - Pictures - Initial delivery
2014-08-05 18:35:59 +01:00
Joern
c8a438039e Wiki - Pictures - Initial delivery
... Screenshots and
... Animated GIF
for the GoldenCheetah wiki
2014-08-05 17:09:35 +02:00
Damien
a4044191fa Translation FR (2/2) 2014-08-05 00:34:13 +02:00
Mark Liversedge
74e3591193 Merge pull request #998 from Joern-R/pull1
Translation Enablement
2014-08-04 19:27:57 +01:00
Joern
68beddd1b7 Translation Enablement
... 2 more small enhancements
2014-08-04 20:10:28 +02:00
Damien
ecb674756b Translation FR (1/2) 2014-08-03 23:56:44 +02:00
Damien
25b21819bd Small typo 2014-08-03 23:48:45 +02:00
Damien
fd204a65e6 Bin2RideFile : increase seconds after invalid entry 2014-08-03 22:28:35 +02:00
Mark Liversedge
6bf0c2334b Version 3.1 RELEASE CANDIDATE 4
.. updated versioning
2014-08-03 16:07:47 +01:00
Mark Liversedge
52c023d5c3 ShareDialog Fixup
.. Strava now works on Windows, avoiding the QScriptEngine crash

.. the same approach has been applied to RideWithGPS, Cycling Analytics
   Selfloops

.. commented out Garmin as its not supported yet
2014-08-03 15:57:51 +01:00
Mark Liversedge
ffeec636c5 STRAVA USE SIMPLE JSON PARSER
.. if this works ok on Windows then we will need to
   apply the same approach for all the 'share' types
2014-08-03 10:18:27 +01:00
Mark Liversedge
a4b2990b51 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-08-03 09:43:54 +01:00
Joern
c6b2394a33 Translation DE
... some translation bugs
2014-08-03 09:43:33 +01:00
gcoco
7c01f18202 Add Fenix2 to Garmin Devices
Submitted by: Jon Beverley <jon@carltonsoftware.co.uk>
From Pull Request #995.
2014-08-03 09:43:33 +01:00
Mark Liversedge
c89fa2812f Lightweight JSON Parser
.. because QScriptEngine crashes

.. because QJsonDocument isn't available till QT5 and
   we still make windows builds with QT4

.. because we're just processing small response documents
   from Strava (and maybe others) that are NOT complex

This code has been snaffled up from Victor Laskin's blog
and is 100% Copyright (C) 2013 Victor Laskin (victor.laskin@gmail.com)
details available here: http://vitiy.info/?p=102

The code is slightly modified to fit in with GC and also to fix
some compiler nits; no namespaces, replace() removed as caused an
unneccessary stdlib exception and size_t used in a number of places
instead of int.
2014-08-03 09:39:12 +01:00
Mark Liversedge
be83533509 Merge pull request #997 from Joern-R/pull5
Translation DE
2014-08-03 09:22:31 +01:00
Joern
0572680b2c Translation DE
... some translation bugs
2014-08-02 17:39:26 +02:00
Jon Beverley
03fd402b64 Add power estimation
Need to be able to add parameters for users to adjust their drag factors
numbers currently work out not too bad for me but needs testing with
more ride files. I have tried it with Mark's Marmotte file and it
doesn't do too bad.

Please feel free to rip it apart and tell me it is wrong - its a good
start hopefully.
2014-08-02 12:51:31 +01:00
Jon Beverley
0721816b01 Revert "Add Fenix2 to Garmin Devices"
This reverts commit c6112bd13c.
2014-08-01 08:00:14 +01:00
gcoco
27ab0b89d1 Add Fenix2 to Garmin Devices
Submitted by: Jon Beverley <jon@carltonsoftware.co.uk>
From Pull Request #995.
2014-07-31 16:15:34 -04:00
Mark Liversedge
7e1483d47b Strava upload Use "id" not "upload_id"
.. still contains debug though!
2014-07-30 22:47:14 +01:00
Mark Liversedge
2ad8e4c4e6 STRAVA UPLOAD DEBUG 2014-07-30 22:19:52 +01:00
Jon Beverley
c6112bd13c Add Fenix2 to Garmin Devices 2014-07-30 16:52:07 +01:00
Jon Beverley
528d880a90 Derive Slope Data
- If Alt data present then calculate slope
- Smooth the slope data after calculation
2014-07-30 16:42:45 +01:00
Mark Liversedge
b2df92cbc6 Review of Science docs
.. better grammar and flow and also changed some of the
   text to better explain things like hydration and gels etc
2014-07-30 12:26:53 +01:00
Mark Liversedge
4bea06f150 Merge pull request #994 from amtriathlon/master
Spanish translation update
2014-07-30 08:04:56 +01:00
Alejandro Martinez
fdc4be16e6 Spanish translation update 2014-07-29 20:57:30 -03:00
Mark Liversedge
539672b18b Fix Column Widths Nit
.. in ride navigator for new athlete
2014-07-29 23:24:28 +01:00
Mark Liversedge
38076efc74 Merge pull request #993 from Joern-R/pull4
Fix context menu in ride editor (QT5 problem only)
2014-07-29 19:45:24 +01:00
Joern
92b586b691 Fix context menu in ride editor (QT5 only)
... same problem as in 'Ride Navigator'  (only QT 5.3.1) (fixed on June
20th)
... tested both 4.8.6 and 5.3.1 now
...
88e1dc5745
2014-07-29 20:46:41 +02:00
Mark Liversedge
df9c72c822 Merge pull request #992 from Joern-R/pull3
Ride-Details - 'Extra' Tab - Text Fields 'Read Only' only
2014-07-28 21:10:42 +01:00
Joern
c7c8e77197 Ride-Details - 'Extra' Tab - Text Field 'Read Only' only
... be less restrictive for 'TextEdit' and 'LineEdit' field, jus set
'Read Only' to still allow mainly scrolling (which is otherwise blocked)

... mainly for 'Change Log'  and 'Calendar Text'
2014-07-28 20:12:30 +02:00
Mark Liversedge
c7ec57ba6c Updated GC Science Doc
.. to include Bioenergetics and the PD Model
2014-07-28 17:21:57 +01:00
Mark Liversedge
b0f62d9199 RELEASE CANDIDATE 3X
.. re-issue of RC3 without Fix Elevation
2014-07-28 12:50:01 +01:00
Mark Liversedge
41cd3dad19 Defer "Fix Elevation" tool to 3.2
.. pulling out of v3.1 due to problems better fixed outside
   of the release window
2014-07-28 12:45:05 +01:00
Mark Liversedge
1fede60001 Refresh Series Stack when ByDistance changes
.. Fixes #990
2014-07-28 07:55:39 +01:00
Mark Liversedge
613e41b26f Version 3.1 RELEASE CANDIDATE 3
.. updated version number
2014-07-27 21:38:10 +01:00
Mark Liversedge
5cd379ef00 Fatal Dialog not QDebug
.. if we cannot start due to permissions / create library folder
   we now output a dialog rather than a qDebug -- this is better
   for Windows or those that start from a menu etc
2014-07-27 21:16:42 +01:00
Mark Liversedge
61fc9907a3 Honour MapQuest terms of service
.. with an attribution and link to the MapQuest website.

.. the terms of service, for free usage, are detailed
   here: http://developer.mapquest.com/web/products/open/elevation-service
2014-07-27 20:10:36 +01:00
Mark Liversedge
f51810a70c REMOVE OAUTH DEBUG 2014-07-27 19:41:00 +01:00
Mark Liversedge
a638b27bb1 Merge pull request #989 from Joern-R/pull2
Histogram - parameter changes
2014-07-27 17:53:47 +01:00
Joern
e718f35fa2 Histogram - parameter changes
... changes in some of the parameter do not take immediate effect on
change, some do - adjusted to unique handling of config. changes
2014-07-27 18:55:51 +02:00
Mark Liversedge
bd7893ce9c Estimated vo2max should be a peak
.. Fixes #988
2014-07-27 15:39:43 +01:00
Mark Liversedge
44c0b91d34 Fix Elevation Warn Internet Required
.. some folks won't realise !
2014-07-27 11:55:07 +01:00
Mark Liversedge
071e178677 Fix Elevation LUW/Command Fixup
.. needed to only use commands when adjusting
   elevation so that undo/redo works afterwards
2014-07-27 11:50:55 +01:00
Mark Liversedge
6a5b3f9449 Fix Tools Visual Feedback
.. when busy disable buttons and show busy cursor
2014-07-27 11:17:33 +01:00
Mark Liversedge
f79bef3d9d Add Jon Beverley to Contributors
.. and add his Fix Elevation to the feature list for 3.1
2014-07-26 22:41:38 +01:00
Jon Beverley
72b9315b98 Fix Elevation Data
.. will add elevation or correct elevation data when GPS data
   is available to perform a lookup

.. uses MapQuest data via  their public API

Fixes #305
2014-07-26 21:38:14 +01:00
Mark Liversedge
384ce6e043 MORE OAUTH DEBUG 2014-07-26 14:21:47 +01:00
Mark Liversedge
c698ab4ebf Default Weight Refresh
.. if the default athlete weight is changed then all ride
   metrics need to be recalculated to reflect the new default

.. any cached values need to be invalidated so interval metrics
   reflect the new weight (if needed)

It would be better for users to maintain weight either against the
ride in the "Weight" field, or via Withings !
2014-07-26 11:38:00 +01:00
Mark Liversedge
257fb4cdf2 OAUTH DEBUG TEMPORARY WHILST DEBUGGING 2014-07-26 10:41:49 +01:00
Mark Liversedge
e0e2c392e2 Strava Upload Fix Candidate
.. attempting to fix the strava upload problems, this is
   a set of changes to look at that, but not able to test
   if it fixes the problem

.. also fixed the vomitlist of compiler warning messages
2014-07-26 10:28:03 +01:00
Mark Liversedge
2e71e89b33 Altitude Ticks Nit 2014-07-25 19:33:35 +01:00
Mark Liversedge
051f2fe5ad Altitude on a fullplot scaling
.. by making it fill the screen it suggests rides have more ascent
   than they actually do. So default to a minimum of 0-500m for the
   altitude scale.
2014-07-25 15:42:52 +01:00
Mark Liversedge
b6340d92be Joule GPS static member compile nit
.. initialising members in declaration ist verboten.
2014-07-25 09:29:58 +01:00
Damien
6af7e134b2 Bin2RideFile: Read downloaded bin2 files form Joule (not GPS) unit 2014-07-24 22:17:45 +02:00
Mark Liversedge
b8ee673fd7 AllPlot Calibration Markers Tweak
.. only show them on power plots

.. don't show text

.. make them /really/ faint

NOTE: This is because crank based powermeters (e.g. SRM) will send
      calibration messages every time you freewheel for 3 secs or more and
      modern headunits (e.g. Nav2Coach) will record and adopt them.

      As you can guess, I have an N2C + SRMs and get > 20 or 30 calibrations
     every ride with the latest N2C firmware, so this one is for me.
2014-07-24 09:29:53 +01:00
Mark Liversedge
14251ad9d1 Merge pull request #983 from Joern-R/pull1
Translation DE
2014-07-23 18:52:41 +01:00
Joern
ba17ba224b Translation DE
... small adjustments
2014-07-23 19:56:04 +02:00
Mark Liversedge
97a030b8fb Merge pull request #982 from Joern-R/pull5
Translation Enablement
2014-07-21 20:10:40 +01:00
Joern
0993739d9c Translation Enablement
... some last tr()s
... translation for new "Chart Titles"
... translation for new "Default Charts"
2014-07-21 21:09:07 +02:00
Mark Liversedge
f61e01683f Merge pull request #979 from Joern-R/pull3
Translate ":/Charts.XML" during import
2014-07-21 19:08:34 +01:00
Mark Liversedge
d1f6e15d65 Merge pull request #981 from Joern-R/pull4
ColumnChooser - Drag&Drop problem with special Characters and QT 4.6.8
2014-07-21 18:17:25 +01:00
Joern
381c43cab8 ColumnChooser - Drag&Drop problem with special Characters and QT 4.6.8
... the .toUTF8() conversion used with QT5.3.x to handle special
characters (e.g. german Umlaute) in column chooser does not work for QT
4.8.6 (at least not for the Windows) - as a result (Drag&Drop from those
fields into Columns or Search Field is not working)
... following the approach other places, changed approach to
"serialization" of the info for "Drag&Drop" - so work independent on any
QT conversions (which seem to depend on other conditions - change over
time)
2014-07-21 19:13:06 +02:00
Joern
4f8e7c82a5 Translate ":/-Layout.XML" metrics charts
... second part: 2nd part ("-Layout.XML") translation
... "Mapping Table generation" provided as a new LTMTool routine (to
avoid duplicate code)
... mapping to HomeWindow::restoreState(bool useDefault) for the LTM
Window type charts added
... metricUnit considered in getting the mapping texts for "unit"
2014-07-21 17:56:18 +02:00
Joern
1af00e3809 Translate ":/Charts.XML" during import
... translate the names and units for Metrics and PMmetrics to the
locale of GC-preferences
... translate ONLY once if the default-chart is imported
2014-07-19 18:25:43 +02:00
Mark Liversedge
b0f6fc2b6a Merge pull request #978 from Joern-R/pull2
Error in "tiz" - Filter for 'hr' series
2014-07-18 18:13:18 +01:00
Joern
3957769587 Error in "tiz" - Filter for 'hr' series
... offset for hr-series wrong in CPX (after adding CPZone)
2014-07-18 17:55:55 +02:00
Mark Liversedge
291adc0a9e Merge pull request #977 from Joern-R/pull1
Update Translation DE
2014-07-17 19:54:28 +01:00
Joern
d38480333e Update Translation DE
... update of file (LUPDATE) / sync with sources
2014-07-17 14:43:48 +02:00
Mark Liversedge
406f2d7164 Kickr Constants 2014-07-16 10:24:42 +01:00
Mark Liversedge
dee7d9a28b Distinguish Kickr ANT+ Power Device
.. just set a bool on the channel, but will need to setup
   a separate channel for commands in executive classes
2014-07-15 19:46:52 +01:00
Mark Liversedge
d13dd55bc9 Unzoom fails on CP Plot
Fixes #972
2014-07-15 00:50:51 +01:00
Mark Liversedge
838ec34506 Merge pull request #971 from Joern-R/pull2
Translation Enablement / Corrections
2014-07-14 18:07:23 +01:00
Joern
09217fc381 Translation Enablement / Corrections
... some more tr() (LTMTool, LTMSetting)
... for Lx/Hx in Time and unit "seconds" translation not working in
constructor, therefore moved to "initialization" for both HR and Power
(similar to the translated metric names) (HrTimeInZone, TimeInZone)
... in RC2 - Windows (name with "umlaut") not displayed in official
build (adjusted to be handled like the one name with umlauts already
defined)
2014-07-14 19:01:14 +02:00
Mark Liversedge
e69e25b98c Fix SEGV on Y-axis Widget in Trend Chart
Fixes #970
2014-07-14 15:10:15 +01:00
Mark Liversedge
c292a5eef9 Added error checking to Twitter OAuth
.. but cannot test, so please check it !
2014-07-14 12:07:22 +01:00
Mark Liversedge
9cf52eb40d Merge pull request #969 from Joern-R/pull1
Update Translation DE
2014-07-14 10:58:26 +01:00
Joern
e5b4b13c6e Update Translation DE
... translation DE update (based on RC2 commits) - but not included in
RC2
2014-07-14 11:17:58 +02:00
Mark Liversedge
c5a1888662 Below CP Work + W' Work = Total Work
.. previously we have computed below cp work as only that
   work when power was at or below CP

.. since we want to track energy from CP and W' it makes more
   sense to make below CP work include all work not from W' stores.
2014-07-13 09:38:15 +01:00
Mark Liversedge
b18038e61e Version 3.1 RELEASE CANDIDATE 2
.. updated version number and re-activated upgrade processing
2014-07-12 11:30:56 +01:00
Mark Liversedge
ec42eb6ccc W'bal integral calculation speed up
.. by stopping decay calculation when its incrementing by
   less than 10 joules, thats almost nothing.
2014-07-12 10:55:19 +01:00
Mark Liversedge
9c15e6c4fa Limit W' bal integral exp Decay to TAU * 3
.. when computing W'bal decay -- since we know the half-life
   for the decay we might as well use it rather than a pretty
   big constant of 1 hour !

.. it saves about 35% of time to compute metrics
2014-07-11 10:40:05 +01:00
Mark Liversedge
515f9f77fc Set the title when adding a chart
Fixes #967
2014-07-10 20:13:45 +01:00
Mark Liversedge
3182491792 W'bal invalidate and recompute
.. when formula selection changes
2014-07-10 17:31:17 +01:00
Mark Liversedge
41124d7821 Enable selection of W'bal formula
.. Differential - uses the Clarke/Froncioni fast differential eqn

.. Integral - uses the original Skiba et al 'slow' equation
2014-07-10 17:14:01 +01:00
Mark Liversedge
309b907267 Only hide model estimates when W' < 1kJ
.. instead of 10kJ
2014-07-09 13:58:41 +01:00
Mark Liversedge
23924dd377 GC Science Docs
.. fix grammar, spelling and style
2014-07-08 13:10:14 +01:00
Mark Liversedge
15f392d7b3 GProgressDialog Move and no ESC to close !
.. we can now drag and move the GProgressDialog around

.. if user hits ESC we trap and ignore it (otherwise it would
   triggers a close event that causes a crash)
2014-07-08 11:32:56 +01:00
Mark Liversedge
4d997cd511 Add Support for PWX "title" field
.. it is read/written to metadata field called
   "Workout Title"
2014-07-08 09:50:34 +01:00
Mark Liversedge
ded5f5d84f Merge pull request #964 from rclasen/srm-overflow
SrmRideFile fixes
2014-07-08 09:43:36 +01:00
Rainer Clasen
7b42b863a1 SrmRideFile: handle datacnt overflow
datacnt is 16bits so it overflows easily for large files (9 hours with
0.5sec recint).

I've also seen datacnt and block sum to be inconsistent in other cases.

To handle this more graceful, we're now taking the max of both counts and
let the EOF detection do it's job when one of them is wrong.

We do have to use one of these limits as some SRM files have junk after
their last chunk (so, just reading chunks till we get EOF retunrs this
junk, too).
2014-07-08 09:29:25 +02:00
Rainer Clasen
fd5d7cfd7b SrmRideFile: handle EOF while reading chunks
code was blindly trusting datacnt... and kept reading past EOF. That's bad
as datacnt occasionally isn't matching the available data (overflow,
corruption, ...)
2014-07-08 09:29:25 +02:00
Rainer Clasen
34a979096c SrmRideFile: don't assert() on bad file version
replaced assert() of file version with graceful error handling.
2014-07-08 09:29:25 +02:00
Mark Liversedge
dda742fcd4 First Draft of Content for New 3.1 Website
.. outlining the basic science in GoldenCheetah
2014-07-07 20:58:21 +01:00
Mark Liversedge
e320e276a1 PfPv Plot Quadrant Markers Colors
.. when in compare mode
2014-07-06 12:01:30 +01:00
Mark Liversedge
f0f4f8d3c6 Export LTM Chart Data Option
.. forgot to commit before RC1
2014-07-06 10:37:58 +01:00
Damien
8804945eb4 Strava: correct Strava OAuth process 2014-07-06 10:34:12 +02:00
Mark Liversedge
c87aa43e6c Fix Compare Histogram Zone labels
.. don't show when not checked for compare
2014-07-05 11:38:21 +01:00
Mark Liversedge
fb67dad4a8 Ride Plot Refresh Bug
.. when compare switched off when not visible we need to
   refresh when we become visible
2014-07-05 11:18:05 +01:00
Mark Liversedge
dc65542cbc Version 3.1 RELEASE CANDIDATE
.. updated version number and activated upgrade processing
2014-07-04 11:53:01 +01:00
Mark Liversedge
0ad73f7567 Fix Estimates on LTM Data Table
Fixes #867
2014-07-04 10:53:15 +01:00
Mark Liversedge
a7cbd7a187 Add Video support in version string
.. so you can tell what support has been compiled in
   to the binary from a crash report.
2014-07-04 08:53:25 +01:00
Mark Liversedge
d3e9d2d31f Add Sidebar to Release Notes 2014-07-04 07:32:33 +01:00
gcoco
85273e01b2 Document Global Message 104 - battery
But who knows what it actually has in it.
2014-07-03 15:28:32 -04:00
Mark Liversedge
b78a04b401 Fix delta compare intervals x-axis
.. was fixed for compare date ranges but somehow got
   overlooked for comparing rides and intervals
2014-07-03 13:59:55 +01:00
Mark Liversedge
e913d77bd6 W'bal on ErgPlot always starts at 0
.. so you can see quickly how 'deep' a workout will
   take you as you scroll through them.
2014-07-02 23:42:10 +01:00
Mark Liversedge
c4f43c3fad Fix W'bal on Erg Plot
.. it got broken when we moved to the 2nd variation W'bal formula
2014-07-02 23:27:38 +01:00
Mark Liversedge
1ab335b0b3 w/kg even in imperial !
Fixes #869
2014-07-02 20:34:18 +01:00
Mark Liversedge
c6243dac09 Fixup Ride Editor icon text color 2014-07-02 20:17:22 +01:00
Mark Liversedge
3cee7dacfa Fixup trend line migration
.. now a combo and not a checkbox

.. default to no trend line
2014-07-02 19:58:06 +01:00
Mark Liversedge
a9720d6b36 Fixup CP chart
.. remove inverse time (but add support to Model for future reference)

.. fix x labelling for plotting Work

.. remove options for best shading, its now on or off

Fixes #924
2014-07-02 19:45:21 +01:00
Mark Liversedge
bb5fdb094d Zoom AllPlot a bit bigger 2014-07-02 15:48:20 +01:00
Mark Liversedge
be282e5cd4 Add Ralf Spenneberg to contributors 2014-07-02 15:48:01 +01:00
Mark Liversedge
e32714f6eb Merge pull request #959 from spenneb/master
Edge 1000 added
2014-07-02 15:45:04 +01:00
Ralf Spenneberg
b1e20bf8b9 Edge 1000 added 2014-07-02 16:41:33 +02:00
Mark Liversedge
1066dd2975 Fix W'bal compare mode
.. it was accidentally omitted and somehow got lost and
   never added back.

.. we now show w'bal in compare mode and its probably one of
   the most interesting comparisons !!!!

Fixes #958
2014-07-02 13:57:52 +01:00
Mark Liversedge
4e8cd2398c Classic theme accent color
.. made Fuschia to be a little more vibrant
2014-06-30 22:47:24 +01:00
Mark Liversedge
b1d4bd1239 Change 'Classic' theme
.. it needed color selections that worked better on
   a light background
2014-06-30 20:08:32 +01:00
Mark Liversedge
a551335b6d GProgressDialog Mac QT 5.3.1 fixups
.. being more careful with modality and mainwindow
2014-06-30 18:03:44 +01:00
Mark Liversedge
224d1d0a4b GProgressBar honour Theme Flat/Mac 2014-06-30 17:04:58 +01:00
Mark Liversedge
30ac368f03 GProgressDialog
.. in an attempt to avoid the QT 5.3.1 QProgressSialog
   bug and also put a bit of our own styling onto this
   a GC implementation of QProgressDialog

.. it has no abort button DELIBERATELY

.. not tested on OS X .. yet
2014-06-30 16:38:03 +01:00
Mark Liversedge
26b10b2aa9 Merge pull request #955 from Joern-R/pull3
Translation DE - Update
2014-06-30 13:28:22 +01:00
Joern
6d7771d77f Translation DE - Update
... translation updates to latest Commit Level
2014-06-30 14:29:03 +02:00
Mark Liversedge
142882be48 Merge pull request #954 from Joern-R/pull2
Some more AM/PM adjustments
2014-06-30 13:20:05 +01:00
Joern
3e62f8e139 Some more AM/APs
... some more AP/AM changes (hopefulyl the last ones)
... Setttings.h - the GC_DATETIMEFORMAT constant is not used anywhere
(old usages are de-activated)
2014-06-30 14:21:19 +02:00
Mark Liversedge
205fa1e54b Merge pull request #953 from Joern-R/pull1
Compare Pane - treatment of duration & problem when adding new metrics
2014-06-30 12:49:41 +01:00
Joern
21f30cb14e Compare Pane - treatment of duration & problem when adding new metrics
... treat both Time & Duration equally (don't use QTime->toString), but
convert into seconds (since duration can be above 23:59:59 - especially
in Trends view
... table widget looses columns when dynamically adding columns in
Options->Metrics (fixed by setting columnCount to (0) first before
defining the new number of columns)
2014-06-30 12:56:03 +02:00
Mark Liversedge
ae00fe4965 Merge pull request #952 from Joern-R/pull6
Compare Pane - sorting improvements / fix SEGV
2014-06-29 20:07:39 +01:00
Joern
5eba402166 Compare Pane - sorting improvements
... when sorting first and adding new items, table data is partly empty
and when you next click on item GC dumps (fixed by de-activating the
sorting while refreshing the QTableWidget)
... date fields did not sort due to different formats strings used in
"toString" and "fromString" conversion / added info to translators
... duration and time fields did sometimes not sort (dependent on
time/duration having hours or not)
2014-06-29 18:48:41 +02:00
Mark Liversedge
dc6986725e Merge pull request #951 from Joern-R/pull5
Details - Metrics Tab (UI Nit)
2014-06-29 14:13:54 +01:00
Mark Liversedge
c2150e8c6f Merge pull request #950 from Joern-R/pull4
Consistent handling of "seconds" and tr('seconds')
2014-06-29 14:13:18 +01:00
Mark Liversedge
cc6ad31eb1 Merge pull request #949 from Joern-R/pull3
Remove AM/PM from time formatting (to be Locale neutral)
2014-06-29 14:12:37 +01:00
Joern
f7ba8c2db5 Details - Metrics Tab (UI Nit)
... for metrics / time fields ("seconds") don't show units, since the
field is QTimeEdit (in hours)
2014-06-29 12:36:02 +02:00
Joern
1f10f04fe2 Consistent handling of "seconds" and tr('seconds')
... check both for original text and translation when settings precision
for plot
... consistent handling of 'seconds' in GC
2014-06-29 12:34:14 +02:00
Joern
312e5b0f03 Remove AM/PM from time formatting (to be Locale neutral)
... sync all format strings for time input/output to 'hh:mm:ss'
... remove any 'AM/PM' time formats
... remove tr() commands from time formats (since 'hh:mm:ss' is
reasonable around the globe)

... main reason: QT5 does not follow the pure formatting rules any more
(like QT4), but considers the system.locale in formatting as well (so
for system which have no AM/PM, even if the format string is set, the QT
routines ignore that - having some side effect on GC)
2014-06-29 11:24:56 +02:00
gcoco
755ed97b6c Add missing semicolon 2014-06-29 04:20:35 -04:00
gcoco
5a88a43a65 Add #DEFINES to GC_HAVE_DWM 2014-06-28 20:50:03 -04:00
gcoco
7ed9d67e9b Fix case for dwmapi.h 2014-06-28 20:49:19 -04:00
Mark Liversedge
caa0b21949 GC_VIDEO_XXX Configuration (mac)
.. works on Mac too, added ability to disable video altogether
   on Mac with GC_VIDEO_NONE even though it uses native libs so
   pretty pointless !
2014-06-28 15:58:52 +01:00
Mark Liversedge
5fd4005f13 Enable Drag/Drop on QT 5 > 5.3.1 on Ride List
.. they fixed the bug in QT at 5.3.1

.. see https://bugreports.qt-project.org/browse/QTBUG-37813
2014-06-28 15:27:39 +01:00
Mark Liversedge
ddfdb78e55 GC_VIDEO_XXX Configuration (windows)
.. now tested on Qt4 and Qt5 with VLC and NONE without issues.

.. but did notice a double include in GcWindowRegistry that has been removed.

NOTE: Still needs testing on Mac OS X
2014-06-28 15:22:20 +01:00
Mark Liversedge
fde98093a7 GC_VIDEO_XXX Configuration
.. you can now select what kind of video widget you
   want to build.

   GC_VIDEO_NONE       - No media support compiled in
   GC_VIDEO_VLC        - Use VLC (only on Win/Linux)
   GC_VIDEO_QUICKTIME  - Use Apple QuickTime (only on OS X)
   GC_VIDEO_QT5        - QT5 video and associated backends (O/S dependent)

NOTE: This needs testing on non-Linux platforms.
2014-06-28 14:49:33 +01:00
Mark Liversedge
db94e5719c Merge pull request #948 from Joern-R/pull2
Options - CP and LT Zones (UI nit)
2014-06-28 14:13:01 +01:00
Joern
1718fb095c Options - CP and LT Zones (UI nit)
... some columns  not included in bold/normal switching of "Def" button
2014-06-28 14:46:49 +02:00
Mark Liversedge
2826473089 Merge pull request #947 from Joern-R/pull1
LTM Popup - cosmetics
2014-06-28 12:48:33 +01:00
Joern
af7685a11b LTM Popup - cosmetics
... Font-Size for Header Texts increased to 10px (since the 8px font is
very ugly - at least on Windows 7) - since the Screen can be resized,
bigger header texts can still be read after resizing.
2014-06-28 13:47:59 +02:00
Mark Liversedge
02c8ae5252 Merge pull request #946 from Walibu/master
Fix error about missing qtsolutions/config.pri with Qt 5
2014-06-28 12:40:08 +01:00
Walter
0bde2d564f Fix error about missing qtsolutions/config.pri with Qt 5 2014-06-28 13:27:23 +02:00
Mark Liversedge
e56b8b2444 Fix SEGV when old charts.xml present
.. because there will be ZERO presets !
2014-06-28 10:46:45 +01:00
Mark Liversedge
7fac0694eb TRUE/FALSE are case sensitive
.. change to true/false
2014-06-27 19:45:46 +01:00
Mark Liversedge
4eb106d045 Merge pull request #944 from Joern-R/pull2
Translation DE - update
2014-06-27 19:44:25 +01:00
Mark Liversedge
ffd67ae0cf Merge pull request #943 from Joern-R/pull1
LTM Popup - a few more improvements
2014-06-27 19:43:42 +01:00
Joern
ae6c80d2f7 Translation DE - update
... updated translations for DE
2014-06-27 20:01:53 +02:00
Joern
88431557e0 LTM Popup - last changes
... show also METRIC_BEST if such a curve is available
... ignore METRICs which are not ride related (Estimates, Measures) in
the Ride Table
... add Text if such a Metric was ignored (so that User do not assume
this to be a bug)
2014-06-27 19:54:15 +02:00
Mark Liversedge
716384a234 Add TRIMP based PMC to charts.xml 2014-06-27 07:01:52 +01:00
Mark Liversedge
846c9f20e1 A bit of transparency on reveal controls
.. sometimes they obscure chart content and its easy enough to
   make them slightly transparent.
2014-06-25 17:52:40 +01:00
Mark Liversedge
2ffce3f9e6 Fix 2secs ride plot fencepost errors
.. multiple off-by-one errors working together to truncate the
   ride plot by 2 seconds.

Fixes #935
2014-06-25 15:13:57 +01:00
Mark Liversedge
6b26f527fc Fix SEGV and more when athlete home changed
.. segv removed caused by signalling configChanged when context has been
   deleted due to all the mainwindows being closed

.. check for path being reset to blank as well as being set to a different
   place.
2014-06-25 12:30:52 +01:00
Mark Liversedge
ca49c67515 Fix up Library/GoldenCheetah and GC_HOMEDIR
.. fix the prior fix. ugh.
2014-06-25 11:47:30 +01:00
Mark Liversedge
7f1fa84827 Fixup a few string literal from QVariant issues
.. bug related to appsettings and "0" string occurred in a
   few places -- this fixes and post fixes that.
2014-06-24 19:29:56 +01:00
Mark Liversedge
0fc75b4493 Fix Library/GoldenCheetah bug
.. its complicated .. basically, if a local directory exists it will
   *always* be used for application settings.

.. when you run GC for the first time with a local Library/GoldenCheetah
   then the HOMEDIR_GC will not be set as there is no config in there

.. the code checks this setting for blanks (but that fails because the
   value actually returned is "0") and so the local library is set to the
   value returned "0"

.. but the local library doesn't exist so it falls back to opening from
   the default location but using config from Library/GoldenCheetah !

.. the next time you launch all this gets resolved and you use
   Library/GoldenCheetah with the settings you set the last time.

Fixes #936
2014-06-24 19:13:09 +01:00
Mark Liversedge
b51b04b22c For Pete and his Son
.. smaller cranks for the next Jack Bobridge !
2014-06-24 11:49:22 +01:00
Mark Liversedge
95a27c115d Remove qDebug from NullController
.. only used in testing but still irritating !
2014-06-23 17:03:27 +01:00
Mark Liversedge
c6ed3f0a3b Use QT 5 Video Playback
.. If you build with QT 5 then we now use the QT video widgets
   instead of VLC for Windows and Linux

.. We still use QuickTime for Mac OS X

NOTE: On linux Gstreamer is used and therefore all the right
      codecs and backends need to be setup for this to work.
      On windows its more complicated as it depends how Qt
      was compiled, see:

         http://qt-project.org/wiki/Qt_Multimedia_Backends
2014-06-23 16:23:45 +01:00
Mark Liversedge
b4da688395 Default linewidth smaller
.. was 2.0px now 0.5

.. no longer looks like it was drawn with a crayon by default !
2014-06-23 10:06:03 +01:00
Mark Liversedge
ce4715c379 Antialias is now on BY DEFAULT 2014-06-23 10:03:20 +01:00
Mark Liversedge
86db79a385 Clear Web caches between restarts
.. stops lots of LEAK warnings that are related to the
   javascript garbage collector (QT5).
2014-06-23 09:52:59 +01:00
Mark Liversedge
846f037130 Disable Drag/Drop Ride on Windows QT 5
.. it crashes !

.. we need to wait for QT 5.3.1 when this bug is
   fixed: https://bugreports.qt-project.org/browse/QTBUG-37813
2014-06-23 09:32:08 +01:00
Mark Liversedge
dc95a8d887 Fix redefinition of signal in RideNavigator
.. introduced when refactoring AnalysisSidebar
2014-06-23 09:14:09 +01:00
Mark Liversedge
6dd9d06c31 Fix SEGV on QuarqRideFile Windows QT5
.. delete the process later in the event loop.
2014-06-23 09:11:07 +01:00
Mark Liversedge
0bdf68a5d1 Windows Libusb / UsbXpress should be optional
.. ANT.cpp now happily compiles with no USB support
   present on Windows -- which means ANT will obviously
   no longer work, but that may be intended.
2014-06-22 22:01:52 +01:00
Mark Liversedge
776a59a5c6 Fix Windows QT5 Paths
.. no longer need to append 'GoldenCheetah' to the location
   since on QT 5 the executable name is used, which is GoldenCheetah

.. by sticking with this we can rename the binary to use a different
   location, which may be useful for testing
2014-06-22 22:01:52 +01:00
Mark Liversedge
b6fe1f0978 Tidy up warnings (Linux) 2014-06-22 16:34:28 +01:00
Mark Liversedge
e7a896db48 Add TISS to default metadata.xml 2014-06-22 16:28:59 +01:00
Mark Liversedge
5cc7fdf2a9 3.1 Upgrade Processing Part 3 of 3
.. PM chart is deprecated, so when loading an LTM chart
   with skiba curves is implemented instead.

.. we cannot easily add charts to the layout without refactoring
   HomeWindow so have moved that out of scope

NOTE: The upgrade processing has not been activated -- but can
      be once we build and issue our first 3.1 RC.
2014-06-22 16:25:17 +01:00
Mark Liversedge
1d73869a63 Merge pull request #933 from Joern-R/pull1
LTM Popup - further enhancements
2014-06-22 15:28:37 +01:00
Mark Liversedge
91fbd2dadc 3.1 Upgrade Processing Part 2 of 3
.. update RideMetadata to remove 'Default' color
   if it exists and add 'Reverse' color

.. will also add 'TSS', 'Aerobic TISS' and 'Anaerobic
   TISS' to the metric tab if needed to avoid FAQ #1.
2014-06-22 14:52:15 +01:00
Mark Liversedge
22e136f96f 3.1 Upgrade Processing Part 1 of 3
.. getting the upgrade code going, this just adds new functions
   for changing colors and themes and doesn't perform an upgrade

.. Part 2 will deal with W' and power.zones changes

.. Part 3 will deal with chart setup changes
2014-06-22 13:08:27 +01:00
Joern
1cea0b2585 LTM Popup - further enhancements
... make window "minimumSize" - so that resize in case of many columns
works
... handle LTM_TOD when called from LTM-Chart (list the rides in the
hour, considering DateRange)
... consider HomeFilter and Search/Filter in result list
... also show Rides of only 1 ride is selected (since Rides contain
Date/Time) and the Metrics (which mostly are not part of the Summary
HTML)
... do not allow MouseSelection of only 1 Ride is shown
... some more tr()
2014-06-22 13:08:44 +02:00
Mark Liversedge
70fda6eefa Add 3d back to default layout
.. now the phantom widget glitch is fixed
2014-06-22 09:34:04 +01:00
Mark Liversedge
ba78583e12 Remove Orphaned Widget in HomeWindow !
.. wow, this has been there for at least 3 or 4 years and
   never bitten us.

.. for some strange reason it bites when you have a 3d plot
   in one of the layouts.
2014-06-22 09:31:26 +01:00
gcoco
190e3fdfab Blank Summary subtitle 2014-06-21 21:50:11 -04:00
Mark Liversedge
615fd3931f Remove 3d from default layout
.. until we sort the phantom widget issue.
2014-06-21 23:00:01 +01:00
Mark Liversedge
8669ce641a 3d plot code update
.. to reflect current code requirements

NOTE: there is a 'phantom' widget with the 3d window that
      covers the left side of the chart bar and makes it
      impossible to click on the summary button.
2014-06-21 22:58:20 +01:00
Mark Liversedge
68bb257b77 Add 3d plot to standard layout 2014-06-21 20:50:33 +01:00
Mark Liversedge
6ed1fb20c0 3d plot honor CPLOTMARKER
.. for axis colors
2014-06-21 20:47:20 +01:00
Mark Liversedge
c3528a9b76 Fix V Alignment for Stack Series
.. using setMinimumExtent()
2014-06-21 11:58:21 +01:00
Mark Liversedge
c12a2ea4d4 W'bal use kJ not J on AllPlot Axis
.. uses less space !
2014-06-21 11:24:53 +01:00
Mark Liversedge
ad6f574463 Fix W'bal series plot pan zooming
.. when series stack plotting in AllPlot the W'bal series
   doesn't pan/zoom along with the other plots
2014-06-21 10:42:14 +01:00
Mark Liversedge
3854216c01 Fix LTMCanvasPicker SEGV on delete tab
.. not always, but sometimes !
2014-06-20 17:24:41 +01:00
Mark Liversedge
4e0ef64a90 Tooltip Color
.. changed from yellow to light gray to be more theme
   neutral and align with the colors across the rest
   of the base gc colors.
2014-06-20 16:21:00 +01:00
Mark Liversedge
65a45eb508 Add Temperature to Season Summary
.. if it is available, like we do for ride summary
2014-06-20 16:04:07 +01:00
Mark Liversedge
2438d647d7 Merge pull request #932 from Joern-R/pull-l1
Translation DE - Update
2014-06-20 14:59:29 +01:00
Joern
ee51378759 Translation DE - Update
... more translations / following latest code changes
2014-06-20 16:00:41 +02:00
Mark Liversedge
88e1dc5745 Fix column chooser in activity log 2014-06-20 14:00:26 +01:00
Mark Liversedge
8ebcc43e25 Forgot to set aggregateZero() to true for Temperature ! 2014-06-20 13:14:10 +01:00
Mark Liversedge
22eb4b08ae Merge pull request #931 from Joern-R/pullpopup
LTM Popup - HTML generation
2014-06-20 13:05:59 +01:00
Mark Liversedge
7c7989a803 Fix Average Temperature Issues
.. Don't include -255 in average

.. Don't show -255 in ride navigator

.. Don't show a value on summary if not preset
2014-06-20 12:59:03 +01:00
Joern
97e160ab05 LTM Popup - HTML generation
... generating HTML instead of Template File (to allow translation)
... considering the same Fields, incl. User Defined Metrics as Summary
Page HTML
... aligning Vertical Scroll bars + adding a little space between the
widgest so that Scroll Bars do not touch each other
2014-06-20 13:24:08 +02:00
Mark Liversedge
cf445e87bd Metric Aggregation ::aggregateZero() method
.. when aggregating metrics across rides we were being inconsistent
   with regards how we handled zero values; we sometimes included them
   and sometimes didn't.

.. now added a metric method bool aggregateZero() that returns true
   if aggregates need to include zero values

.. this has been implemented where averages are aggregated.
2014-06-20 11:19:55 +01:00
Mark Liversedge
5a9cd0f7bd Remove unneeded #define
.. it caused a compile error for some strange reason
   on mingw64 !? (#define DEVICE_TYPE 0)
2014-06-20 08:34:09 +01:00
Mark Liversedge
84b6fbc6b7 Merge pull request #930 from Joern-R/pull1
Translation Enablement
2014-06-20 08:30:20 +01:00
Joern
bc61c1b845 Translation Enablement
... just 2 tr()s
2014-06-20 09:10:52 +02:00
Mark Liversedge
42ad13f848 DataFilter handle metadata numerics
.. code assumed numeric fields always metrics when they
   could also be metadata.

.. this also fixes checkbox tests too
2014-06-19 21:25:58 +01:00
Mark Liversedge
d7e8a23794 Sidebar summary honor color changes
.. was not being redrawn when the color preferences changed.
2014-06-19 13:17:05 +01:00
Mark Liversedge
c94b7a5bb2 Add Group By ALL to LTM
.. can see the total / average or bests for the date range selected

NOTE: Data Table mode is currently a bit broken .. need to revisit it
      and fix it up, not just for ALL mode but also for Estimates
2014-06-19 10:40:48 +01:00
Mark Liversedge
21232465be Pedalling metrics, ignore zeroes in Average
.. when averaging lr balance, pedal smoothness etc we now
   ignore values when cadence is zero.

.. the zero values are not meaningful and skew the average to
   render them almost useless !
2014-06-19 10:08:12 +01:00
Mark Liversedge
0c61967d80 Add TSS per hour metric
.. on request from Massarob.
2014-06-18 21:18:17 +01:00
Mark Liversedge
9669e6f8cf Fix SEGV on CP export with no model 2014-06-18 19:16:43 +01:00
Mark Liversedge
4a18cccacf Fix SEGV in LTMtool add curve
.. when switching from best to estimate and back again.
2014-06-18 07:18:11 +01:00
gcoco
2d62a8efdc Remove subtitle data
Where is Mole Street?
2014-06-18 00:48:46 -04:00
Mark Liversedge
e69176c5ae Add Endurance Index to CP overlay
.. for power and w/kg
2014-06-17 21:41:59 +01:00
Damien
74ad5e1ec7 Translation: update ts files 2014-06-17 21:45:12 +02:00
Damien
5b2b8f92ef Tranlation: Update french 2014-06-17 21:44:05 +02:00
Mark Liversedge
1bbccee074 Add Cheetah icon back to About box
.. not sure how it got removed !
2014-06-17 19:54:05 +01:00
Mark Liversedge
253bc089eb Filter unreasonable model estimates
.. basically where data is sketchy or doesn't have enough
   representative efforts the model will produce lowball numbers
   which are not meaningful and should be discarded.
2014-06-17 19:36:55 +01:00
Mark Liversedge
ddb4359180 Revert "Filter out estimates"
This reverts commit 2fdc18b2c3.

Because we should correct at source (i.e. where the PD estimates
are being computed) and the fix breaks w/kg display because it
doesn't apply different limits for absolute vs w/kg values.
2014-06-17 19:28:29 +01:00
Mark Liversedge
d389b60ca6 Merge pull request #929 from Joern-R/pull2
Translation Enablement
2014-06-17 19:19:58 +01:00
Joern
e8bb306ec8 Translation Enablement
... more enablement in HTML area by isolating the tr() relevant part in
long HTML Strings
2014-06-17 20:08:06 +02:00
Mark Liversedge
2fdc18b2c3 Filter out estimates
.. in ridesummary where they are out of bounds
2014-06-17 18:11:32 +01:00
Mark Liversedge
8b9343c4fb Added Endurance Index to PD Model
.. and also added to the default setup
2014-06-17 16:33:46 +01:00
Mark Liversedge
099dd9a58f Add metric count to about box 2014-06-17 14:55:56 +01:00
Mark Liversedge
db6455f466 Fix LTM curve config nits
.. setting the radio button and the text for the metric/best
   or estimate when it is selected.
2014-06-17 10:13:25 +01:00
Mark Liversedge
04f85cae6a Fix W' glitch of distance jumps to 0
.. pointed out by Claus Assmann on the list, when he should have
   been celebrating Germany 4 - Portugal 0 ;)
2014-06-16 19:20:59 +01:00
Mark Liversedge
0025a3073e Add dummy PD estimate if none computed
.. to stop endless refreshes of the estimates !
2014-06-16 16:06:33 +01:00
Mark Liversedge
aa2a185fd4 Merge pull request #928 from Joern-R/pull1
TreeMap - multi-language enablement
2014-06-16 15:54:53 +01:00
Joern
81a59f7b7b TreeMap - multi-language enablement
... use translated Metadata terms for Tree Dimensions (via Special
Fields)
... store the Metadaten information in Home-Layout.XML in "EN/Original
Language" and convert back/forth as needed
... fixed an issue, that Rides for a Cell are not selected in case the
resp. Metadata field is empty
2014-06-16 16:39:09 +02:00
Mark Liversedge
8bb09048e0 CP clean up
.. use J/kg not Kj/Kg on overlay

.. bounds check the ranking to make sure it is in bounds
2014-06-16 11:37:54 +01:00
Mark Liversedge
d9eb99b777 Merge pull request #927 from olympum/master
Add virtual power profile for Elite Qubo Power Fluid
2014-06-16 05:36:53 +01:00
Bruno Fernandez-Ruiz
91ee82e39c Add virtual power profile for Elite Qubo Power Fluid 2014-06-15 21:44:30 +01:00
Mark Liversedge
d45507c1a4 Fixup QTextEdit stylesheet
.. different on metadata to everywhere else !
2014-06-15 15:04:32 +01:00
Mark Liversedge
61acb59fe4 CPLOTGRID used for Metadata Borders
.. starting to see a pattern now of which colors are
   meaningful .. should look at rationalising this
   in v3.2
2014-06-15 12:19:55 +01:00
Mark Liversedge
d0218bf00a Merge pull request #926 from Joern-R/pull2
Show Heat - sometimes wrong scale
2014-06-15 12:11:32 +01:00
Mark Liversedge
170d41da52 Merge pull request #925 from Joern-R/pull1
Translation Enablement
2014-06-15 12:10:36 +01:00
Joern
67fdb2164a Show Heat - sometimes wrong scale
... set YAxis scale
... set more specific YAxis texts (Percent of Best / Heat)
... Adjust Unit in Heat Hover
2014-06-15 13:00:25 +02:00
Joern
838d27833b Translation Enablement
... tr()
... Adding to Special Fields (allow translation of "Details->Extra"
fields
2014-06-15 12:56:55 +02:00
Mark Liversedge
ac4dd5172a Apply stylesheet to ride metadata
.. and tidy up a few nits here and there
2014-06-15 11:49:43 +01:00
Mark Liversedge
0fce4b27e8 Use w/kg units always, not wpk
.. and also allow lrbalance in data filter
2014-06-15 09:26:45 +01:00
Mark Liversedge
ee6251beff Model Estimate Fixups
.. don't rely upon ZDATA metadata, instead we add
   a new 'present' field that contains the Data meta value

.. navigator defaults columns when they're all messed up

.. summary isn't so noisy when providing progress updates
2014-06-14 20:24:06 +01:00
Mark Liversedge
8038799b65 Less Obtrusive Update on Estimate Task
.. less jarring !
2014-06-13 23:40:17 +01:00
Mark Liversedge
db3434fe1a Confirm popup on reset layout
.. user might not have mean't it.
2014-06-13 23:09:22 +01:00
Mark Liversedge
d1cd72079b HrPw color prefs and style
.. to match current look and feel across other main charts
2014-06-13 22:54:53 +01:00
Mark Liversedge
057165bba8 Add HrPw to the default layout 2014-06-13 22:22:41 +01:00
Mark Liversedge
36b2fe5ad7 Allow Fullscreen Startup
.. thanks to Claus Assman for pointing this out.
2014-06-13 21:21:54 +01:00
Mark Liversedge
3fce88ecde Model Estimate Progress
.. might remove it, but good to help debug issues !
2014-06-13 21:11:38 +01:00
Mark Liversedge
c86b61ca67 Merge pull request #917 from Joern-R/pull1
Translation Enablement
2014-06-13 19:45:36 +01:00
Joern
fd2d9a7875 Translation Enablement
... and nothing else
2014-06-13 20:45:04 +02:00
Mark Liversedge
903e80260d Mac Web Fonts 2014-06-13 18:53:29 +01:00
Mark Liversedge
df245b84ea Fix font selection
.. should update when saved not restarted.
2014-06-13 18:10:48 +01:00
Mark Liversedge
f9c87fbd0f Don't wait - cancel - the pd estimate thread
.. it might take ages and we don't care about the results !
2014-06-13 16:26:11 +01:00
Mark Liversedge
c77da956af Fixup initial geometry and positioning
.. some regressions in there (setting only saved on move)

.. will check the positioning and geometry are sensible regardless
   of whether they come from appsettings or defaults.
2014-06-13 16:15:35 +01:00
Mark Liversedge
adeb5ef13b LTM Marker colors
.. dash lines and red, makes it a bit more like
   the styling on allplot

.. might be interesting to add 'hover' on seasons.
2014-06-13 13:58:56 +01:00
Mark Liversedge
f175056e2b Isolate Curve Labels but not Vertical Markers
.. as they represent intervals and events and are therefore
   related to the x-axis (time/distance) rather than any
   y-axis we may be showing / hiding.
2014-06-13 12:44:12 +01:00
Mark Liversedge
4eea3214f1 Show/Hide Labels on Curve Isolate
.. as LTMplot uses them a lot to mark values that
   are topN or lowN
2014-06-13 11:16:54 +01:00
Mark Liversedge
44fd164525 Enable Curve Isolation on Trends chart
.. isolation used on AllPlot when hover on axes is
   equally useful on the LTM trends chart.
2014-06-13 09:31:33 +01:00
Mark Liversedge
471ec59f6e Merge pull request #914 from Joern-R/pull2
Windows - Menu bar - Mac / Style problem
2014-06-12 20:12:11 +01:00
Joern
db14c65969 Windows - Menu bar - Mac / Style problem
... in Windows - Mac / Metallic style did not work any more, only flat
style color was shown
2014-06-12 19:09:22 +02:00
Mark Liversedge
f0280d5b90 Updates to Trends stress chart
.. shows short and long term values
2014-06-12 14:01:27 +01:00
Mark Liversedge
eaa067a075 Fix ChartBar Button Sizes on Mac
.. was using the wrong font metrics
2014-06-12 11:54:25 +01:00
Mark Liversedge
e6d4293d37 Remove Chart sidebar menu indicator
.. reinstate when that menu popup exists !
2014-06-12 09:52:34 +01:00
Mark Liversedge
ee6dcddc45 New Default Trends Layout
.. now includes the Library chart to exploit the new
   sidebar chart selection.
2014-06-11 19:24:52 +01:00
Mark Liversedge
bf2404715c Merge pull request #913 from Joern-R/pull-l1
Translation DE 3.1 (initial delivery)
2014-06-11 18:38:36 +01:00
Joern
3617bb93ef Translation DE 3.1 (initial delivery)
... initial delivery for German translation of 3.1
2014-06-11 19:17:26 +02:00
Mark Liversedge
ca3a1e4fa8 Merge pull request #912 from Joern-R/pull1
Bikescore (TM) unique Handling (Part 2)
2014-06-11 17:57:27 +01:00
Joern
fd61805bd7 Bikescore (TM) unique Handling (Part 2)
... have the same consistent handling for (TM) at all visible places
... do not allow Translation of BikeScore (since it's a TM and might
cause unexpected behavior)
... Have (TM) sign everwhere visible - only in Searches just use
"BikeScore" as Symbol
2014-06-11 18:55:23 +02:00
Mark Liversedge
eb10b2e8d1 Chart Library Part 2 of 3
.. LTM chart now has a 'use sidebar settings' checkbox
   and will display the chart that is selected in the sidebar

.. as the sidebar selection changes the window will plot it
   using data for the current date range configured / selected

.. part 3 will now come later to let you manage the charts from
   the sidebar menu (it is already in the LTM tool).
2014-06-11 17:55:07 +01:00
Mark Liversedge
818321fe04 Charts Icon 2014-06-11 16:16:02 +01:00
Mark Liversedge
249402958f Chart Library Part 1 of 3
Add preset charts to the LTM sidebar, and allow LTM charts
to refer to sidebar for config instead of the local config.

In this way we can have a chart that changes as we select different
charts in the sidebar and remove the need to have lots and lots of
different charts on the tabs.

But it still allows for the old way of doing things -- just adds
another type of flexibility -- for instance a user could add
charts with set date ranges but no specific curve setup so they
could havethis year, this month, last month charts that change as
charts are selected in the sidebar.

This first commit just adds the sidebar item, next we will update
the LTM chart to refer to it in part 2 and then in part 3 we
will add functions on the sidebar to manage the chart presets in
the same way as in LTMTool.
2014-06-11 16:12:37 +01:00
Mark Liversedge
b0d38aafd7 Less precsision on W' J/KG
.. missed off for ranges on RideSummary
2014-06-10 21:43:30 +01:00
Mark Liversedge
bc290b397c Fixup interval select in Maps
.. deleting things removed signal/slot connections !
2014-06-10 21:20:40 +01:00
Mark Liversedge
e7c9a20ec0 Fix Map redisplay QT4.8 and Windows
.. webbridge gets stuck and we delete and recreate
   it to reset for a new map display.

   Seems to be a bug in webkit ...
2014-06-10 20:07:42 +01:00
Mark Liversedge
1c77185a59 Merge pull request #911 from Joern-R/pull1
Bikescore (TM) unique handling all languages & Translation Enablement
2014-06-10 19:56:22 +01:00
Joern
681cf48098 Bikescore (TM) unique handling all languages & Translation Enablement
... sync handling of (TM) in all places and Do Not allow translation for
these terms any more, since it's a fixed term anyway - and there are
many dependencies (which outside EN create unexpected results). - in all
Texts/Fields use (TM) in HTML use the TM (special characters).

-- more testing in language other then EN still required - but so far
working fine

... and more tr()
2014-06-10 20:55:41 +02:00
Mark Liversedge
bb1e8e3917 Reinstate show() for new charts in tile mode
.. was removed due to a crash on beta versions of QT5
   but appears to work fine with QT 5.3.0, so reinstated!

Fixes #910
2014-06-10 15:58:50 +01:00
Mark Liversedge
c86b85d12c Updated Metadata.xml
Now by default we include;
- Weight
- TSS
- CP

Colors now have;
- Reverse
- Colors that look good in dark / light
2014-06-10 15:11:11 +01:00
Mark Liversedge
2e1c2366fc Move editor to end of charts
.. on ride view
2014-06-10 15:00:51 +01:00
Mark Liversedge
f83cf11ab3 Undo accidental push of Upgrade WIP
.. pushed untested and unfinished changes for the
   3.1 upgrade process, this push undoes that.
2014-06-10 14:53:54 +01:00
Mark Liversedge
e70d6c302e Fix crash on apply preset with BESTS data
.. settings.bestresults was not being set
2014-06-10 14:47:14 +01:00
Mark Liversedge
85b0b82a14 Added CP History and PMC to default charts
.. in charts.xml
2014-06-10 14:31:37 +01:00
Mark Liversedge
448b85c9c5 Fixed LTM charts.xml read/write
.. but now a new format and the old ones will need to be
   removed from the athlete directory on upgrade.

.. the new default charts.xml is exactly the same as the
   old one, but in the new format.
2014-06-10 13:58:17 +01:00
Mark Liversedge
53ad9f898b Fix Preset maintenance in LTM tool
.. but the read and write functions are so far out
   of date that applying a saved chart causes a crash

.. so we need to fix the read/write functions for charts.xml
2014-06-10 12:59:47 +01:00
Mark Liversedge
2c6e54bee5 Fix quickfire exit crash
.. as getPDEstimates is still running in the background and
   we need to wait for it to finish in RideSummaryWindow.
2014-06-10 11:59:19 +01:00
Mark Liversedge
97b1eb4010 Move LTM Preset charts to Athlete class
.. lots of work to do to clean this up, especially
   keeping the presets updated when renaming is done.

.. also need to save away after changes.

.. also need to create a much better default set of
   presets taking into account the more recent additions
   such as Estimates amd Bests and new metrics
2014-06-10 11:45:56 +01:00
Mark Liversedge
87504f3062 Fix ComparePane quickfire drag and drop crash 2014-06-09 21:42:50 +01:00
Mark Liversedge
fc8be32473 Searchbox rounded corners
.. gone in flat mode.
2014-06-09 20:39:59 +01:00
Mark Liversedge
bc16105125 Merge pull request #907 from Joern-R/pull1
Data Filter - Internal Field Names + Multiple tr()
2014-06-09 19:43:37 +01:00
Joern
46ca3fb77a Data Filter - Internal Field Names + Multiple tr()
... allow/use only internal field names (delivered by Column Chooser) in
Data Filter expressions
... multipe tr()

(cherry picked from commit bc4164adab74dd82c0a0307d7d0fbb736f95ef0d)
2014-06-09 20:26:43 +02:00
Mark Liversedge
1d3b855f90 Add Estimates /kg to LTMPlot 2014-06-09 18:19:42 +01:00
Mark Liversedge
5a8248d614 Show w/kg J/kg estimates on Ride Summary
.. and fixes up the calculation too.
.. still need to fix up the LTM plot
2014-06-09 17:33:56 +01:00
Mark Liversedge
741528719a Add WPK estimates to PDEStimates
.. but not plotted in LTM or shown o the
   summary chart yet
2014-06-09 12:40:48 +01:00
Mark Liversedge
b890459b5a Clear Interval Summary on Ride Selection
.. otherwise its left with summary from previous ride.
2014-06-09 11:27:43 +01:00
Mark Liversedge
90ded04a53 Move wpk array next to watts array in cache
.. so we can read them both in with a single
   read -- this is to support an update where
   pd estimates support wpk and absolute watts.
2014-06-09 09:10:40 +01:00
Mark Liversedge
7480a2ea00 Merge pull request #906 from Joern-R/pull1
Support Metric Names with "special characters" for Column Chooser Drag&D...
2014-06-08 19:58:56 +01:00
Joern
327a03b74e Support Metric Names with "special characters" for Column Chooser Drag&Drop
!!! please check if this right way to do it.
... column names containing special characters (here greek "average"
sign) did not work in Drag&Drop (even though they should be part of
Latin-1 (after changing in Mime to UTF-8) not only the greek characters,
but also "TM" works without special treatment)
!!! is this valid for all platforms ?!!!

(cherry picked from commit b4d1a7d3041beec686c7262cfa65bac8cf6e2179)
2014-06-08 20:51:32 +02:00
Mark Liversedge
334d46bf61 Compare Pane Table better color support
.. headings color and remove frame
2014-06-08 19:22:31 +01:00
Mark Liversedge
5d8670a43e Merge pull request #905 from Joern-R/pull1
Translation Enablement & "seconds"
2014-06-08 18:45:13 +01:00
Mark Liversedge
f20dfd0c82 Fix Date Range Drag and Drop
.. internal move
.. that was hard!
2014-06-08 18:05:45 +01:00
Joern
7222182bf7 Translation Enablement & "seconds"
... more tr() changes
... added comparison for  both "seconds" OR tr("seconds") to all other
occurences found
... added "Lap" text for Intervalls imported in Garmin FIT format (this
is what Garmin delivers)

(cherry picked from commit ad790f05a386e3ae5c5b9dc129a216ac451b8cfc)
2014-06-08 17:55:24 +02:00
Mark Liversedge
acd61e7076 Fix Overlay Widget colors
.. and along the way discuovered context is not initialised
   correctly in GcChartWindow !
2014-06-08 16:10:37 +01:00
Mark Liversedge
37b9c4c20e Darker flat chrome Linux/Win
.. makes for a better match to the chartbar and sidebar
   items when in flat mode and not on a Mac.
2014-06-08 15:51:27 +01:00
Mark Liversedge
54be65cf72 Fix new CP chart show bests
.. didn't show bests and model till date range changed
   in settings or GC was restarted.
2014-06-08 15:12:00 +01:00
Mark Liversedge
4b2a444a3d Fix color or red wavy line text
.. in the ride editor
2014-06-08 14:54:06 +01:00
Mark Liversedge
340d8599bf Fix useMetric in Scatter plot
.. was broken when we moved useMetricUnits to the
   Athlete class and a local bool remained.
2014-06-08 14:19:36 +01:00
Mark Liversedge
318cebfa56 Fix time tooltip on AllPlot 2014-06-08 13:53:48 +01:00
Mark Liversedge
760d75d852 Merge pull request #903 from Joern-R/pull1
Translation Enablement & consider "seconds" translation
2014-06-08 12:19:33 +01:00
Mark Liversedge
0ebc66ed3c Don't allow 0 smoothing in compare mode
.. we need all intervals to have a common smoothing
   applied or it breaks the charts
2014-06-08 11:58:43 +01:00
Mark Liversedge
0ba03ddf40 Turn smoothing OFF if smooth < recIntSecs
.. i.e. don't do ANY smoothing

.. last commit fixed performance but really adds
   no value to smooth data to the interval it was
   recorded at !!
2014-06-08 11:53:00 +01:00
Mark Liversedge
3a9cde8174 No smoothing applied when smooth < recIntSecs
.. its pointless

.. it is a big performance overhead

Fixes #753.
2014-06-08 11:49:09 +01:00
Mark Liversedge
9cb0b5755e Calendar Chart now honours colour preferences
.. think that is the last of all the charts now done.
2014-06-08 11:40:13 +01:00
Joern
e0d336afb0 Translation for Filter/Autofilter
... Filter/Autofilter did not consider Translation of the Filter
Criteria - using Special Fields (to translate from internal to external
names is working for me - but do special fields cover all variants?)

(cherry picked from commit 5cc4218a2a0877a1f8ff4f36d1367bee37c34d2d)
2014-06-07 20:37:09 +02:00
Joern
21b6b4993a Translation Enablement & consider "seconds" translation
... multiple tr() added for Intervals. Compare Pane
... in Compare Pane - in time metrics check for both "seconds" and
translated tr(seconds) (following the concept for time as at most other
places where units == "seconds" are checked

(cherry picked from commit 6c78b00b65a1d794eb99038f21d6e705d119d29e)
2014-06-07 19:52:24 +02:00
gcoco
b6910f4ffa Correct/consistent use of #include <windows.h> 2014-06-06 23:44:49 -04:00
Mark Liversedge
3f22b97cce Remove errant qDebug 2014-06-06 22:32:03 +01:00
Mark Liversedge
702f4682f4 Fix RideNavigator right click
.. always used 0,0 as pos.
2014-06-06 22:29:13 +01:00
Mark Liversedge
a520519db1 Athlete Tabs Background honour config
.. colour config is starting to get boring!
2014-06-06 21:31:08 +01:00
Mark Liversedge
457bd772ab Only need to wait on exit in QT 5.3
.. which is convenient because QThread::sleep is only
   public in QT 5.2.1 or higher.
2014-06-06 18:42:04 +01:00
Mark Liversedge
4b90d6e9d4 Fix QtConcurrent on QT < 5 2014-06-06 17:35:55 +01:00
Mark Liversedge
f8d9ce31dc Fix calendar colors
.. broke in last commit
2014-06-06 16:26:27 +01:00
Mark Liversedge
8d071338ef Better handling of dark chrome
.. if you have flat style and choose a dark color the
   chartbar and sidebars now use colors that make it
   possible to actually read the text
2014-06-06 15:43:59 +01:00
Mark Liversedge
cac50d949b Wait 10s for threads to finish when closing 2014-06-06 14:17:11 +01:00
Mark Liversedge
86570d7a30 Invert Color by Luminance
.. just added a GCColor::luminance() method ready for automatically
   selecting foregground colors in the application chrome.
2014-06-06 14:16:17 +01:00
Mark Liversedge
0b5d373751 Just use FTP not FTP / MMP60
.. its too wordy, and whatever Coggan says thats the
   value he's using but too obstinate to admit it.
2014-06-06 01:10:42 +01:00
Mark Liversedge
4539be8c72 Show model parameters on a ride summary
.. arguably more useful and also sets the cache up early too
   which is useful !
2014-06-06 01:08:37 +01:00
Mark Liversedge
95e8fcfa09 Show Model Estimates on Summary
.. they get refreshed in background so everyone wins !
2014-06-06 00:18:00 +01:00
gcoco
45b98b235f Merge pull request #900 from dawedawe/master
fix wording: "executage" -> "executable"
2014-06-04 22:03:47 -04:00
dawedawe
d6f6eb4f06 fix wording: "executage" -> "executable" 2014-06-04 13:07:26 +02:00
Mark Liversedge
45b615e553 Merge pull request #898 from Joern-R/pull
Translation Enablement
2014-06-03 18:34:21 +01:00
Mark Liversedge
40d9c91bbb Flat Titlebar not supported on QT < 5 on Mac 2014-06-03 18:33:11 +01:00
Mark Liversedge
33d2910488 Fix compile error on Mac < QT 5 2014-06-03 17:55:48 +01:00
Joern
0dfd78b2ef Translation Enablement
(cherry picked from commit 67be090de9cbc4772147a2ab0b08e28b96d67d12)
2014-06-03 17:08:36 +02:00
Mark Liversedge
f29f87066c Fixup Mac compile on QT < 5
.. blackline doesn't exist compile error.
2014-06-03 08:26:37 +01:00
Mark Liversedge
086aa0b3c2 Fix tooltip for Compare Delta Percent 2014-06-02 17:41:55 +01:00
Mark Liversedge
f86f4e7ed2 CP Plot Delta as Percent
.. delta plot but with percentage rather than absolute differences

.. particularly useful for plotting PD curve by seasons and looking
   at the gains/losses in percentage terms per season

.. also the differences in short and long durations in absolute terms
   often look quite different, in percentage terms there is often not
   a huge difference over seasons.

NOTE: Needs to be fixed up to do percentage differences by model.
2014-06-02 14:03:33 +01:00
Mark Liversedge
32ab055cab Mac now honours flat theme
.. but not sure its gonna be very popular !
2014-06-02 12:43:34 +01:00
Mark Liversedge
ef12c54382 Slightly wider scrollbars
.. 4px is too small.
2014-06-01 20:47:39 +01:00
Mark Liversedge
f08bfc9c4b Scrollbar hover highlight
.. on Non-Mac.
2014-06-01 20:38:43 +01:00
Mark Liversedge
d16a30330a Fix Overlay Widget Title Glitch
.. it wasn't centered on the titlebar.
2014-06-01 20:23:16 +01:00
Mark Liversedge
c9644bf8c3 Fix RideNvigator coloring
.. first one goes invisible
.. hover didn't highlight
2014-06-01 19:30:10 +01:00
Mark Liversedge
6e52284c39 Fix Overlay Widget
.. easier to grab and resize
.. move when it goes off screen
2014-06-01 18:48:16 +01:00
Mark Liversedge
14d95cf0ca Fix QStringSpinBox Style
.. on Linux and Windows
2014-06-01 16:58:38 +01:00
Mark Liversedge
fcea15fc92 Windows Style Part 3 of 3
.. flat colors based upon windows prefrences if on
   windows -- BUT ONLY if Dsmapi.h is available.
2014-06-01 15:33:23 +01:00
Mark Liversedge
5cb3ccf05d Window Style Part 2 of 3
.. apply Flat styling across all the widget painting

.. only use WHITE as the flat color for now, in part 3
   we will look at user customisation and updating the
   toolbar and sidebar buttons to also be flat.
2014-06-01 13:18:30 +01:00
Mark Liversedge
47dd807204 Window Style Part 1 of 3
.. refactor linear gradients out of the widgets
   such as toolbar, chartbar, sidebaritem etc

.. GCColor::linearGradient() now returns a gradient
   that is reused across the codebase

.. in Part 2 we will add a colour and flat style
   for the linearGradient

.. in Part 3 we will tidy up the styling for buttons
   and toolbuttons to adopt flat or metal styling too
2014-06-01 11:33:05 +01:00
Mark Liversedge
7ee52197a2 RideEditor Cosmetics
.. scrollbars tidied up
.. ugly grid lines removed altogether
2014-06-01 10:04:31 +01:00
Mark Liversedge
1827da15b3 Merge pull request #896 from Joern-R/pull
Translation Enablement + Check on temporary Seasons
2014-05-31 23:23:47 +01:00
Joern
1449805d7d Translation Enablement + Check on temporary Seasons
... Translation for Season Types
... Do not allow Temporary Seasons to be edited or deleted through the
main seasons menu (in right click Popup this was already blocked by not
offering the function)

(cherry picked from commit cc7a0a7f8d0b74ca4b9d64d61291206ea58d3f94)
2014-05-31 19:21:30 +02:00
Mark Liversedge
d1c3e6972c Fixup Metadata Styling on Linux
.. by using the Fusion style on the widgets
2014-05-30 23:40:37 +01:00
Damien
2a229a2d33 Translation: Update for 3.1 2014-05-30 23:19:13 +02:00
Damien
971fab9944 2 2014-05-30 23:01:34 +02:00
Mark Liversedge
f77eb5c14f Another Scrollbar ..
.. AllPlot IntervalSummary overlay needs its
   scrollbar styled.
2014-05-30 21:14:37 +01:00
Mark Liversedge
add3905d25 Remove unneeded bool in MergeWizard
.. use the pointer to the loaded ride instead
.. but also make sure it gets initialised too !
2014-05-30 10:37:34 +01:00
Mark Liversedge
3607f1833b Fixup Fix for MergeActivityWizard crash
.. TRUE/FALSE are case sensitive on Mac
.. ride2Loaded renamed ridesLoaded
.. ridesLoaded initialisation moved to constructor

Thanks to Jorn for the fix to a P0 bug !
2014-05-30 10:24:24 +01:00
Mark Liversedge
1f67774c53 Merge pull request #893 from Joern-R/pull
Avoid Dump in Merge Activity Wizard
2014-05-30 10:20:11 +01:00
Joern
2ae27ed71c Avoid Dump in Merge Activity Wizard
... Only allow "Next" if 2nd file is loaded (otherwise a dump occurs)

(cherry picked from commit 88b8479cbb90c8306ca32c0d193199ed895db95c)
2014-05-30 10:29:16 +02:00
Mark Liversedge
570ad7301c Merge pull request #892 from Joern-R/pull
Translation Enablement
2014-05-29 18:37:13 +01:00
Joern
5b8a98003a Translation Enablement
... some tr(...) missing - nothing else

(cherry picked from commit 12056261bc04269bbd723d7f0049cf193d950847)
2014-05-29 19:25:35 +02:00
Damien
a6886416dd Bin2RideFile: Correct Left-Right balance values in JouleGPS 2014-05-28 21:57:38 +02:00
Damien
912859b790 Translation: Update french 2014-05-28 21:57:20 +02:00
Mark Liversedge
a7c0fdf48d More css scrollbar nonsense
.. making scrollbars less obtrusive in webkit.
   because? well, reasons.
2014-05-28 16:21:29 +01:00
Mark Liversedge
389f503342 Fixup scrollbar width on Mac
.. in ridenavigator when system preferences are set to have
   a scrollbar always visible.
2014-05-28 11:32:17 +01:00
Mark Liversedge
1f28eb9892 Bit more space in Prefs
.. on a Mac the HR/Power athlete config pages
   are a little too spaced -- just turned it
   down a notch.
2014-05-28 09:48:57 +01:00
Mark Liversedge
e2b933fe2b Make Preferences/Options Resizable
.. when using other languages e.g German it may be
   useful to make it wider if needed.

.. the pane still appears using a minimum size that
   we calculate, so should affect users.
2014-05-28 09:23:32 +01:00
Damien
eeb7223c15 Translation: Update for 3.1 2014-05-27 23:10:54 +02:00
Mark Liversedge
ec3ce44399 Sidebar RideNavigator show/hide glitch
.. we needed to manually tell it to adjust columns
   since we turned off adjusting on window resize
2014-05-27 21:40:09 +01:00
Mark Liversedge
708e8f5f34 Trap WindowStateChange in MainWindow
.. but just to resize the toolbar when on a Mac
2014-05-27 21:21:17 +01:00
Mark Liversedge
29aa19fac2 Fix ScrollBar in HomeWindow
.. for tile mode.
2014-05-27 19:15:09 +01:00
Mark Liversedge
f3d72df955 Keep the box on ride list for Mac
.. introduced a bit of a glitch.
2014-05-27 17:03:03 +01:00
Mark Liversedge
dfa2946c1b Mac ride list nit
.. got rid of unneccessary line
2014-05-27 13:12:11 +01:00
Mark Liversedge
a1fc85740d Mac CSS Scrollbar fix
.. is invisible on a black background, so added an inset box shadow
2014-05-27 12:34:50 +01:00
Mark Liversedge
09ab79f221 Fix stylesheet/palette gotcha on AllPlot
.. mucked up the reset of the palettes for all
   the widgets when setting the stylesheet for
   the scrollareas.
2014-05-26 20:50:31 +01:00
Mark Liversedge
fbbce76ec3 More default font fixup
.. looks like 12 was the default -- which is
   totally inappropriate.
2014-05-26 20:42:34 +01:00
Mark Liversedge
517743f5d6 Default font size should be 10 not 12
.. Thanks to Jörn Rischmüller for highlighting
   this issue.
2014-05-26 20:37:54 +01:00
Mark Liversedge
1a39dd1520 Activity Log Scrollbar
.. aka RideNavigator when not in mainwindow mode
2014-05-26 20:20:20 +01:00
Mark Liversedge
0f1a2bf231 Scrollbars on LTM
.. think that is the last of them.
2014-05-26 20:16:48 +01:00
Mark Liversedge
894c23287a Scrollbars on AllPlotWindow
.. made to look the same as everywhere else
   i.e. not clunky and ugly.
2014-05-26 20:05:04 +01:00
Mark Liversedge
daf81dfd35 Webkit scrollbar Mac styling
.. to match the Mac scrollbars in QT5
2014-05-26 19:32:05 +01:00
Mark Liversedge
2fbbcf19ed Tidy WebKit Scrollbars
.. to match the rest of the widgets
2014-05-26 19:18:44 +01:00
Mark Liversedge
cbb017bc77 Settings.h typo
.. should have been QT_VERSION not QT_VER
2014-05-26 17:52:27 +01:00
Mark Liversedge
05f4a2d691 Fixup Ride List Background Scroller
.. when change colors
2014-05-26 15:13:19 +01:00
Mark Liversedge
f4237a0e93 CP settings nit 2014-05-26 14:58:17 +01:00
Mark Liversedge
a47420198a Fix compare all plot smoothing of 0
.. always make it non-zero to get the arrays initialised
2014-05-26 14:47:37 +01:00
Mark Liversedge
2daffc9174 Fixup RideNavigator heading glitch
.. the headings get resized as the mainwindow is
   resized, when they shouldn't -- the sidebar is
   getting resized twice - once on mainwindow
   being resized and then our code fixing it back.

.. we now only set those widths on the mainwindow
   when we are told to by TabView::splitterMoved()
2014-05-26 12:52:39 +01:00
Mark Liversedge
125318b768 Fix Sidebar width resize
.. a regression from the mainwindow refactoring
   earlier this year.

.. when the mainwindow resizes the splitter should
   stay at the same size on the left.
2014-05-26 12:00:43 +01:00
Mark Liversedge
bd3cea2232 Ridelist green text now uses accent color
.. not sure why I hardcoded that in the first place !
2014-05-26 11:27:06 +01:00
Mark Liversedge
1eb249391f More modest scrollbar handles
.. and making it easier to apply globally with a new
   static member of TabView to return the style sheet.

.. we may extend this to cover the application more
   broadly.
2014-05-26 11:01:49 +01:00
Mark Liversedge
316a61ed3d Ride list header style
.. not on Mac, but made same colors as list.
2014-05-26 00:07:32 +01:00
Mark Liversedge
27dc513bbe W' Work Calculation
.. should only include joules from W' ie. power above
   CP is accumulated.
2014-05-25 23:19:53 +01:00
Mark Liversedge
fec1db913f Centile plot honour color config 2014-05-25 21:32:18 +01:00
Mark Liversedge
ecf7086090 Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2014-05-25 20:21:03 +01:00
Mark Liversedge
35406c48a7 Disable QProgressDialog on QT5.3 Mac
.. until they fix QTBUG-39038
   see: https://bugreports.qt-project.org/browse/QTBUG-39038
2014-05-25 20:19:58 +01:00
Mark Liversedge
f3ab2aa16e Fixup Windows Scrollbars on QT5
.. includes to compile

.. plastique deprecated so use fusion style instead
2014-05-25 19:43:30 +01:00
Mark Liversedge
841277a6a5 Comment on QTBUG-38685
.. crash with QT5.3 RC1
2014-05-25 18:50:44 +01:00
Mark Liversedge
373827171e Accidentally changed index offset in last commit
.. i starts from 1 not 0
2014-05-25 18:37:15 +01:00
Mark Liversedge
1f2e85f511 Fix Autofilter duplicates
.. dodgy logic when clearing state on refresh of the menu
   after config change caused tree widgets to be duplicated
   every time config was saved.
2014-05-25 17:35:54 +01:00
Mark Liversedge
abc49fdef4 Fix LTM Zone display
.. when no data.
2014-05-25 16:50:56 +01:00
Mark Liversedge
153e11e868 Prettify Scrollbars for Windows
.. as well as for Linux as done earlier today.
2014-05-25 15:54:00 +01:00
Mark Liversedge
e6dfbc2908 RideNavigator::configChanged()
.. instead of doing it every time we refresh
2014-05-25 14:41:42 +01:00
Mark Liversedge
1b46f12a61 More messing with ride list scrollbar
.. on Linux only too !
2014-05-25 11:20:42 +01:00
Mark Liversedge
8cea9629d6 Fix x axis on CP plot compare
.. when changing ride series from e.g Power to W/KG
2014-05-25 10:07:16 +01:00
Mark Liversedge
8712367fd6 Fix HrPw marker colors 2014-05-24 15:25:40 +01:00
Mark Liversedge
bfe48dfec8 Allow Heading to be hidden in ride list
.. cleaning up the ride list.
2014-05-24 14:47:37 +01:00
Mark Liversedge
6930b0c745 Oh. Only Linux for Scrollbars
.. Windows looks HORRIBLE.
2014-05-24 14:16:08 +01:00
Mark Liversedge
9655e36aaa Less Intrusive Sidebar Scrollers
.. but still want an 'on hover' scrollbar
   for the ride list.
2014-05-24 13:55:19 +01:00
Mark Liversedge
91eb86a8aa Style the ridelist scrollbar on non-mac
.. to be less obtrusive.

.. lets see if we can improve on this ?
2014-05-24 13:33:30 +01:00
Mark Liversedge
70de48f333 Appearances config to hide ride scrollbar
.. on Non-Mac platforms. It might be just me but the scrollbar
   just looks horrible.

.. should look at a custom scrollbar that 'appears' when it
   is needed (when scrolling or on hover?)
2014-05-24 13:07:29 +01:00
Mark Liversedge
8ce6e85e00 Add ScatterPlot to the default ride layout
.. its ready for prime time

.. but needs the metric/imperial bugs fixed !
2014-05-24 11:04:12 +01:00
Mark Liversedge
05b5490b6d Add Ae-An Stress Chart to default layout
.. using An and Ae TISS
2014-05-24 10:53:37 +01:00
Mark Liversedge
97798df9fe Set Default W' in Athlete Zones
.. of 20kJ

Fixes #882
2014-05-24 10:10:20 +01:00
Mark Liversedge
b577b84f11 Fix LTM Plot Legend Colors in Compare
.. they were always black which wasn't good on a
   dark background !
2014-05-24 09:20:05 +01:00
Mark Liversedge
257c009343 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-05-23 21:12:17 +01:00
Mark Liversedge
c3ca1d6d72 Fix Veloclinic Model Variant Selection
.. it was broken in the PDModel refactor.

.. you can now select variants for the aerobic
   (slowtwtich) component.
2014-05-23 21:11:09 +01:00
gcoco
e3b2b5f558 Add missing ) 2014-05-23 16:05:10 -04:00
Mark Liversedge
a73eb1a962 Merge pull request #886 from Joern-R/pull
Translation enablement + some typos
2014-05-23 19:29:18 +01:00
Joern
5aa27c662d Translation enablement + some typos
... Further enablement for translation

... some typo in EN (seen during translation)

(cherry picked from commit 50b78cec0f2fae40f9a5974d98e145d9d9d55535)
2014-05-23 20:26:48 +02:00
Mark Liversedge
8360388e7a CP Delta Compare Part 2b of 2a/b
.. now completed to allow model comparisons too.
2014-05-23 10:38:31 +01:00
Mark Liversedge
3c36bbe481 CP Delta Compare Part 2a of 2a/b
.. just quickly commit the changes for delta compare for
   comparing rides and intervals.

.. still need to fix up the model delta compare.
2014-05-22 22:43:35 +01:00
Mark Liversedge
5e95b3ebcd CP Delta Compare Part 1 of 2
.. delta compare to use first date range as a baseline to
   compare other date ranges to.

.. only works for the bests curve in date range mode

.. in part 2 will add the model and also rides/intervals.
2014-05-22 21:54:11 +01:00
Mark Liversedge
ca71d880a6 Tweak ride list accent bar
.. 2px wider at 7px .. better proportions

.. am slowly turning into Steve Jobs .. can
   someone pass the orange juice please.
2014-05-21 20:48:55 +01:00
Mark Liversedge
ff01ed0b85 Compare mode CP plots model
.. so you can compare models for different date ranges
2014-05-21 18:49:58 +01:00
Mark Liversedge
cd4ce66de8 CPPlot Show Best Option
.. sometimes its useful just to see the model and not the bests
   curve. So added an option to get rid of the bests curve and
   show the model on its own.
2014-05-21 14:18:57 +01:00
Mark Liversedge
3479d19d4f Fixup Compare to Use RideFile(Ride*)
.. to get CP and Weight tags etc
2014-05-21 13:17:03 +01:00
Mark Liversedge
4ca042b0e3 Lactate not Lactic Threshold
.. just being picky now.
2014-05-21 13:16:44 +01:00
Mark Liversedge
c85e4aa651 RideFile(RideFile*) can set context too
.. so no need to do it everywhere we create a temporary
   ridefile for computing metrics.
2014-05-20 21:05:18 +01:00
Mark Liversedge
65f77bafa4 WPK metrics need 2 decimals not 1 2014-05-20 21:05:03 +01:00
Mark Liversedge
a0313732e1 Fix interval metrics that use CP and Weight
.. by making sure the temporary RideFile used to calculate the
   interval metrics contains the tags from the main Ridefile.
2014-05-20 18:47:37 +01:00
Mark Liversedge
8c93aeb3ac Add Athlete Weight Metric
.. and add to summary window

.. uses getWeight() so therefore uses;
   1. 'Weight' metadata
   2. last withings weight
   3. global athlete weight
2014-05-20 09:15:47 +01:00
Mark Liversedge
456ff5c935 Speed up Withings Download
.. it was poorly coded to query the db on every new
   measure and didn't use transactions for the updates
2014-05-20 08:23:50 +01:00
Mark Liversedge
ceec5627a9 Update Trends Default
.. PMC tidy up
2014-05-20 06:27:48 +01:00
Mark Liversedge
2da093cbe9 Deprecate the old PMC
.. its too far out of date;

   the UX is terrible and flickery
   its a cpu hog (deletes all objects on each replot !? wtf)
   it doesn't honour colour config
   it doesn't integrate with the sidebar date selection
   the metric selection should be via a reveal control
   can't hide the legend / set grid / use chart settings
   should use a tooltip
   doesn't work with compare

.. all these issues are resolved using an LTM based PMC

Fixes #880
2014-05-20 06:06:16 +01:00
Mark Liversedge
9a94a6c092 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-05-19 20:12:33 +01:00
Mark Liversedge
02f5cb89e0 Add Model Data to CP export
.. if a model is active we can get the model values now
   using PDModel::y() which is kinda neat !
2014-05-19 20:11:45 +01:00
Mark Liversedge
2329816c6e Make ConfigDialog bigger on Mac too 2014-05-19 19:15:45 +01:00
Mark Liversedge
09890ad3b6 Center the Preferences Icons
.. now the config dialog is a bit wider (to accomodate longer
   texts in other languages, e.g. Deutsche).
2014-05-19 18:59:49 +01:00
Mark Liversedge
ecfe807a3b Merge pull request #879 from Joern-R/pull
Translation Enablement + some small changes
2014-05-19 18:49:20 +01:00
Joern
cc098229b2 Translation Enablement + some small changes
...ConfigDialog.cpp
- -Increase overall size of window (for NON Mac only so far) - this
eases the translation as in non EN languages

... Pages.CCP
- Changed 2 fixed button sizes (to allow proper translation)
- Correction: if Directoy Browsing was Aborted without selection - the
previous value was deleted
- Chooses the 2nd column to search for "New" text in case of 2 text
colums (short and long)
- All the rest Translation enablement

...DiarySidebar.cpp
- enable translation of date formats

(cherry picked from commit 3bbc68a277e743e610630795bb60dc515ced0355)
2014-05-19 19:42:14 +02:00
Mark Liversedge
3ccdb5d525 Release notes update
.. to reflect recent changes.
2014-05-19 17:55:18 +01:00
Mark Liversedge
3505adc686 CP w/kg fixups
.. all the recent work on the CP chart has focused on absolute
   watts and not taken into account w/kg !

.. this fixes that up, but still need to look at w/kg on the
   model parameters stuff for the CP history chart
2014-05-19 17:16:19 +01:00
Mark Liversedge
587feca1e3 Fix RideFile::getWeight() Withings bug
.. the update in commit 53871e9 inadvertently broke
   withings weight being used.
2014-05-19 16:12:48 +01:00
Mark Liversedge
ac7b2e0835 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-05-19 11:39:09 +01:00
Mark Liversedge
7c40ad2314 Notes keyword "Reverse" to set fg color
.. when color is used for background -- since they are independent
   of the plot colors etc in this case.
2014-05-19 11:38:14 +01:00
Mark Liversedge
25e0d8c18f Mustang theme highlight
.. was invisible, now made more obvious
2014-05-18 22:08:57 +01:00
Mark Liversedge
7b4b024f63 Refactor CPPlot to use new PDModel
.. the last piece of the jigsaw for the CP chart refactoring was
   to use the new model class and remove the calculation in CPPlot.

.. we have now removed the ridefilecache out of CP, the model calculation
   and refactored to support multiple models.
2014-05-18 20:58:32 +01:00
Mark Liversedge
76afdc6e6c Be consistent - 'Overlay' not 'Show Overlay' 2014-05-18 13:17:39 +01:00
Mark Liversedge
008d64e618 Add Overlay to AllPlot
.. show interval details when hovering over them on the ride
   plot using the new overlay widget
2014-05-18 13:11:51 +01:00
Mark Liversedge
52c274c82e Tweak Alt default to light gray 2014-05-18 11:15:41 +01:00
Mark Liversedge
62efd6fd15 Added Schoberer Color Scheme
.. mimic colors used by SRMWin and the scheme is named after
   the founder of SRM Ulrich Schoberer
2014-05-18 11:11:53 +01:00
Mark Liversedge
38925d82e7 Extend Theme color coverage
.. to include power, cadence etc

.. this is particularly relevant for colors that need to change
   if we have a light background (e.g. power in yellow on white
   is almost impossible to see for some people)
2014-05-18 10:44:47 +01:00
Mark Liversedge
727762141c Add recent contributors
.. Dr Phil Skiba for TISS etc
.. Michael Puchowicz for the Veloclinic PD Model
.. Jörn Rischmüller for supporting German translation
2014-05-18 09:35:15 +01:00
Mark Liversedge
c6fab73e2d Recompute Metrics on W' change
.. and also fix CRC code that stops recompute if the ride file
   hasn't changed since it may be recomputed for other reasons !
2014-05-18 09:24:45 +01:00
Mark Liversedge
284623bfa8 Accent sidebar on ridelist right height
.. needs to account for font metrics and not just default
   to 50 high. Only notice this if the user has larger fonts
   which can be common on high DPI screens.
2014-05-17 10:00:08 +01:00
Mark Liversedge
d20cac9fa1 Merge pull request #875 from Joern-R/pull
Enable Translation
2014-05-17 09:40:06 +01:00
Joern
ecd2e83693 Enable Translation (1)
... enable translation

(cherry picked from commit d4deb2fd981d601a1378172e24a20b61a7b3c4ec)
2014-05-17 10:25:37 +02:00
Mark Liversedge
ba5f8881a4 Fix CP heat age cosmetic glitch 2014-05-17 09:16:01 +01:00
Mark Liversedge
8c0c5e3bfa Ride list accent bar on Mac Qt<5 or Non-Mac
.. the code needed to account for scrollbars on Macs running
   Qt < 5 and on all other OSes.
2014-05-15 12:46:04 +01:00
Mark Liversedge
483cdd738c If W' is configured in KJ convert to Joules
.. if user enters W' < 1000 then multiply it up
.. if old config remains with W' < 1000 multiply it up
2014-05-14 21:45:38 +01:00
Mark Liversedge
2b5c53c5c0 Ride list colour subtly
.. if you have user defined colors for the ride list but don't
   choose to set as background (ITS UGLY!) then we put an accent
   bar on the rhs .. which looks much nicer.

.. I guess its a matter of taste .. some don't have any ;)
2014-05-14 20:31:57 +01:00
Mark Liversedge
27d062688f Plot Model Estimates on LTM
.. as well as W', CP etc we now support plotting any
   duration model estimate.
2014-05-14 18:34:27 +01:00
Mark Liversedge
d19ae6ac43 Fix gcc compile time warnings
.. in preparation for 3.1 release
.. but still need to fixup for Mac clang too
2014-05-12 09:07:07 +01:00
Mark Liversedge
de78667b20 Only refresh model estimates when needed
.. since its really only the CP history chart that
   uses them, it can refresh them when needed.
2014-05-11 22:03:22 +01:00
Mark Liversedge
654b477d77 Ignore dates before 1990 in Model Estimation
.. they're probably bogus or negative or zero and will
   create huge amounts of work !
2014-05-11 21:15:21 +01:00
Mark Liversedge
50298617fb Get around '-' button size on a Mac
.. by making the text Add and Delete rather than '+' and '-'.

   I /really/ hate the way Qt enforces such an arbitrary rule
   for button size and styles, when Apple doesn't.
2014-05-11 20:20:08 +01:00
Mark Liversedge
7bbca327bc Fix SEGV on empty HomeWindow
.. if there are no charts homewindow crashes. oops.
2014-05-11 18:33:12 +01:00
Mark Liversedge
b7d28eb253 Update 3.1 release notes
.. to reflect recent updates and remove 'deferred' items.
2014-05-11 17:10:30 +01:00
Mark Liversedge
0c93e734c9 Notes colors background -or- foreground
.. user can specify what it colors.
2014-05-11 16:10:14 +01:00
Mark Liversedge
c6d8bbfaa1 Fixup ExtendedModel
.. to new PDModel api.
2014-05-11 14:25:13 +01:00
Mark Liversedge
ffb7bc3117 Hide CP helper in compare mode 2014-05-11 14:12:00 +01:00
Mark Liversedge
bdda28f280 Skip zero estimates
.. in LTM plot for model estimates
2014-05-11 13:24:20 +01:00
Mark Liversedge
2be44382d3 Added ExtendedModel to the Metric Estimate
.. aggregator will collect estimates
.. LTM will plot

.. but the model needs to be updated to reflect the intervals
   are in seconds not minutes and the y() function is passed
   seconds not minutes.
2014-05-11 12:32:17 +01:00
Mark Liversedge
b737fa918b CP history fixups
.. use a rolling 2 month bests window not 3 month (too long)
.. use 2P W' on default chart as it povides a better estimate.
2014-05-11 12:19:48 +01:00
Mark Liversedge
1a53421cd8 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-05-11 11:45:43 +01:00
Mark Liversedge
351580ae60 Fixup default color to use theme colors
.. in the ride list, calendar and mini calendar we now
   use the default color from the theme when there is no
   match on the keyword.
2014-05-11 11:44:35 +01:00
Damien
9c4a6bdaf3 MetricAggregator Model Refresh (add ExtendedModel) 2014-05-11 12:01:16 +02:00
Mark Liversedge
293cc08968 Fix QProgressDialog centering
.. top left was ugly.
2014-05-11 10:39:57 +01:00
Mark Liversedge
288f1e8fa8 Temp FIX for SEGV on data table for estimates
.. needs to be fixed pronto.
2014-05-10 23:26:28 +01:00
Mark Liversedge
cf6750e313 Fix SEGV on bounds check LTMPlot
.. in createEstimateCurve()
2014-05-10 23:19:43 +01:00
Mark Liversedge
7c887cbd21 Metric Aggregator Model Refresh (Part 3b of 3abc)
.. added to LTM and updated the default layout on trends view
   to include a new 'CP History' chart with W', CP and p-Max
   on it.

.. part 3c needs to update to include Damien's model and also
   once thats done we need to refactor CPPlot to use the new
   PD model classes instead of the code embedded in the class.
2014-05-10 22:05:31 +01:00
Mark Liversedge
4adfc269cd Metric Aggregator Model Refresh (Part 3a of 3abc)
.. Now refreshing the model parameters is done and
   stored in the athlete class.

.. added the selection of a model estimate to the
   LTM chart

.. in part b and c we need to update the LTM chart
   to plot the estimates (createCurveData).
2014-05-10 20:13:43 +01:00
gcoco
5434edb9f2 Update missing file in Makefile 2014-05-10 11:11:45 -04:00
Mark Liversedge
6489af3a73 MetricAggregator Model Refresh (Part 2 of 3)
.. the critical power models are now refactored to have a
   base class PDModel.

.. I have implemented the 2 and 3 parameter models as well as
   the veloclinic models

.. the ExtendedModel needs to be aligned

.. next steps are to put these values into a store and allow
   them to be plotted on the LTM charts.
2014-05-10 12:00:26 +01:00
Mark Liversedge
297d9003b8 MetricAggregator Model Refresh (Part 1 of 3)
.. added the code to aggregate power data when deriving
   model parameter history over time.

.. need to get a class that applies the various models to
   generate the parameters we need (so we can reuse) in
   part 2.

.. then need to store and turn into a metric of some kind
   in part 3.

.. this is largely a checkpoint commit to enable cross platform
   testing with Mac and Windows.
2014-05-09 19:48:25 +01:00
Mark Liversedge
30efc39a01 Fix comments in RideFileCache::meanMaxPowerFor() 2014-05-09 16:52:35 +01:00
Mark Liversedge
df7af4c69a Merge pull request #865 from Walibu/master
Power value from Suunto .gpx file and fix with unvalid 0m Altitude in .tcx
2014-05-09 16:49:50 +01:00
Walter
0149c7da57 added power value from Suunto .gpx file and minor fix with 0 Altitude values if importing .tcx files 2014-05-09 15:30:31 +02:00
Mark Liversedge
2b7dc9a16f RideFileCache::meanMaxPowerFor()
.. to extract just the meanmax power data from a ridefile cache
   so we can aggregate and derive model parameters for new metrics
   to track W', CP, FTP, max-Power.
2014-05-09 12:46:25 +01:00
Damien
113022ee35 Joule GPS download issue with Windows
fix #817
2014-05-08 23:37:29 +02:00
Mark Liversedge
1eb5246cbd Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-05-06 21:26:49 +01:00
Mark Liversedge
82e70fc27e Fix scatter reveal controls sync with settings 2014-05-06 21:26:11 +01:00
Mark Liversedge
d66e752c89 Add build info on Mac
.. see src/mac/Info.plist.app, based upon the default for
   Mac with clang found in mkspecs/default/Info.plist.app
   from the Qt installation directories.

.. we make our own to add build version information, which
   should be placed there via the qmake 'VERSION' macro but
   its not supported -- you have to edit the plist file instead.

Fixes #796
2014-05-06 20:17:30 +01:00
Mark Liversedge
a50efc3eca Aggregating ignore zeroes
.. when aggregating metrics we ignore zeroes since when
   they apply to an entire ride they typically mean no value
   is present.

Fixes #523
Fixes #430
2014-05-06 15:13:16 +01:00
Mark Liversedge
ba2b16e423 Highlight lowest and highest on LTM plot
.. good for weight or TSB / LTS where actually we're more
   interested in the lower values than the higher ones.

Fixes #673
2014-05-06 14:58:06 +01:00
Mark Liversedge
a796c0e401 Don't enforce Z1 start at zero
.. if users want alternative ranges, it is not for us
   to enforce -- e.g. ignore zero for HR is sensible since
   0 suggests loss of signal, not your heart stopped !

Fixes #815
2014-05-06 12:42:12 +01:00
Mark Liversedge
28e7c83252 Fix W bal plotting by distance
.. since we only smoothed time

Fixes #803
2014-05-06 11:22:48 +01:00
Mark Liversedge
841956d9c0 Fix Pace Format in Interval Summary
Fixes #841
2014-05-05 21:57:05 +01:00
Mark Liversedge
53871e95f9 Fix Measures Plotting in LTM
.. needed symbol name to be unique as 'Weight' clashed with the
   normal ride metadata field.

.. we now add _m to the fieldname to generate a symbol name for
   measures.

Fixes #862
2014-05-05 21:07:01 +01:00
Mark Liversedge
bee25eb9a0 Fix DBAccess QT5 Measures Bug
.. there was no prepare statement for the select statement
   in getAllMeasuresFor()
2014-05-05 11:05:29 +01:00
Mark Liversedge
8751de5161 Multicomponent model, default alpha to 0
.. looking at the briefing from Mike on Youtube it looks
   like an alpha value of 0 is a compromise between -0.1
   and 0.1.

.. see the video here: http://www.youtube.com/watch?v=v57NRQ-pHps
2014-05-04 20:35:07 +01:00
Mark Liversedge
f765a8e4d4 Merge pull request #861 from rclasen/issue-582
fix timestamps after gaps in SRM files
2014-05-04 16:03:26 +01:00
Rainer Clasen
5710aeeced fix timestamps after gaps in SRM files
"secs" is miscalculated for gaps between blocks: It takes the delta
between last chunks *END*time and next chunks start time - and thereby is
off by RecInt. This error adds up for each block/gap - so, the n'th block
will by off by n seconds.

fixes issue #582.
2014-05-04 10:20:57 +02:00
Mark Liversedge
3d00cf3a74 Revert "Fix Allplot Axis Labels"
This reverts commit 80fee9d.

Since actually using showAlt, showBalance to determine if an axis
should be drawn is incorrect, since although the user has selected
it to be plotted, it might not actually be in the ride !

The real fix for this axis labels was fixed in commit 18bf28.
2014-05-04 08:47:46 +01:00
Mark Liversedge
66d2bd467e CP Chart can now export bests data
.. via a custom menu option on the chart menu (More...)

.. which means we also now have a mechanism for each chart
   to add their own menu options to the More... menu

.. will no doubt need to add this to the LTM chart
2014-05-03 20:39:46 +01:00
Mark Liversedge
71ca1365de Basic Themes Support
.. no doubt we will extend and refine this but at least you
   can select some basic prebuilt themes.

.. will need to add more as its a limited list but the basics
   are in place for now.

Fixes #855.
2014-05-03 18:18:42 +01:00
Mark Liversedge
04c0a02cf6 Tidy up 'Variant' label in CP settings
.. when Multicomponent model is not selected the 'variant'
   label gets left shown all by itself.
2014-05-03 11:05:53 +01:00
Mark Liversedge
b3f1ab1389 Michael Puchowicz Models
.. updated to include all 3 variants of the 'Veloclinic' model
   linear, exponential and regeneration models for the second
   component
2014-05-03 09:54:07 +01:00
Mark Liversedge
b035122107 Merge pull request #859 from Deadolus/Strava-fix
[PATCH] Fix for slightly different Strava export Format
2014-05-01 10:24:58 +01:00
Simon Egli (Silzo)
abbe1cf78a [PATCH] Fix for slightly different Strava export Format
Strava used other slightly other tags for it's gpx files.
Added those tags to the GpxParser.
Tested and verified.
As I don't have a Power Meter I can't verify Power is correctly imported.

Signed-off-by: Simon Egli <smn.egli@gmail.com>
2014-05-01 10:40:46 +02:00
Mark Liversedge
9a09b052dc Fix LTM labels metric conversion bug
.. we converted from metric to imperial TWICE for the labels
   which mean't they were located correctly on the y-axis but
   the label was always wrong !

Fixes #827.
2014-04-30 15:48:35 +01:00
Mark Liversedge
18bf280893 Fix AllPlot Ticks Error
.. was caused by the fact the allPlot height is not set until after the
   first show, so it is zero in initial state.  We just use a default value
   in this case.
2014-04-30 13:56:56 +01:00
Mark Liversedge
80fee9debc Fix Allplot Axis Labels
.. they weren't updated when the plot was not visible due to looking
   at the curve 'isVisible()' rather than showXXX bool.
2014-04-30 11:17:31 +01:00
Mark Liversedge
a801f5aec8 Andy Froncioni W'bal optiimsation (contd)
.. forgot to remove the threaded integrator which is no longer
   needed and then found it is still being used by the minForCP()
   method, so tidied that up.
2014-04-29 21:02:20 +01:00
Mark Liversedge
a4f3573af4 Fix 2 parameter CP .. again
.. broke when playing with t0 for veloclinic model, because
   t0 is actually used in the loop within deriveCPParameters()
2014-04-28 21:50:36 +01:00
Mark Liversedge
a4f22b4d8c Fix cp2-20 to not use t0 ! 2014-04-28 20:12:07 +01:00
Mark Liversedge
8b431ca0db Hide legend titles for trends/outliers/bests
.. as they are not 'curves' just overlaid onto the
   real curves -- so they are not needed in the legend
2014-04-28 18:06:08 +01:00
Mark Liversedge
951d048e80 Tidy Preferences Passwords Dialog
.. some left over items that are no longer needed and a
   stray QLineEdit in there.
2014-04-28 10:23:25 +01:00
Mark Liversedge
e57d2d5521 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-04-27 15:10:11 +01:00
Mark Liversedge
a7c011bcbc QPixmap::grabWidget() deprecated
.. so use QWidget::grab() instead from QT5 onwards
2014-04-27 15:09:13 +01:00
Damien
f9f029a57e Bin2RideFile: Small improvement in sensor name parsing 2014-04-27 00:02:49 +02:00
Damien
3f8274f041 Correct errors in last commits 2014-04-27 00:02:49 +02:00
Damien
36b9367785 CvsRideFile: Add Moxy file type 2014-04-27 00:02:49 +02:00
Mark Liversedge
80272cff5c Veloclinic Multicomponent Model
.. implementation of the Veloclinic model, or at least
   the first of a few potential models.

.. It may not be correct at this point, but committing
   a checkpoint.
2014-04-26 22:44:05 +01:00
Mark Liversedge
475811a510 Sort out Zones.cpp code formatting
.. I know its a matter of taste, but some of the formatting in there
   would win the OCCC competition. I mean FFS, who puts else clauses
   after a ';' !?

.. the formatting probably reflected the different people who have
   updated the code over the years.

.. no functional changes whatsoever in this commit -- just cleaning
   the source code to make it more maintainable (and readable)
2014-04-26 12:27:59 +01:00
Mark Liversedge
e2432adc04 Dialog deleteLater() om HomeWindow
.. trying to id the Mac crash.
2014-04-25 21:21:37 +01:00
Mark Liversedge
d75c088938 Faster W'bal algorithm
Using Andy Froncioni's modification to the original
formula that removes the need for Tau and also lets
the exponentials drop out.

Massive speed improvement!
2014-04-24 16:23:42 +01:00
Mark Liversedge
900319bfaf Add *.pri to .gitgnore 2014-04-24 14:46:31 +01:00
Mark Liversedge
1d1cff5098 Allow Interactive Widgets in GcOverlayWidget
.. for "future" interactive widgets.
2014-04-23 07:35:01 +01:00
Mark Liversedge
c551b82b4f CPPlot warning to qDebug
.. qmessagebox is a bad idea since user has not idea
   why it is being raised.
2014-04-22 21:05:08 +01:00
Mark Liversedge
0ff6226f33 Allow Multiple Helper Widgets
.. in GcOverlayWidget.
2014-04-22 09:57:12 +01:00
Mark Liversedge
7f05887e37 Merge pull request #856 from ibooij/fix_crash_when_dataseries_is_empty
Fix crash when opening Speed histogram for the first time, on a file without speed info.
2014-04-21 21:31:29 +01:00
Ilja Booij
0bed72c6bf Fix crash when opening Speed histogram for the first time, on a file without speed info.
I had a trainer file as the second file in my history. Opening this ride, and selecting the speed histogram made GC crash.

I narrowed it down to line 905 in src/PowerHist.cpp. The code was trying to do a resize on a QVector with a negative value. count was -7.

Making sure that count is always 0 or greater fixed the crash.

Note that opening another ride file, with speed information before this one, selecting the speed histogram and only after that selecting the ride without speed information, did not crash the application. I'm suspecting that there might be some resetting of values, perhaps in the "standards" arrays, that is not done when a data series is missing.
2014-04-21 22:16:54 +02:00
Mark Liversedge
62722da8e6 Fix horizontal scrollers
.. from ever appearing on ride navigator / activity log
2014-04-21 18:33:34 +01:00
Damien
228344a1e5 Add hemoglobin series to Editor 2014-04-20 23:46:36 +02:00
Mark Liversedge
b1516dc438 Fix blank ride plot in compare mode
.. when you switch tabs to ride plot having never
   displayed any ride at all.

.. also fixes switching to compare mode when the currently
   selected ride is blank (has no data).
2014-04-19 20:43:51 +01:00
Damien
e9466e70ce Correct JsonRideFile for hemoglobin series 2014-04-19 10:14:44 +02:00
Damien
84928380bd Add hemoglobin SmO2% and tHb data series (Moxy) 2014-04-19 09:22:06 +02:00
Mark Liversedge
e398125922 Fix Activity Log Search/Filter
.. not sure it every worked properly.
2014-04-18 19:05:37 +01:00
Mark Liversedge
aac0d16376 Fix color change on ridesummarywindow
.. to reflect change and not optimise out.
2014-04-18 18:14:33 +01:00
Mark Liversedge
7b93b374f5 Fix AllPlot colour changes
.. frame now updates when the colours change.
2014-04-18 13:35:16 +01:00
Mark Liversedge
112ade371f Time Format is always hh:mm:ss and 24 hour clock
.. so be consistent on manual ride dialog.
2014-04-18 13:20:21 +01:00
Tom Weichmann
3797ca8d14 Made Manual Rides honor Imperial/Metric setting, made time use AM/PM if using imperial units (we shold prob have a seperate setting for time format) and fixed distance decimal issue. 2014-04-18 12:23:36 +01:00
Mark Liversedge
3e72e99b6d Fix RideNavigator white background
.. its in the viewport, which seems a common problem across
   the Qt widgets, we need to be aware of the internal implementation
   details when setting styles.

   Thats a bit crappy.
2014-04-17 16:11:00 +01:00
Mark Liversedge
7e14a93fd3 Blank State white background 2014-04-17 15:40:48 +01:00
Mark Liversedge
6c4280a63b Less transparency on LTM charts 2014-04-17 10:43:36 +01:00
Mark Liversedge
2e315f32ff CPPlot y-axis for power
.. always a multiple of 100w
2014-04-17 10:05:40 +01:00
Mark Liversedge
c8de4c31cc Take Model parameters off Summary
.. until we can do it with better performance.

   ITS TOO SLOW !
2014-04-17 09:07:32 +01:00
Mark Liversedge
ecf44d16c5 MultiCalendar Sidebar honors color prefs
.. phew .. that was tricky !
2014-04-16 23:07:51 +01:00
Mark Liversedge
3a668e7003 Remove dialog in cp model calculation
.. it may occur in background !
2014-04-16 17:49:45 +01:00
Mark Liversedge
d74c3a729f Fix going negative on setAlpha
.. to stop qt outputing error messages
2014-04-16 17:44:57 +01:00
Mark Liversedge
ffb7907376 Compare Pane honours color prefs 2014-04-16 17:39:45 +01:00
Mark Liversedge
f8c266f254 RideNavigator background 1px wider
.. border was too thick
2014-04-16 16:40:03 +01:00
Mark Liversedge
29da166aa0 RideNavigator line 1px too long 2014-04-16 16:21:57 +01:00
Mark Liversedge
078f0e0a14 Train Sidebar / Diary Summary Colors
.. now honour user preferences

.. just the calendar to fix
2014-04-16 15:57:31 +01:00
Mark Liversedge
9ce05de1e9 LTM Sidebar honour Colors
.. now sets the colors for all LTM sidebar widgets according
   to the user's preferences
2014-04-16 14:46:54 +01:00
Mark Liversedge
110d41654d Interval Summary Sidebar Colors
.. now honours the color settings too
2014-04-16 14:38:13 +01:00
Mark Liversedge
97d46f1e4b RideNavigator honour Colour Prefs
.. so matches the plots
2014-04-16 12:48:07 +01:00
Mark Liversedge
317f1b0d2d Fixup CP and AllPlot
.. CP to show % for all ride series not just watts
.. AllPlot to show calibration markers in gray
2014-04-14 22:10:53 +01:00
Mark Liversedge
a4646dc0af Fix CP as percent tooltip
Fixes #850
2014-04-14 21:27:01 +01:00
Mark Liversedge
ad9fb3941f Add Vector data series to ride editor
.. last of the planned updates to support
   the new vector data series.
2014-04-14 17:19:04 +01:00
Mark Liversedge
1497fd0958 Add Pedal Data to Scatter Plot
.. now plots left and right curves for the
   Vector/Rotor balance/TE and PS data/
2014-04-14 17:04:06 +01:00
Mark Liversedge
a926f5ef31 Updated release notes 2014-04-14 10:51:01 +01:00
Mark Liversedge
601716366a Add Averages for Pedal Data
.. pedal smoothness and torque effectiveness
2014-04-14 10:39:36 +01:00
Mark Liversedge
3733fafc1e liboauth is optional 2014-04-13 22:17:38 +01:00
Mark Liversedge
636fb8d732 Fix CPPlot SEGV
.. crashes on low power files (eg. power = 0.1w)
2014-04-13 21:44:46 +01:00
Mark Liversedge
9592f39d6a Add Vector data series to ride plot
.. Torque Effectiveness and Pedal Smoothness now
   added to the ride plot.
2014-04-13 19:47:21 +01:00
Mark Liversedge
f913eff786 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-04-11 13:48:26 +01:00
Mark Liversedge
cc70788085 Add Vector/Rotor TE and PS data series
.. Added the torque effectiveness and pedal smoothness
   data series to the RideFile structures.

.. The only file formats that support it at this stage
   are Fit and  GoldenCheetah JSON.

.. As more file formats support it we will add it here.

.. The charts/editor now need to be updated to support
   these new data series.
2014-04-11 13:46:10 +01:00
Damien
d5711b8b16 Twitter: use OAuthDialog for authorisation 2014-04-11 00:00:57 +02:00
Mark Liversedge
6eb21699b7 Smaller font on CP widget
.. 16 points was too big !
2014-04-10 22:10:09 +01:00
Damien
f903d6e769 Twitter: api.twitter.com requires SSL/TLS for all connections 2014-04-10 21:08:55 +02:00
Damien
d1476df322 Rank 2014-04-10 21:08:55 +02:00
Damien
9f498ecd4b ShareDialog: Prepare for GarminConnect Upload 2014-04-10 21:08:55 +02:00
Mark Liversedge
4724a72a30 Some notes on what's new in GC 3.1 2014-04-09 19:02:37 +01:00
Mark Liversedge
4b967c742e Add Chart now back on Chart Bar
.. so at least chart adding should be easier and no more
   UX issues.

.. need to look to add other menu options there; add page, athlete,
   chart settings.
2014-04-09 15:51:43 +01:00
Mark Liversedge
a25e6c681b Add menu button to chart bar
.. code lost and reinstated, need to write the code
   to show the chart menu when it is clicked.

.. just pushing this code to get it back into the repo
   as it was lost accidentally with some other recent changes
2014-04-09 12:52:33 +01:00
Mark Liversedge
370c608a38 Added some code comments
.. to GcSideBarItem.cpp as the code is very difficult to
   follow. Not hugely valuable comments but they will at least
   help to understand the purpose of each widget.
2014-04-09 12:29:36 +01:00
Mark Liversedge
e227d71b31 Truncate W'bal going hugely negative
.. this is caused by bad data and/or the spline getting
   spoilt. We need a better way of decritizing the data.
2014-04-09 10:58:53 +01:00
Mark Liversedge
5bd1d77b93 CP Chart Overlay
.. now has an overlay widget that can contain multiple widgets
   and is user movable and resizable etc

.. we show the model derived values for now, but could add other
   things at a later date (e.g. MU distribution etc).

Fixes #811.
2014-04-08 15:36:24 +01:00
Mark Liversedge
ee36a3f32c Merge pull request #840 from ibooij/fix_crash_in_qtfullscreen
Fix crash at shutdown.
2014-04-07 19:41:33 +01:00
Ilja Booij
57795d2d2e Fix crash at shutdown.
The context pointer was dereferenced after the context object was deleted. This is fixed by storing a pointer to the MainWindow in QTFullScreen, so context does not have to be dereferenced.

The logic in QTFullScreen::eventFilter is also simplified a bit.
2014-04-07 20:19:17 +02:00
Mark Liversedge
ae3b785531 Move grid to back CPPlot 2014-04-05 20:31:26 +01:00
Mark Liversedge
cee07f85fd Merge pull request #838 from ibooij/fix_pmc_crash
Prevent crashed in PMC by checking if start and end date of seasons are ...
2014-04-05 19:55:31 +01:00
Ilja Booij
c6eeb4b734 Prevent crashed in PMC by checking if start and end date of seasons are valid. 2014-04-05 20:04:39 +02:00
Mark Liversedge
49c0aa75fe CP plot cosmetics
.. show the 1s point (it was truncated)
.. show power bests as dots if there is a model curve
2014-04-02 14:05:18 +01:00
Mark Liversedge
092c60fe37 Add pointHover to ScatterPlot
.. the last of the ride plots for hover mode

phew.
2014-03-31 20:01:26 +01:00
Mark Liversedge
9587201a84 Grid style in 2d same as PfPv
.. dotted lines looked naff.
2014-03-31 16:11:00 +01:00
Mark Liversedge
85e44ec8c7 Fix ScatterPlot interval and framing
.. before adding support for interval hover
2014-03-31 15:54:03 +01:00
Mark Liversedge
68c0fbe3f5 CP Chart gets grid back
.. put the grid back on the cp chart, which is less ugly
   now we can set and honour colours for it and the background.
2014-03-30 20:08:14 +01:00
Mark Liversedge
41e203922a Prettier grid lines in ride plot 2014-03-30 19:48:14 +01:00
Mark Liversedge
9bca3cc44b Changing colors in Ride Plot
.. stack plots respond when colors change
.. need to work out whats wrong with allplot and fullplot
2014-03-29 12:27:25 +00:00
Mark Liversedge
787a8f8173 RideSummary cosmetics
.. FTP is a trademark (I think?)
.. Metrics* is just plain Metrics now.
2014-03-28 18:34:10 +00:00
Mark Liversedge
0389b6ba94 Add Model to Summary
.. when summarising a date range we now show the
   model values for CP, FTP, W' et al.
2014-03-28 18:05:30 +00:00
Mark Liversedge
0367bca2f5 CSS extended a little
.. to include <h4> and <b> since they are used
   on the LTM 'data' table.
2014-03-27 20:18:15 +00:00
Mark Liversedge
76caadeeae Introducing GCColor::css() to style HTML
.. wherever we use it, but mostly for the summary
   charts to use the plot marker color. for now.

.. we can get more sophisticated later !
2014-03-27 19:57:08 +00:00
Mark Liversedge
deeb8a9269 Better Default Colors
.. now we don't have to have a white background for the plots
   the defaults are more modern -- inspired by Google Nexus
   and the Sublime text editor
2014-03-27 18:32:40 +00:00
Mark Liversedge
4f15a2c814 Missed off previous commit
.. critically, updating the db schema version
.. QPen syntax error on QT 5
2014-03-27 17:20:52 +00:00
Mark Liversedge
924ef2a8f1 Improve compatibility with Dropbox
.. by checking the ride file CRC before recomputing
   either the metrics or the ridefilecache.

.. this means that users that routinely copy or backup
   or use dropbox to keep things in sync won't see any
   unneccessary metric computations.
2014-03-27 16:20:33 +00:00
Mark Liversedge
3247d1ecce Hide hover when ride changes
.. in histogram plot.
2014-03-27 13:48:56 +00:00
Mark Liversedge
61be3437d7 Add IntervalHover to Histogram Chart
.. when mousing over the intervals list we
   now plot the hovered interval in gray.
2014-03-27 13:05:53 +00:00
Mark Liversedge
991bdccd84 Check null in CPPlot setRide
.. to avoid plotting before GC has even opened!
2014-03-27 08:14:30 +00:00
Mark Liversedge
e6467bb655 Please ignore this commit
.. I added a CR to the end of the LINUX build document
   just to be able to test push/pull/fetch/cherry-pick
   across a number of different repositories

.. this is just for testing git, no functional changes
   were made at all.
2014-03-26 22:06:50 +00:00
Mark Liversedge
203f2d4b46 Remove CP friend class
.. its a hack, and wasn't really needed

.. also reimplemented getBest() functions since they
   incorreclty assumed that bestsCache would never be NULL
2014-03-26 11:04:49 +00:00
Mark Liversedge
3c490c49a0 CP plot handling empty rides 2014-03-25 16:23:34 +00:00
Mark Liversedge
6cbe38e1e4 CP Refactor 3 of 3
.. fix compare date ranges

Now code is ready to extend with new models
and display widgets etc.
2014-03-25 11:54:31 +00:00
Mark Liversedge
761c78b3b2 CP Refactor 2 of 3
.. fixup ride mode, interval hover crash/bugs
.. fixup interval compare mode
.. fixup rangemode

NOTE: Compare date ranges is still broken that
      will be fixed in part 3.
2014-03-25 10:49:58 +00:00
Mark Liversedge
59101530c6 Copyright message update for CP chart 2014-03-24 21:39:46 +00:00
Mark Liversedge
67cf487d38 CP Refactor 1 of 3
.. basic ride, bests and model plots all working

.. Compare mode is now BROKEN !

Will fixup the rest tomorrow, needed to checkpoint
the core refactoring work.
2014-03-24 21:30:15 +00:00
Mark Liversedge
d0d23d6b37 CPPlot.cpp C++ Code Prettify
.. with astyle --style=kr and a little bit of manual editing
2014-03-24 11:49:15 +00:00
Mark Liversedge
d4cff64ff3 CP Code Wash before Refactor
.. the CP plot curve is a terrible mess. Mostly from
   having multiple significant updates from a number
   of notable developers; Sean, Dan, Mark and Damien
   have all made significant contributions.

.. But the code contains lots of 'smells' and is very
   difficult to follow and update

.. this update makes no functional changes but is put
   in place before overhauling the code related to
   "calculating" and plotting the different curves.
2014-03-24 11:08:07 +00:00
Mark Liversedge
885fe498d5 Anaerobic TISS update for RideFile
.. so ride plot of it as a data series is correct
2014-03-23 16:52:57 +00:00
Mark Liversedge
051fb42f29 Updated Gompertz for an-TISS 2014-03-23 16:09:27 +00:00
Mark Liversedge
95ea10a89d Added TISS Aerobicity metric
.. metric of the aerobic-ness of a ride based upon the
   ratio of a-TISS to an-TISS.

.. bear in mind the curves for a/an TISS are being looked
   at as we speak !
2014-03-22 14:20:07 +00:00
Mark Liversedge
d69ebddb1d Anaerobic TISS
Added Anaerobic TISS from Dr Skiba to complement
the Aerobic TISS added recently.

Added to;
* Metrics
* Ride Plot
* PMC metrics
2014-03-22 10:47:44 +00:00
Mark Liversedge
22344ff5e0 .gitignore updated
.. to ignore antlog.bin
.. and all the .qm files
2014-03-21 20:16:04 +00:00
Damien
978d0b5dfb CpPlotCurve: Improve HeatByDate 2014-03-21 15:43:03 +01:00
Mark Liversedge
ccfaaf3b97 Fix CP chart reveal controls on QT5
.. and also remove the yucky labels on the chart in readiness
   for a CP model widget to overlay and move about the chart.
2014-03-21 12:38:11 +00:00
Mark Liversedge
aa9cc72aa3 Less event filtering
.. too many widgets are filtering events needlessly.
2014-03-21 11:57:51 +00:00
Mark Liversedge
db2c758802 Don't define a class inside a method
.. some compilers don't like it.
2014-03-21 07:28:51 +00:00
Mark Liversedge
3dae0a2fe3 Less event processing in HomeWindow
.. was trapping too many events, even when not visible

.. also went back to multishot timer for unreveal but
   stop it when the unreveal even happens.
2014-03-21 07:15:45 +00:00
Mark Liversedge
493f22acec Unreveal timer runs forever!!!
.. should have been a single shot !
2014-03-20 22:29:21 +00:00
Mark Liversedge
d86ece3fb6 CP Heat now shown at bottom of chart
.. akin to the volume on a share price chart.
2014-03-20 18:16:58 +00:00
Mark Liversedge
cfdd32ac64 CP chart now has reveal controls
.. for show heat and show as percentage
2014-03-20 17:27:01 +00:00
Mark Liversedge
c202a6256c Added Hover on PfPv
.. interval highlighted when hover over its marker
   on the PfPv plot.
2014-03-20 15:59:58 +00:00
Mark Liversedge
eec36971d3 Fix Time In Quadran Marker Color
.. when plotting on a dark background
2014-03-20 15:44:18 +00:00
Mark Liversedge
6f2f19f826 PfPv hover color to interval color
.. instead of gray, there is no value in doing anything
   else (aside from consistency) and the marker is in the
   color too, so we should match.
2014-03-20 15:25:57 +00:00
Mark Liversedge
94715c91f7 Add Interval Markers to PfPv
.. mark the center of an interval (i.e. the average aepf/cpv
   for that particular interval).

.. this is in preparation for mouse over the interval causing it
   to be highlighted on hover.
2014-03-20 15:18:43 +00:00
Mark Liversedge
3581773c35 Fix CP scale for percent
.. when showing the ride as a percentage of bests on the CP
   chart we need to adjust the scale when its > 100%.

.. this can happen when comparing a ride with a bests chart
   for a period the ride was not part of; e.g. todays really
   strong ride vs my bests for the beginning of the year.
2014-03-20 13:24:53 +00:00
Mark Liversedge
37b6753311 Fix SEGV in Histogram when clearing compare
.. because the arrays were emptied!
2014-03-20 09:58:32 +00:00
Mark Liversedge
741b725de2 Bit of transparency on PfPv
.. so we can see overlapping intervals.
2014-03-20 07:50:22 +00:00
Mark Liversedge
20367a312f PfPv fixups
.. hide hover curve when change ride
2014-03-19 20:09:40 +00:00
Mark Liversedge
35a66f0237 Implement Interval Hover in PfPv
.. only from interval list
.. need to also implement from chart hover too
2014-03-19 20:02:02 +00:00
Mark Liversedge
ebc21f0f88 PfPv dots brush
.. been meaning to do this for AGES. the dots in the PfPv
   chart are now filled rather than hollow.
2014-03-19 19:04:10 +00:00
Mark Liversedge
d54d7e3f83 Rename LTM to Metric Trends
.. LTM is a meaningless acronym
2014-03-19 18:57:29 +00:00
Mark Liversedge
8c4ac0abf6 More CP fixups
.. hover curve clear on new ride

.. fix ride plot mode so when plotting ride it always
   does. This was fixed by initialising ridePlotMode in
   the CpintPlot constructor.
2014-03-19 18:20:56 +00:00
Mark Liversedge
3ea003bc46 Remove errant qDebug statements 2014-03-19 17:55:42 +00:00
Mark Liversedge
e226083efc More CP plot fixups
.. allplot color fixed when not a rainbow curve

.. fix SEGV index bounds check off by one

.. hover curve z-order to top
2014-03-19 17:52:40 +00:00
Mark Liversedge
06bf617c69 CP pointHover fixup
.. bounds checking on array index
.. set curve grey not white!
2014-03-19 16:18:43 +00:00
Mark Liversedge
ba5247eb3a CP pointHover
.. plot the interval on hover in the sidebar.
2014-03-19 15:53:58 +00:00
Mark Liversedge
4e81a529a0 CP plot ride as %age of best
.. to quantify the areas trained during the ride
2014-03-18 21:34:32 +00:00
Mark Liversedge
42bfcdc7e2 Attempt to fix aPower calculation 2014-03-18 19:59:28 +00:00
Mark Liversedge
52cd888b73 QT Mac support is shit
.. making our own buttons to get around the hideous pile of shit
   that is a QPushButton on Mac when you want it to be smaller than
   a billboard sign.
2014-03-18 18:31:31 +00:00
Mark Liversedge
e8dd7dc36c Clear Compare Pane
.. last piece of the jigsaw for compare mode. This update adds a
   clear button to the compare pane bar.

.. we can still add lots more to compare mode, but for v3.1 this
   is probably enough now, so closing the feature request too.

Fixes #343.
2014-03-18 17:43:59 +00:00
Mark Liversedge
ad4c2a8c6a Mouse Over Interval List to Highlight
.. same as hovering over the interval in the ride view
   hovering over it in the tree list now triggers the
   event.
2014-03-18 16:21:49 +00:00
Mark Liversedge
41561a2403 Fix AllPlot SEGV on Compare
.. introduced by a dodgy cut and paste to support the new
   data series Aerobic TISS.
2014-03-17 22:45:23 +00:00
Mark Liversedge
b81eb146fd Aerobic TISS fixup
.. for rides with samples other than 1s recording.
2014-03-17 21:54:30 +00:00
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
Damien
f6ff763e13 CpPlotCurve: Add missing files in last commit 2014-03-16 21:23:48 +01:00
Damien
1f5a13dc63 CpintPlot: Small correction 2014-03-15 23:07:36 +01:00
Damien
cea0cb4e05 CriticalPowerWindow: Add a Heat by Date option 2014-03-15 22:52:53 +01:00
Mark Liversedge
b051f220f7 Fix Mac SEGV
.. native widget causes issues with 4.8.5
.. rideItem->ride() needs to check rideItem is not null
2014-03-15 08:22:10 +00:00
Mark Liversedge
6868701d6d CP heat is only below the curve
.. makes it much easier to read and interpret!
2014-03-14 14:28:27 +00:00
Mark Liversedge
7f02ed473e Add Heat to CP chart.
.. from an idea from Michael Puchowiz during discussions
   about a Multicomponent PMC.
2014-03-14 10:08:18 +00:00
Mark Liversedge
37f21d20ff Fix ButtonBar paint error
.. caused by an eventFilter not returning false and therefore
   always filtering out the events on the chartbar and buttons.
2014-03-14 08:26:13 +00:00
Mark Liversedge
1aebf24bcc Add Power 'heat' to RideFileCache
.. to indicate which power-durations are getting worked hardest

.. Calculate a 'heat' score for the power duration curve.
   A score that counts how many rides in the aggregate
   have a power-duration best that is within 10% of the
   best value calculated.

.. next step is to add it to the CP curve (when showing
   power) to provide some kind of shade/heat indicator
   for the area of the curve.
2014-03-13 22:56:51 +00:00
Mark Liversedge
f5e2d277c7 Fix Palette for Details
.. not quite right on Linux/Win.
2014-03-13 21:23:29 +00:00
Mark Liversedge
bb23d5a052 Colors.h missing in ModelPlot.cpp 2014-03-12 15:39:17 +00:00
Mark Liversedge
8db3a80fbf Aerolab honour background colors 2014-03-12 15:20:16 +00:00
Mark Liversedge
36ade93529 Always signal when color changed
.. even if changed to same value to ensure the widgets
   are updated to reflect -- especially if setting to the
   same as the default value.
2014-03-12 15:13:35 +00:00
Mark Liversedge
04241e99ea 3d plot honour background color
.. it already had plot background just needed to honour for
   the frame too.

.. also fixed default empty window to use correct colors.
2014-03-12 15:10:43 +00:00
Mark Liversedge
c28357824d Bing Map honour background
.. and small cosmetic fix for google map to be right colors
   whilst loading the map too .. stop nasty flicker.
2014-03-12 15:02:36 +00:00
Mark Liversedge
587a780473 PMC Chart honour background 2014-03-12 14:43:59 +00:00
Mark Liversedge
d15d61c5b2 TreeMap plot honour background colors 2014-03-12 14:05:56 +00:00
Mark Liversedge
c8c357772c HrPw honours background color preferences
.. bringing it in line with the other charts honouring the
   background color chart preference.
2014-03-12 13:37:50 +00:00
Mark Liversedge
14031a0063 Fix SEGV on add chart with Qt5
.. and also selects the first chart on the chartbar at startup.
2014-03-12 13:28:01 +00:00
Mark Liversedge
9ff760feed Fix stylesheet for 'More...' when config changes 2014-03-12 12:45:49 +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
Gareth Coco
ded1da5b0b Move release files to GitHub releases
Uploaded binaries to GitHub and linked to release information.
Updated web pages to point to new binary locations.
2014-03-11 22:49:03 -04:00
Mark Liversedge
fa2a88abc0 Oops needed to set Min Width not Fixed
.. otherwise if smaller than window leaves a nasty
   blank render to the right of the buttonbar.
2014-03-11 21:20:44 +00:00
Mark Liversedge
2916d5f4ee Fixup button bar with lots of texts 2014-03-11 20:57:41 +00:00
Mark Liversedge
6fe27b18ee Less subtley on interval hover
.. just a bit easier to see with less alpha.
2014-03-11 20:37:24 +00:00
Mark Liversedge
134b976d5f More Charts honouring Colors Preferences
.. Further updates to the charts to honour the background
   color preferences:

        * Google Maps
        * Ride Summary
        * Scatter
        * Details (Metadata)
        * LTM Data View
        * Editor

.. still a few left to do and not entirely happy with how
   things look on the editor but we can fix this up over
   time.
2014-03-11 17:58:41 +00:00
Mark Liversedge
6a43f0ded6 Little More Background Honour
.. updated a few more of the charts to honor the chart
   background property so the chart and chrome are all
   in the color the user specified.
2014-03-10 20:55:45 +00:00
Mark Liversedge
a073acc78d UX Fixups
.. chart bar scroll left and right when too many charts
.. set background in ride plot
.. chart menu says 'More...' instead of down tick
2014-03-10 19:40:22 +00:00
Damien
6e47d8820e Bin2RideFile: Changes for DataVersion 6 in Joule GPS new firmware 2014-03-09 22:49:26 +01:00
Gareth Coco
9b0b8d1615 Update website for 3.0.2 release 2014-03-09 14:10:22 -04:00
Mark Liversedge
3c81052572 ChartBar Buttons in a QScrollArea
.. ready to animate / scroll when more items to show than
   will fit in the button bar space.
2014-03-09 17:40:26 +00:00
Mark Liversedge
be064c2e9e Honour Font preferences in Side/Scope/Chart bar 2014-03-09 08:13:57 +00:00
Mark Liversedge
4b387d6bd6 Update ChartBar button text
.. when editing it in the chart settings
2014-03-08 20:47:39 +00:00
Mark Liversedge
1b68203046 TabBar to ScopeBar Mac Fixups
.. using QtMacButton not GcScopeButton
2014-03-08 12:08:27 +00:00
Mark Liversedge
27a4479e03 Fix Scope/ChartBar Font Size on Windows
.. it was size 8 for some bizarre reason
2014-03-08 11:49:49 +00:00
Mark Liversedge
358a3511f1 Replace Tabbar with a Scopebar
.. Only tested on Linux

.. Now going to check on Mac and Qt5

.. Also does not yet support re-ordering tabs
   nor scrolling when there are too many to show.
   This will come in future updates.
2014-03-08 11:36:05 +00:00
Mark Liversedge
c36386d8ca Reverse last commit re spacing
.. not because it was a bad idea, it is a great idea.

.. we need to replace the tabbar with a scopebar and
   customise it for the view menu and support scrolling
   left and right.

.. will sort this weekend
2014-03-07 20:46:19 +00:00
Mark Liversedge
3d992cf886 Moving to less border space
.. The UI spacing is a bit 'old hat' and not really in line
   with modern UI's -- so reducing the amount of unneeded
   spacing between widgets.

.. There is more to come on this, but for now this means there
   is a little more screen estate for the charts.
2014-03-07 13:23:58 +00:00
Mark Liversedge
a33831f8bf Add Configuration for Train View Color
.. the background was set from the ride plot background.
   we now have a separate configuration option for this.
2014-03-07 12:00:25 +00:00
Mark Liversedge
6e6418b6be Rudimentary Pacing Index
.. need to think about what we're trying to achieve with this
   but for assessing TT efforts we can see how far away from
   a constant load the ride was.

   Its just computed as average power as a percentage of max power.
2014-03-06 19:11:32 +00:00
Mark Liversedge
ee37a88429 Fix Fatigue Index Calculation
.. should only measure fatigue from the peak of the interval
   assuming the athlete is performing a proper 'wingate' style
   all out sprint.
2014-03-06 16:33:45 +00:00
Mark Liversedge
ec770a4202 W'bal line thickness
.. should follow preferences not always be 2px wide
2014-03-01 09:43:07 +00:00
Damien
5785141157 ExtendedCriticalPower: display CP value for ExtendedCP model 2014-02-28 23:32:33 +01:00
Mark Liversedge
bdf633cf92 Fix compile error in LogTimeScaleDraw 2014-02-28 22:15:50 +00:00
Mark Liversedge
28a4e6e3aa Version History update for v3.0-SP2
.. added build id 3032 for 3.0.2
2014-02-28 21:48:53 +00:00
Mark Liversedge
3151f4e383 Delta character in CP settings 2014-02-28 08:50:25 +00:00
Damien
7ffa759395 GoogleMapControl: Small fix for Google Map
fix #814
2014-02-28 07:20:40 +01:00
Damien
dfe526926b CriticalPowerPlot: Add Power by inv time plot 2014-02-28 07:20:40 +01:00
Mark Liversedge
f631d72abe Fix RideEditor SEGV on rideselected (!)
.. When interval tree is rebuilt it can cause an issue in the
   ride editor when clearing the selection model.

.. still trying to get to the botton of a SEGV on Mac.
2014-02-27 17:07:50 +00:00
Mark Liversedge
3270a4f685 Fix SEGV on clear selection in RideEditor
.. just call clear() to reset the selection model to
   avoid a SEGV on Mac with QT5 (untested as cannot
   recreate the crash).
2014-02-27 10:45:16 +00:00
Mark Liversedge
0144a3016e Fixup Unicode 'Delta' character
.. it didn't display properly on Linux (and possibly
   Windows).
2014-02-26 21:28:44 +00:00
Mark Liversedge
b6c2df1131 Small Tidy up of AllPlot Settings 2014-02-26 12:00:21 +00:00
Mark Liversedge
f65237e226 Delta Series Fixups
.. ignore hr drops
.. initialise datapoints
.. ignore time goes backwards
2014-02-26 11:38:47 +00:00
Mark Liversedge
d173dc586e Tidy Up Delta Series
.. simplified acceleration calculation to convert to m/s before calculation

.. removed distribution for deltas as they were HUGE and introduced a
   terrible performance degradation where aggregation took >30s for a
   ride set that previously took <5s.
2014-02-26 09:18:44 +00:00
Mark Liversedge
4e9d26d2e0 Delta Watts, Torque, Cadence and HR
.. Following on from the recent update to add acceleration
   this update adds other derived data series based upon the
   rate of change.

.. Added to the ride plot and the CP plot.

Not sure of the overall utility of these updates but bear in
mind that they are targetting sprinting and track users and
analysis.

As well as the positive side of this (development of power
cadence etc) we also want to think about and collect data
on fatigue rate (possibly only power and torque)
- fatigue over time
- fatigue over pedal stroke
2014-02-25 18:44:53 +00:00
Mark Liversedge
0af8bbd826 Merge pull request #810 from stigbd/master
Made the fault handling in TPDownload a little more user friendly
2014-02-25 14:05:04 +00:00
Stig B. Dørmænen
e510f6d736 Made the fault handling in TPDownload a little more user friendly
If something goes wrong, we try to display the fault message to the
user.
2014-02-25 14:23:37 +01:00
alexdelli
287baedf6f Added Support for Elite Supercrono PowerMag 2014-02-22 19:50:30 -05:00
Mark Liversedge
a101581dc2 Fixup CP interval plot
.. w/kg and accel were a mess and the code didn't honour
   decimal places properly.
2014-02-22 15:12:52 +00:00
Mark Liversedge
734f690e1b Acceleration is m/s/s
.. so don't apply metric to imperial conversion and don't
   label it as km/s !
2014-02-22 13:45:01 +00:00
Mark Liversedge
1b22c9d73b 3 minutes of acceleration bests is enough
.. don't need anything beyond that!
2014-02-22 13:00:51 +00:00
Mark Liversedge
ff068705ad Add Acceleration to CP curve
.. and fixup related bugs in ridefilecache
2014-02-22 12:31:22 +00:00
Mark Liversedge
0bac9299a4 Add Acceleration to the RideFileCache
.. so we can chart distribution and cp curve for it
2014-02-21 23:20:35 +00:00
Mark Liversedge
daccfa2e10 Invisible handles on AllPlot
.. setPalette made no difference on Linux but did on Mac
   so reverting it out of AllPlot.h
2014-02-21 21:09:16 +00:00
Mark Liversedge
ec3ddfaaca Add Acceleration Data Series
.. to ride plot only at this point, but will add to
   CP curve etc later

.. will also need to add rate of change for HR, Cadence
   Power as well too.
2014-02-21 20:04:07 +00:00
Mark Liversedge
b556ee10d2 AllPlot Zooming Cosmetics
.. slider removed as it was ugly

.. handles are placed on the same side as the axis
   being manipulated, since its irritating to click
   on an axis then have to move mouse to the other
   side of the chart
2014-02-21 10:40:28 +00:00
Mark Liversedge
48ef0bc75c Scale Y-Axis on Ride Plot
.. When you click on the axis to isolate it a spanslider
   appears to let you manually adjust the axis.

.. it looks naff .. but we can tidy that up separately
2014-02-20 23:21:33 +00:00
Mark Liversedge
0c47d6c8f6 Zone Array is a count not time
.. Fix polarised zones being ZERO when recIntSecs is
   sub-second (e.g. 0.5s with an SRM).

.. the polarised zones were being updated to hold time
   rather than a count of samples. This was fine when
   recIntSecs is 1s but a problem  when it was 0.5
   .. because is is an integer!
2014-02-20 11:51:50 +00:00
Mark Liversedge
46ed2a5753 Compare Intervals now Compare Rides and Intervals
.. changed the title of the compare pane to reflect the
   fact you can drop rides or intervals and compare both.
2014-02-20 09:48:31 +00:00
Mark Liversedge
5734e61972 Allow drag and drop ride for compare
.. drag and drop a ride into the compare pane to get
   the entire ride rather than an interval.
2014-02-19 21:16:18 +00:00
Mark Liversedge
66dd458792 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-02-18 00:15:23 +00:00
Mark Liversedge
df376796b3 Polarised Adjust Z2 to 85-100% of CP
.. seems to be a consensus.
2014-02-18 00:14:25 +00:00
Mark Liversedge
91690f68ee QT5.2 Remove VLC Dependency
.. if you are building with QT5.2.1 or higher we are no
   longer going to use VLC for video playback.

.. the QT Multimedia module seems to finally have made
   the grade and works as advertised on Linux and Windows

.. FOR NOW we will continue to use QTKit on Mac but that
   may also change soon.

This is to enable overlays -- placing the video behind the
charts etc.
2014-02-17 11:58:38 +00:00
Mark Liversedge
b5a50bcccf Tone down the toolbar shading
.. on QT 5.2.1
2014-02-15 15:15:20 +00:00
Mark Liversedge
96477a8f0b Add Data Labels to Histogram Zones
.. when plotting in zones its helpful to have
   data labels to show the percentage or
   absolute values each bar represents rather
   than having to hover over it.
2014-02-15 14:49:17 +00:00
Mark Liversedge
ae95511e78 Fixup polarised zones for compare mode
.. the new option to show in polarised zones instead of
   the user defined zones now extended so it works when
   comparing date range / intervals.
2014-02-15 11:15:29 +00:00
Mark Liversedge
0a2875de79 Fix W' work metric
.. the calculation assumed 1s recording (or was just wrong)
   joules are now calculated properly, this is especially
   important for SRM recordings of 0.5s samples
2014-02-15 00:09:45 +00:00
Mark Liversedge
888bb9885b Limit the CP autosolve for W'bal
.. if its waaaay off then don't try to autosolve for
   CP .. instead just warn that W' is probably set
   incorrectly.
2014-02-14 20:19:56 +00:00
Mark Liversedge
b1f2999d6d Fix with zero for polarised zones
.. the with zero option didn't work with polarised zones
   and there was a silly bug with the settings being applied
   after the setData() call which mean't they were ignored!
2014-02-14 19:00:46 +00:00
Mark Liversedge
2c447eadf3 Histogram Polarized Zone Option
.. now can show in zones but using the polarised zones
   rather than user defined zones.

.. we may need to revisit this since it uses zone 2 rather
   than estimate LT1 from CP.

NOTE: The compare mode needs updating to support this option.
2014-02-13 22:26:02 +00:00
Mark Liversedge
e0194d03a3 Ride Tab Grab focus on startup
.. it irritated me that the search box always had focus on launch
2014-02-13 13:24:10 +00:00
Mark Liversedge
757bb7d875 More UnifiedTitleToolbar Fixups
.. fix preferences dialog toolbar
.. dodgy stylesheet fixed in MainWindow
2014-02-13 12:11:45 +00:00
Mark Liversedge
cbff5c9476 Fix flicker on show/hide toolbar/tabbar 2014-02-13 11:06:31 +00:00
Mark Liversedge
70f2ab9f46 Enable Hide Toolbar for QT5.2.1
.. since its not a real unified toolbar
2014-02-13 10:59:24 +00:00
Mark Liversedge
97ead7f1b4 Fixup Qt5.2.1 Unified Toolbar Cosmetics
.. just needed to use the right linear gradient.
2014-02-13 10:13:10 +00:00
Mark Liversedge
5bf58647e8 Qt 5.2.1 Unified Toolbar Cosmetic
.. add a separator line between unified toolbar and main widget
2014-02-13 09:50:21 +00:00
Mark Liversedge
79e5e8df18 QT5.2.1 Unified Title ToolBar Update
.. if you build with qt 5.2.1 then the unified title and toolbar
   is back, but its a hack to just change the gradient and use a
   standard toolbar .. so we do that, but make the colours match.
2014-02-12 19:30:55 +00:00
Mark Liversedge
4d02a2cf24 Fix the labels in the ride plot in QT5
.. applying the same fix that Jaime found for the erg file plot
   to the ride plot in QT5
2014-02-12 11:34:37 +00:00
Mark Liversedge
6305943559 QwtPicker SEGV possibly on missing axis
.. the series plot has no yLeft axis yet the plot picker
   is always attached to it.

.. Since we do ALWAYS have a yLeft,2 axis for the highlighter
   I've attached the picker to that instead.

.. This should hopefully stop the SEGV in qwtplotpicker::updateDisplay()

.. Will watch and monitor
2014-02-11 21:29:12 +00:00
Mark Liversedge
eed9bb73de WKO+ Interval Markers
Rather than skip over the 'standard' interval markers because they
have such verbose names we now plot the vertical marker only.

This is to indicate there is an interval at a particular point to
signpost to the user that they can hover over this point to get an
interval summary.
2014-02-11 18:16:34 +00:00
Mark Liversedge
00b61bc6ee Ignore entire ride interval on hover highlight
When hovering over a ride if there is an interval that defines
the entire ride (typical if coming in from WKO+) then don't
hover highlight it, since it is distracting and adds no value.
2014-02-11 17:29:38 +00:00
Mark Liversedge
d590e58e41 Ride Plot Highlight Interval on Hover
.. As you mouse over the ride plot it will now highlight
   the shortest interval that that point is within.

.. If an interval has been selected in the sidebar it will
   refrain from hover highlighting as it is distracting

.. Also fixed up the way the highlight curve works so it
   has its own axis and works regardless of the data series
   selected.
2014-02-10 19:24:04 +00:00
Mark Liversedge
d615abd862 Merge pull request #792 from jjofre/master
Fixes issue #791 - Create new workout Workout Wizard show improperly displayed BikeScore trademark
2014-02-10 18:56:28 +00:00
Jaime Jofre
9cd3925e76 Fixes issue #791 2014-02-09 20:32:14 -05:00
Mark Liversedge
65e762c228 Optimise out WPrime in AllPlot
.. it was erroneously being computed in AllPlot even
   when it wasn't selected on the plot
2014-02-08 18:54:50 +00:00
Mark Liversedge
b418a78b0d Ride Plot Isolate Curve Fixup for Compare Mode
.. a few SEGVs when restoring state to a plot that has
   been reploted / curves deleted or added etc.
2014-02-08 13:31:50 +00:00
Mark Liversedge
11b53edec1 Reference Lines only when Plotting Power
.. the stack series plots allowed reference lines to be added
   on charts that didn't actually plot power data
2014-02-08 12:28:16 +00:00
Mark Liversedge
cbd9e67ae6 Ride Plot Isolate Curve Fixup
.. reset isolation when resetting curves etc

.. added a visual cue by dulling the axis scales to grey
   when isolation is active -- to let the user see what
   happened when they moused over an axis.
2014-02-08 12:10:24 +00:00
Damien
0dfb962972 AllPlot Isolate IntervalCurve (HeadWind, Power Balance) 2014-02-08 09:37:08 +01:00
Mark Liversedge
99062790ef Ride plot SEGV on reference lines
.. we SEGV when they are removed and we use the new
   'isolate' curve mechanism to hide/show curves

.. also now keep a track of the reference lines in the
   CurveColors class
2014-02-07 19:19:19 +00:00
Mark Liversedge
24c9ecc964 Ride Plot Isolate curve on click
.. we now isolate a curve temporarily with a click on the axis
   so you can mouse over / look at the curve on its own

.. it would be good to also 'dull' the other curves and their
   axis labels so we have a little context .. will look at that
   next .. it might not be so 'clean' though.
2014-02-07 12:22:22 +00:00
Mark Liversedge
d4ff56031a AllPlot Series Stack Sizes
.. now set to the user preference when a ride is selectred where
   previously it would set to 200px.
2014-02-06 23:32:04 +00:00
Mark Liversedge
0e1b4aa271 AllPlot Isolate on Axis Hover
.. less jarring and useful when setting a reference line
   for power as it isolates the power series.
2014-02-06 20:22:37 +00:00
Mark Liversedge
a90bbd86fa AllPlot isolate curve on mouse over
.. disabled the effect as its NASTY and flickery but saving the
   code anyway as we might do it by a mouse over the legend ??
2014-02-06 19:16:07 +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
a53d484cb6 Update Default Trend View
.. the trend view layout default has been updated to reflect
   recent updates to the capabilities of the charts, notably;

   * Data Table to summarise recent key markers / indicators
   * Data Labels on charts where appropriate
   * Color scheme slightly altered to plot more appropriately
     when in compare mode (less contrast, less vibrant palette).
2014-02-06 11:25:33 +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
9bb8e932c7 Merge pull request #787 from jjofre/master
Fix x-axis missing label issues with Qt 5
2014-02-05 18:29:14 +00:00
Jaime Jofre
ac40912a3b Fix x-axis missing label issues with Qt 5 (https://github.com/GoldenCheetah/GoldenCheetah/issues/750) 2014-02-05 13:19:16 -05: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
16eb9637fe LTM Stack Zoom Slider
.. to adjust the size of the charts in stack mode.
2014-02-03 19:04:12 +00:00
Mark Liversedge
6f0b7901df LTM Stack refresh on first click of 'show stack' 2014-02-03 18:07:00 +00:00
Mark Liversedge
8b5bcd0902 LTM Stack Plot Mode
.. mostly in preparation for compatre date ranges
   on an LTM chart, but also for plotting lots of
   values at once without having too busy a chart.

NOTE: Need to sort out tooltips and optimising the
      refresh as well as making it possible for the
      user to set the plot height like in AllPlot.
2014-02-03 16:23:47 +00:00
Mark Liversedge
f8145fd66a LTM Data Table headings fixup
.. to use uname not name and also to avoid duplicating units
   when they are the same as the metric name (e.g. the metric
   'Relative Intensity' has units 'Relative Intensity').
2014-02-03 11:42:05 +00:00
Mark Liversedge
4e24fcaa21 Another attempt to fix SEGV in FitRideFile
.. when the file is zero length or the header is truncated.
2014-02-02 20:06:40 +00:00
Mark Liversedge
f07089b209 Revert "Fix SEGV on bad file/header in FitRideFile"
This reverts commit c8e1f95114.
2014-02-02 14:55:49 +00:00
Mark Liversedge
cdf210c8b8 Tidy up y axis on ErgFilePlot
.. it was a bit messy and yRight 1+2 should have
   been hidden from view.
2014-02-02 13:58:03 +00:00
Mark Liversedge
770dae0f63 Fix ErgFilePlot xBottom Axis
Fixes #750
2014-02-01 23:57:59 +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
72d9ae1736 Fix rrData signal error 2014-02-01 12:48:24 +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
fe44157dec Diary View Defaults
.. default to summary of the month

.. so now group by week
2014-01-31 17:33:03 +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
c8e1f95114 Fix SEGV on bad file/header in FitRideFile 2014-01-30 20:57:43 +00:00
Mark Liversedge
ca2536b017 LTM Data Table Fixups
.. lots of crashes fixed

.. AVOID data table for PMC for now as they are a mess and
   will fix tomorrow night
2014-01-30 00:03:21 +00:00
Mark Liversedge
a4877bd647 LTM Data View
.. show the metric data as a table as well as a chart, its quite
   useful to configure a summary table of metrics.

Ironically, the ability to configure the summary page in WKO+ was
one of the things that pissed me off and started me down the road
of extracting data from .wko files.  I then found the data I wanted
wasn't even in the files and started developing for GoldenCheetah
         .. the rest, as they say, is history.
2014-01-29 16:48:50 +00:00
Mark Liversedge
474e58313f Add rrData signal in ANT and Robot
.. to help development of an experimental HRV tool.
2014-01-29 10:30:22 +00:00
Mark Liversedge
4796425ff6 W'bal decay set to 1hr, infinite not practical 2014-01-28 20:58:44 +00:00
Mark Liversedge
9f6077c4d1 W'bal decay to infinity
.. No more cutoff of the decay. Since we use threads its
   not such a big deal as before.

.. We now get a full, smooth decay till the end of the ride
   which was much more noticeable when predicting W'bal for
   a workout, than it was for a ride.
2014-01-28 20:18:20 +00:00
Mark Liversedge
432e6ec3a9 Plot Predicted W'bal in Train mode
.. only plots predicted W'bal for the workout but at least that
   means you can see if the workout is even possible.
2014-01-28 18:32:26 +00:00
Mark Liversedge
5b7c3805f8 Fix delete SEGV
.. autodelete doesn't like detached items.
2014-01-27 15:30:47 +00:00
Mark Liversedge
f7dd54ff68 Update WPrime comment
.. to explain how we sped up the W'bal integral calculation
2014-01-26 20:15:20 +00:00
Mark Liversedge
8974ba2d2f Fix WPrime CP lookup SEGV
.. when zones or cp not set for the date in question

Fixes #774.
2014-01-26 16:22:00 +00:00
Mark Liversedge
f727c6270e Potentiall fix crash on Pickers
.. track and delete plot pickers.
2014-01-26 15:08:26 +00:00
Mark Liversedge
48b1a283b0 Add W'bal chart to default setup
.. when new athletes created.
2014-01-26 13:31:39 +00:00
Mark Liversedge
030fdc03b3 Fix DIV0 SEGV
.. in WPrime, and also don't bother trying to autosolve
   CP when W'bal is negative if W' is not setup
2014-01-26 12:10:13 +00:00
Mark Liversedge
f10e24857d W'bal use threads
.. to boost performance. Now will compute the integral
   in parallel and saves about 35% in elapsed time on a
   dual core processor.
2014-01-25 22:56:41 +00:00
Damien
3c122d429c FitRideFile: wrong copy-paste 2014-01-25 22:59:09 +01:00
Damien
74b800056a FitRideFile: We may need to add string support 2014-01-25 22:56:52 +01:00
Damien
46d6e46d85 FitRideFile: correct issue with unknown field type in fit file
fix #724
2014-01-25 22:36:52 +01:00
Mark Liversedge
ce0a5c39eb Less bounds checking on W'bal calculation
.. to save on computing cost the W'bal decay was only
   calculated to 20mins and also bounds checked to a
   decay of 0.1w, but of course, the decay is more like
   25 minutes and 0.1w * 1500 samples is a lot... so
   I've removed them.

.. the key optimisation is the way the decay is integrated
   and that is skipped for samples where W' exp is zero ..
   that optimisation reduces the amount of computing cost
   to 25% of doing it for all samples.
2014-01-24 18:36:43 +00:00
Mark Liversedge
fd778c3230 W' Exp rename W' Expended
It was too oblique a name, could have mean't a few things...
2014-01-24 18:12:00 +00:00
Mark Liversedge
c4e20d1777 Red text in summary for W'bal below zero 2014-01-24 18:07:40 +00:00
Mark Liversedge
9fe10d4691 New Metric W' Exp
For maximum W' capacity expended i.e. Min W'bal
expressed as a percentage of W'.

So if W' is 20 kJ and W'bal is 2kJ then 18 kJ
have been expended, which when expressed as a
percentage of W' (18/20 %) would be;

Max W' Exp of 90%

I also cleaned up a few extra instances of WPrime
being created when calculatinf metrics which was
not a big deal for the Metric refresh but would make
interval metrics painful.
2014-01-24 17:27:45 +00:00
Mark Liversedge
fb4d513bbe WPrime don't crash on bad data
.. if duration is overly large we don't want to get some
   massive array, it will exhaust heap and cause a crash ..
   and it is likely to just be bad data.
2014-01-24 15:37:53 +00:00
Mark Liversedge
86dafd9c57 WPrime interpolation fixup
.. don't be so keen to add zero values interpolating gaps
   in recording when the gap is less than 2 samples wide.

.. previously we were adding way too may zero values at
   subsecond intervals that caused an interpolated value
   returned by the spline to be /practically/ zero.
2014-01-24 11:53:13 +00:00
Mark Liversedge
b7092c5a30 Fix WPrime spline starts from 0
.. offset needed to be a double not an int to ensure
   we handle recording gaps from powertap etc where
   it is not an whole number of seconds

.. Thanks for Armando Mastracci for highlighting this
   and providing a test file to recreate

Fixes #773
2014-01-24 10:33:57 +00:00
Mark Liversedge
64b5e22a91 Revert "ANT+ Don't write 5 blank bytes"
This reverts commit c0b38a193c.

It has introduced errors on Mac and Windows -- we need to better
understand why this is not the case on Linux and whay /exactly/
it is doing that helps on the other platforms.
2014-01-24 08:06:37 +00:00
Mark Liversedge
1bbc12e4ff Autosolve CP for Min W'bal +/- 3w
.. just speeding up the autosolve by only looking in increments
   of 3w, should speed up by a factor of 3 but will mean the result
   is correct to +/- 3w .. which given the W' is usually only right
   to +/- 2kJ should be about right.
2014-01-24 07:51:54 +00:00
Mark Liversedge
6ef03ee704 W' Work
.. don't rely on WPrime to compute it, its pretty simple
   to compute as long as CP is set

.. add to the summary totals so always there to compare
   against the total work
2014-01-23 17:55:41 +00:00
Mark Liversedge
d8711a9ba1 Fix W'bal calculation
.. the optimisation was a little eager and took out
   the integration step !

.. access to PCP is now hidden behind a function so
   it is only computed when neccessary.

.. the calculation is still significantly faster than
   the old one but not as instant as the non-integrating
   version (but then it wasn't working either!).
2014-01-23 16:30:53 +00:00
Mark Liversedge
f186f7e173 Fix temperature curve
Cosmetic fixups to make sure temperature is visible
and the fill is honoured.
2014-01-23 11:42:00 +00:00
Mark Liversedge
0128e2fb75 Fix DIV/0 SEGV with WPrime 2014-01-23 08:49:35 +00:00
Mark Liversedge
121a4c691a Minimum CP for W'bal going negative
.. on ride plot, when W'bal is plotted we put a mesage to say
   that CP is wrong, and autosolve for W'bal to zero.

.. this patch also optimises WPrime to make it a member of the
   ridefile class and this always available (even for intervals).

.. fixed a SEGV when computing metrics for intervals by shifting
   the timestamps to always start from zero.
2014-01-22 20:48:42 +00:00
Mark Liversedge
99df8ab27e Enable use of Minimum W' bal in data filter 2014-01-21 18:07:33 +00:00
Mark Liversedge
89a5ca2634 Added W' expenditure metric
.. energy spent above CP
2014-01-20 20:33:33 +00:00
Mark Liversedge
393e4a38e3 Added W' Tau as a metric
.. so we can track and see if it correlates with anthing.
2014-01-20 19:54:00 +00:00
Mark Liversedge
a0114b32f9 Add W'bal Metrics
Added;
- minimum W'bal == how deep did you go on the ride?
- max match == hardest sustained effort in KJ.

Fixes #760
2014-01-20 19:25:55 +00:00
Mark Liversedge
4ff5a036b7 Optimise W' calculation
Instead of just reimplementing the spreadsheet we now
implement according to the original formulas as defined
in the W'bal paper.

This means there is no longer a 1200s limit to the decay
which was not part of the original paper.

We should be able to add some W'bal metrics now.
2014-01-20 18:47:03 +00:00
Mark Liversedge
ea493a4405 Fix PMC LTM SEGV
.. cut and paste error!
2014-01-19 19:01:22 +00:00
Mark Liversedge
613d10817a Add more Suunto Ambit test rides 2014-01-19 12:36:27 +00:00
Mark Liversedge
d15bb966ce Merge pull request #766 from Walibu/master
Using milliseconds for speed calculation, needed for Suunto Ambit gpx datafiles
2014-01-19 01:14:57 -08:00
Mark Liversedge
3c7f591765 Histogram Golden Ratio for Zone Columns
.. taking what we did for compare mode and applying
   it to the normal zoned display.
2014-01-18 22:35:41 +00:00
Walter
ca6f0882c1 using milliseconds for delta_t when calculating speed, supports Suunto Ambit gpx datafiles 2014-01-18 23:32:51 +01:00
Mark Liversedge
b8e07dbcdd Fix Histogram SEGV and Speed
.. SEGV caused by referencing data->isChecked when
   not in range mode

.. Speed plotting broken because line setting the
   array length in setData was accidentally deleted
2014-01-18 20:23:35 +00:00
Mark Liversedge
a114164baa Histogram Compare Metric
.. the last of the histogram updates to compare date ranges
   for distribution by metric (e.g. IF for rides)
2014-01-18 18:47:57 +00:00
Mark Liversedge
c7f24e9b45 Disable Metric Histogram Compare
.. to avoid errors until we implement
   histogram metric compare date range
2014-01-18 16:21:49 +00:00
Mark Liversedge
8c72f29585 Histogram Compare Date Ranges
.. for bests, not metrics on Histogram

Still need to fixup Histogram to plot metrics
in compare mode for date ranges.
2014-01-18 15:38:35 +00:00
Mark Liversedge
3d23e4e994 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2014-01-17 20:21:44 +00:00
Mark Liversedge
49a10d98ec Merge pull request #737 from Tafkas/master
Add virtual power support for Tacx Blue Twist and Blue Motion trainers
2014-01-17 12:21:15 -08:00
Mark Liversedge
503a3c4ba3 Fixup Histogram Compare Zones
.. it was using the range from rideitem
2014-01-17 18:56:40 +00:00
Mark Liversedge
57061c26de Fixup compare interval refresh
.. usual signals and refresh optimization and
   bugs (switch tabs + switch compare mode).
2014-01-17 18:10:34 +00:00
Mark Liversedge
331931cd31 HistogramWindow remove legend
.. for now, it causes a nasty refresh glitch.
2014-01-17 16:25:51 +00:00
Mark Liversedge
6cefb170e2 Golden Ratio for Grouped Bars
.. on the histogram charts when comparing multiple
   intervals we group using a golden ratio to make
   it easier to read.

.. this is less about the histogram and more about
   establishing the aesthetic in time for the LTM
   updates for compare date ranges.
2014-01-17 16:02:35 +00:00
Mark Liversedge
92e7d6090b Compare RideFileCache Optimisation
.. need to only create when needed and also need to
   delete when done.
2014-01-17 11:42:34 +00:00
Mark Liversedge
0076a4c68e Compare Pane Don't Add Metrics already there
.. distance and duration are default metrics on the
   summary, so we need to make sure we don't double
   up on the compare pane.
2014-01-17 10:30:05 +00:00
Mark Liversedge
f06c5d0624 Histogram Compare Fixup
.. remember we can plot for a season and recognise that
   when checking for isCompareIntervals in PowerHist.

.. fixes a SEGV when looking at a histogram in the trends
   view whilst compare intervals is active in ride view.
2014-01-16 22:55:04 +00:00
Mark Liversedge
bbb3a1ddc5 Histogram Compare Axis Scaling Fixup
.. truncate the x-axis for small values

.. only set y-axis max for selected intervals
2014-01-16 21:27:45 +00:00
Mark Liversedge
1b89d92b0a Histogram Window Interval Compare Mode
.. still needs tidying up for some combinations of show/hide
   tab switch and adjusting chart parameters but is 99% there

.. still need to apply the same compare update for when comparing
   seasons not intervals
2014-01-16 10:56:13 +00:00
Mark Liversedge
4a1598fe33 Refactor arrays out of PowerHist class
.. in preparation for updating for compare mode.
2014-01-15 13:01:56 +00:00
Mark Liversedge
a98212d093 CompareInterval ridefilecache
When an interval is added to the compare pane we now
compute the RideFileCache so it can be re-used in the
Histogram and CP charts without computing it each time.
2014-01-14 21:35:01 +00:00
Mark Liversedge
c3c69c7c06 Fix sidebar resiziung bug
.. caused by CP plot.

.. have no idea /why/ this occurs, but fixed by commenting
   out the div scale for the CP plot (that isn't needed anyway)
2014-01-12 17:09:57 +00:00
Mark Liversedge
789a7c0a70 CP chart settings into tabs
.. there were too many settings on one page
   so split into tabs
2014-01-12 14:59:43 +00:00
Mark Liversedge
02edd9aba2 Fixup renaming of Views
.. missed in a few minor places.
2014-01-12 14:01:51 +00:00
Mark Liversedge
f0397630da RideNavigator - activities become rides 2014-01-12 13:43:16 +00:00
Mark Liversedge
87ba542197 What's in a name ?
The 4 views have been shown to be confusing -- it is not clear
to new users what their purpose is, and hence how or why they
are different.

So in an effort to reduce the confusion I've renamed a few
things to be much more explicit and specific.

.. We embrace the fact we are a cycling program and use the term
   RIDES not ACTIVITIES for all files

.. HOME is confusing, renamed to TRENDS

.. the ANALYSIS view name is confusing, its all about ANALYSIS
   to renamed to RIDES

There will no doubt be areas that are not renamed properly we
can fix those when the arise.
2014-01-12 13:06:00 +00:00
Mark Liversedge
ee76e6769a Compromise on import
.. signal when importing a relatively small number
   of items (less than 20)

.. don't signal when importing a lot of items (more
   than 20).
2014-01-11 10:55:23 +00:00
Mark Liversedge
c0b38a193c ANT+ Don't write 5 blank bytes
.. it doesn't do anything except create errors
2014-01-11 10:25:37 +00:00
Mark Liversedge
f10f1cbabf Fix Mass Import Memory Exhaustion
.. don't signal when adding a ride, which kicks off
   all manner of updates across the code, instead
   we let the metric refresh kick in at the end.

.. this is great for an initial load and mass import
   of large numbers of rides, but sucks for a small number
   of rides when maybe downloading

.. we could make the signalling dependent on the number of
   rides being imported, so small number still updates the
   CP charts etc.

THIS IS A TEMPORARY FIX TO THE MORE SIGNIFICANT PERFORMANCE
ISSUE -- BUT WE DO NEED TO CONSIDER THE ISSUE OF CHART UPDATES
2014-01-10 22:02:46 +00:00
Mark Liversedge
c0b29609be Fix WKO import - another optpad constant
.. amazingly there are still some constant values we have
   not seen before. This time from files provided by
   Patrick McNally.

.. optpad values we have seen now range from 0x8007 through
   0x801a and crucially with only one value missing 0x8008

.. its just a matter of time before we see one of those :)
2014-01-10 19:32:52 +00:00
Mark Liversedge
4f8e344d38 Don't auto open athlete that crashed
.. instead offer the cyclist menu
2014-01-09 22:02:54 +00:00
Mark Liversedge
d00ac93fb2 UI Nits: Qt5 Toolbar color when inactive 2014-01-07 21:32:05 +00:00
Mark Liversedge
4474e18a9c Forgot to increment the DB Schema! 2014-01-07 16:50:29 +00:00
Mark Liversedge
af67705fd0 UI Nits: Prettify Mac Toolbar for QT5
.. colors match document mode tabbar.
2014-01-07 16:49:45 +00:00
Mark Liversedge
2c65061924 UI Nits: Mac Athlete Tab Bar
.. now looks a bit more 'Mac-like'.
2014-01-07 16:24:36 +00:00
Mark Liversedge
ce7e881957 Fixed Estimated VO2MAX metric
.. to use latest ACSM formula.

.. see: http://blue.utb.edu/mbailey/handouts/pdf/MetCalnew.pdf
2014-01-07 16:20:23 +00:00
Mark Liversedge
2ac02e7b0b Hide empty series plots in compare mode
.. check the curves are empty!
2014-01-06 18:25:52 +00:00
Mark Liversedge
37d8e7a603 AllPlot Paint Zones in Compare Mode
.. we should actually paint a zoned background if
   power shade zones is selected, when in compare mode.

.. but /only/ for charts that have power on them!
2014-01-06 17:51:15 +00:00
Mark Liversedge
dc5cfc7e76 Fix Ride plot zone shading for series stack
.. the setting wasn't being set/unset according to
   user preferences properly.
2014-01-06 17:01:43 +00:00
Mark Liversedge
6ebfe79c73 UI Nits: Colorblind
.. tweaked color sequencing in compare to avoid using
   red/green as it should be avoided -- red/green color
   blindness is relatively common.

.. this is just a hack in the absence of a good algorithm
   to generate distinct hues automatically.
2014-01-06 14:02:24 +00:00
Mark Liversedge
9aa5f46f48 Fix compare by time / by distance bug
.. silly typo mean't allplot was being used as a refrence
   when generating plots instead of fullplot

.. this manifests itself as using the wrong plot for the
   'bydist' boolean -- this is fine, unless you switch
   between by time and by distance whilst in compare mode.
2014-01-06 12:59:51 +00:00
Mark Liversedge
530c12435f Sneak in for dev builds
.. full plot controls always visible in compare mode.
2014-01-05 18:03:46 +00:00
Damien
d367adb0e6 ExtendedCriticalPower: Use version 5 2014-01-05 18:41:12 +01:00
Mark Liversedge
acf439bb1d UI Nits: PfPv / QA refresh issues 2014-01-05 16:42:13 +00:00
Mark Liversedge
4b460fa9c8 PfPv Compare Nits
* clean up refresh when changing tabs etc
* update the quadrant % markers
2014-01-05 15:17:10 +00:00
Mark Liversedge
f3ba7ed352 Fix 'Fix Tools' being called
.. I deleted the lines that actually call the data
   processor when I was refactoring MainWindow.

.. this must have been an accident as there is no
   possible reason for just deleting the code!

Fixes #747
2014-01-05 12:18:44 +00:00
Gareth Coco
2eff77f345 Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2014-01-05 01:54:18 -05:00
Gareth Coco
5b8997dd1d Update Fedora RPMs and install instructions
RPMs needed libsrmio installed which is not available.
Change to compile against a static build of libsrmio.
Changed install instructions to use "yum" so dependencies are installed.
2014-01-05 01:52:09 -05:00
Mark Liversedge
59821597c9 Disable reference lines in compare mode
.. it has nowhere to save them.

.. we could reintroduce and save with a compare set
   when we have one of those!
2014-01-04 11:17:22 +00:00
Mark Liversedge
54ea5514ee Fix allplot Compare mode refresh
.. if you selected a ride and viewed on allplot then
   changed tabs, entered compare mode then switched back
   to allplot the display didn't get refreshed.
2014-01-04 10:49:56 +00:00
Damien
0aa445a565 CpintPlot: hide contribution curves 2014-01-04 10:50:18 +01:00
Damien
1caedcac06 PfPvPlot: Correct last commit 2014-01-04 10:48:56 +01:00
Damien
d87d9b505b PfPvPlot: Fix Color for intervals 2014-01-04 10:34:15 +01:00
Damien
6540224102 ExtendedCriticalPower: Add contribution curves eCP version 6 2014-01-04 00:46:39 +01:00
Damien
eaba1fef7d CriticalPowerWindow: small correction 2014-01-04 00:46:15 +01:00
Damien
9ca4691464 PfPvWindow: Add Compare Mode 2014-01-04 00:42:51 +01:00
Mark Liversedge
00645d6381 Fixup ComparePane to derive xPower, NP et al
.. so they can be plotted alongside other data
   series in each chart.
2014-01-03 16:43:50 +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
5ea6a06492 Merge pull request #746 from jjofre/master
Should only auto refresh filters if we have Lucene configured to prevent...
2014-01-01 13:42:00 -08:00
Jaime Jofre
df800bdde2 Should only auto refresh filters if we have Lucene configured to prevent core dump 2014-01-01 15:10:58 -05:00
Mark Liversedge
13df3073c3 Include <QCheckBox> for QT5 2013-12-31 18:41:20 +00:00
Mark Liversedge
015e15c416 Small fix for Centile SEGV
Array bounds checking used a double which is susceptible
to rounding issues, or at least returning values a tiny
fraction over an integer that when converted add 1.

e.g. 10.000000001 -> 11 when converted to int.
2013-12-31 15:12:14 +00:00
Mark Liversedge
f90eb8a929 CP honour Appearances setting for Linewidth
.. it should have been done a long time ago!
2013-12-31 14:57:39 +00:00
Mark Liversedge
20e641e1c5 Use source context in CP compare mode
When comparing it is possible to compare across
athletes; e.g. their 2013 season vs my 2013 season --
which means we need to use the sourceContext for any
items when aggregating / fetching the data.
2013-12-31 14:21:10 +00:00
Mark Liversedge
fd72ad67d3 More CP Fixups
Basically to distinguish between the four modes
and only show what you are asking for;

* rangemode + normal  - the currently highlighted season only
* rangemode + compare - the compare pane seasons only
* ridemode  + normal  - the current ride and left pane intervals only
* ridemode  + compare - the compare pane intervals only
2013-12-31 13:52:41 +00:00
Mark Liversedge
b0e6beb671 Fix Glitch for CP Compare Intervals
.. same as the normal interval display glitch.

That was caused by appending to an array that was
already resized .. making it double the size and
prepended with lot of zeroes!
2013-12-31 13:19:21 +00:00
Mark Liversedge
b01f529c65 Compare Button Change to Red when on
.. better visual cues for red title, red scope etc
   to show all tied in to compare being ON.
2013-12-31 13:05:24 +00:00
Mark Liversedge
a6c389dcbc Fix SEGV on CP picker in Compare Mode
We still need to fix the CP chart picker and hover
to use the range bests when in compare mode.
2013-12-31 12:25:53 +00:00
Mark Liversedge
56206d1fc6 CP Plot Fixups
Fixed a few nits that have come to light over the last
few days as lots of new features were developed.

* Fixed interval glitch where first point is zero, caused by
  an off by one error in the original code

* Fixed interval creation which also had an off by one error
  that mean't 5s curve was only 4s long

* Made the shading under an interval optional, as it is a bit
  nasty and was there to hide the glitch in point 1 above

* Made the interval line solid, not dotted, as it looks much
  better that way -- especially now its used for compare mode

* Made the title red by implementing isCompare() when in
  compare mode.

* Fixed a crash on hover in season compare mode
2013-12-31 12:09:02 +00:00
Damien
c5077af75b CpintPlot Compare Mode
you can now compare intervals or date ranges via the critical power window
2013-12-31 00:57:46 +01:00
Mark Liversedge
863415ba26 Fix compare pane sorting
.. sorts according to the expected format for each column
   but if in doubt assumes its numeric
2013-12-30 21:15:47 +00:00
Mark Liversedge
74e7c44c55 Handle Compare Pane Sort
.. if the user sorts the compare pane contents by clicking
   the header the order they are stored is changed too.

NOTE: The table sort is broken since it is alpha not numeric!
      This needs to be fixed too.
2013-12-30 20:00:38 +00:00
Mark Liversedge
38a59badf7 RideSummary Honours CheckBoxes
.. if intervals or date ranges are not checked in the
   compare pane then we shouldn't summarise them

.. also fixed up compare pane so first entry ie. what we
   are comparing to is always checked.
2013-12-30 19:06:33 +00:00
Mark Liversedge
17a387b043 Compare Seasons fixups
.. update the title

.. don't keep adding ride count to the total
   metrics to calculate

Need to work out what to do with;
* Temperature
* Athlete Bests
2013-12-30 17:52:35 +00:00
Mark Liversedge
0aee3c2e14 RideSummary Compare Mode
.. you can now compare intervals or date ranges via
   the ride summary window.
2013-12-30 17:08:17 +00:00
Mark Liversedge
adfd9e4f89 Compare Mode Connected Up
.. Connected the compare mode on/off switch in the
   compare pane to Context to notify charts

.. the scope bar and chart painting now highlight in
   red when compare more is active and supported by
   a particular chart.

.. each chart must implement isCompare() to return
   true or false if it is supporting compare mode.

We /still/ do not have a mechanism for clearing or
reordering items in the compare pane, nor a mechanism
for choosing 'delta' compare (i.e. baseline all compares
to first item in the list).
2013-12-30 00:18:41 +00:00
Damien
c319a9f41c MergeActivityWizard: don't crash if no data to merge 2013-12-30 00:12:42 +01:00
Mark Liversedge
d748695b0e UI Nits: Fusion Style on QT5 only
.. improves things somewhat on Windows.
2013-12-29 21:29:11 +00:00
Mark Liversedge
69cadf04ac Checkpoint ComparePane now toggles off/on
.. added a button to switch compare on and off.
2013-12-29 19:47:36 +00:00
Mark Liversedge
b6885ae979 Fix SEGV on date range compare pane
.. when click color or checkbox for a season.
2013-12-29 17:04:46 +00:00
Mark Liversedge
69a4956d61 UI Nits: Mac and QT5 Toolbar
Fixed up to make the toolbar on a build on QT5 look a little
more like one on QT4 where they still have unified toolbar
and title support.

We should look at managing via the native NSToolbar in the
near future since Digia have made it clear that they are not
keen to reintroduce unified toolbars in QT5.
2013-12-29 14:49:18 +00:00
Mark Liversedge
bd37801225 DateRange Compare Pane
.. now can drag and drop any date range onto the
   home view compare pane to compatre different
   seasons, and even across athletes.

.. we setup the metrics and measures in the context
   so the charts don't have to, but we still need to
   reference the source context for bests and ridefilecache
   data

NOTE: We need a mechanism for 'locking' source tabs/athletes
      when they are part of a compare to avoid crashing when
      a context is deleted whilst we are comparing

NOTE: We till need a way to remove entries from the compare
      pane, possibly call it when an athlete is closed too
      (see note above).
2013-12-29 13:00:46 +00:00
Mark Liversedge
99712de70f Fix Season Encoding for drag/drop
.. should be ok to drag and drop a standard
   date range as well as a season definition

.. pass across the start, end etc to avoid having
   to dereference from the source context
2013-12-29 10:20:57 +00:00
Mark Liversedge
b0a0d7bb17 ComparePane Qt5 fixups 2013-12-28 23:17:17 +00:00
Damien
1f68f1ecf5 ExtendedCriticalPower: Add code for demo curves 2013-12-28 23:56:02 +01:00
Damien
866e884d48 CPintPlot: Add centile mode plot for selected ride 2013-12-28 23:56:02 +01:00
Mark Liversedge
8afa57cc39 UI Nits: Interval Compare Pane
.. on Mac tidied up and also fixed up the way the
   table is resized to contents -- to do it AFTER
   the contents are set (!)
2013-12-28 22:11:21 +00:00
Mark Liversedge
508e4afa68 Interval Compare Pane
Now allows you to add intervals and select them and
change colors they will use.

It will maintain the data as a CompareInterval which
also includes a RideFile representation of the interval.
This is stored in Context in a QList as compareIntervals
and can therefore be re-used across all charts.

We now need to think about putting some widgets onto the
Compare 'bar' for turning compare mode on and off and
deleting / reordering / clearing items.
2013-12-28 21:24:52 +00:00
Mark Liversedge
95b993617a Drag onto athlete tab to switch tabs
.. this allows us to drag and drop between athletes or
   to switch athlete if dropping from outside of GC.

.. also added context to the mime data so the compare pane
   will know where the dragged object has come from (ie. it
   may be from a different athlete).
2013-12-28 10:58:32 +00:00
Mark Liversedge
b03c10e6fd ComparePane: setDropAction on drop event
.. so it can be accepted and the data is not wiped
   or removed in the source treewidget.
2013-12-28 08:21:51 +00:00
Gareth Coco
4ad2bda50a Update Makefile 2013-12-27 15:36:08 -05:00
Mark Liversedge
d195de25cb Increase Starting LTS limits
.. from 100 to 300

Fixes #739
2013-12-27 14:20:49 +00:00
Mark Liversedge
ae2cd5eb97 Mac MainWindow Crash Fixes
* refresh popup resize mainwindow crash
* tabbar button crash coz on left not right on Mac
2013-12-27 13:48:02 +00:00
Mark Liversedge
77c2c07664 Add Close Button to Athlete Tab
.. so you can close athletes easily.
2013-12-27 13:23:57 +00:00
Mark Liversedge
b33c2becc7 Refresh Popup on First Run
.. to give a visual cue as to what is happening, since it
   can feel like GC has 'hung' as it loads.

.. this is especially important now we open tabs in an
   existing mainwindow.

   The delay between clicking open and the tab appearring
   needs to have a visual indicator that something is
   actually happenning.
2013-12-27 12:14:05 +00:00
Mark Liversedge
08e7d6d882 Update SaveDialogs for Tabbed Athletes
.. the save dialogs all assumed the current tab
   and current context were relevant when checking
   for unsaved files etc, but this was INCORRECT.

.. when window is closed each tab is checked IN TURN
   so the context should have been passed (because the
   current tab/context is just one of the many to save)
2013-12-27 11:41:10 +00:00
Mark Liversedge
611ffde353 DocumentMode and UnifiedTitleAndToolbar
.. don't go together, so removing the document mode update.
2013-12-26 21:14:31 +00:00
Mark Liversedge
b758e6fefe Add <QFileDialog> to GoldenCheetah.cpp
.. for QT5
2013-12-26 20:53:31 +00:00
Damien
dd7ce1f719 Export as PNG : hide menu button 2013-12-26 17:42:47 +01:00
Damien
b0a17947dd GcChartWindow: Add "export as PNG" in menu
fix #738
2013-12-26 17:34:38 +01:00
Damien
0fa9aec9cd AllPlot: Add secondary Scope to plot speed and headwind in the same together 2013-12-26 15:41:15 +01:00
Mark Liversedge
7d00cba9df Remove tabbar from context save/restore
.. when switching tabs -- as it makes no sense
   at all to hide/show tabbar as you switch tabs!
2013-12-26 11:00:32 +00:00
Mark Liversedge
67ab2b2903 Show/Hide tabbar as needed
.. only needed when we have >1 tabs so lets hide and
   show it automatically.

.. also added a setting for remembering setting but it
   doesn't do anything as we auto hide/show.
2013-12-26 10:54:42 +00:00
Mark Liversedge
bbeb76ab12 Tabbed Athlete Fixups
* showhideToolbar isn't available on a Mac
* used showhideToolbar for Tabbar (typo)
* setDocumentMode for tabbar on Mac (slightly better)
2013-12-26 09:18:57 +00:00
Mark Liversedge
36ede56ab4 Missing <QStackedWidget> in MainWindow.h
.. needed to build on QT5
2013-12-26 09:03:47 +00:00
Mark Liversedge
9963904fa3 MainWindow Refactor Part 5 of 5 - TABBED ATHLETES
The final part (and one of the reasons) for the mainwindow
refactoring -- we now support tabbed athletes rather than
having a new mainwindow for each athlete opened.

Context is saved/restored and there are new functions for
opening and closing tabs and windows of tabs.

The tabbar itself is fugly -- the next few days will spend
some time looking at making it prettier on Linux/Win and
more native on Mac (see MMTabBar).
2013-12-26 01:03:32 +00:00
Damien
5bc1107f3e AerobicDecoupling: Correct formula
fix #721
2013-12-26 01:13:28 +01:00
Damien
533a13546b AllPlot: Handle noTemp with no smooth
fix #634
2013-12-26 00:24:53 +01:00
Mark Liversedge
9d72cf92db oopsie on #ifdef
.. too Mac centric in last commit, forgot we might need to
   worry about other pesky operating systems.
2013-12-24 20:28:01 +00:00
Mark Liversedge
d48cadc726 RideNavigator no scrollbar on QT5
No need to adjust sizes to account for a scrollbar
on Mac in QT5, since the scrollbars are zero width.
2013-12-24 19:12:11 +00:00
Mark Liversedge
e4aadbe818 Fix compile error on stackZoomWidth
Gareth's build system baulked at the stackZoomWidth
class member defined as const in the class declaration.

Moved to a static member of AllPlotWindow.cpp instead.
2013-12-24 17:29:56 +00:00
Damien
c4cd9ee0e6 CPintPlot: Correct AxisScale for IntervalCurve (eg. HeadWind) 2013-12-24 15:33:58 +01:00
Mark Liversedge
8257a9c6e8 Fixup Compare Drag-N-Drop
We have two new mime data types;

application/x-gc-intervals
application/x-gc-seasons

With packing routines into QMimeData declared
in IntervalTreeView and SeasonTreeView.

To get around an issue with overwrite mode on
drag and drop from the seasons / interval trees
we DO NOT ACCEPT the drop (even though we do
actually process the data).

All we need to do now is unpack the QMimeData in
ComparePane and then add the GUI elements to it etc.
2013-12-24 11:48:19 +00:00
Mark Liversedge
420161e400 Zoom to really large
.. because when we're comparing we'll need it.
2013-12-23 22:51:30 +00:00
Mark Liversedge
13c504c822 Fixup Stack View Zooming
.. it was a bit shit with controls you couldn't
   use, and when you did nothing happened.

.. now has a slider and 7 distinct settings for
   stacks from ok to large and 5-60 mins sections.

.. should be good enough for most users.
2013-12-23 17:21:50 +00:00
Mark Liversedge
7ce5ffa7ea Fixup Stack By Series
Finish off the nits and missing pieces for the recent
update to enable plotting in a stack by data series;

* Now plots W' bal, LR Balance and headwind
* Stacks are now redrawn when settings change
* Interval marking is fixed
* Baseline is now set correctly for each plot
* Reference lines are plotted (on power plots only)
* Reference lines can be dragged
* Interval markers are not redrawn with the text
  only shown on first plot
2013-12-23 15:20:18 +00:00
Gareth Coco
80ffb4a3c8 Add Fedora 18/19 x86_64 RPMs for downloading 2013-12-23 07:38:56 -05:00
Mark Liversedge
192a2e27df Move Cocoa release pool to main
.. because mainwindows come and go and we need to persist
   across them all.
2013-12-23 10:38:18 +00:00
Mark Liversedge
6817db609b Remove ScopeBar from MainWindow
.. moving view selection to center of toolbar.
2013-12-23 00:40:11 +00:00
Gareth Coco
5e329fb53f Update website for 3.0.1 release 2013-12-22 15:34:56 -05:00
Mark Liversedge
4db8930b4e Remove errant qDebug statements 2013-12-22 17:47:26 +00:00
Mark Liversedge
a4fc05f70b AllPlot Stacked by Series
Extending the stack display to have a single plot for each
data series. This will be useful when comparing activities
and also makes it a bit easier to see the data when there
are lots of data series.

This is a checkpoint commit as I need to fixup some of the
series that have multiple curves and also reference lines
are not currently working.

But you can zoom using the fullplot and highlight intervals
etc.
2013-12-22 17:23:19 +00:00
Mark Liversedge
ac27639ff6 Add <QMessageBox> to ExtendedCriticalPower.cpp 2013-12-21 22:35:50 +00:00
Mark Liversedge
06242db844 Revert "Fixup Mac toolbar for Qt5 and Qt4 build"
This reverts commit 20739ebb29.

Qt5 has a number of issues that cannot easily be resolved.

An alternative strategy of developing a custom cocoa control
for the mac toolbar is probably a better way forward.
2013-12-21 22:29:24 +00:00
Mark Liversedge
20739ebb29 Fixup Mac toolbar for Qt5 and Qt4 build
.. should be a bit better now.
2013-12-21 21:08:21 +00:00
Mark Liversedge
6f8df99b8a Sync versions / upgrade script with v3.0 SP1
.. which was released today.
2013-12-21 18:40:37 +00:00
Mark Liversedge
2652b3d1e6 Proper fix for autofilter refresh 2013-12-21 17:47:11 +00:00
Mark Liversedge
c640ab525b Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2013-12-21 17:05:57 +00:00
Mark Liversedge
1175c2d529 Remove qdebug in ColumnChooser
.. was accidentally committed a long time ago!
2013-12-21 17:05:24 +00:00
Damien
f96937e360 ExtendedCriticalPower: Change default 2013-12-21 16:45:19 +00:00
Mark Liversedge
372a1df4a4 refresh autofilters on ride update
.. when metricDB is updated refresh the autofilters
   to reflect the values available.
2013-12-21 16:37:30 +00:00
Damien
5f035b223b ExtendedCriticalPower: Change default 2013-12-21 14:15:38 +01:00
Damien
7c43dd24fc CPintPlot: Add extendedCP in model combo 2013-12-21 00:25:19 +01:00
Mark Liversedge
030b190873 Check CPcurve is non-null before hide/show 2013-12-20 21:07:18 +00:00
Mark Liversedge
e64072437f Only show 1 model curve
.. either extended or standard models shown.
2013-12-20 20:22:11 +00:00
Mark Liversedge
3c3c3af47f Cosmetics tidy up chart settings 2013-12-20 20:14:30 +00:00
Mark Liversedge
a61e036d72 Fixup SEGV and layout error
.. minor fixups for new CP model code to initialise
   some vars to NULL and remove Qt runtime warnings
   about layouts.
2013-12-20 18:26:46 +00:00
Mark Liversedge
d898722d0b Autofilter
.. let the user choose metadata texts to filter
   by value in the sidebar.

Note there are issues;

1. the value lists are not updated automatically when
   rides are updated or imported and values are added
   or removed.

2. it only works with shorttext metadata fields, we might
   choose to add numeric etc later.

3. it would be nice to get an indication of how many
   activities contain the value and maybe even sort
   by count.
2013-12-20 17:48:49 +00:00
Damien
a3d123984a ExtendedCriticalPower: Add Model for ExtendedCP
- One version of the model (Version 4.3)
2013-12-20 18:23:04 +01: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
ce9bc24980 Add copyright and fix bomb character in LTMTrend2 2013-12-18 14:27:42 +00:00
Mark Liversedge
976924d535 Revert last commit
.. it wasn't a fencepost error!
2013-12-18 14:07:49 +00:00
Mark Liversedge
8f836e5556 Fencepost error in LTMTrend2
.. missed off the last data point each time!
2013-12-18 14:01:47 +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
e55480e083 Fix 2d crash
Qwt 6.1 seems to delete objects when they are detached from
the plots by default, so we don't delete them after detach
any more in ScatterPlot.
2013-12-18 11:06:23 +00:00
Mark Liversedge
e5d85bdd0e New Metric Fatigue Index
Looks at the max and min (non-zero) power values and
uses the difference between them to calculate a fatigue
index as a percentage.

i.e.
FI = (maxP - minP) / maxP * 100.00;

This is really only useful for targetted intervals as for
most riding there will always be a period of time where
the rider coasts or takes it easy.

We may look to improve it by smoothing or comparing to the
average power instead of minimum power.
2013-12-18 11:00:48 +00:00
Christian Stade-Schuldt
7f2a88bbeb added Tacx Blue Twist and Tacx Blue Motion to Device Wizard 2013-12-17 18:51:08 +01:00
Mark Liversedge
4249f45e3c Fix Lucene searches in Home Sidebar
.. I hadn't finished that bit of the code before
   pushing. A bit of an oversight!
2013-12-17 16:39:46 +00:00
Mark Liversedge
345c24b2ca Fix Season serialize cut-n-paste bug
.. that caused seasons to disappear!
2013-12-17 13:48:05 +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
Christian Stade-Schuldt
97c8bf1ef9 Added virtual power support for Tacx Blue Motion trainer 2013-12-17 12:16:01 +01:00
Christian Stade-Schuldt
5b5e309f7a Added virtual power support for Tacx Blue Twist trainer 2013-12-17 12:03:31 +01:00
Gareth Coco
2ea02dbfd3 Remove qwtconfig.pri 2013-12-16 21:04:21 -05:00
Gareth Coco
5c1b44ffdd Move to qwtconfig.pri.in
Disable shared build (we need libqwt.a)
2013-12-16 21:02:00 -05:00
Mark Liversedge
cfb63f7f8f Merge pull request #736 from Tafkas/master
Updated Tacx Satori Virtual Power values
2013-12-16 11:11:13 -08:00
Mark Liversedge
c44b70f52d Batch Export remembers last format/dir
.. but will only default to the last used dir
   if it still exists.
2013-12-16 18:50:33 +00:00
Mark Liversedge
6bfb1ba701 Fix crash in select intervals in PfPvPlot
.. we delete the curves after they are detached which
   causes a SEGV as they are already deleted.
2013-12-16 18:16:15 +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
Mark Liversedge
a436f41b9f QLineEdit in RideMetadata
.. to compile on Qt5 without Lucene (which contains the same header)
2013-12-15 20:30:21 +00:00
Mark Liversedge
bfeb89995d Fix 3d grid when users specify background colors 2013-12-15 19:17:02 +00:00
Mark Liversedge
98d33c2455 Histogram Chart honour Plot Background Prefs
.. more of the same as done for AllPlot, CP, PfPv.
2013-12-15 18:42:04 +00:00
Mark Liversedge
ddff82ffdf PfPvPlot honour ride plot background
Similar to fixups to CP plot for user defined plot backgrounds
this update updates the PfPv plot to also re-use the user prefs
when setting axis / canvas and marker colors.
2013-12-15 18:23:22 +00:00
Mark Liversedge
b06c0e4e42 QHeaderView in Athlete.h for Jaime. 2013-12-15 17:34:25 +00:00
Mark Liversedge
2f25320dc5 Fix Lucene Optional (again) !
The recent filter bar in home view was coded without taking
into account the fact that LUCENE is an optional build component.

This caused builds to fail when LUCENE wasn't installed.
2013-12-15 13:12:40 +00:00
Mark Liversedge
8a5006fc0e AllPlot filter points
.. dramatic speed up in repainting, most noticeable
   if you select different rides with the AllPlot
   visible (in tab mode).
2013-12-13 11:01:07 +00:00
Damien
7230c1822d LTMPlot: fix show/hide legend 2013-12-12 23:40:24 +01:00
Damien
8c063086d5 CpintPlot: Log Axis for Qwt 6.1 for all Data Series 2013-12-12 07:42:00 +01:00
Damien
cf6340db06 CpintPlot: Log Axis for Qwt 6.1 2013-12-12 00:08:02 +01:00
Mark Liversedge
7cab86c148 Data Series not Channels
.. thats a term they use in WKO+ not GC !
2013-12-11 18:04:11 +00:00
Mark Liversedge
da46380d67 Fix xBottom lost in AllPlot
.. when you select or deselect a data series.
2013-12-11 18:02:19 +00: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
dfeda95ca6 Revert "QT5 -- QWT 6.1 canvas fixup"
This reverts commit 54234ceca4.
2013-12-11 16:37:50 +00:00
Mark Liversedge
e6b90fc27c Fix AllPlot display x-axis 2013-12-11 15:53:46 +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
c797e3b43e Fix AllPlot Y-Axes
Now hide/show appropriately and are painted correctly.

There is still a problem with the x-axis disappearing
but this should be straight forward to resolve.
2013-12-11 12:44:14 +00:00
Christian Stade-Schuldt
04fef32f6c Updated Tacx Satori Virtual Power values 2013-12-11 10:08:04 +01:00
Mark Liversedge
80dac90663 Fix #if in VideoWindow
.. wrong logic in #if for Linux and Qt5 in both
   the header and source.
2013-12-11 06:52:40 +00:00
Mark Liversedge
f58d778cd1 Don't set frameworks in QWT
.. makes it possible to build the examples
.. but we still don't build them by default
2013-12-10 21:26:58 +00:00
Mark Liversedge
16cd65377d QT5 -- Mac fixups for building with 4.8.4
.. missed off earlier commits.
2013-12-10 20:21:32 +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
3c246ffa28 Model reset fixup to use begin/endResetModel
Which is how you are supposed to reset a model and works
on QT 4 as well as QT 5.
2013-12-10 18:08:59 +00:00
Mark Liversedge
3694b67358 QT5 -- Fix model reset on 4.8.x
Using resetInternalData() does not do the same thing
in 4.8 models as 5.2.
2013-12-10 17:26:05 +00:00
Mark Liversedge
e6ccd840f2 QT5 -- Enable build on 4.8.4 -OR- 5.2.0
New strategy to enable build on QT5 or QT4.8 is quite
simple to enact as most of the fixes for QT5 can be
applied to earlier releases.

This patch fixes up some of the special cases for QT5 so
they will continue to build on earlier releases.
2013-12-10 16:07:41 +00:00
Mark Liversedge
64c25192ee QT5 -- Windows Build Fixups
Fix errors on Win32

* FLOAT reserved word from yacc grammars
* toAscii() becomes toLatin1()
* ->winId() returns int (BROKEN)
2013-12-10 13:56:32 +00:00
Mark Liversedge
51b420cd4b Cut and paste-paste error in --help output 2013-12-10 00:09:18 +00:00
Mark Liversedge
efefba23fd QT5 -- Fixups for Mac build
Remember to make distclean too.

Mac currently looks terrible -- the unified toolbar
is gone and its all a bit of a mess!
2013-12-09 23:00:21 +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
54234ceca4 QT5 -- QWT 6.1 canvas fixup 2013-12-09 12:26:49 +00:00
Mark Liversedge
afd6d4a378 QT5 -- Add Qwt 6.1-multiaxes 2013-12-09 10:02:47 +00:00
Mark Liversedge
07e1b5e769 QT5 -- remove old qwt 2013-12-09 10:00:50 +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
2d9e71b500 Fix up CP markers
.. to use the right colors.
2013-12-07 20:01:08 +00:00
Mark Liversedge
1abbab0d4d Plot Background and CP chart
If you change the plot background to black then the
CP curve is always in black too so becomes invisible.

Added a customisable color for the CP curve and fixed
up a few redraw issues in CP and Ride plot when you
change the colors.

Still need to fixup the other charts, but will do over
time. I suspect almost noone changes the plot colors from
the default values.
2013-12-07 19:42:51 +00:00
Mark Liversedge
7fe94bfad4 Introduce SB Lowpoint
Let the user define the lowpoint for stress balance -- this is
so we can highlight or alert when they go below.

From a post-hoc perspective it is useful for identifying where
they went too low, but also for planning it helps to stop
planning to fail.

Will update the LTM chart to highlight it alongside SB metrics.
2013-12-07 10:28:41 +00:00
Mark Liversedge
1dce9621c9 Windowless border on metric refresh popup 2013-12-07 09:43:48 +00:00
Mark Liversedge
68053cc7d3 Fix find intervals no gps/speed bug
.. flawed logic mean't that findBests didn't work
   when distance is not present via speed or gps.
2013-12-06 22:50:33 +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
b960aaeddd Bests offset error
.. when plotting 1s best aka Max Power, the code was using
   the wrong offset (out by one) and returning 0w.
2013-12-06 17:07:17 +00:00
Mark Liversedge
b7c43408ea Prefs pane sizing to font size
.. to stop it being too small when you select a larger font.
2013-12-06 13:01:29 +00:00
Mark Liversedge
79a2efc6ee Fix sidebar sizing bugs
.. part of the refactor of mainwindow saw the sidebar
   sizes independently set and therefore using different
   settings.

.. we now use the old setting if first time through, or
   if first time run for athlete set a sensible default.
2013-12-05 18:23:53 +00:00
Mark Liversedge
fddc16a0db Fix LTM title filter color bug
.. the title of an LTM chart doesn't change when you
   select or deselect a filter in the sidebar.
2013-12-05 17:22:53 +00:00
Mark Liversedge
19fd53b20a Fix LC_LOCALE on Xcode 5
by including "locale.h".

Fixes #734
2013-12-05 16:26:29 +00:00
Mark Liversedge
d33f07661a Add Filter Sidebar
To allow selection of filters aka Named Searches when
plotting charts.

Fixes #732
2013-12-05 14:30:42 +00:00
Mark Liversedge
85a9b915eb Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2013-12-03 16:59:35 +01:00
Mark Liversedge
c24991ae93 Show reference lines on CP chart
.. but only when showing a 'power' data series
   such as NP, xPower, aPower etc.
2013-12-03 16:58:50 +01:00
Mark Liversedge
fdfc056ac8 Merge pull request #731 from dresco/ANT
Don't reset ANT channel settings on search timeout
2013-12-02 22:08:37 -08:00
Jon Escombe
4498f77847 Don't reset ANT channel settings on search timeout
Wiping out these settings prevents a successful reconnection
of the device if it comes back into range

Fixes #514
2013-12-02 23:27:01 +00:00
Damien
0433b7cea7 FitRideFile: Correction for last Garmin firmware updates
In last Garmin firmware there is some (unknow) fields with multiples values

Fixes #724
2013-12-02 18:07:18 +01:00
Mark Liversedge
c59ab396be Toolbar/Menu update when Compare Pane Show/Hide
.. if the compare pane is automatically shown or hidden
   due to the user dragging and dropping the menu and toolbar
   got out of sync with the status of the widget.
2013-12-02 17:48:48 +01:00
Mark Liversedge
6e304cd0d4 Compare Pane Mechanics
.. compare pane now appears and disappears on both
   the analysis view and home view

.. it also is notified of drag/drop events and can
   accept the objects dropped

.. it is now time to write the widget for collecting
   and managing compare sets
2013-12-01 10:28:27 +00:00
Mark Liversedge
a159181792 Set GC_DEBUG for debug builds
.. when building a debug build of GC with CONFIG += debug
   then we define a macros GC_DEBUG.

.. main no longer redirects to goldencheetah.log if you have
   GC_DEBUG set, so developers will continue to see debug
   messages on the terminal output (for mac/linux only).

.. we could use the GC_DEBUG macros to allow debug messages
   to be switched on / off in the code in future
2013-12-01 09:40:32 +00:00
Mark Liversedge
d39678eebd Fix auto show/hide compare pane on drag/drop
.. now the compare pane will appear and disapear
   when the user drags and interval / season into
   the view.

By fixing the way we handle QDragLeaveEvents in the
code in TabView.h ViewSplitter.
2013-12-01 00:19:59 +01:00
Mark Liversedge
2a47d36ff1 Auto show compare on drag interval
.. but its broken, needs fixing.
2013-11-30 22:19:38 +00:00
Mark Liversedge
7a87725457 Compare Show Animation
.. need to fix hide timeout animation but do that
   later tonight.
2013-11-29 07:20:35 +01:00
Mark Liversedge
576dd8b91d Compare Pane 'hpos' property
Introduce an hpos property on TabView::mainSplitter so we can use
an animation to make the compare pane slide up and down when
arriving and leaving.

Will add the animation shortly, just pushing to save updates.
2013-11-29 06:40:44 +01:00
Mark Liversedge
97e9d3eeb3 Fix events shown on LTM plots
Recent update to change the way the LTM configuration dialog
worked accidentally lost the events setting.

Show events is not being stored in the LTMsettings 'datastream'
but as a separate chart property -- but *is* stored internally in
the LTMSettings class.

it was being lost when the datastream is appled. This fix makes
sure the value is remembered and reapplied after the settings are
applied.
2013-11-28 22:54:37 +01:00
Mark Liversedge
3c80d16beb Remove qDebug() from TabView.h 2013-11-28 20:34:27 +00:00
Mark Liversedge
e7afcbb028 Basic Compare Pane Hide/Show
.. just committing before adding animation and the compare pane content.
2013-11-28 21:07:43 +01:00
Mark Liversedge
4e9613046c Forgot message in compare pane mockup 2013-11-27 19:45:46 +01:00
Mark Liversedge
452e8dfea3 Compare Pane Mockup
.. balsamiq mockup and png export
2013-11-27 19:42:01 +01:00
Mark Liversedge
b5e7a1e0ab Add GPS/Altitude alignment to Compare spec
.. we should make it possible to display interval
   data aligned via the altitude or gps data as well
   as via time/distance. This really only applies to
   the ride plot.
2013-11-26 11:56:35 +01:00
Mark Liversedge
974950784c Update Compare Document
.. to reflect feedback from Damien re compare sets

.. Also changed the compare pane to be view specific and
   shared across all charts in the view.
2013-11-25 09:02:45 +00:00
Mark Liversedge
3398038727 Compare button icon 2013-11-24 14:20:42 +00:00
Mark Liversedge
c34b060b2f Compare toolbar/menu option
Just added a toolbar button and menu to bring up the
compare pane, before adding it to the tab and view
classes.
2013-11-24 14:18:21 +00:00
Mark Liversedge
06c1b466be Plot CP model for derived power series
.. not sure of the validity of applying the model
   to derived data series like xPower and aPower
   but it may provide some insight.
2013-11-23 21:08:50 +00:00
Mark Liversedge
3ba81785ed Fix CP defaults bug
.. set to 3600 not 360 (!)

.. updated intervals causing warnings when using values
   that were half baked. Now delays recalc() till all
   the parameter intervals are set.
2013-11-22 22:30:47 +00:00
Mark Liversedge
0578a6c9f6 Better CP model defaults
Improved defaults for CP model to derive CP
and W' from bests data.
2013-11-22 21:59:29 +00:00
Mark Liversedge
2f6b5dba2d Fencepost error on CP intervals
.. caused the meanmax curve for an interval to be
   recomputed every time even though we'd gone to all
   those lengths to cache them.
2013-11-21 18:28:01 +00:00
Mark Liversedge
c104b53342 Date Format on Athlete Bests
.. didn't follow the same standard as the rest of
   GC, minor cosmetic fixup.
2013-11-21 17:59:50 +00:00
Mark Liversedge
97cb1aca09 Move uml docs to the design folder 2013-11-21 10:07:22 +00:00
Mark Liversedge
c7c8393578 Adding Compare design outline
Jusst jotted down thoughts about implementing compare in v3.1
and added to the documentation folder. Will try and get some
mockups sorted too in the near future.
2013-11-21 09:41:00 +00:00
Mark Liversedge
ec100d2923 Fix WIN32 build issue in main.cpp
.. nostderr() not supported on Windows.
2013-11-20 14:13:26 +00:00
Mark Liversedge
881f37b1ce Fix stderr redirect platform issues
.. don't use toLatin1() and fopen, use QFile and full QStrings
   so we can support directory names with unicode characters.

.. add unistd.h for dup() and close()
2013-11-20 14:08:28 +00:00
Mark Liversedge
0850f1312c Better Command Line Processing
Now accepts --debug to disable redirection of stderr to
goldencheetah.log, which is handy for developers.

Also refined the way the command line is processed to enable
new arguments to be added in the future.
2013-11-20 13:26:25 +00:00
Mark Liversedge
d705488a3a Redirect stderr to goldencheetah.log
In the home directory of GC (platform specific or configured
by the user). This is only relevant for OpenBSD, Linux and Mac.

Windows does not support applications that are GUI and console.
2013-11-20 12:48:09 +00:00
Mark Liversedge
614b4de605 Fix CP chart defaults
The CP chart model defaults are set before the spin box step
min and max values are set, which means that the value is always
reset to 100.

Since the vast majority of users will not be aware of the settings
and/or will never think of setting them to their own 'preferences'
it is vital the default is applied correctly.
2013-11-20 08:08:55 +00:00
Damien
a8730129ad CP Model: let the user define whole interval durations 2013-11-20 08:17:49 +01:00
Damien
7778611587 FitRideFile: - Add Left/Right TorqueEff and Left/Rigth PedalSmooth
- Open Truncated file
2013-11-19 22:38:18 +01:00
gcoco
a039806039 Add Garmin Forerunner 910XT 2013-11-18 14:27:47 -05:00
Mark Liversedge
e088cf916b Slight cosmetic on new Athlete bests
.. and don't show zero values.
2013-11-16 22:44:43 +00:00
Mark Liversedge
4dc94b97b2 Athlete Bests on Summary
Configurable metrics to show top 10 bests for date
range selected.
2013-11-16 21:01:01 +00:00
Mark Liversedge
008046cfc6 Fix show W' on AllPlot bug
.. redraw didn't happen until you changed smoothing
   or selected a ride file.
2013-11-16 13:39:02 +00:00
Mark Liversedge
75fa2875b6 Command line parsing
Now allows:

$ GoldenCheetah [[directory] athlete]
$ GoldenCheetah [--version|--help]
$ GoldenCheetah

Passing the athlete on its own is as before, but you can
now also pass the folder name in as well.

I've also added the option to get a help message if you
pass --version or --help.

Lastly, as before, with no command line paramaters you
open the last athlete worked on.

Since we now output the version and build info I have uplifted
the build and version numbers in GcUpgrade.h to reflect the fact
we are now developing v3.1.
2013-11-16 11:14:44 +00:00
Mark Liversedge
ab8aaee088 Restart properly when home changes
After fixing up the trainDB problem we can now restart
the mainwindows safely when the athlete directory changes.
2013-11-16 09:38:17 +00:00
Mark Liversedge
2ae36fb563 Training DB clean up gracefully
When closing down we left the training database open
and this caused problems when looking to implement
a restart function.

The problems stemmed from the way the QSqlDatabase
code was implemented in TrainDB which was modelled on
code in DBAccess that was cleaned up subsequently.

TrainDB code now mirrors the approach taken in DBAccess
and relinquishes resources correctly. The TrainDB is now
closed as well as being opened in main.cpp at startup.

Also, removed reference to obsolete dbconn member in the
DBAccess class definition since it is no longer used.
2013-11-16 08:33:11 +00:00
Mark Liversedge
c0619eadbc User definable athlete library location
Allow the user to select a directory to use for the
athlete libary. Leaving it blank will continue to use
the default location (dependent on platform).

If it is changed the user will be asked to confirm
and then GC shuts down.

Restart wouldn't work due to issues with the DBAccess
QSqlDatabase connection (which is really annoying). I
will look into this as a restart option would be much
cleaner.

Its only taken 4 years to implement this feature! (ouch).

Fixes #282.
2013-11-15 23:19:04 +00:00
Mark Liversedge
7cac290804 Honour "CP" override in W'
W' calculator didn't use the "CP" metadata to override the
CP for the ride.
2013-11-15 18:14:17 +00:00
Mark Liversedge
cd971f5509 Fix W' crash smoothing sub-second recording. 2013-11-14 23:02:30 +00:00
Mark Liversedge
ebe56b332c Don't truncate 3 parameter CP curve 2013-11-14 17:17:06 +00:00
Mark Liversedge
7bddea39f1 CP Curve tmin
.. accidentally left at 0s now corrected back
   to truncate at tau for the 2 parameter model
   and set to 25s for the 3 parameter mode where
   it seems to breakdown.
2013-11-14 16:21:50 +00:00
Mark Liversedge
7c407c6dd6 Estimate CP and W' in CP Estimator
Since we want to track W' and CP now it makes sense
to add W' estimation to the tool.
2013-11-14 14:11:59 +00:00
Mark Liversedge
7b7fa194a2 The CP Model has "parameters" not "points"
Might as well use the right terminology if your gonna
let the user choose and adjust the model!
2013-11-14 12:24:37 +00:00
Mark Liversedge
9498cd83d6 User Definable CP Model
Let the user define whether to use a 2 point or
3 point model (Morton et al).

In addition, let the user define the interval durations
to use; by default we set to 3 and 30 mins.

For estimating CP against good, recent data both of these
models are more than adequate for the purpose.

We'll just keep kicking the can down the road whilst we
can rely on published, verified science.
2013-11-14 11:43:55 +00:00
Mark Liversedge
7aaa63cf30 Reinstate 3 point CP model
DJ Connel implemented a 3 point model, after Morton,
which was erroneously removed in a prior commit.

Our thanks to Andy Coggan for pointing this out in a
recent webinar. Nice to know he is following us closely.
2013-11-14 09:22:06 +00:00
Mark Liversedge
2d79769e7f Clean CP curve
.. when in range mode (i.e. plotting a CP curve for a date
   range or season rather than for a ride).
2013-11-13 23:00:26 +00:00
Mark Liversedge
31a4acf84d UI Nits: Less clunky CP curve
When no shading selected it really does no shading and
the CP model curve is now in a smaller line width.
2013-11-13 21:06:14 +00:00
Mark Liversedge
aeab59185c Highlight intervals on CP Curve
Will show a CP curve for the selected data series
for each interval that is selected, just like the
rest of the charts.

Fixes #718.
2013-11-13 20:38:06 +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
821fb9df99 LTM Speedup
.. don't refresh when not visible!

   This is a side effect of the code updates added
   to handle filtering in chart settings or the global
   search/datafilter box.
2013-11-13 08:25:23 +00:00
Mark Liversedge
a307747d9a Clear results when switch type
.. to W' bal or Ascent type interval searching
2013-11-12 18:58:40 +00:00
Mark Liversedge
5054a9bc90 Find Ascents
.. another method for find intervals to find the ascents
   in a ride. Uses the hysteresis as defined in options
   which means a climb ends if there is a descent of that
   or more (by default only 3m).
2013-11-12 18:09:24 +00:00
Mark Liversedge
bef02d6783 Remove References in Dialog
.. you can now choose to remove reference lines in the
   allplot when you double click on the axis.

.. we might want to put the table and buttons for deleting
   references into the chart settings too (?)
2013-11-12 13:16:44 +00:00
Mark Liversedge
06bd80a753 UI Nits: Less is more
.. remove grid line from CP plot.
2013-11-12 09:19:05 +00:00
Mark Liversedge
8329030786 UI Nits: Matches markers in CWBAL color 2013-11-11 23:18:51 +00:00
Mark Liversedge
1a8d1a3e27 UI Nits: Matches markers lower
.. so they don't clash with other interval markers
   most especially user supplied interval marks
2013-11-11 23:11:46 +00:00
Mark Liversedge
35a179be34 UI Nits: Back to black in QA
.. the washed out grey was unpopular and is too
   hard to read.
2013-11-11 22:53:49 +00:00
Mark Liversedge
6e033099a9 UI Nits: Less Ride Plot xBottom
.. no title needed for time, its obvious, but
   still need to show units if its distance.
2013-11-11 22:26:29 +00:00
Mark Liversedge
83e23dbbf7 UI Nits: Thinner reference line
2px too thick for a guide, made 1px which is in
line with the rest of the code.
2013-11-11 22:11:38 +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
85b634787a UI Nits: Declutter ride plot
Too much going on and gets noisy, especially in stack mode.

Might extend this to the other plots, but need to live with
it for a while to see if the ticks were actually useful (!)
2013-11-11 21:25:05 +00:00
Mark Liversedge
f8bfc93ca0 Zoom Out Menu Option
So you can unzoom in ride plot when you've zoomed in
to an interval -- avoiding having to show fullplot to
do the same thing manually.

There are probably other places to add functionality
for zooming out, will deal with those as they arise.
2013-11-11 19:56:31 +00:00
Mark Liversedge
ac138f9108 Match duration fencepost error. 2013-11-11 18:04:50 +00:00
Mark Liversedge
5800fa5bab Find Matches as Intervals
Now let the user add 'match' intervals in
the find intervals dialog by setting a minimum
cost for the match.
2013-11-11 17:53:58 +00:00
Mark Liversedge
6961534137 UI Nits: Axis background color
Changed to match the ride plot background. This makes
it easer to read axis that use light colours (e.g.
using yellow for power).
2013-11-10 22:06:34 +00:00
Mark Liversedge
7770587d1b Find Matches
Added auto finding matches in Wprime, but there are
two areas to develop further;

1. Use the W'bal data to find matches instead of the
   power above CP (which is really being used as a proxy
   for the better approach).

2. Update the 'find intervals' dialog to allow you to
   find matches and add them as normal intervals.

Pushing to repo as a version checkpoint, this function
will definitely need refining before 3.1 is released.
2013-11-07 20:43:51 +00:00
Mark Liversedge
4f05a0fe54 UI Nits: Center Preferences/Options pane 2013-11-07 14:30:57 +00:00
Mark Liversedge
919629af70 User definable color for W' bal curve 2013-11-07 14:23:42 +00:00
Mark Liversedge
8bb8a8d1d3 Fix crash on tmp reference line at 0w 2013-11-07 13:58:42 +00:00
Mark Liversedge
25de00778a Fix smoothing bug in Allplot for xPower and aPower 2013-11-07 12:55:11 +00:00
Mark Liversedge
d4b6e0a1c3 Add Derived Series to Ride Plot
You can now plot NP, xPower and aPower on the
ride plot.

This has been done to provide transparency &
insight into the relationship between the derived
values and the recorded power values,
2013-11-07 12:04:44 +00:00
Mark Liversedge
8a33e15750 Read reference lines in WKO+ files
Added support for reading the 'references' or 'guide lines'
from a WKO+ ride file.
2013-11-07 09:58:40 +00:00
Damien
d260edd85f AllPlot: Add Reference Line for Power (Watts) 2013-11-06 23:49:07 +01:00
Mark Liversedge
237e51a48d Histogram aPower
Added aPower to histogram, although not zoned.
2013-11-06 18:50:29 +00:00
Mark Liversedge
d2c4d88e19 Best aPower
Peak aPower durations now computed and cached;

* updated RideFileCache to work with aPower
* CP curve now allows you to plot aPower
* LTM plot allows you to plot aPower peaks
* DataFilter allows 'best(apower, duration)' function
2013-11-06 16:41:25 +00:00
Mark Liversedge
ad559394c8 Added Effect of Altitude (%)
A metric of the %age of power that has been lost due
to riding at altitude.
2013-11-05 21:31:31 +00:00
Mark Liversedge
e7fe0eb42f Add citation and references for aPower
Added comment in ridefile.cpp to reference the book
and research paper that aPower is based upon:

// Calculate derived data series, including a new metric aPower
// aPower is based upon the models and research presented in
// "Altitude training and Athletic Performance" by Randall L. Wilber
// and Peronnet et al. (1991): Peronnet, F., G. Thibault, and D.L. Cousineau 1991.
// "A theoretical analisys of the effect of altitude on running
// performance." Journal of Applied Physiology 70:399-404
2013-11-05 20:18:06 +00:00
Mark Liversedge
393fe9f0e7 Average aPower
Added an average aPower metric.

I also and found and fixed a couple of bugs along the way;

* intervals create a ridefile and need to explicitly call
  recalculateDerivedMetrics()

* the aPower calculation was using the calculated vo2max
  percentage the wrong way around (!)
2013-11-05 20:06:09 +00:00
Mark Liversedge
6353e6b329 Add aPower
Introduce altitude adjusted power 'aPower'.

This is a new ride data series that takes into account
the effect of altitude on power output.

At present we are only adding this as a derived data series
with the intention of making it possible to plot it on
the ride chart.

We will also introduce alternate metrics for average power,
bikescore etc that are based upon the aPower value.
2013-11-05 18:54:06 +00:00
Mark Liversedge
5cc70c2164 Add NP and xPower Derived Data Series
Calculate NP and xPower as a data series so we can
plot on the ride plot.

Have also added 'aPower' which will be coming in the
next few days - altitude adjusted power, which will also
have some associated metrics (a-xPower, a-NP, a-TSS etc).
2013-11-05 17:14:05 +00:00
Gareth Coco
949335fea8 Run: lupdate-qt4 src/src.pro
Update the translation source files
2013-11-05 00:31:00 -05:00
Gareth Coco
68975d1d12 Website updates 2013-11-05 00:30:05 -05:00
Mark Liversedge
46943948ca W' calculator fill gaps with zeroes
Otherwise they are interpolated and smoothed, which is not
consistent with the rest of GC.
2013-11-04 17:18:10 +00:00
Mark Liversedge
8b2e9fdd34 Adjust layout in Preferences
As new W' setting in athete -> power is all
squashed up on a Mac (where spacing is defaulted
to 20, not 10).
2013-11-04 08:52:35 +00:00
Mark Liversedge
ae0ac6109c Allow user to specify W' alongside CP
In preferences->athlete->power you can now set
your W' in joules alongside your CP.

This is also available in the new cyclist dialog
which also defaults to 20Kj.
2013-11-03 20:32:48 +00:00
Damien
c0a9d9894b ShareDialog: Strava authorise was broken in last commit 2013-11-02 23:22:52 +01:00
Damien Grauser
45fb30cd68 Merge pull request #712 from gcoco/master
ShareDialog corrections
2013-11-02 03:25:38 -07:00
gcoco
a720479dcf Get rid of qwt compile error about format string.
Author: KURASHIKI Satoru <lurdan@gmail.com>

Taken from Debian patches for GC 3.0.3
2013-11-01 17:08:40 +00:00
Mark Liversedge
18885f8c32 Fix W' calculator for bad data
Fix 1s smoothing to ensure time doesn't go backwards
as when the same timestamp is used more than once the
QwtSpline used to interpolate returns all zeroes.
2013-11-01 16:47:15 +00:00
Mark Liversedge
331c6e45f0 Calculate tau for W'
The implementation set tau to a constant when it
should be derived from the recovery power across
the ride.

I've also added tau to the chart so you can see
what value has been derived.
2013-11-01 13:21:26 +00:00
gcoco
ff8bfd5aa4 Minor comment correction 2013-11-01 07:42:30 -04:00
gcoco
0340d5d72c Code corrections/cleanup 2013-11-01 07:37:41 -04:00
Mark Liversedge
4c86246ee2 Use W' instead of AWC on CP chart
AWC is old terminology and should not be used any more.
2013-10-31 19:18:12 +00:00
Mark Liversedge
828ba3f77e W' calculate starting from 0s
Instead of starting at 20 minutes, which was a function of the
code for calculating decay, i.e. an implementation nit, not a
physiological constraint.
2013-10-31 18:13:39 +00:00
Mark Liversedge
f68f5d1a4d Disable Minimum W' Metric
.. its too slooooow.

.. lets fix the WPrime performance issue before
   introducing any metrics on the back of it.
2013-10-31 17:36:56 +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
eb244d0609 Add W' to All Plot
Will plot the W' balance as another data series.
2013-10-31 15:00:25 +00:00
Mark Liversedge
ac397c1a79 Missed off previous commit. 2013-10-30 22:56:54 +00:00
Mark Liversedge
a8e54faf33 W' expenditure and reconstitution calculator
Calculates the W' expenditure and reconstition during a ride.
The implementation is sub-optimal and will need to be optimised
and probably re-written to improve performance before v3.1 is
released.

This is based upon research conducted at the University of Exeter
by Philip Skiba, Weerapong Chidnok, Anni Vanhatalo, and Andrew Jones
and is used with permission.

For more information on the research please see: ""Modeling the
Expenditure and Reconstitution of Work Capacity above Critical
Power." Med Sci Sports Exerc 2012;:1.
2013-10-30 22:49:26 +00:00
Damien
eb790ebcff ShareDialog: Add upload to selfloops.com 2013-10-30 18:39:40 +01:00
Mark Liversedge
008bad6ca5 Add /dev/cu.usbserial as a serial device
Useful on Mac with Sewell adapter for the CT.
2013-10-29 15:32:41 +00:00
Mark Liversedge
444a915705 Interval Summary Off By 1 Error
Intervals are off by 1 sample because when the temporary
ride is created it stops short of the last sample in both
the ride and interval summary window code.

Fixes #623.
2013-10-29 15:31:29 +00:00
Mark Liversedge
c08659e84d HR Time in Zone percent
.. to match the recent update for the power
   time in zone metric.
2013-10-29 10:38:06 +00:00
Mark Liversedge
c04964c9e6 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2013-10-29 10:01:19 +00:00
Mark Liversedge
e3d063d961 New Metric Percent Time In Zone
The current TIZ metrics only allow you to chart the
absolute time in zone. Over longer periods it can be
helpful to look at the overall ratio of intensities
trained at.
2013-10-29 09:59:00 +00:00
gcoco
863cceafbf Fix GC_CYCLINGANALYTICS_CLIENT_SECRET #ifndef 2013-10-29 05:57:10 -04:00
Mark Liversedge
3227974112 Hide buttons when no Tokens configured
.. for Strava or CylingAnalytics upload
   authorised buttons in the preferences
   dialog.
2013-10-29 07:45:47 +00:00
Damien
16b856d9ed ShareDialog: Add ipload to www.cyclinganalytics.com 2013-10-28 23:27:33 +01: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
68bbb05568 Show/hide scopebar with toolbar
When showing / hiding the toolbar we also show / hide
the scope bar. This is so when in train mode and you go
full screen it is possible to hide all ornamentation.

This will become a moot point when the scope bar is
replaced with 'appstore style icons' in the toolbar
to switch between home, analysis, train etc.
2013-10-27 21:11:59 +00:00
Mark Liversedge
cc2a0efe3e Truncate Altitude values
We know the highesst point on Earth, so any activity that
contains an altitude greater than that is definitely incorrect.

This patch truncates the altitude to the maximum possible, this
has the happy by product of curing a major mem alloc crash in QWT
when trying to plot altitudes with very large values.

Fixes #700
2013-10-27 20:06:37 +00:00
Mark Liversedge
7a240f83e2 Add Current to LTM presets
But saving is an issue !

The presets need to move to the athlete object as they
are in the athlete directory -- we currently have one
per LTM chart, which means they get overwritten on exit.
2013-10-27 19:46:51 +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
Damien
eafd004c42 ShareDialog: Manage null error message 2013-10-27 00:21:13 +02:00
Damien
94454acded ShareDialog 2/3 : For version 3.0.1 2013-10-20 11:10:07 +02:00
Mark Liversedge
d878868a53 Merge pull request #693 from gcoco/master
Assert cleanup
2013-10-16 07:15:05 -07:00
Damien
7042938cba GoogleMap: Little fix 2013-10-14 07:53:29 +02:00
Damien
3a1449231c Correct to compil without liboauth 2013-10-04 16:08:53 +02:00
Damien
f0c2c2b840 ShareDialog 1/3 : Merge StravaDialog and RideWithGPSDialog
Add OAuth for Strava (Release version only)
2013-10-01 23:18:18 +02:00
Damien
486b6f43c7 Aerolab: Add a constant altitude option 2013-09-26 00:04:58 +02:00
Damien
6f9ff1cdea JouleDevice: Remove debug lines 2013-09-25 23:26:46 +02:00
Damien
002faa5582 JouleDevice: Remove debug lines 2013-09-25 23:24:27 +02:00
gcoco
07ff277378 Assert cleanup 2013-09-24 04:02:33 -04:00
Mark Liversedge
93b46887e9 Merge pull request #690 from dresco/master
Detach kernel driver before claiming USB2 ANT+ interface.
2013-09-22 06:12:15 -07:00
Jon Escombe
92b998f746 Detach kernel driver before claiming USB2 ANT+ interface.
Only detach kernel driver if compiling under Linux (not a portable function)..
2013-09-22 00:56:24 +01:00
Jon Escombe
9fb2964223 Detach kernel driver before claiming USB2 ANT+ interface.
Kernel 3.11 exposes the Suunto ANT+ stick as a USB serial device,
this prevents GC from opening it in training mode unless the
kernel driver is detached first.
2013-09-21 22:44:30 +01:00
Eric Johnson
8de642c9ed Use float division when converting wheel size
In training mode, calculations of speed using wheel size and RPM from
a speed sensor used integer division. This truncated all wheel
circumferences to an integral number of meters. 2100mm wheels were
treated as 2 meters and 1960mm wheels were treated as 1 meter,
effectively reducing calculated speeds by roughly 5% and 50%
respectively.

Fixes #585
Fixes #651
Fixes #669
2013-09-21 17:29:26 +01:00
Mark Liversedge
bf5fc21c42 Merge pull request #676 from lurdan/spelling
fix some spelling
2013-09-19 11:24:40 -07:00
Mark Liversedge
878e66dcb2 Merge pull request #686 from Walibu/master
Adding hr,cad,power,temp of the watch "Suunto Ambit2" Export gpx files
2013-09-19 11:21:09 -07:00
gcoco
91a5b2833c Kurt Kinetic Road Machine PowerCurve fix
Fixes #685
2013-09-19 14:11:25 -04:00
Damien
3212befb5f Bin2RideFile: correct bug for some GPS data 2013-09-17 23:03:14 +02:00
Walter Bürki
d993f7b3c8 adding hr,cad,power,temp of Suunto Ambit gpx files 2013-09-15 19:17:02 +02:00
Mark Liversedge
063c13e70b Merge pull request #684 from jjofre/master
Work around to ensure controller key presses aren't missed.
2013-09-05 23:01:24 -07:00
Jaime
ce93058bc9 Work around to ensure controller key presses aren't missed. Borrowed from Fortius.cpp 2013-09-05 22:47:53 -04:00
Damien
4d31c13c10 MergeActivityWizard: Use index for last point 2013-09-05 14:07:55 +02:00
Mark Liversedge
29feeeae05 Merge pull request #683 from rclasen/ttb-pwx
use pwx for Trainingstagebuch upload
2013-08-26 22:56:11 -07:00
Mark Liversedge
9581c01641 Merge pull request #682 from rclasen/fix-pwx
several pwx fixes / improvements
2013-08-26 22:55:51 -07:00
Rainer Clasen
4274fc26c4 use pwx for Trainingstagebuch upload
as current tcx writer currently doesn't support laps (and tcx doesn't
allow non-linear/overlapping intervals, at all) this patch makes GC upload
exercises as pwx.
2013-08-26 23:11:40 +02:00
Rainer Clasen
2d533e9ddd PWX: read/write temperature
added temperature to read/write
2013-08-26 23:00:53 +02:00
Rainer Clasen
ebd10af163 PWX export: keep timestamp + distance precision
Pwx does support for arbitrary sample lengths. No need to chop off
timestamp precision and introduce bad data + jitter.

Instead we should look at fixing data import and consider resampling on
read.

Distance is defined as double, aswell - so, let's keep the precision,
aswell.
2013-08-26 23:00:53 +02:00
Rainer Clasen
72168132f8 fix PWX export: always write summarydata
xml schema is requiring summarydata to exist. Otherwise upload to
trainingpeaks fails.

Block was omitted when no intervals were defined.
2013-08-26 23:00:53 +02:00
Rainer Clasen
41d57c5d26 fix PWX export: handle end of gaps gracefully.
As I got it pwx by itself has no concept of recording intervals. "smart
recording" and other strange data require variable recoring intervals.

On the other hand it's not recording the duration of a sample explicitly.
This means the duration needs to be derived from the previous samples
timestamp (assuming the sample timestamps are referring to the end of the
sampled period).

This diff writes an empty timestamp at the end of each gap so that the
next real sample/ridepoint can calculate the correct duration.

Please note that this may unhide some deficiencies in GCs file reading in
exports.
2013-08-26 22:46:14 +02:00
Mark Liversedge
ca3f0b26d0 LTM presets UX improvement
Simplified selecting and managing preset charts
in the LTM chart settings.

Need to now move the 'Add' button to the custom
tab, but that is the next pending update.
2013-08-26 13:20:56 +01:00
Mark Liversedge
b0672ad422 Merge pull request #679 from rclasen/fix-tcx-speed
#678: Tcx: fix speed in summary information
2013-08-24 03:34:47 -07:00
Damien
1c3ba1d4e2 CsvRideFile: add temperature and hill slope (%) parsing for ibike csv file 2013-08-20 22:50:58 +02:00
Mark Liversedge
afaa9f553a Remove MainWindow from TabView.cpp 2013-08-19 21:47:57 +01:00
Rainer Clasen
c304ecf6d6 Tcx: fix speed in summary information
When exporting files to Tcx, it's writing an ActivityExtension to the end
of the file with calculated AvgSpeed and MaxSpeed. Unfortunatly it's using
the km/h values - while Tcx is using m/sec. Schema is a bit unclear about
this, as the ActivityExtension uses "double" as type for both values, but
original Tcx v2 Schema only uses m/sec, GTC exports as m/sec and some
other software is expecting m/sec, aswell.
2013-08-15 20:58:59 +02:00
Damien
2b20557582 MergeActivityWizard : Use recIntSecs 2013-08-14 16:20:28 +02:00
Damien
61ba344c76 Bin2RideFile: Changes in Summary pages for Data version 5 2013-08-14 16:12:56 +02:00
Gareth Coco
2aa13611b5 Fixed broke download links/Typo
Fixes #635
2013-08-13 19:53:55 -04:00
gcoco
2bf144a6b8 Support Twitter API 1.1
To record the changes from 1.0 to 1.1 if we bring this back.
2013-08-10 23:48:18 -04:00
KURASHIKI Satoru
d0890d9000 Merge branch 'master' into spelling 2013-08-09 11:14:20 +09:00
Mark Liversedge
9dc146f0d7 Added Suunto xlsx file to test rides
.. thanks to Fester for the example file.
2013-08-07 19:18:11 +01:00
Mark Liversedge
4a10cf3167 Fix SEGV on close with TrainTool->Stop()
.. casting the sidebar in TrainView was wrong because the
   controls are in the sidebar, not the trainTool. Thus
   it would crash on exit .. but strangely only on Mac!

.. the code now correctly calls trainTool->Stop(), quite
   why it fails on Mac only is a bit of a mystery.
2013-08-06 11:10:32 +01:00
Mark Liversedge
b12ecbd6ad Added collapse/expand to analysis sidebar
.. to collapse/expand for whatever is grouped by.
2013-08-05 18:20:50 +01:00
Mark Liversedge
de11f0cbb7 Animate Activity List collapse/expand
.. its standard Qt, and is kinda cool.
2013-08-05 16:05:54 +01:00
Mark Liversedge
634fd9b427 Fixup ridefilecache best decimals
.. forgot that the values are converted to
   zero decimals when stored.

This fixes strange results when filtering by
wpk or speed, or any series that has decimal
places.
2013-08-05 08:37:25 +01:00
Mark Liversedge
b7b0aaf9d3 Best and TIZ shouldn't buffer
.. they have one read operation beyond the header
   and will not need to buffer -- the O/S will buffer
   file blocks too, lets not duplicate.
2013-08-05 07:41:40 +01:00
KURASHIKI Satoru
0ec3cfa153 fix trivial mis-spelling. 2013-08-05 09:09:47 +09:00
Mark Liversedge
e48612184e Slightly larger SearchBox
.. since it was 'just' too small for a typical query.
2013-08-04 22:24:56 +01:00
Mark Liversedge
5f67c9da7e Fast Best and TIZ queries
Added static functions to ridefilecache
to get best and tiz values for series and duration
or zones and glued them in to the datafilter code
recently added.

It uses seek (via QDataStream::skipRawData) and is
quite fast on my Linux development PC.

We now need to update the LTM settings dialogs to
the new mockups so we can plot custom durations for
peak power / NP etc too.

NOTE: Not tried on Windows / Mac, so may not be quite
      so fast there, will need to check.

      To try this out, in the search filter box type:

            best(power, 3600) > 250

      to filter only those rides where the best hour
      power is greater than 250 watts. It should
      return almost instantly.
2013-08-04 15:45:55 +01:00
Mark Liversedge
ab3524bb7f Fix segv on filter '(NP)'
Fixes the crash but the eval code is a bit of a
fuck up. It was evaluating children instead of
using recursion, and now we have lots more types
and expressions its all a bit of a mess.

Will need to rewrite to use recursion and it will
be a lot simpler!
2013-08-04 11:40:44 +01: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
eb2a082293 Forgot wpk 2013-08-03 22:16:12 +01:00
Mark Liversedge
89108f3ff0 DataFilter update for formulas
Will now allow users to specify a formula using
the * / + - ^ operators. This can be used to specify
values (e.g. TSS > 100*2) or to calculate a totally
new user metric (e.g. Average_Heart_Rate / RPE).

Also added two functions as well;

1. best (series, duration)   which returns the best value
                             for the series of the given
                             duration in seconds.

                             Where series is one of; power,
                             hr, cadence, speed, torque,
                             xpower, np.

2. tiz (series, zone)        which returns the time spent
                             in the given series and zone
                             Where series is either power
                             or hr and zone is 1-10.

NOTE:

We know need to add the functions for retrieving the best and
tiz values from the ridefilecache without having to read the
entire file (ie. read the header and use lseek).
2013-08-03 21:25:26 +01:00
Mark Liversedge
9dcc835648 Train View 30s power etc
.. fixed the dial property for rolling average

.. improved default layout to include realtime numbers
   alongside the workout plot, and added 30s power
2013-07-29 09:44:10 +01:00
Mark Liversedge
1b85260f62 Remove delete ride flicker
.. selects next ride, this one disappears flicker
   was mildy irksome.
2013-07-28 20:42:50 +01:00
Mark Liversedge
c03d36202f Train Controls Temporary hack
.. to at least be able to start/stop a workout
   will fixup over the next few days to make a
   more professional controls overlay.
2013-07-28 20:34:09 +01:00
Mark Liversedge
4cd23b9fba BlankState fixup for MainWindow refactor
.. reintroduced it whilst moving the logic to
   TabView and BlankStatePage.
2013-07-28 17:33:49 +01:00
Mark Liversedge
a492f641ff Fix TrainSidebar SEGV on Exit
.. by stopping any active session in the close() method
   and not the destructor.
2013-07-28 15:41:52 +01:00
Mark Liversedge
e74782c6b9 More MainWindow Tidy
.. headers in MainWindow.cpp and deleted commented out
   members in MainWindow.h. Moved Spacer to GcToolBar.h
2013-07-28 10:29:13 +01:00
Mark Liversedge
d816f71504 Refactor fixup resize
.. it was not possibe to resize the window because
   the blankstate page was too big.

.. blankstatepage is hidden for now until we fix the
   logic for it in TabView
2013-07-28 10:04:19 +01:00
Mark Liversedge
9473e28200 MainWindow Refactor Part 4 of 5
Split the views in MainWindow into separate classes;

* Tab is a collection of the 4 main views

* TabView is a base class for all of the 4 view types

* {Analysis,Train,Diary,Home}View are all derived from
  TabView and deal with specifics of those views (e.g.
  Diary/Home worry about date ranges).

We should be ready to move to tabbed athletes soon.

There are a few nits left for this part of the refactor
that will need to be resolved in some fixups over the
next few days;

* tile mode segment selector has wrong segment selected
  when the view is in tile mode.

* Minimum height/width of MainWindow is large for some
  reason

* the Train view controls (play, ffwd etc) have nowhere
  to go at present -- need to fix that !!!

* When you resize the mainwindow width the sidebars expand
  and should remain a fixed width

* not sure if it will build on Windows or Mac!
2013-07-27 21:41:03 +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
880f9178b2 Checkpoint TabView commit
Part 4 of the MainWindow refactor is moving the code for the
4 views (Analysis, Train, Home, Diary) out of MainWindow and
into a separate set of classes.

TabView is the base class for the 4 views and the basic code
is in this commit, but now need to work on the 4 derived
classes for Analysis, Home etc and the controller class 'Tab'.
2013-07-27 10:29:26 +01:00
Mark Liversedge
1a1a2d955e More MainWindow Tidy
.. remove dateChanged unused member
.. remove recordMeasure unused member
2013-07-20 18:54:00 +01:00
Mark Liversedge
784b140989 More Athlete destructor
.. forgot to destroy the Lucene, NamedSearches and RideMetadata
   instances in the Athlete destructor
2013-07-20 11:15:45 +01:00
Mark Liversedge
319a3981b2 Fixup Athlete/DBAccess/MainWindow dependency
A bit of a mix of stuff, but basically the Athlete
class has sql stuff in it, that DBAccess used but
also referenced a session number in MainWindow.

Removed the interdependency and moved all code to do
with DB to DBAccess and out of MainWindow and Athlete.

At the same time needed to clean up a bit of memory
management and so introduced a MainWindow and Athlete
destructor.

We are now ready to do refactor part 4 to split MainWindow
into a new View class (that will be in each tab).
2013-07-20 11:07:03 +01:00
Mark Liversedge
cc5229305e Fixup refactor SEGV in StreetView
.. wasn't initialising context.
2013-07-19 23:22:18 +01:00
Mark Liversedge
e0c05929a6 Deprecate DatePickerDialog
.. not sure its actually been used in the code
2013-07-19 23:00:37 +01:00
Mark Liversedge
150fe21834 Deprecate unused GcWindowTool 2013-07-19 21:47:46 +01:00
Mark Liversedge
116778fd54 Remove MainWindow unused
.. QPushButton *full was never used.
2013-07-19 21:34:02 +01:00
Mark Liversedge
a0ace158e6 Fix QTFullScreen compile error
.. needed Context and MainWindow headers
2013-07-19 20:54:55 +01:00
Mark Liversedge
5abf1eae97 A little less MainWindow
.. trying to remove it from as many headers as possible.
2013-07-19 18:08:07 +01:00
Mark Liversedge
2f056ea938 More MainWindow tidy
.. reduce the number of public members
2013-07-19 15:28:29 +01:00
Mark Liversedge
e42806b538 Remove qDebug from FitRideFile
.. commented out so can reuse when debugging etc.
2013-07-18 22:18:15 +01:00
Mark Liversedge
43b8c013da More MainWindow tidy
.. remove unneccessary class members

.. reorg to highlight where the remaining members need to
   migrate to
2013-07-18 22:13:03 +01:00
Mark Liversedge
dd8ed9e42d Calibration Messages minor update
.. add some sample files with calibration messages to the
   test/rides directory

.. remove the calibration marker color config (we can add it
   back if needed, but was in the wrong 'sequence' and is
   probably just a little bit *too* fine grained).
2013-07-18 22:05:57 +01:00
Damien
ea2455a775 AllPlot: plot references lines 2013-07-18 21:51:07 +02:00
Damien
0f65fbfd91 FitRideFile: Add Calibration Event parsing 2013-07-18 18:23:11 +02:00
Mark Liversedge
d153e42f98 Clean MainWindow.cpp
.. remove unneccessary #include statements
2013-07-18 09:51:06 +01:00
Mark Liversedge
c8203fa566 A little less MainWindow.h
.. slowy removing it everywhere.
2013-07-18 09:37:32 +01:00
Mark Liversedge
abc44d97a8 Fixup column chooser
.. in AnalysisSidebar
.. and SearchBox

Will need to fixup again when we introduce Tabs into
MainWindow, but it will be obvious when we get there.
2013-07-18 08:55:39 +01:00
Mark Liversedge
b539603407 Small Tidy up
.. removed 'init' from MainWindow
.. moved Qxt header out of the src directory
2013-07-18 08:37:42 +01:00
Mark Liversedge
d2901c3119 Move intervals to AnalysisSidebar
Further MainWindow updates, this time moving the code
for working with intervals to the AnalysisSidebar and the
associate menus.

Ultimately, the functions for working with Activities and
their Intervals will move from MainWindow and Sidebars to
the ActivityCollection classes.

This is a step as we strip out MainWindow to just GUI
aspects.
2013-07-18 08:00:35 +01:00
Damien
6ebba3c874 use context->athlete->treeWidget instead of treeWidget 2013-07-17 22:51:18 +02:00
Damien
b0b022aa8c RideFile: Add a ride merge wizard 2013-07-17 22:27:49 +02:00
Mark Liversedge
b7b4712546 Minor tidy up of MainWindow.cpp
Get the sidebar code all in the same place.
For tidiness / maintainability.
2013-07-15 22:29:40 +01:00
Mark Liversedge
bc4a6d978e Introduce AnalysisSidebar widget
Moving the code intertwined into MainWindow for
the analysis view sidebar; activity list, intervals
and calendar into a new AnalysisSidebar class.

                WARNING!

This is a work in progress checkpoint commit
as the sidebar menus and context menus have
not yet been migrated out -- this will be done
in the next commit or two.
2013-07-15 22:24:31 +01:00
Dave Waterworth
492af3f824 More Fortius Fixes
Including:
   * Fixed a type with slope mode updating the wrong byte array
   * Transposed bytes in the definition of the erg and slope messages
   * Added power smoothing

Note:
   It appears the Fortius is supplying torque not power, some more
   testing is being performed but expect to see an update shortly
   once this has been fully tested.
2013-07-15 08:34:09 +01:00
Mark Liversedge
7f1a6dafef Deprecate the Bubble
.. its hideous and really annoying.
2013-07-14 21:18:10 +01:00
Mark Liversedge
05c2150b12 Tidy up MainWindow.cpp
.. comments and reorg whats left.
2013-07-14 13:13:38 +01:00
Mark Liversedge
97be00069b Move Crash and Upgrade Processing to Athlete
.. and out of mainwindow
2013-07-14 12:55:08 +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
cf82d1b7a9 More refactor tidying
.. move signals to context from mainwindow
.. fix missed updates to aerolab and realtime plot
.. remove clutter from MainWindow.h
2013-07-14 11:23:06 +01:00
Mark Liversedge
9e875dd243 Move allRides initialisation to Athlete
.. was left behind in MainWindow by accident.
2013-07-14 10:25:40 +01:00
Mark Liversedge
8060b4a0d4 Rename TrainTool to TrainSidebar
.. just for a bit of consistency before we develop
   AnalysisSidebar and refactor the views in MainWindow.
2013-07-13 20:15:07 +01:00
Mark Liversedge
d21ca376be MainWindow Refactor Part 3 of 5
Slowly migrating code  and data from the MainWindow
class to Athlete and Context classes.

This update moves the ride and interval lists and
data structures from MainWindow to Athlete.
2013-07-13 19:46:03 +01:00
Mark Liversedge
ac463538c1 Rename GcCalendar as DiarySidebar
.. as we tidy up the views and decouple them from MainWindow
2013-07-13 09:38:54 +01:00
Mark Liversedge
d639411f24 Move isclean from MainWindow to Athlete
.. rather unfortunate use of English as it leads
   to athlete->isclean == false :)
2013-07-12 18:15:14 +01:00
Mark Liversedge
59505dd100 Remove multisave from MainWindow
.. rather than migrate to context just remove it altogether
2013-07-12 17:36:39 +01:00
Mark Liversedge
2cfb5bf3a0 Metric Popup Flicker
The show/hide approach in previous commit caused the
metric popup to flicker. So we now only create the popup
when we know we want to show.
2013-07-12 17:24:15 +01:00
Mark Liversedge
781b720078 Hide metric refresh popup
.. until its been running for more than 6 seconds since
   it takes time to do its thing and can be annoying!
2013-07-12 14:17:55 +01:00
Mark Liversedge
210b71588f Further MainWindow Refactor Part 2 of 5
.. migrate constructor from MainWindow to Athlete and
   Context classes

.. remove Athlete *athlete from MainWindow altogether
2013-07-12 13:59:10 +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
2d33c0aadc Fixup MainWindow refactor Part 2
.. VideoWindow needed updating
.. QTFullScreen needed updating
.. Fix use of lower case n #include
2013-07-11 20:59:05 +01:00
Mark Liversedge
cf925cf904 Fix src.pro accidentally removed RideWindow.qrc 2013-07-11 19:46:15 +01:00
Mark Liversedge
e7935976c6 Fixup MainWindow refactor Part 2
.. fix workoutwizard context hack
.. fix modelplot (3d) code that was missed
2013-07-11 18:10:37 +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
cd54ce16c8 Recognise Dave Waterworth
.. in the about box contributors list.
2013-07-09 20:08:10 +01:00
Mark Liversedge
b33fe701f8 Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2013-07-09 11:07:10 +01:00
Dave Waterworth
21593b6bb6 Fix Tacx Fortius Device Support
Multiple fixups for Tacx Support -- as a result the support
is now pencilled in for full support in 3.0 SP1.

Fixes #24.
2013-07-09 11:02:42 +01:00
Mark Liversedge
f04fcfe934 Fix allplot crash on daft power value
Incredibly high power value in ride file causes a memory
error when setting up plot ticks.

Fixes #658
2013-07-07 20:00:25 +01:00
Mark Liversedge
22175cf55c Refactor Part 1 Mac Fixups
Fixing a few issues from Part 1 of the MainWindow refactor
for building on a Mac.  Also retired twitter completely.
2013-07-07 16:22:42 +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
Mark Liversedge
401957acf9 Deprecate Strava Support
No API v3 access.

Fixes #656.
2013-07-06 00:12:34 +01:00
Mark Liversedge
12db0954e9 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2013-07-05 21:43:59 +01:00
Mark Liversedge
f93155fabd Update FAQ regarding Strava support 2013-07-05 21:40:40 +01:00
Mark Liversedge
94d6cf1d54 Fixup gcconfig.pri.in for Mac OSX 10.9 preview
.. need to add SDK to includepath
.. will go away hopefully, when 10.9 is released
2013-07-02 12:37:48 +01:00
Mark Liversedge
38963d97eb Fix PWX export SEGV
fixes #654.
2013-07-01 19:14:16 +01:00
Mark Liversedge
b162e754a6 MainWindow refactor design update
.. more complete list of attributes and operations
.. need to plan the sequencing of the refactor itself and testing approach
2013-06-28 11:35:59 +01:00
Mark Liversedge
24538b2980 MainWindow refactor design
.. a class model for breaking up MainWindow
.. not all methods/members are listed, mostly about
   identifying the new classes required.
2013-06-25 22:17:22 +01:00
Mark Liversedge
2be11b8311 Merge pull request #650 from rclasen/fix-win
make srmio details in version dialog conditionally
2013-06-25 03:14:51 -07:00
Rainer Clasen
9f9f84f1c9 make srmio details in version dialog conditionally
... so that GC keeps building with older srmio versions.
2013-06-24 23:40:41 +02:00
Mark Liversedge
2c48f5d837 Srmio less wordy version
.. still provides version and commit but removed
   unneccessary words as it skewed the output.

I'm strangely anal about alignment !
2013-06-23 20:45:36 +01:00
Mark Liversedge
196250ec56 Intervals indexes crash / parser error
2 bugs:
- interval offset of -1 causes a crash in htmlSummary
- interval offset of form nnn e+0n parses incorrectly

Also remove silly -wreorder warning in ridefile.h
2013-06-23 16:52:58 +01:00
Mark Liversedge
c12cb80901 Merge pull request #645 from rclasen/fix-win
Fix SRM download issues on windows/mingw
2013-06-23 07:42:44 -07:00
Rainer Clasen
626d254acd inlude srmio version + commit in about dialog 2013-06-23 14:18:24 +02:00
Rainer Clasen
ce49ddd906 SrmDevice: fix writing srmio data
fopen() was missing 'b' flag, so that mingw and other platforms doing
LF/CR translation screwed data.

This is fixing the astronomic values of direct SRM downloads.
2013-06-23 14:18:23 +02:00
Damien
8a5ed3d4ba RideFile: Add Min, Max and Avg point 2013-06-22 14:42:18 +02:00
Mark Liversedge
1b461a9734 10.9 Code Nits
Couple of minor coding nits identified when compiling
on OS X 10.9 Mavericks with Xcode 5 tools.
2013-06-20 15:59:45 +01:00
Mark Liversedge
33ec2a2570 Hand drawn mockups for 3.1 MainWindow options
Playing with some ideas about how the UI will change
to support new UX features for viewing multiple athletes
in a single mainwindow and also having multiple pages
of charts in a single view.

2 Options on the drawing:
.. Having tabbed Athletes and scope bar for view pages
.. Having a source list and tabbed view pages

Can't decide which is best -or- if there are better options
we could look at.
2013-06-19 10:16:15 +01:00
Gareth Coco
32ef1a0df6 Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2013-06-10 03:19:20 -04:00
Gareth Coco
fb339a527b Website updates for Version 3.0 2013-06-10 03:17:49 -04:00
Mark Liversedge
cd105850e5 Version 3 Release
.. update of build and upgrade processing for
   release 3 final update.
2013-06-07 08:53:24 +01:00
Gareth Coco
1eff9a76cc Minor website update. 2013-06-07 01:49:34 -04:00
Mark Liversedge
d0ddeab173 New LTM Chart Setup Mockups
.. to support measures, metrics, bests and user defined
   (formula). For v3.1 development.
2013-06-06 22:07:42 +01:00
Mark Liversedge
c90d9a433e Merge pull request #630 from amtriathlon/master
Last update to spanish translation
2013-06-04 23:03:56 -07:00
Mark Liversedge
dc65c5f5c5 Remove Column Chooser from Chart Settings
Because the chart settings are modal its a really bad
idea to open up a column chooser from there. So, by
default, we don't have a column chooser option on the
search/filter box -- it must be explicitly requested.

We therefore explicity set the column chooser from the
mainwindow and also from the ride navigator window.
2013-06-05 07:01:36 +01:00
Alejandro Martinez
3269ce7148 Update spanish translation with event creation warning 2013-06-04 20:24:55 -03:00
Mark Liversedge
8f5952d1be Fixup reset layout for tile mode
The show() is needed them, for each chart.
2013-06-04 19:42:48 +01:00
Mark Liversedge
3eacee9602 Fix reset layout 'crash'
Fixes #629.
2013-06-04 19:18:29 +01:00
Mark Liversedge
c6d30ef0fd Fix ScatterPlot setTime() SEGV
At first it seemed this was caused by setting the time to
a value greater than the length if the ridefile.

It was actually a constructor error, since the settings
class didn't initialise the ride variable.
2013-06-02 12:21:14 +01:00
Mark Liversedge
a88b0b593d Update for RC7
.. version number / build id.
2013-05-31 20:33:31 +01:00
Mark Liversedge
e471df6e08 Add alpha support for Dynastream OEM USB ant+
.. different pid of 1009 to the garmin usb2 stick
   but probably works the same .. lets see!
2013-05-31 20:05:58 +01:00
Mark Liversedge
130c1d6633 Add Darren Hague copyright message
.. to the ANTLogger code.
2013-05-31 19:02:57 +01:00
Mark Liversedge
80e278a3ba Warning on add event
.. to explain they belong to a season.
2013-05-30 22:17:17 +01:00
Mark Liversedge
47d5614f35 Fix delete ride SEGV
Ridesummarywindow was using rideitem to get zones to use when
summarising for a date range which was bad because a) the ride
might not be for the date range selected and b) it might have
been deleted.

This fixes that and means we get a summary that is more accurate
and no crashing when rides are deleted.
2013-05-30 21:11:24 +01:00
Mark Liversedge
6c94d309f8 Only refresh calendar if visible
Speeds things up and also removes problem of refreshing
when referencing a deleted ride.
2013-05-30 20:26:06 +01:00
Mark Liversedge
6f0b2148dd Diary Sidebar Calendar ignores first ride
Fix to check the first (0th) ride when clicking left
for previous ride rather than >0th.
2013-05-30 19:49:51 +01:00
Mark Liversedge
894cbcc4e7 Fix first file SEGV
If you delete and readd an activity after showing it on
the diary view you get a SEGV.

This is an edge case related to deleting the last activity
and going back to the blank state before importing another.

Actually there are 3 technical issues;

1. GcCalendar doesn't get notified by MainWindow when
   there are no rides -- so it crashes on refresh

2. RideSummaryWindow doesn't get notified by home window
   if its not visible

3. RideSummaryWindow should check rideItem isn't NULL before
   trying to plot zones (but only for date range summaries)

Fixes #622
2013-05-30 19:31:26 +01:00
Mark Liversedge
3c62ac98b4 Deprecate overwrite existing files on import
.. just for release 3.0 until the major bugs are fixed.

Fixes #620
2013-05-30 11:42:52 +01:00
Mark Liversedge
73c3fd7914 Merge branch 'master' of github.com:GoldenCheetah/GoldenCheetah 2013-05-30 10:42:45 +01:00
Mark Liversedge
ceed365782 Fix Editor find results sorting
.. it was sorting as a string not a number
2013-05-30 10:29:29 +01:00
Damien
c45933fa0d JsonRideFile: add support to the references for forward compatibility 2013-05-29 23:55:26 +02:00
Mark Liversedge
798f457602 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2013-05-29 20:36:09 +01:00
Mark Liversedge
f5380df80c Fix date range popup for cycles/adhoc
Its RC6 and we only just caught this bug!!! It was not
possible to delete or edit date ranges of type 'Cycle' due
to a cockup with the type() values.

Thanks to Martin Wifling for finding this one!
2013-05-29 20:34:01 +01:00
Damien
4d0bef751a BinRideFile: Support for left-right pedal balance
Test ride file : test/rides/2013_05_15_18_38_30.bin
2013-05-28 22:15:18 +02:00
Mark Liversedge
ed3ca8411a Documentation: How to create/edit Seasons/Events
.. added to the FAQ for v3.0.
2013-05-28 17:51:37 +01:00
Mark Liversedge
b669781001 Documentation: Withings setup in FAQ
.. to explain where to get the user id and public key
   from (it foxed me for a while).
2013-05-28 17:45:44 +01:00
Mark Liversedge
40fec98142 UI Nits: AllPlot interval too hard to see
.. the interval highlighter is so feint that it can hardly
   be seen -- increased the alpha from 64 to 128.
2013-05-28 14:55:19 +01:00
Mark Liversedge
e386a4314e Fix RidePlot draw performance
.. by only plotting the stack view if its actually
   needed (i.e. user has selected stack view).

.. this performance degradation was introduced by the
   axisscaling update (which is a nice update)

Fixes #616.
2013-05-28 12:11:10 +01:00
Mark Liversedge
2ff391dfc7 Move tests to top level directory
.. they don't belong in the src directory!
2013-05-28 10:23:57 +01:00
Mark Liversedge
d03cea5ff8 Support gpxtpx:hr elements in GPX files
.. thanks to Joaquin Ricarte for the sample file
2013-05-27 21:49:23 +01:00
Mark Liversedge
22ab1d291f Calendar Sidebar on no ride
.. default to this month, so at least there is a month
   displayed rather than lots of 1s and no month name.
2013-05-27 21:23:41 +01:00
Mark Liversedge
087f612e8c GcCalendar - setRide on show
.. because the old value may be out of date if
   e.g. you deleted it in analysis view and then
   switched back
2013-05-27 21:10:03 +01:00
Mark Liversedge
af0051a7a3 Don't publish Withings key in crash report
.. it is personal data and should not be shared
2013-05-27 21:00:09 +01:00
Mark Liversedge
e9a90760ac Fix QFile/Fclose conflict in RawRideFile SEGV
On Windows QFile crashes trying to close a file that has already
been closed by fclose() since it maintains its own state and doesn't
handle the return code of -1.

We just reverse the order we close via QFile and fclose() to avoid
the conflict. We need to do both since fclose needs to release the
stream buffer (they get exhausted on Mac OSX) but QFile needs to
maintain its state too!

Longer term the RawRideFile reader needs to use QFile methods. But
at this stage in the release cycle I'm not going to make such a
dramatic change.
2013-05-27 11:11:22 +01:00
Mark Liversedge
4c373e1dc7 Added very short (12s) test ride
.. to check bounds checking in array processing
.. especially in the histogram/HrPw charts and metrics
2013-05-27 09:00:30 +01:00
Mark Liversedge
5378951cb8 Fix HrPw array offset SEGV
On very short rides the array bounds checking in HrPwPlot
and HrPwWindow was missing. This meant that attempts to
find delays or apply delays that were longer than the
ridefile itself generated negative array offsets, and thus
a SEGV.
2013-05-27 08:48:57 +01:00
Mark Liversedge
3a49a408b4 Build Id and String update for RC6
.. this should be the last RC!
.. won't tag for RC6 until end of today
2013-05-26 11:31:32 +01:00
Mark Liversedge
7652c4b6f5 Recognise Tilman Schmiedeberg
.. he has performed the entire v3 German translation
.. added to the contributors About box
2013-05-26 10:30:23 +01:00
Mark Liversedge
58247913a9 Recognise Okano Takayoshi
.. he has fixed up the v3 Japanese translation
.. included in the Contributors about box
2013-05-26 10:10:02 +01:00
Mark Liversedge
0d38427a6e Merge pull request #612 from amtriathlon/master
Updated German Translation by Tilman Schmiedeberg
2013-05-24 14:11:48 -07:00
Alejandro Martinez
aa8557aba4 Updated German Translation by Tilman Schmiedeberg 2013-05-24 18:07:01 -03:00
Mark Liversedge
8bbf18bcb6 Merge branch 'master' of github.com:/GoldenCheetah/GoldenCheetah 2013-05-23 06:48:22 +01:00
Mark Liversedge
b6d4a538f5 More WPK interval SEGV fixing
.. in interval summary
.. and workout wizard

There aren't any other computeMetrics() pieces of code
left. I also scanned for new RideFile() code and it was
limited to the RideFileReaders which are managed by the
openRideFile() base method, so all should now be well.
2013-05-23 06:38:54 +01:00
Mark Liversedge
e523203314 Merge pull request #610 from amtriathlon/master
Updated Translations
2013-05-22 22:29:29 -07:00
Alejandro Martinez
4bd379f62d Updated translations
Italian by Marco Piccirilli
Japanese by Okano Takayoshi
2013-05-22 20:28:12 -03:00
Mark Liversedge
3cae674b6a Clean up measures.xml
.. remove it as part of the upgrade.
.. use built-in version for db schema
.. don't re-read it when doing getAllMeasuresFor()
2013-05-22 21:18:57 +01:00
Mark Liversedge
c56786683f Ready to publish v3.0-RC5X
.. updated version string.
2013-05-22 19:03:24 +01:00
Mark Liversedge
bea0b1a7d1 Fix WPK interval metric crash
.. recent update to use getWeight() in the ride file
caused a SEGV as interval metric computation is done
on the fly against a 'manufactured' ride file.

.. That ridefile doesn't have a mainwindow reference in
it, so when getWeight() references mainwindow->metricDB
a SEGV occurred.
2013-05-22 18:50:49 +01:00
Mark Liversedge
92e7ed0d23 UI Nits: Defaut sidebar settings
When a new athlete is created or when running v3 for the first
time for this user the sidebars shown are yucky. This just updates
the settings to make sure you start up with a simple sidebar for
the four views.
2013-05-22 15:58:01 +01:00
Mark Liversedge
98e3931ad0 No CLucene optimise on Windows
.. it looks like it crashes.
2013-05-21 15:41:08 +01:00
Mark Liversedge
193117646e RC5 Update Build ID and String
.. build 3005.
2013-05-21 11:24:29 +01:00
1356 changed files with 303857 additions and 75790 deletions

25
.gitignore vendored
View File

@@ -1,8 +1,33 @@
Makefile
.qmake.stash
# old skool
.svn
*.pri
# osx noise
.DS_Store
profile
moc/
obj/
lib/
bin/
plugins/
resources/
src/debug/
src/release/
qwt/src/debug/
qwt/src/release/
src/Makefile.Debug
src/Makefile.Release
src/object_script.GoldenCheetah.Debug
src/object_script.GoldenCheetah.Release
qwt/src/object_script.libqwt.Release
qwt/src/object_script.libqwtd.Debug
qwt/src/Makefile.Release
qwt/src/Makefile.Debug
qwt/textengines/mathml/debug/
qwt/textengines/mathml/release/
build.pro.user

View File

@@ -5,8 +5,8 @@
Mark Liversedge
John Ehrlinger
May 2011
Version 1.1
Jan 2015
Version 1.2
A walkthrough of building GoldenCheetah from scratch on Ubuntu linux. This walkthrough
should be largely the same for any Linux distro.
@@ -30,8 +30,6 @@ CONTENTS
- bison
- libical - Diary window and CalDAV support (google/mobileme calendar integration)
- libvlc - Video playback in training mode
- clucene - Indexing/Searching ride files
1. BASIC INSTALLATION WITH MANDATORY DEPENDENCIES
=================================================
@@ -373,29 +371,3 @@ VLC_INSTALL = /usr/include/vlc/
$ make clean
$ qmake
$ make
CLUCENE - Indexing and Searching ride files (search box)
--------------------------------------------------------
You will need clucene runtime and core libraries, we developed against 0.9.21b-2 but
any 0.9 branch should work fine, let us know if you experience any issues. You may find
that the libclucene0ldbl runtime is already installed, this is fine and typical since
clucene is a very popular search library.
$ sudo apt-get install libclucene-dev
$ sudo apt-get install libclucene0ldbl
By default, and this is deliberate, the clucene install places the config headers into
a platform specific location. For my install I just copy the platform (linux) specific
header config into the normal /usr/include/CLucene directory with the following:
$ sudo cp /usr/lib/CLucene/clucene-config.h /usr/include/CLucene
Next we need to comment out the two CLUCENE lines in gcconfig.pri and they should read:
CLUCENE_INCLUDE = /usr/include/CLucene
CLUCENE_LIBS = -lclucene
$ make clean
$ qmake
$ make

View File

@@ -4,8 +4,8 @@
Mark Liversedge
Nov 2011
Version 1.1
Jan 2015
Version 1.2
A walkthrough of building GoldenCheetah from scratch on Mac OSX. This was performed
on Mac OSX Lion (10.7) but the instructions are largely the same for all versions of
@@ -25,7 +25,6 @@ CONTENTS
- libkml
- libusb
- libical
- libclucene
1. BASIC INSTALLATION WITH MANDATORY DEPENDENCIES
@@ -297,15 +296,3 @@ libical (0.46)
first run autogen.sh
then
./configure CFLAGS="-isysroot /Developer/SDKs/MacOSX10.7.sdk -arch x86_64" --disable-dependency-tracking
2.7 clucene
-----------
DO NOT USE THE MACPORTS VERSION (0.9.23) IT DOES NOT WORK.
git clone git://clucene.git.sourceforge.net/gitroot/clucene/clucene
cmake -G "Unix Makefiles"
make
sudo make install
will install clucene into /usr/local/include/clucene and /usr/local/lib

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

12
contrib/RideLogger/.gitignore vendored Normal file
View File

@@ -0,0 +1,12 @@
# Ignores for Eclipse
/.settings/
# Ignores for Android Projects
/bin/
/gen/
/publish/
/local.properties
/secure.properties
# Ignores for Mac machines
.DS_Store

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE AndroidXML>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="com.ridelogger"
android:versionCode="040000"
android:versionName="4.0.0"
android:icon="@drawable/ic_launcher" >
<uses-sdk android:minSdkVersion="14"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.DeviceDefault.Light" >
<service
android:name="com.ridelogger.RideService"
android:icon="@drawable/ic_launcher"
android:label="@string/service_name" >
</service>
<activity
android:name="com.ridelogger.StartActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.ridelogger.SettingsActivity"
android:label="@string/setting_title" >
</activity>
</application>
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
</lint>

View File

@@ -0,0 +1,68 @@
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
# Optimizations: If you don't want to optimize, use the
# proguard-android.txt configuration file instead of this one, which
# turns off the optimization flags. Adding optimization introduces
# certain risks, since for example not all optimizations performed by
# ProGuard works on all versions of Dalvik. The following flags turn
# off various optimizations known to have issues, but the list may not
# be complete or up to date. (The "arithmetic" optimization can be
# used if you are only targeting Android 2.0 or later.) Make sure you
# test thoroughly if you go this route.
-optimizations code/simplification/arithmetic,code/simplification/cast,field/*,class/merging/*
-optimizationpasses 24
-allowaccessmodification
-dontpreverify
# The remainder of this file is identical to the non-optimized version
# of the Proguard configuration file (except that the other file has
# flags to turn off optimization).
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
native <methods>;
}
# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**
-keep public class com.ridelogger.SettingsActivity$GeneralFragment
-keep public class com.ridelogger.SettingsActivity$AntFragment
-keep public class com.ridelogger.SettingsActivity$SensorsFragment

View File

@@ -0,0 +1,15 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=proguard-android-optimize.txt
# Project target.
target=android-21
min=android-14

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE AndroidXML>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LayoutData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:gravity="right"
/>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="com.ridelogger.SettingsActivity$GeneralFragment"
android:title="@string/setting_general_title"
android:summary="@string/setting_general_note" />
<header android:fragment="com.ridelogger.SettingsActivity$AntFragment"
android:title="@string/setting_ant_title"
android:summary="@string/setting_ant_note" />
<header android:fragment="com.ridelogger.SettingsActivity$SensorsFragment"
android:title="@string/setting_sensors_title"
android:summary="@string/setting_sensors_note" />
</preference-headers>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/Start"
android:title="@string/start" />
<item android:id="@+id/Stop"
android:title="@string/stop" />
<item android:id="@+id/Settings"
android:title="@string/edit_settings"
android:showAsAction="never" />
</menu>

View File

@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE AndroidXML>
<resources>
<string name="app_name">Ride Logger</string>
<string name="service_name">Logging Ride</string>
<string name="emergency_contact_dialog_title">Emergency Contact</string>
<string name="emergency_contact_dialog_note">Should a text messesage be sent on ride start and periodically to let your emergency contact know you are alright?</string>
<string name="sms_period_dialog_title">Emergency Contact SMS Period</string>
<string name="sms_period_dialog_note">Period in Minutes:</string>
<string name="crash_detection_dialog_title">Crash Detection</string>
<string name="crash_detection_dialog_note">Should a text messesage be sent on crash detction to your emergency contact?</string>
<string name="emergency_contact_number_dialog_title">Emergency Contact Number</string>
<string name="emergency_contact_number_dialog_note">Emergency phone number to update position on crash detection</string>
<string name="ant_setup_title">Set Ant+</string>
<string name="ant_setup_note">Pair your Ant+ devices now?</string>
<string name="ant_pair_dialog_title">Select Ant Devices</string>
<string name="ant_pair_dialog_button_note">Pair</string>
<string name="gc_rider_name_dialog_title">Enter Rider Name</string>
<string name="gc_rider_name_dialog_note">What is your Golder Cheata Rider Name?</string>
<string name="save_setting_button">Next</string>
<string name="skip_setting_button">Skip</string>
<string name="boolean_dialog_yes">Yes</string>
<string name="boolean_dialog_no">No</string>
<string name="starting_ride">Starting Ride!</string>
<string name="stopping_ride">Stoping Ride!</string>
<string name="ride_on">Ride On</string>
<string name="building_ride">Building ride: </string>
<string name="click_to_stop"> Click to stop ride.</string>
<string name="ride_start_title">Start Ride</string>
<string name="ride_start_note">Make sure locations is turned on. Internet connection is NOT required.</string>
<string name="start">Start Logging</string>
<string name="edit_settings">Settings</string>
<string name="ride_stop_title">Ride in Progress</string>
<string name="ride_stop_note">Would you like to stop the ride or view current values.</string>
<string name="stop">Stop Logging</string>
<string name="view">View</string>
<string name="crash_warning">WARNING CRASH!</string>
<string name="crash_confirm">CRASH CONFIRMED!</string>
<string name="crash_unknow_location">Unknow location.</string>
<string name="crash_magnitude">Mag</string>
<string name="ride_start_sms">I\'m starting my ride.</string>
<string name="ride_stop_sms">I have finished my ride.</string>
<string name="riding_ok_sms">I\'m ok.</string>
<string name="setting_title">Settings</string>
<string name="setting_general_title">General</string>
<string name="setting_general_note">Settings</string>
<string name="setting_ant_title">Ant+</string>
<string name="setting_ant_note">Setup your Ant+ Devices</string>
<string name="searching_for_ants">Searching for Ant+ Devices...</string>
<string name="found_ants">Found Ant+ Devices, Press to Pair.</string>
<string name="no_found_ants">Nothing found to pair.</string>
<string name="setting_sensors_title">Display Sensors</string>
<string name="setting_sensors_note">List of Sensors Display</string>
<string name="setting_wheel_size">Wheel Circumference in Meters</string>
<string name="imperial_units_title">Imperial Units</string>
<string name="imperial_units_note">Show Measurements in Imperial Units</string>
<string name="setting_size_title">Display Text Size</string>
<string name="PREFS_NAME">RideLogger</string>
<string name="PREF_RIDER_NAME">RiderName</string>
<string name="PREF_EMERGENCY_NUMBER">EmergencyNumbuer</string>
<string name="PREF_DETECT_CRASH">DetectCrash</string>
<string name="PREF_PHONE_HOME">PhoneHome</string>
<string name="PREF_PAIRED_ANTS">PairedAnts</string>
<string name="PREF_PHONE_HOME_PERIOD">PhoneHomePeriod</string>
<string name="PREF_TRACKING_SENSORS">TrackingSensors</string>
<string name="PREF_TRACKING_SIZE">TrackingSize</string>
<string name="PREF_TRACKING_IMPERIAL_UNITS">TrackingImperialUnits</string>
<string name="PREF_WHEEL_SIZE">WheelSize</string>
</resources>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="@string/PREFS_NAME">
<MultiSelectListPreference
android:key="@string/PREF_PAIRED_ANTS"
android:title="@string/ant_pair_dialog_title"
android:summary="@string/ant_pair_dialog_button_note"
/>
<EditTextPreference
android:key="@string/PREF_WHEEL_SIZE"
android:title="@string/setting_wheel_size"
android:defaultValue="2.096"
/>
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="@string/PREFS_NAME"
android:persistent="true">
<EditTextPreference
android:key="@string/PREF_RIDER_NAME"
android:title="@string/gc_rider_name_dialog_title"
android:summary="@string/gc_rider_name_dialog_note" />
<EditTextPreference
android:key="@string/PREF_EMERGENCY_NUMBER"
android:title="@string/emergency_contact_number_dialog_title"
android:summary="@string/emergency_contact_number_dialog_note" />
<CheckBoxPreference
android:layout="?android:attr/preferenceLayoutChild"
android:dependency="@string/PREF_EMERGENCY_NUMBER"
android:key="@string/PREF_DETECT_CRASH"
android:title="@string/crash_detection_dialog_title"
android:summary="@string/crash_detection_dialog_note" />
<!-- The visual style of a child is defined by this styled theme attribute. -->
<CheckBoxPreference
android:layout="?android:attr/preferenceLayoutChild"
android:dependency="@string/PREF_EMERGENCY_NUMBER"
android:key="@string/PREF_PHONE_HOME"
android:title="@string/emergency_contact_dialog_title"
android:summary="@string/emergency_contact_dialog_note" />
<EditTextPreference
android:layout="?android:attr/preferenceLayoutChild"
android:dependency="@string/PREF_PHONE_HOME"
android:key="@string/PREF_PHONE_HOME_PERIOD"
android:title="@string/sms_period_dialog_title"
android:summary="@string/sms_period_dialog_note"
android:defaultValue="20" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="@string/PREFS_NAME">
<MultiSelectListPreference
android:key="@string/PREF_TRACKING_SENSORS"
android:title="@string/setting_sensors_title"
android:summary="@string/setting_sensors_note"
/>
<CheckBoxPreference
android:key="@string/PREF_TRACKING_IMPERIAL_UNITS"
android:title="@string/imperial_units_title"
android:summary="@string/imperial_units_note"
/>
<EditTextPreference
android:key="@string/PREF_TRACKING_SIZE"
android:title="@string/setting_size_title"
android:defaultValue="20"
/>
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,281 @@
package com.ridelogger;
import java.util.Set;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.preference.PreferenceManager;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class CurrentValuesAdapter extends BaseAdapter {
private StartActivity context;
private int[] keys;
private String[] values;
private String[] keyLabels;
private int size = 20;
private boolean imperial = false;
private SharedPreferences settings = null;
private GridView layout;
public CurrentValuesAdapter(StartActivity c, GridView pLayout) {
context = c;
layout = pLayout;
layout.setBackgroundColor(Color.BLACK);
layout.setVerticalSpacing(4);
layout.setHorizontalSpacing(4);
settings = PreferenceManager.getDefaultSharedPreferences(context);
Set<String> sensors = settings.getStringSet(context.getString(R.string.PREF_TRACKING_SENSORS), null);
size = Integer.valueOf(settings.getString(context.getString(R.string.PREF_TRACKING_SIZE), "20"));
imperial = settings.getBoolean(context.getString(R.string.PREF_TRACKING_IMPERIAL_UNITS), false);
initKeys(sensors);
initKeyLables();
initValues();
settings.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String pkey) {
if(pkey == context.getString(R.string.PREF_TRACKING_SIZE)) {
size = Integer.valueOf(sharedPreferences.getString(context.getString(R.string.PREF_TRACKING_SIZE), "20"));
setupWidth();
notifyDataSetChanged();
} else if (pkey == context.getString(R.string.PREF_TRACKING_SENSORS)) {
Set<String> sensors = sharedPreferences.getStringSet(context.getString(R.string.PREF_TRACKING_SENSORS), null);
initKeys(sensors);
initKeyLables();
initValues();
layout.setAdapter(CurrentValuesAdapter.this);
notifyDataSetChanged();
} else if (pkey == context.getString(R.string.PREF_TRACKING_IMPERIAL_UNITS)) {
imperial = sharedPreferences.getBoolean(pkey, false);
initKeyLables();
initValues();
notifyDataSetChanged();
}
}
}
);
}
private void initKeys(Set<String> sensors) {
if(sensors != null && sensors.size() > 0) {
keys = new int[sensors.size()];
int i = 0;
for(String sensor : sensors) {
keys[i] = Integer.parseInt(sensor);
i++;
}
} else {
keys = new int[RideService.KEYS.length];
for (int i = 0; i < RideService.KEYS.length; i++) {
keys[i] = i;
}
}
}
private void initKeyLables() {
keyLabels = new String[keys.length];
if(!imperial) {
for(int key : keys) {
keyLabels[key] = RideService.KEYS[key].toString().toLowerCase();
}
} else {
for(int key : keys) {
switch (key) {
case RideService.ALTITUDE:
keyLabels[key] = "ft";
break;
case RideService.KPH:
keyLabels[key] = "mph";
break;
case RideService.KM:
keyLabels[key] = "m";
break;
default:
keyLabels[key] = RideService.KEYS[key].toString().toLowerCase();
break;
}
}
}
}
private void initValues() {
values = new String[keys.length];
for (int key : keys) {
if(key == RideService.SECS) {
values[key] = "00:00:00";
} else {
values[key] = "0.0";
}
}
}
private RelativeLayout newRelativeLayout(int key) {
RelativeLayout view = new RelativeLayout(context);
view.setBackgroundColor(Color.WHITE);
TextView valueView = newValueTv(key);
TextView keyView = newKeyTv(key);
RelativeLayout.LayoutParams valueLayoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
valueLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
valueLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
view.addView(valueView, valueLayoutParams);
RelativeLayout.LayoutParams keyLayoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
keyLayoutParams.addRule(RelativeLayout.BELOW, valueView.getId());
keyLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
keyLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
view.addView(keyView, keyLayoutParams);
return view;
}
private TextView newValueTv(int key){
TextView tv = new TextView(context);
tv.setTextAppearance(context, android.R.attr.textAppearanceLarge);
tv.setTypeface(Typeface.MONOSPACE, Typeface.BOLD);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
tv.setText(values[key]);
tv.setId(key + 1);
return tv;
}
private TextView newKeyTv(int key){
TextView tv = new TextView(context);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
tv.setBackgroundColor(Color.LTGRAY);
tv.setTypeface(Typeface.MONOSPACE, Typeface.BOLD);
tv.setPadding(4, 1, 4, 1);
tv.setText(keyLabels[key]);
return tv;
}
@Override
public int getCount() {
return keys.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
return newRelativeLayout(keys[position]);
} else {
RelativeLayout view = (RelativeLayout) convertView;
TextView valueView = (TextView) (view.getChildAt(0));
TextView valueKey = (TextView) (view.getChildAt(1));
if(valueView.getText() != values[keys[position]])
valueView.setText(values[keys[position]]);
valueView.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
if(valueKey.getText() != keyLabels[keys[position]])
valueKey.setText(keyLabels[keys[position]]);
return convertView;
}
}
public void update(float[] current_float_values) {
for (int key: keys) {
if(key == RideService.SECS) {
int hr = (int) (current_float_values[key]/3600);
int rem = (int) (current_float_values[key]%3600);
int mn = rem/60;
int sec = rem%60;
values[key] = (hr<10 ? "0" : "") + hr + ":" + (mn<10 ? "0" : "") + mn + ":" + (sec<10 ? "0" : "")+sec;
} else if(!imperial) {
values[key] = String.format("%.1f", current_float_values[key]);
} else {
switch (key) {
case RideService.ALTITUDE:
values[key] = String.format("%.1f", current_float_values[key] * 3.28084);
break;
case RideService.KPH:
values[key] = String.format("%.1f", current_float_values[key] * 0.621371);
break;
case RideService.KM:
values[key] = String.format("%.1f", current_float_values[key] * 0.621371);
break;
default:
values[key] = String.format("%.1f", current_float_values[key]);
break;
}
}
}
notifyDataSetChanged();
}
/**
* returns the size of the cell basted on 8 chars wide and the configured size param
* @return int
*/
private void setupWidth() {
TextView tv = new TextView(context);
tv.setTextAppearance(context, android.R.attr.textAppearanceLarge);
tv.setTypeface(Typeface.MONOSPACE, Typeface.BOLD);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
tv.setText(String.format("%.1f", 1111.11));
Rect bounds = new Rect();
tv.getPaint().getTextBounds("00:00:00", 0, "00:00:00".length(), bounds);
layout.setColumnWidth(bounds.width() + 16);
}
}

View File

@@ -0,0 +1,28 @@
package com.ridelogger;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.GZIPOutputStream;
public class GzipWriter extends GZIPOutputStream {
public GzipWriter(OutputStream os) throws IOException {
super(os);
}
public void write(String data) throws IOException {
super.write(data.getBytes());
}
public void write(float data) throws IOException {
super.write(Float.floatToIntBits(data));
}
public void write(CharSequence data) throws IOException {
byte[] barr = new byte[data.length()];
for (int i = 0; i < barr.length; i++) {
barr[i] = (byte) data.charAt(i);
}
super.write(barr);
}
}

View File

@@ -0,0 +1,417 @@
package com.ridelogger;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import java.util.TimeZone;
import java.util.Timer;
import java.util.TimerTask;
import com.dsi.ant.plugins.antplus.pcc.defines.DeviceType;
import com.dsi.ant.plugins.utility.log.LogAnt;
import com.ridelogger.formats.BaseFormat;
import com.ridelogger.formats.JsonFormat;
import com.ridelogger.listners.Base;
import com.ridelogger.listners.Gps;
import com.ridelogger.listners.HeartRate;
import com.ridelogger.listners.Power;
import com.ridelogger.listners.Sensors;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.telephony.PhoneNumberUtils;
import android.telephony.SmsManager;
/**
* RideService
* @author Chet Henry
* Performs ride logging from sensors as an android service
*/
public class RideService extends Service
{
public static final int notifyID = 1; //Id of the notification in the top android bar that this class creates and alters
public static final int SECS = 0;
public static final int KPH = 1;
public static final int ALTITUDE = 2;
public static final int bearing = 3;
public static final int gpsa = 4;
public static final int LAT = 5;
public static final int LON = 6;
public static final int HR = 7;
public static final int WATTS = 8;
public static final int NM = 9;
public static final int CAD = 10;
public static final int KM = 11;
public static final int LTE = 12;
public static final int RTE = 13;
public static final int SNPLC = 14;
public static final int SNPR = 15;
public static final int ms2x = 16;
public static final int ms2y = 17;
public static final int ms2z = 18;
public static final int temp = 19;
public static final int uTx = 20;
public static final int uTy = 21;
public static final int uTz = 22;
public static final int press = 23;
public static final int lux = 24;
public static CharSequence[] KEYS = {
"SECS",
"KPH",
"ALTITUDE",
"bearing",
"gpsa",
"LAT",
"LON",
"HR",
"WATTS",
"NM",
"CAD",
"KM",
"LTE",
"RTE",
"SNPLC",
"SNPR",
"ms2x",
"ms2y",
"ms2z",
"temp",
"uTx",
"uTy",
"uTz",
"press",
"lux"
};
public GzipWriter buf; //writes to log file buffered
public long startTime; //start time of the ride
public float[] currentValues = new float[RideService.KEYS.length]; //float array of current values
private Messenger mMessenger = null; //class to send back current values if needed
private boolean rideStarted = false; //have we started logging the ride
private int sensor_index = 0; //current index of sensors
private String emergencyNumbuer; //the number to send the messages to
private Timer timer; //timer class to control the periodic messages
private Timer timerUI; //timer class to control the periodic messages
private Base<?>[] sensors; //list of sensors tracking
public BaseFormat<?> fileFormat;
/**
* starts the ride on service start
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startRide();
return Service.START_NOT_STICKY;
}
/**
* returns the messenger to talk to the app with
*/
@Override
public IBinder onBind(Intent arg0) {
mMessenger = new Messenger(new Handler() { // Handler of incoming messages from clients.
Messenger replyTo;
@Override
public void handleMessage(Message msg) {
if(timerUI != null) {
timerUI.cancel();
timerUI = null;
}
timerUI = new Timer();
if(msg.replyTo != null) {
replyTo = msg.replyTo;
timerUI.scheduleAtFixedRate(
new TimerTask() {
@Override
public void run() {
Message msg = Message.obtain(null, 2, 0, 0);
Bundle bundle = new Bundle();
bundle.putSerializable("currentValues", currentValues);
msg.setData(bundle);
try {
replyTo.send(msg);
} catch (RemoteException e) {}
}
},
1000,
1000
); //every second update the screen
}
}
}); // Target we publish for clients to send messages to IncomingHandler.
return mMessenger.getBinder();
}
/**
* releases the timer that sends messages to the app
*/
@Override
public boolean onUnbind (Intent intent) {
if(timerUI != null) {
timerUI.cancel();
timerUI = null;
}
mMessenger = null;
return true;
}
/**
* stop the ride on service stop
*/
@Override
public void onDestroy() {
stopRide();
super.onDestroy();
}
/**
* start a ride if there is not one started yet
*/
protected void startRide() {
if(rideStarted) return;
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
emergencyNumbuer = settings.getString(getString(R.string.PREF_EMERGENCY_NUMBER), "");
currentValues[SECS] = (float) 0.0;
startTime = System.currentTimeMillis();
Date startDate = new Date(startTime);
SimpleDateFormat startTimef = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat filef = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
SimpleDateFormat month = new SimpleDateFormat("MMMMM");
SimpleDateFormat year = new SimpleDateFormat("yyyy");
SimpleDateFormat day = new SimpleDateFormat("EEEEE");
startTimef.setTimeZone(TimeZone.getTimeZone("UTC"));
filef.setTimeZone(TimeZone.getTimeZone("UTC"));
month.setTimeZone(TimeZone.getTimeZone("UTC"));
year.setTimeZone(TimeZone.getTimeZone("UTC"));
day.setTimeZone(TimeZone.getTimeZone("UTC"));
final String fileName = filef.format(startDate) + ".json.gz";
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
fileFormat = new JsonFormat(this);
fileFormat.createFile();
fileFormat.writeHeader();
LogAnt.setDebugLevel(LogAnt.DebugLevel.NONE, this);
final Set<String> pairedAnts = settings.getStringSet(getString(R.string.PREF_PAIRED_ANTS), null);
if(pairedAnts != null && !pairedAnts.isEmpty()){
sensors = new Base<?>[pairedAnts.size() + 2];
for(String deviceNumber: pairedAnts) {
DeviceType deviceType = DeviceType.getValueFromInt(settings.getInt(deviceNumber, 0));
switch (deviceType) {
case BIKE_CADENCE:
break;
case BIKE_POWER:
sensors[sensor_index++] = new Power(Integer.valueOf(deviceNumber), this);
break;
case BIKE_SPD:
break;
case BIKE_SPDCAD:
break;
case BLOOD_PRESSURE:
break;
case ENVIRONMENT:
break;
case WEIGHT_SCALE:
break;
case HEARTRATE:
sensors[sensor_index++] = new HeartRate(Integer.valueOf(deviceNumber), this);
break;
case STRIDE_SDM:
break;
case FITNESS_EQUIPMENT:
break;
case GEOCACHE:
case CONTROLLABLE_DEVICE:
break;
case UNKNOWN:
break;
default:
break;
}
}
} else {
sensors = new Base<?>[4];
sensors[sensor_index++] = new HeartRate(0, this);
sensors[sensor_index++] = new Power(0, this);
}
sensors[sensor_index++] = new Gps(this);
sensors[sensor_index++] = new Sensors(this);
}
rideStarted = true;
if(settings.getBoolean(getString(R.string.PREF_PHONE_HOME), false)) {
timer = new Timer();
int period = Integer.parseInt(settings.getString(getString(R.string.PREF_PHONE_HOME_PERIOD), "10"));
timer.scheduleAtFixedRate(
new TimerTask() {
@Override
public void run() {
phoneHome();
}
},
60000 * period,
60000 * period
); //every ten min let them know where you are at
phoneStart();
}
//build the notification in the top android drawer
NotificationCompat.Builder mBuilder = new NotificationCompat
.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(getString(R.string.ride_on))
.setContentText(getString(R.string.building_ride) + " " + fileName + " " + getString(R.string.click_to_stop))
.setProgress(0, 0, true)
.setContentIntent(
TaskStackBuilder
.create(this)
.addParentStack(StartActivity.class)
.addNextIntent(new Intent(this, StartActivity.class))
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT)
);
startForeground(notifyID, mBuilder.build());
}
/**
* let a love one know where you are at about every 10 min
*/
public void phoneCrash(double mag) {
smsHome(
getString(R.string.crash_warning) + "\n" + getLocationLink()
+ "\n " + getString(R.string.crash_magnitude) + ": " + String.valueOf(mag)
);
}
/**
* confirm the crash if we are not moving
*/
public void phoneCrashConfirm() {
smsHome(getString(R.string.crash_confirm) + "!\n" + getLocationLink());
}
/**
* let them know we are starting
*/
public void phoneStart() {
smsWithLocation(getString(R.string.ride_start_sms));
}
/**
* let them know we are stopping
*/
public void phoneStop() {
smsWithLocation(getString(R.string.ride_stop_sms));
}
/**
* send an sms with location
*/
public void smsWithLocation(String body) {
smsHome(body + "\n " + getLocationLink());
}
/**
* let a love one know where you are at about every 10 min
*/
public void phoneHome() {
smsWithLocation(getString(R.string.riding_ok_sms));
}
/**
* send a sms message
*/
public void smsHome(String body) {
SmsManager smsManager = SmsManager.getDefault();
if(emergencyNumbuer != null && PhoneNumberUtils.isWellFormedSmsAddress(emergencyNumbuer)) {
smsManager.sendTextMessage(emergencyNumbuer, null, body, null, null);
}
}
public String getLocationLink() {
if(currentValues[LAT] != 0.0 || currentValues[LON] != 0.0) {
return "https://www.google.com/maps/place/" + currentValues[LAT] + "," + currentValues[LON];
}
return getString(R.string.crash_unknow_location);
}
//stop the ride and clean up resources
protected void stopRide() {
if(!rideStarted) return;
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
if(settings.getBoolean(getString(R.string.PREF_PHONE_HOME), false)) {
phoneStop();
}
for(Base<?> sensor: sensors) {
if(sensor != null) {
sensor.onDestroy();
}
}
//stop the phoneHome timer if we need to.
if(timer != null) {
timer.cancel();
timer = null;
}
if(timerUI != null) {
timerUI.cancel();
timerUI = null;
}
fileFormat.writeFooter();
rideStarted = false;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(notifyID);
}
}

View File

@@ -0,0 +1,274 @@
package com.ridelogger;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import com.dsi.ant.plugins.antplus.pcc.defines.DeviceType;
import com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult;
import com.dsi.ant.plugins.antplus.pccbase.MultiDeviceSearch;
import com.dsi.ant.plugins.antplus.pccbase.MultiDeviceSearch.MultiDeviceSearchResult;
import com.dsi.ant.plugins.utility.log.LogAnt;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.preference.MultiSelectListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
public class SettingsActivity extends PreferenceActivity {
static ArrayList<MultiDeviceSearchResult> foundDevices = new ArrayList<MultiDeviceSearchResult>();
/**
* This fragment contains a second-level set of preference that you
* can get to by tapping an item in the first preferences fragment.
*/
public static class GeneralFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.general_settings);
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(((SettingsActivity) getActivity()).getServiceRunning(RideService.class) != null) {
Preference pref = findPreference(getString(R.string.PREF_RIDER_NAME));
pref.setEnabled(false);
pref = findPreference(getString(R.string.PREF_EMERGENCY_NUMBER));
pref.setEnabled(false);
}
}
}
/**
* This fragment contains a second-level set of preference that you
* can get to by tapping an item in the first preferences fragment.
*/
public static class SensorsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.sensors_settings);
MultiSelectListPreference mMultiSelectListPreference = (MultiSelectListPreference) findPreference(getString(R.string.PREF_TRACKING_SENSORS));
mMultiSelectListPreference.setEntries( RideService.KEYS );
CharSequence[] keys = new CharSequence[RideService.KEYS.length];
for (int i = 0; i < RideService.KEYS.length; i++) {
keys[i] = String.valueOf(i);
}
mMultiSelectListPreference.setEntryValues(keys);
}
}
@Override
public boolean isValidFragment(String fragment) {
return true;
}
/**
* This fragment contains a second-level set of preference that you
* can get to by tapping an item in the first preferences fragment.
*/
public static class AntFragment extends PreferenceFragment {
private MultiDeviceSearch mSearch;
private MultiSelectListPreference mMultiSelectListPreference;
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.ant_settings);
mMultiSelectListPreference = (MultiSelectListPreference) findPreference(getString(R.string.PREF_PAIRED_ANTS));
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
initAntSearch();
}
/**
* search for ant+ if we are not recording
*/
public void initAntSearch() {
mMultiSelectListPreference.setEnabled(false);
if(((SettingsActivity) getActivity()).getServiceRunning(RideService.class) == null) {
mMultiSelectListPreference.setSummary(R.string.searching_for_ants);
setupAnt();
Timer timer = new Timer();
final Handler handler = new Handler();
timer.schedule(
new TimerTask() {
@Override
public void run() {
if(mMultiSelectListPreference.getEntryValues().length > 0) {
handler.post(new Runnable() {
public void run() {
mMultiSelectListPreference.setEnabled(true);
mMultiSelectListPreference.setSummary(R.string.found_ants);
}
});
} else {
handler.post(new Runnable() {
public void run() {
mMultiSelectListPreference.setEnabled(true);
mMultiSelectListPreference.setSummary(R.string.no_found_ants);
}
});
}
}
},
5000
);
}
}
/**
* try to pair some ant+ devices
*/
protected void setupAnt() {
MultiDeviceSearch.SearchCallbacks mCallback;
MultiDeviceSearch.RssiCallback mRssiCallback;
updateList(foundDevices);
LogAnt.setDebugLevel(LogAnt.DebugLevel.NONE, this.getActivity());
mCallback = new MultiDeviceSearch.SearchCallbacks(){
public void onDeviceFound(final MultiDeviceSearchResult deviceFound)
{
if(!foundDevices.contains(deviceFound)) {
foundDevices.add(deviceFound);
updateList(foundDevices);
}
}
@Override
public void onSearchStopped(RequestAccessResult arg0) {}
};
mRssiCallback = new MultiDeviceSearch.RssiCallback() {
@Override
public void onRssiUpdate(final int resultId, final int rssi){}
};
// start the multi-device search
mSearch = new MultiDeviceSearch(this.getActivity(), EnumSet.allOf(DeviceType.class), mCallback, mRssiCallback);
}
/**
* dialog of soon to be paired ant devices
* @param foundDevices
*/
protected void updateList(final ArrayList<MultiDeviceSearchResult> foundDevices) {
ArrayList<CharSequence> foundDevicesString = new ArrayList<CharSequence>();
ArrayList<CharSequence> foundDevicesValues = new ArrayList<CharSequence>();
for(MultiDeviceSearchResult device : foundDevices) {
foundDevicesString.add(device.getAntDeviceType() + ": " + String.valueOf(device.getAntDeviceNumber()));
}
for(MultiDeviceSearchResult device : foundDevices) {
foundDevicesValues.add(String.valueOf(device.getAntDeviceNumber()));
}
if(mMultiSelectListPreference != null) {
mMultiSelectListPreference.setEntries(
foundDevicesString.toArray(new CharSequence[foundDevicesString.size()])
);
mMultiSelectListPreference.setEntryValues(
foundDevicesValues.toArray(new CharSequence[foundDevicesValues.size()])
);
}
}
@Override
public void onDestroy() {
if(mSearch != null) mSearch.close();
super.onDestroy();
}
}
/**
* Populate the activity with the top-level headers.
*/
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.layout.settings, target);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
settings.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String pkey) {
if (pkey == getString(R.string.PREF_PAIRED_ANTS)) {
Set<String> sensors = sharedPreferences.getStringSet(pkey, null);
if(sensors != null && sensors.size() > 0) {
Editor editor = sharedPreferences.edit();
for(MultiDeviceSearchResult result : foundDevices) {
sensors.contains(String.valueOf(result.getAntDeviceNumber()));
editor.putInt(String.valueOf(result.getAntDeviceNumber()), result.getAntDeviceType().getIntValue());
}
editor.commit();
}
}
}
}
);
}
/**
* is a service running or not
* @param serviceClass
* @return
*/
public RunningServiceInfo getServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return service;
}
}
return null;
}
}

View File

@@ -0,0 +1,215 @@
package com.ridelogger;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.GridView;
import android.widget.Toast;
public class StartActivity extends FragmentActivity
{
private MenuItem startMenu;
private MenuItem stopMenu;
private ServiceConnection mConnection;
static CurrentValuesAdapter currentValuesAdapter;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.start_activity, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
if(item.getItemId() == R.id.Settings) {
setupSettings();
} else if(item.getItemId() == R.id.Start) {
startRide();
} else {
stopRide();
}
return true;
}
/**
* start up our class
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dashboard);
GridView layout = (GridView) findViewById(R.id.LayoutData);
currentValuesAdapter = new CurrentValuesAdapter(this, layout);
layout.setAdapter(currentValuesAdapter);
}
@Override
protected void onResume() {
super.onResume();
bindToService();
}
@Override
protected void onPause() {
super.onPause();
unBindToService();
}
@Override
protected void onStop() {
super.onStop();
unBindToService();
}
/**
* setup the settings for the user
*/
private void setupSettings() {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
}
/**
* stop ride and clean up references
*/
private void stopRide() {
Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.stopping_ride), Toast.LENGTH_LONG);
toast.show();
Intent rsi = new Intent(this, RideService.class);
this.stopService(rsi);
finish();
}
static final Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg_internal) {
updateValues(msg_internal.getData());
}
};
/**
* tell the service to start sending us messages with current values
*/
private void bindToService() {
RunningServiceInfo service = getServiceRunning(RideService.class);
if(service != null) {
mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
Messenger mService = new Messenger(service);
try {
Message msg = Message.obtain();
msg.replyTo = new Messenger(mHandler);
mService.send(msg);
} catch (RemoteException e) {
// In this case the service has crashed before we could even do anything with it
}
}
public void onServiceDisconnected(ComponentName className) {}
};
bindService(new Intent(StartActivity.this, RideService.class), mConnection, Context.BIND_AUTO_CREATE);
}
}
/**
* tell the service to stop sending us messages with current values
*/
private void unBindToService() {
if (mConnection != null) {
// Detach our existing connection.
unbindService(mConnection);
mConnection = null;
}
}
/**
* update the text fields with current values
* @param bundle
*/
private static void updateValues(Bundle bundle) {
currentValuesAdapter.update((float[]) bundle.getSerializable("currentValues"));
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
RunningServiceInfo service = getServiceRunning(RideService.class);
startMenu = menu.findItem(R.id.Start);
stopMenu = menu.findItem(R.id.Stop);
if(service == null) {
startMenu.setVisible(true);
stopMenu.setVisible(false);
} else {
startMenu.setVisible(false);
stopMenu.setVisible(true);
}
return true;
}
/**
* start the ride and notify the user of success
*/
private void startRide() {
Intent rsi = new Intent(this, RideService.class);
this.startService(rsi);
startMenu.setVisible(false);
stopMenu.setVisible(true);
bindToService();
Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.starting_ride), Toast.LENGTH_LONG);
toast.show();
}
/**
* is a service running or not
* @param serviceClass
* @return
*/
private RunningServiceInfo getServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return service;
}
}
return null;
}
}

View File

@@ -0,0 +1,71 @@
package com.ridelogger.formats;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Environment;
import com.ridelogger.GzipWriter;
import com.ridelogger.RideService;
public class BaseFormat<T> {
protected GzipWriter buf;
protected RideService context;
protected String subExt = "";
public BaseFormat(RideService rideService) {
context = rideService;
}
public void createFile() {
File dir = new File(
Environment.getExternalStorageDirectory(),
"Rides"
);
dir.mkdirs();
Date startDate = new Date(context.startTime);
SimpleDateFormat filef = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
String fileName = filef.format(startDate) + subExt + ".gz";
try {
buf = new GzipWriter(new BufferedOutputStream(new FileOutputStream(new File(dir, fileName))));
} catch (Exception e) {}
}
public void writeHeader(){
try {
synchronized (buf) {
for(CharSequence key : RideService.KEYS) {
buf.write(key);
buf.write(",");
}
}
} catch (Exception e) {}
}
public void writeValues() {
try {
synchronized (buf) {
for(float value : context.currentValues) {
buf.write(value);
}
}
} catch (Exception e) {}
}
public void writeFooter() {
try {
buf.close();
} catch (Exception e) {}
}
}

View File

@@ -0,0 +1,93 @@
package com.ridelogger.formats;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import com.ridelogger.R;
import com.ridelogger.RideService;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class JsonFormat extends BaseFormat<Object> {
public JsonFormat(RideService rideService) {
super(rideService);
subExt = ".json";
}
public void writeHeader() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
Date startDate = new Date(context.startTime);
SimpleDateFormat startTimef = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat filef = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
SimpleDateFormat month = new SimpleDateFormat("MMMMM");
SimpleDateFormat year = new SimpleDateFormat("yyyy");
SimpleDateFormat day = new SimpleDateFormat("EEEEE");
startTimef.setTimeZone(TimeZone.getTimeZone("UTC"));
filef.setTimeZone(TimeZone.getTimeZone("UTC"));
month.setTimeZone(TimeZone.getTimeZone("UTC"));
year.setTimeZone(TimeZone.getTimeZone("UTC"));
day.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
buf.write("{" +
"\"RIDE\":{" +
"\"STARTTIME\":\"" + startTimef.format(startDate) + " UTC\"," +
"\"RECINTSECS\":1," +
"\"DEVICETYPE\":\"Android\"," +
"\"IDENTIFIER\":\"\"," +
"\"TAGS\":{" +
"\"Athlete\":\"" + settings.getString(context.getString(R.string.PREF_RIDER_NAME), "") + "\"," +
"\"Calendar Text\":\"Auto Recored Android Ride\"," +
"\"Change History\":\"\"," +
"\"Data\":\"\"," +
"\"Device\":\"\"," +
"\"Device Info\":\"\"," +
"\"File Format\":\"\"," +
"\"Filename\":\"\"," +
"\"Month\":\"" + month.format(startDate) +"\"," +
"\"Notes\":\"\"," +
"\"Objective\":\"\"," +
"\"Sport\":\"Bike\"," +
"\"Weekday\":\"" + day.format(startDate) + "\"," +
"\"Workout Code\":\"\"," +
"\"Year\":\"" + year.format(startDate) + "\"" +
"}," +
"\"SAMPLES\":[{\"SECS\":0}");
} catch (Exception e) {}
}
public void writeValues() {
try {
synchronized (buf) {
buf.write(",{");
buf.write("\"");
buf.write(RideService.KEYS[0]);
buf.write("\":");
buf.write(String.format("%f", context.currentValues[0]));
for (int i = 1; i < context.currentValues.length; i++) {
buf.write(",\"");
buf.write(RideService.KEYS[i]);
buf.write("\":");
buf.write(String.format("%f", context.currentValues[i]));
}
buf.write("}");
}
} catch (Exception e) {}
}
public void writeFooter() {
try {
buf.write("]}}");
} catch (Exception e) {}
super.writeFooter();
}
}

View File

@@ -0,0 +1,54 @@
package com.ridelogger.listners;
import com.dsi.ant.plugins.antplus.pcc.defines.DeviceState;
import com.dsi.ant.plugins.antplus.pccbase.PccReleaseHandle;
import com.dsi.ant.plugins.antplus.pccbase.AntPluginPcc.IDeviceStateChangeReceiver;
import com.dsi.ant.plugins.antplus.pccbase.AntPluginPcc.IPluginAccessResultReceiver;
import com.ridelogger.RideService;
/**
* Ant
* @author Chet Henry
* Listen to and log Ant+ events base class
*/
public abstract class Ant extends Base<Object>
{
protected PccReleaseHandle<?> releaseHandle; //Handle class
public IPluginAccessResultReceiver<?> mResultReceiver; //Receiver class
protected int deviceNumber = 0;
//setup listeners and logging
public Ant(int pDeviceNumber, RideService mContext)
{
super(mContext);
deviceNumber = pDeviceNumber;
}
public IDeviceStateChangeReceiver mDeviceStateChangeReceiver = new IDeviceStateChangeReceiver()
{
@Override
public void onDeviceStateChange(final DeviceState newDeviceState){
//if we lose a device zero out its values
if(newDeviceState.equals(DeviceState.DEAD)) {
zeroReadings();
}
}
};
abstract protected void requestAccess();
@Override
public void onDestroy()
{
if(releaseHandle != null) {
releaseHandle.close();
}
}
}

View File

@@ -0,0 +1,58 @@
package com.ridelogger.listners;
import com.ridelogger.RideService;
/**
* Base
* @author Chet Henry
* Base sensor class that has methods to time stamp are write to buffer
*/
public class Base<T>
{
public RideService context;
public Base(RideService mContext) {
context = mContext;
}
public void alterCurrentData(int key, float value)
{
synchronized (context.currentValues) {
context.currentValues[RideService.SECS] = getTs();
context.currentValues[key] = value;
context.fileFormat.writeValues();
}
}
public void alterCurrentData(int[] keys, float[] values)
{
synchronized (context.currentValues) {
context.currentValues[RideService.SECS] = getTs();
int i = 0;
for (int key : keys) {
context.currentValues[key] = values[i];
i++;
}
context.fileFormat.writeValues();
}
}
//get current time stamp
public float getTs() {
return (float) ((System.currentTimeMillis() - context.startTime) / 1000.0);
}
//Clean up my listeners here
public void onDestroy() {}
//zero any of my values
public void zeroReadings() {}
}

View File

@@ -0,0 +1,61 @@
package com.ridelogger.listners;
import com.ridelogger.RideService;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
/**
* Gps
* @author henry
* Listen and log gps events
*/
public class Gps extends Base<Gps>
{
public Gps(RideService mContext)
{
super(mContext);
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
//listen to gps events and log them
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
int[] keys = {
RideService.ALTITUDE,
RideService.KPH,
RideService.bearing,
RideService.gpsa,
RideService.LAT,
RideService.LON
};
float[] values = {
(float) location.getAltitude(),
location.getSpeed(),
location.getBearing(),
location.getAccuracy(),
(float) location.getLatitude(),
(float) location.getLongitude()
};
alterCurrentData(keys, values);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
}

View File

@@ -0,0 +1,69 @@
package com.ridelogger.listners;
import com.dsi.ant.plugins.antplus.pcc.AntPlusHeartRatePcc;
import com.dsi.ant.plugins.antplus.pcc.AntPlusHeartRatePcc.DataState;
import com.dsi.ant.plugins.antplus.pcc.AntPlusHeartRatePcc.IHeartRateDataReceiver;
import com.dsi.ant.plugins.antplus.pcc.defines.DeviceState;
import com.dsi.ant.plugins.antplus.pcc.defines.EventFlag;
import com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult;
import com.dsi.ant.plugins.antplus.pccbase.AntPluginPcc.IPluginAccessResultReceiver;
import com.ridelogger.RideService;
import java.math.BigDecimal;
import java.util.EnumSet;
/**
* HeartRate
* @author Chet Henry
* Listen to and log Ant+ HearRate events
*/
public class HeartRate extends Ant
{
public IPluginAccessResultReceiver<AntPlusHeartRatePcc> mResultReceiver;
public HeartRate(int pDeviceNumber, RideService mContext) {
super(pDeviceNumber, mContext);
mResultReceiver = new IPluginAccessResultReceiver<AntPlusHeartRatePcc>() {
//Handle the result, connecting to events on success or reporting failure to user.
@Override
public void onResultReceived(AntPlusHeartRatePcc result, RequestAccessResult resultCode, DeviceState initialDeviceState)
{
if(resultCode == com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult.SUCCESS) {
deviceNumber = result.getAntDeviceNumber();
result.subscribeHeartRateDataEvent(
new IHeartRateDataReceiver() {
@Override
public void onNewHeartRateData(final long estTimestamp, EnumSet<EventFlag> eventFlags, final int computedHeartRate, final long heartBeatCount, final BigDecimal heartBeatEventTime, final DataState dataState) {
alterCurrentData(RideService.HR, (float) computedHeartRate);
}
}
);
} else if(resultCode == com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult.SEARCH_TIMEOUT) {
if(deviceNumber != 0) {
requestAccess();
}
}
}
};
requestAccess();
}
@Override
protected void requestAccess() {
releaseHandle = AntPlusHeartRatePcc.requestAccess(context, deviceNumber, 0, mResultReceiver, mDeviceStateChangeReceiver);
}
@Override
public void zeroReadings()
{
alterCurrentData(RideService.HR, (float) 0.0);
}
}

View File

@@ -0,0 +1,223 @@
package com.ridelogger.listners;
import android.preference.PreferenceManager;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.CalculatedWheelDistanceReceiver;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.CalculatedWheelSpeedReceiver;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.DataSource;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.ICalculatedCrankCadenceReceiver;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.ICalculatedPowerReceiver;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.ICalculatedTorqueReceiver;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.IInstantaneousCadenceReceiver;
import com.dsi.ant.plugins.antplus.pcc.AntPlusBikePowerPcc.IRawPowerOnlyDataReceiver;
import com.dsi.ant.plugins.antplus.pcc.defines.DeviceState;
import com.dsi.ant.plugins.antplus.pcc.defines.EventFlag;
import com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult;
import com.dsi.ant.plugins.antplus.pccbase.AntPluginPcc.IPluginAccessResultReceiver;
import com.ridelogger.R;
import com.ridelogger.RideService;
import java.math.BigDecimal;
import java.util.EnumSet;
/**
* Power
* @author Chet Henry
* Listen to and log Ant+ Power events
*/
public class Power extends Ant
{
public BigDecimal wheelCircumferenceInMeters; //size of wheel to calculate speed
public IPluginAccessResultReceiver<AntPlusBikePowerPcc> mResultReceiver;
//setup listeners and logging
public Power(int pDeviceNumber, RideService mContext) {
super(pDeviceNumber, mContext);
wheelCircumferenceInMeters = new BigDecimal(
PreferenceManager.getDefaultSharedPreferences(context).getString(context.getString(R.string.PREF_WHEEL_SIZE), "2.096")
);
//Handle messages
mResultReceiver = new IPluginAccessResultReceiver<AntPlusBikePowerPcc>() {
//Handle the result, connecting to events on success or reporting failure to user.
@Override
public void onResultReceived(AntPlusBikePowerPcc result, RequestAccessResult resultCode, DeviceState initialDeviceState) {
if(resultCode == com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult.SUCCESS) {
deviceNumber = result.getAntDeviceNumber();
result.subscribeCalculatedPowerEvent(new ICalculatedPowerReceiver() {
@Override
public void onNewCalculatedPower(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedPower) {
alterCurrentData(RideService.WATTS, calculatedPower.floatValue());
}
}
);
result.subscribeCalculatedTorqueEvent(
new ICalculatedTorqueReceiver() {
@Override
public void onNewCalculatedTorque(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedTorque) {
alterCurrentData(RideService.NM, calculatedTorque.floatValue());
}
}
);
result.subscribeCalculatedCrankCadenceEvent(
new ICalculatedCrankCadenceReceiver() {
@Override
public void onNewCalculatedCrankCadence(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedCrankCadence) {
alterCurrentData(RideService.CAD, calculatedCrankCadence.floatValue());
}
}
);
result.subscribeCalculatedWheelSpeedEvent(
new CalculatedWheelSpeedReceiver(wheelCircumferenceInMeters) {
@Override
public void onNewCalculatedWheelSpeed(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedWheelSpeed)
{
alterCurrentData(RideService.KPH, calculatedWheelSpeed.floatValue());
}
}
);
result.subscribeCalculatedWheelDistanceEvent(
new CalculatedWheelDistanceReceiver(wheelCircumferenceInMeters) {
@Override
public void onNewCalculatedWheelDistance(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedWheelDistance)
{
alterCurrentData(RideService.KM, calculatedWheelDistance.floatValue());
}
}
);
result.subscribeInstantaneousCadenceEvent(
new IInstantaneousCadenceReceiver() {
@Override
public void onNewInstantaneousCadence(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final int instantaneousCadence)
{
alterCurrentData(RideService.CAD, (float) instantaneousCadence);
}
}
);
result.subscribeRawPowerOnlyDataEvent(
new IRawPowerOnlyDataReceiver() {
@Override
public void onNewRawPowerOnlyData(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long powerOnlyUpdateEventCount, final int instantaneousPower, final long accumulatedPower)
{
alterCurrentData(RideService.WATTS, (float) instantaneousPower);
}
}
);
/*result.subscribePedalPowerBalanceEvent(
new IPedalPowerBalanceReceiver() {
@Override
public void onNewPedalPowerBalance(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final boolean rightPedalIndicator, final int pedalPowerPercentage)
{
alterCurrentData(RideService.LTE, pedalPowerPercentage);
}
}
);
result.subscribeRawWheelTorqueDataEvent(
new IRawWheelTorqueDataReceiver() {
@Override
public void onNewRawWheelTorqueData(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long wheelTorqueUpdateEventCount, final long accumulatedWheelTicks, final BigDecimal accumulatedWheelPeriod, final BigDecimal accumulatedWheelTorque)
{
alterCurrentData(RideService.NM, accumulatedWheelTorque);
}
}
);
result.subscribeRawCrankTorqueDataEvent(
new IRawCrankTorqueDataReceiver() {
@Override
public void onNewRawCrankTorqueData(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long crankTorqueUpdateEventCount, final long accumulatedCrankTicks, final BigDecimal accumulatedCrankPeriod, final BigDecimal accumulatedCrankTorque)
{
alterCurrentData(RideService.NM, accumulatedCrankTorque);
}
}
);
result.subscribeTorqueEffectivenessEvent(
new ITorqueEffectivenessReceiver() {
@Override
public void onNewTorqueEffectiveness(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long powerOnlyUpdateEventCount, final BigDecimal leftTorqueEffectiveness, final BigDecimal rightTorqueEffectiveness)
{
int[] keys = {
RideService.LTE,
RideService.RTE
};
float[] values = {
leftTorqueEffectiveness,
rightTorqueEffectiveness
}
alterCurrentData(keys, values);
}
}
);
result.subscribePedalSmoothnessEvent(new IPedalSmoothnessReceiver() {
@Override
public void onNewPedalSmoothness(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long powerOnlyUpdateEventCount, final boolean separatePedalSmoothnessSupport, final BigDecimal leftOrCombinedPedalSmoothness, final BigDecimal rightPedalSmoothness)
{
int[] keys = {
RideService.SNPLC,
RideService.SNPR
};
float[] values = {
leftOrCombinedPedalSmoothness,
rightPedalSmoothness
}
alterCurrentData(map);
}
}
);*/
} else if(resultCode == com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult.SEARCH_TIMEOUT) {
if(deviceNumber != 0) {
requestAccess();
}
}
}
};
requestAccess();
}
protected void requestAccess() {
releaseHandle = AntPlusBikePowerPcc.requestAccess(context, deviceNumber, 0, mResultReceiver, mDeviceStateChangeReceiver);
}
@Override
public void zeroReadings()
{
int[] keys = {
RideService.WATTS,
RideService.NM,
RideService.CAD,
RideService.KPH,
RideService.KM
};
float[] values = {
(float) 0.0,
(float) 0.0,
(float) 0.0,
(float) 0.0,
(float) 0.0
};
alterCurrentData(keys, values);
}
}

View File

@@ -0,0 +1,222 @@
package com.ridelogger.listners;
import java.util.Timer;
import java.util.TimerTask;
import com.ridelogger.R;
import com.ridelogger.RideService;
import android.content.Context;
import android.content.SharedPreferences;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.preference.PreferenceManager;
/**
* Sensors
* @author Chet Henry
* Listen to android sensor events and log them
*/
public class Sensors extends Base<Object>
{
public static final double CRASHMAGNITUDE = 30.0;
private SensorEventListener luxListner;
private SensorEventListener accelListner;
private SensorEventListener pressListner;
private SensorEventListener tempListner;
private SensorEventListener fieldListner;
public Sensors(RideService mContext)
{
super(mContext);
SensorManager mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
Sensor mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
Sensor mAccel = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
Sensor mPress = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
Sensor mTemp = mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
Sensor mField = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
if(mLight != null) {
luxListner = new SensorEventListener() {
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
alterCurrentData(RideService.lux, event.values[0]);
}
};
mSensorManager.registerListener(luxListner, mLight, 3000000);
}
if(mAccel != null) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
if(settings.getBoolean(context.getString(R.string.PREF_DETECT_CRASH), false)) {
accelListner = new SensorEventListener() {
private boolean crashed = false;
private Timer timer = new Timer();
private double[] St = new double[3];
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
int[] keys = {
RideService.ms2x,
RideService.ms2y,
RideService.ms2z
};
alterCurrentData(keys, event.values);
if(St.length == 0) {
St[0] = event.values[0];
St[1] = event.values[1];
St[2] = event.values[2];
}
St[0] = 0.6 * event.values[0] + 0.4 * St[0];
St[1] = 0.6 * event.values[1] + 0.4 * St[1];
St[2] = 0.6 * event.values[2] + 0.4 * St[2];
double amag = Math.sqrt(St[0]*St[0] + St[1]*St[1] + St[2]*St[2]);
if(amag > CRASHMAGNITUDE && !crashed) {
crashed = true;
context.phoneCrash(amag);
if(!Float.isNaN(context.currentValues[RideService.KPH])) {
timer.schedule(
new TimerTask() {
@Override
public void run() {
//if we are traveling less then 1km/h at 5 seconds after crash detection
// confirm the crash
if(1.0 > context.currentValues[RideService.KPH]) {
context.phoneCrashConfirm();
} else {
crashed = false;
context.phoneHome();
}
}
},
5000
); //in five sec reset
} else {
timer.schedule(
new TimerTask() {
@Override
public void run() {
crashed = false;
}
},
180000
); //in three min reset
}
}
}
};
} else {
accelListner = new SensorEventListener() {
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
int[] keys = {
RideService.ms2x,
RideService.ms2y,
RideService.ms2z
};
alterCurrentData(keys, event.values);
}
};
}
mSensorManager.registerListener(accelListner, mAccel, SensorManager.SENSOR_DELAY_NORMAL);
}
if(mPress != null) {
pressListner = new SensorEventListener() {
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
alterCurrentData(RideService.press, event.values[0]);
}
};
mSensorManager.registerListener(pressListner, mPress, 3000000);
}
if(mTemp != null) {
tempListner = new SensorEventListener() {
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
alterCurrentData(RideService.temp, event.values[0]);
}
};
mSensorManager.registerListener(tempListner, mTemp, 3000000);
}
if(mField != null) {
fieldListner = new SensorEventListener() {
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
int[] keys = {
RideService.uTx,
RideService.uTy,
RideService.uTz
};
alterCurrentData(keys, event.values);
}
};
mSensorManager.registerListener(fieldListner, mField, SensorManager.SENSOR_DELAY_NORMAL);
}
}
@Override
public void onDestroy()
{
SensorManager mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
if(luxListner != null) {
mSensorManager.unregisterListener(luxListner);
}
if(accelListner != null) {
mSensorManager.unregisterListener(accelListner);
}
if(pressListner != null) {
mSensorManager.unregisterListener(pressListner);
}
if(tempListner != null) {
mSensorManager.unregisterListener(tempListner);
}
if(fieldListner != null) {
mSensorManager.unregisterListener(fieldListner);
}
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,48 @@
<mockup version="1.0" skin="sketch" fontFace="Balsamiq Sans" measuredW="591" measuredH="228" mockupW="566" mockupH="205">
<controls>
<control controlID="0" controlTypeID="com.balsamiq.mockups::Canvas" x="25" y="23" w="566" h="205" measuredW="100" measuredH="70" zOrder="0" locked="false" isInGroup="-1"/>
<control controlID="1" controlTypeID="com.balsamiq.mockups::HRule" x="31" y="37" w="560" h="-1" measuredW="100" measuredH="10" zOrder="1" locked="false" isInGroup="-1"/>
<control controlID="2" controlTypeID="com.balsamiq.mockups::Label" x="34" y="23" w="-1" h="-1" measuredW="110" measuredH="21" zOrder="2" locked="false" isInGroup="-1">
<controlProperties>
<text>Compare%20Intervals</text>
</controlProperties>
</control>
<control controlID="3" controlTypeID="com.balsamiq.mockups::CheckBox" x="40" y="191" w="-1" h="-1" measuredW="110" measuredH="22" zOrder="3" locked="false" isInGroup="-1">
<controlProperties>
<text>Compare%20Delta</text>
</controlProperties>
</control>
<control controlID="4" controlTypeID="com.balsamiq.mockups::Canvas" x="34" y="52" w="414" h="133" measuredW="100" measuredH="70" zOrder="4" locked="false" isInGroup="-1">
<controlProperties>
<borderStyle>roundedDotted</borderStyle>
</controlProperties>
</control>
<control controlID="6" controlTypeID="com.balsamiq.mockups::List" x="456" y="47" w="128" h="174" measuredW="100" measuredH="174" zOrder="5" locked="false" isInGroup="-1">
<controlProperties>
<text>May%202x20s%0ABarhatch%20Climbs%0ASub%204%20ToSH%0AMarmottes%0AAdH%20Ascents%0ABox%20Hill%202009%0ABox%20Hill%202013%0ABox%20Hill%20All</text>
</controlProperties>
</control>
<control controlID="7" controlTypeID="com.balsamiq.mockups::TextInput" x="170" y="189" w="225" h="-1" measuredW="138" measuredH="27" zOrder="6" locked="false" isInGroup="-1">
<controlProperties>
<text>Compare%20Set%20Name...</text>
</controlProperties>
</control>
<control controlID="8" controlTypeID="com.balsamiq.mockups::Button" x="402" y="189" w="-1" h="-1" measuredW="45" measuredH="27" zOrder="7" locked="false" isInGroup="-1">
<controlProperties>
<text>Add</text>
</controlProperties>
</control>
<control controlID="10" controlTypeID="com.balsamiq.mockups::RoundButton" x="569" y="24" w="15" h="18" measuredW="32" measuredH="32" zOrder="8" locked="false" isInGroup="-1">
<controlProperties>
<icon>CircledXIcon%7Cxsmall</icon>
<text/>
</controlProperties>
</control>
<control controlID="11" controlTypeID="com.balsamiq.mockups::Label" x="48" y="62" w="387" h="-1" measuredW="180" measuredH="21" zOrder="9" locked="false" isInGroup="-1">
<controlProperties>
<color>10066329</color>
<text>Drag%20and%20drop%20intervals%20here%20...</text>
</controlProperties>
</control>
</controls>
</mockup>

BIN
doc/design/Compare Pane.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

View File

@@ -0,0 +1,610 @@
<mockup version="1.0" skin="sketch" fontFace="Balsamiq Sans" measuredW="1997" measuredH="568" mockupW="1935" mockupH="553">
<controls>
<control controlID="0" controlTypeID="com.balsamiq.mockups::TitleWindow" x="62" y="61" w="355" h="400" measuredW="450" measuredH="400" zOrder="0" locked="false" isInGroup="-1">
<controlProperties>
<bottomheight>0</bottomheight>
<dragger>false</dragger>
<text>Chart%20Controls%20%5BLTM%20Chart%5D</text>
</controlProperties>
</control>
<control controlID="1" controlTypeID="com.balsamiq.mockups::TabBar" x="84" y="101" w="312" h="284" measuredW="219" measuredH="100" zOrder="1" locked="false" isInGroup="-1">
<controlProperties>
<text>Basic%2C%20Preset%2C%20Custom*</text>
</controlProperties>
</control>
<control controlID="2" controlTypeID="com.balsamiq.mockups::Button" x="321" y="413" w="75" h="27" measuredW="53" measuredH="27" zOrder="2" locked="false" isInGroup="-1">
<controlProperties>
<text>Done</text>
</controlProperties>
</control>
<control controlID="3" controlTypeID="com.balsamiq.mockups::List" x="101" y="164" w="-1" h="-1" measuredW="100" measuredH="126" zOrder="3" locked="false" isInGroup="-1">
<controlProperties>
<text>Best%0AFormula%0AMetric%0AMeasure</text>
</controlProperties>
</control>
<control controlID="4" controlTypeID="com.balsamiq.mockups::List" x="201" y="164" w="171" h="126" measuredW="100" measuredH="126" zOrder="4" locked="false" isInGroup="-1">
<controlProperties>
<text>Power%205s%0A%3D60m%20WPK%20*%20RPE%0AAverage_Power%0AWeight</text>
</controlProperties>
</control>
<control controlID="5" controlTypeID="com.balsamiq.mockups::TextInput" x="100" y="140" w="101" h="-1" measuredW="44" measuredH="27" zOrder="5" locked="false" isInGroup="-1">
<controlProperties>
<text>Type</text>
</controlProperties>
</control>
<control controlID="6" controlTypeID="com.balsamiq.mockups::TextInput" x="201" y="140" w="171" h="-1" measuredW="56" measuredH="27" zOrder="6" locked="false" isInGroup="-1">
<controlProperties>
<text>Details</text>
</controlProperties>
</control>
<control controlID="7" controlTypeID="com.balsamiq.mockups::Button" x="101" y="298" w="75" h="27" measuredW="46" measuredH="27" zOrder="7" locked="false" isInGroup="-1">
<controlProperties>
<text>Edit</text>
</controlProperties>
</control>
<control controlID="8" controlTypeID="com.balsamiq.mockups::Button" x="294" y="298" w="36" h="27" measuredW="31" measuredH="27" zOrder="8" locked="false" isInGroup="-1">
<controlProperties>
<text>+</text>
</controlProperties>
</control>
<control controlID="9" controlTypeID="com.balsamiq.mockups::Button" x="336" y="298" w="36" h="27" measuredW="27" measuredH="27" zOrder="9" locked="false" isInGroup="-1">
<controlProperties>
<text>-</text>
</controlProperties>
</control>
<control controlID="12" controlTypeID="com.balsamiq.mockups::Arrow" x="345" y="15" w="225" h="143" measuredW="150" measuredH="100" zOrder="10" locked="false" isInGroup="-1">
<controlProperties>
<backgroundAlpha>1</backgroundAlpha>
<direction>bottom</direction>
<rightArrow>false</rightArrow>
<text>Lists%20all%20data%20series%20that%20will%20be%20available%20on%20the%20chart</text>
</controlProperties>
</control>
<control controlID="13" controlTypeID="com.balsamiq.mockups::TitleWindow" x="481" y="55" w="489" h="507" measuredW="450" measuredH="400" zOrder="11" locked="false" isInGroup="-1">
<controlProperties>
<text>Edit%20Data%20Series%20%5BMetric/Measure%5D</text>
</controlProperties>
</control>
<control controlID="14" controlTypeID="com.balsamiq.mockups::RadioButton" x="497" y="156" w="136" h="22" measuredW="53" measuredH="22" zOrder="12" locked="false" isInGroup="-1">
<controlProperties>
<state>selected</state>
<text>Metric</text>
</controlProperties>
</control>
<control controlID="15" controlTypeID="com.balsamiq.mockups::RadioButton" x="497" y="184" w="136" h="22" measuredW="43" measuredH="22" zOrder="13" locked="false" isInGroup="-1">
<controlProperties>
<text>Best</text>
</controlProperties>
</control>
<control controlID="16" controlTypeID="com.balsamiq.mockups::RadioButton" x="497" y="212" w="136" h="22" measuredW="63" measuredH="22" zOrder="14" locked="false" isInGroup="-1">
<controlProperties>
<text>Formula</text>
</controlProperties>
</control>
<control controlID="17" controlTypeID="com.balsamiq.mockups::RadioButton" x="497" y="130" w="136" h="22" measuredW="68" measuredH="22" zOrder="15" locked="false" isInGroup="-1">
<controlProperties>
<state>selected</state>
<text>Measure</text>
</controlProperties>
</control>
<control controlID="18" controlTypeID="com.balsamiq.mockups::Arrow" x="155" y="242" w="326" h="69" measuredW="150" measuredH="100" zOrder="16" locked="false" isInGroup="-1">
<controlProperties>
<backgroundAlpha>0.25</backgroundAlpha>
<direction>bottom</direction>
<leftArrow>false</leftArrow>
<rightArrow>true</rightArrow>
<text/>
</controlProperties>
</control>
<control controlID="19" controlTypeID="com.balsamiq.mockups::Arrow" x="306" y="242" w="175" h="69" measuredW="150" measuredH="100" zOrder="17" locked="false" isInGroup="-1">
<controlProperties>
<backgroundAlpha>0.25</backgroundAlpha>
<direction>bottom</direction>
<leftArrow>false</leftArrow>
<rightArrow>false</rightArrow>
<text/>
</controlProperties>
</control>
<control controlID="20" controlTypeID="com.balsamiq.mockups::List" x="615" y="126" w="317" h="113" measuredW="100" measuredH="132" zOrder="18" locked="false" isInGroup="-1">
<controlProperties>
<text>Peak%201m%20Power%0APeak%201m%20WPK%0APeak%201s%20Power%0APeak%201s%20WPK%0APeak%205s%20Power%0APeak%205s%20WPK</text>
</controlProperties>
</control>
<control controlID="21" controlTypeID="com.balsamiq.mockups::TextInput" x="615" y="102" w="317" h="-1" measuredW="58" measuredH="27" zOrder="19" locked="false" isInGroup="-1">
<controlProperties>
<text>Metrics</text>
</controlProperties>
</control>
<control controlID="22" controlTypeID="com.balsamiq.mockups::VerticalScrollBar" x="916" y="126" w="-1" h="113" measuredW="16" measuredH="100" zOrder="20" locked="false" isInGroup="-1"/>
<control controlID="24" controlTypeID="com.balsamiq.mockups::Label" x="498" y="101" w="-1" h="-1" measuredW="30" measuredH="21" zOrder="21" locked="false" isInGroup="-1">
<controlProperties>
<text>Type</text>
</controlProperties>
</control>
<control controlID="26" controlTypeID="com.balsamiq.mockups::Label" x="497" y="264" w="104" h="-1" measuredW="35" measuredH="21" zOrder="22" locked="false" isInGroup="-1">
<controlProperties>
<text>Name</text>
</controlProperties>
</control>
<control controlID="27" controlTypeID="com.balsamiq.mockups::Label" x="497" y="304" w="131" h="-1" measuredW="106" measuredH="21" zOrder="23" locked="false" isInGroup="-1">
<controlProperties>
<text>Axis%20Label%20/%20Units</text>
</controlProperties>
</control>
<control controlID="28" controlTypeID="com.balsamiq.mockups::Label" x="497" y="342" w="131" h="-1" measuredW="36" measuredH="21" zOrder="24" locked="false" isInGroup="-1">
<controlProperties>
<text>Curve</text>
</controlProperties>
</control>
<control controlID="29" controlTypeID="com.balsamiq.mockups::Label" x="497" y="378" w="131" h="-1" measuredW="44" measuredH="21" zOrder="25" locked="false" isInGroup="-1">
<controlProperties>
<text>Symbol</text>
</controlProperties>
</control>
<control controlID="30" controlTypeID="com.balsamiq.mockups::Label" x="499" y="416" w="131" h="-1" measuredW="35" measuredH="21" zOrder="26" locked="false" isInGroup="-1">
<controlProperties>
<text>Stack</text>
</controlProperties>
</control>
<control controlID="31" controlTypeID="com.balsamiq.mockups::Label" x="499" y="448" w="131" h="-1" measuredW="32" measuredH="21" zOrder="27" locked="false" isInGroup="-1">
<controlProperties>
<text>Color</text>
</controlProperties>
</control>
<control controlID="32" controlTypeID="com.balsamiq.mockups::Label" x="499" y="484" w="111" h="-1" measuredW="55" measuredH="21" zOrder="28" locked="false" isInGroup="-1">
<controlProperties>
<text>Fill%20Curve</text>
</controlProperties>
</control>
<control controlID="33" controlTypeID="com.balsamiq.mockups::TextInput" x="618" y="261" w="97" h="-1" measuredW="79" measuredH="26" zOrder="29" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="34" controlTypeID="com.balsamiq.mockups::TextInput" x="616" y="301" w="97" h="-1" measuredW="79" measuredH="26" zOrder="30" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="35" controlTypeID="com.balsamiq.mockups::ComboBox" x="618" y="340" w="95" h="-1" measuredW="55" measuredH="24" zOrder="31" locked="false" isInGroup="-1">
<controlProperties>
<text>Line</text>
</controlProperties>
</control>
<control controlID="36" controlTypeID="com.balsamiq.mockups::ComboBox" x="618" y="378" w="95" h="-1" measuredW="64" measuredH="24" zOrder="32" locked="false" isInGroup="-1">
<controlProperties>
<text>Circle</text>
</controlProperties>
</control>
<control controlID="37" controlTypeID="com.balsamiq.mockups::CheckBox" x="627" y="417" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="33" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="38" controlTypeID="com.balsamiq.mockups::CheckBox" x="627" y="483" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="34" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="39" controlTypeID="com.balsamiq.mockups::ColorPicker" x="620" y="447" w="-1" h="-1" measuredW="26" measuredH="28" zOrder="35" locked="false" isInGroup="-1"/>
<control controlID="40" controlTypeID="com.balsamiq.mockups::Label" x="738" y="264" w="104" h="-1" measuredW="52" measuredH="21" zOrder="36" locked="false" isInGroup="-1">
<controlProperties>
<text>Highlight</text>
</controlProperties>
</control>
<control controlID="41" controlTypeID="com.balsamiq.mockups::Label" x="736" y="304" w="104" h="-1" measuredW="47" measuredH="21" zOrder="37" locked="false" isInGroup="-1">
<controlProperties>
<text>Outliers</text>
</controlProperties>
</control>
<control controlID="42" controlTypeID="com.balsamiq.mockups::Label" x="738" y="342" w="104" h="-1" measuredW="50" measuredH="21" zOrder="38" locked="false" isInGroup="-1">
<controlProperties>
<text>Baseline</text>
</controlProperties>
</control>
<control controlID="43" controlTypeID="com.balsamiq.mockups::Label" x="738" y="416" w="104" h="-1" measuredW="84" measuredH="21" zOrder="39" locked="false" isInGroup="-1">
<controlProperties>
<text>Smooth%20Curve</text>
</controlProperties>
</control>
<control controlID="44" controlTypeID="com.balsamiq.mockups::Label" x="738" y="446" w="104" h="-1" measuredW="63" measuredH="21" zOrder="40" locked="false" isInGroup="-1">
<controlProperties>
<text>Trend%20Line</text>
</controlProperties>
</control>
<control controlID="45" controlTypeID="com.balsamiq.mockups::CheckBox" x="842" y="417" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="41" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="46" controlTypeID="com.balsamiq.mockups::CheckBox" x="842" y="448" w="20" h="21" measuredW="20" measuredH="21" zOrder="42" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="47" controlTypeID="com.balsamiq.mockups::NumericStepper" x="837" y="263" w="95" h="-1" measuredW="41" measuredH="24" zOrder="43" locked="false" isInGroup="-1">
<controlProperties>
<text>0</text>
</controlProperties>
</control>
<control controlID="48" controlTypeID="com.balsamiq.mockups::NumericStepper" x="837" y="301" w="95" h="-1" measuredW="41" measuredH="24" zOrder="44" locked="false" isInGroup="-1">
<controlProperties>
<text>0</text>
</controlProperties>
</control>
<control controlID="49" controlTypeID="com.balsamiq.mockups::NumericStepper" x="837" y="341" w="95" h="-1" measuredW="61" measuredH="24" zOrder="45" locked="false" isInGroup="-1">
<controlProperties>
<text>-999</text>
</controlProperties>
</control>
<control controlID="50" controlTypeID="com.balsamiq.mockups::TitleWindow" x="991" y="57" w="489" h="507" measuredW="450" measuredH="400" zOrder="46" locked="false" isInGroup="-1">
<controlProperties>
<text>Edit%20Data%20Series%20%5BFormula%5D</text>
</controlProperties>
</control>
<control controlID="51" controlTypeID="com.balsamiq.mockups::RadioButton" x="1007" y="158" w="136" h="22" measuredW="53" measuredH="22" zOrder="47" locked="false" isInGroup="-1">
<controlProperties>
<state>up</state>
<text>Metric</text>
</controlProperties>
</control>
<control controlID="52" controlTypeID="com.balsamiq.mockups::RadioButton" x="1007" y="186" w="136" h="22" measuredW="43" measuredH="22" zOrder="48" locked="false" isInGroup="-1">
<controlProperties>
<text>Best</text>
</controlProperties>
</control>
<control controlID="53" controlTypeID="com.balsamiq.mockups::RadioButton" x="1007" y="214" w="136" h="22" measuredW="63" measuredH="22" zOrder="49" locked="false" isInGroup="-1">
<controlProperties>
<state>selected</state>
<text>Formula</text>
</controlProperties>
</control>
<control controlID="54" controlTypeID="com.balsamiq.mockups::RadioButton" x="1007" y="132" w="136" h="22" measuredW="68" measuredH="22" zOrder="50" locked="false" isInGroup="-1">
<controlProperties>
<text>Measure</text>
</controlProperties>
</control>
<control controlID="58" controlTypeID="com.balsamiq.mockups::Label" x="1008" y="103" w="-1" h="-1" measuredW="30" measuredH="21" zOrder="51" locked="false" isInGroup="-1">
<controlProperties>
<text>Type</text>
</controlProperties>
</control>
<control controlID="59" controlTypeID="com.balsamiq.mockups::Label" x="1007" y="266" w="104" h="-1" measuredW="35" measuredH="21" zOrder="52" locked="false" isInGroup="-1">
<controlProperties>
<text>Name</text>
</controlProperties>
</control>
<control controlID="60" controlTypeID="com.balsamiq.mockups::Label" x="1007" y="306" w="131" h="-1" measuredW="106" measuredH="21" zOrder="53" locked="false" isInGroup="-1">
<controlProperties>
<text>Axis%20Label%20/%20Units</text>
</controlProperties>
</control>
<control controlID="61" controlTypeID="com.balsamiq.mockups::Label" x="1007" y="344" w="131" h="-1" measuredW="36" measuredH="21" zOrder="54" locked="false" isInGroup="-1">
<controlProperties>
<text>Curve</text>
</controlProperties>
</control>
<control controlID="62" controlTypeID="com.balsamiq.mockups::Label" x="1007" y="380" w="131" h="-1" measuredW="44" measuredH="21" zOrder="55" locked="false" isInGroup="-1">
<controlProperties>
<text>Symbol</text>
</controlProperties>
</control>
<control controlID="63" controlTypeID="com.balsamiq.mockups::Label" x="1009" y="418" w="131" h="-1" measuredW="35" measuredH="21" zOrder="56" locked="false" isInGroup="-1">
<controlProperties>
<text>Stack</text>
</controlProperties>
</control>
<control controlID="64" controlTypeID="com.balsamiq.mockups::Label" x="1009" y="450" w="131" h="-1" measuredW="32" measuredH="21" zOrder="57" locked="false" isInGroup="-1">
<controlProperties>
<text>Color</text>
</controlProperties>
</control>
<control controlID="65" controlTypeID="com.balsamiq.mockups::Label" x="1009" y="486" w="111" h="-1" measuredW="55" measuredH="21" zOrder="58" locked="false" isInGroup="-1">
<controlProperties>
<text>Fill%20Curve</text>
</controlProperties>
</control>
<control controlID="66" controlTypeID="com.balsamiq.mockups::TextInput" x="1128" y="263" w="97" h="-1" measuredW="79" measuredH="26" zOrder="59" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="67" controlTypeID="com.balsamiq.mockups::TextInput" x="1126" y="303" w="97" h="-1" measuredW="79" measuredH="26" zOrder="60" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="68" controlTypeID="com.balsamiq.mockups::ComboBox" x="1128" y="342" w="95" h="-1" measuredW="55" measuredH="24" zOrder="61" locked="false" isInGroup="-1">
<controlProperties>
<text>Line</text>
</controlProperties>
</control>
<control controlID="69" controlTypeID="com.balsamiq.mockups::ComboBox" x="1128" y="380" w="95" h="-1" measuredW="64" measuredH="24" zOrder="62" locked="false" isInGroup="-1">
<controlProperties>
<text>Circle</text>
</controlProperties>
</control>
<control controlID="70" controlTypeID="com.balsamiq.mockups::CheckBox" x="1137" y="419" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="63" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="71" controlTypeID="com.balsamiq.mockups::CheckBox" x="1137" y="485" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="64" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="72" controlTypeID="com.balsamiq.mockups::ColorPicker" x="1130" y="449" w="-1" h="-1" measuredW="26" measuredH="28" zOrder="65" locked="false" isInGroup="-1"/>
<control controlID="73" controlTypeID="com.balsamiq.mockups::Label" x="1248" y="266" w="104" h="-1" measuredW="52" measuredH="21" zOrder="66" locked="false" isInGroup="-1">
<controlProperties>
<text>Highlight</text>
</controlProperties>
</control>
<control controlID="74" controlTypeID="com.balsamiq.mockups::Label" x="1246" y="306" w="104" h="-1" measuredW="47" measuredH="21" zOrder="67" locked="false" isInGroup="-1">
<controlProperties>
<text>Outliers</text>
</controlProperties>
</control>
<control controlID="75" controlTypeID="com.balsamiq.mockups::Label" x="1248" y="344" w="104" h="-1" measuredW="50" measuredH="21" zOrder="68" locked="false" isInGroup="-1">
<controlProperties>
<text>Baseline</text>
</controlProperties>
</control>
<control controlID="76" controlTypeID="com.balsamiq.mockups::Label" x="1248" y="418" w="104" h="-1" measuredW="84" measuredH="21" zOrder="69" locked="false" isInGroup="-1">
<controlProperties>
<text>Smooth%20Curve</text>
</controlProperties>
</control>
<control controlID="77" controlTypeID="com.balsamiq.mockups::Label" x="1248" y="448" w="104" h="-1" measuredW="63" measuredH="21" zOrder="70" locked="false" isInGroup="-1">
<controlProperties>
<text>Trend%20Line</text>
</controlProperties>
</control>
<control controlID="78" controlTypeID="com.balsamiq.mockups::CheckBox" x="1352" y="419" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="71" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="79" controlTypeID="com.balsamiq.mockups::CheckBox" x="1352" y="450" w="20" h="21" measuredW="20" measuredH="21" zOrder="72" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="80" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1347" y="265" w="95" h="-1" measuredW="41" measuredH="24" zOrder="73" locked="false" isInGroup="-1">
<controlProperties>
<text>0</text>
</controlProperties>
</control>
<control controlID="81" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1347" y="303" w="95" h="-1" measuredW="41" measuredH="24" zOrder="74" locked="false" isInGroup="-1">
<controlProperties>
<text>0</text>
</controlProperties>
</control>
<control controlID="82" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1347" y="343" w="95" h="-1" measuredW="61" measuredH="24" zOrder="75" locked="false" isInGroup="-1">
<controlProperties>
<text>-999</text>
</controlProperties>
</control>
<control controlID="83" controlTypeID="com.balsamiq.mockups::SearchBox" x="1128" y="103" w="315" h="-1" measuredW="120" measuredH="25" zOrder="76" locked="false" isInGroup="-1">
<controlProperties>
<text>%3D%20Formula...</text>
</controlProperties>
</control>
<control controlID="84" controlTypeID="com.balsamiq.mockups::TextArea" x="1135" y="125" w="293" h="124" measuredW="200" measuredH="140" zOrder="77" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="85" controlTypeID="com.balsamiq.mockups::VerticalScrollBar" x="1412" y="126" w="-1" h="123" measuredW="16" measuredH="100" zOrder="78" locked="false" isInGroup="-1"/>
<control controlID="87" controlTypeID="com.balsamiq.mockups::Label" x="1147" y="130" w="-1" h="-1" measuredW="35" measuredH="21" zOrder="79" locked="false" isInGroup="-1">
<controlProperties>
<text>Fields</text>
</controlProperties>
</control>
<control controlID="88" controlTypeID="com.balsamiq.mockups::Label" x="1308" y="131" w="70" h="-1" measuredW="59" measuredH="21" zOrder="80" locked="false" isInGroup="-1">
<controlProperties>
<text>Operators</text>
</controlProperties>
</control>
<control controlID="89" controlTypeID="com.balsamiq.mockups::Button" x="1147" y="151" w="-1" h="-1" measuredW="107" measuredH="27" zOrder="81" locked="false" isInGroup="-1">
<controlProperties>
<text>1s%20Peak%20Power</text>
</controlProperties>
</control>
<control controlID="90" controlTypeID="com.balsamiq.mockups::Button" x="1149" y="183" w="-1" h="-1" measuredW="107" measuredH="27" zOrder="82" locked="false" isInGroup="-1">
<controlProperties>
<text>1s%20Peak%20Power</text>
</controlProperties>
</control>
<control controlID="91" controlTypeID="com.balsamiq.mockups::Button" x="1149" y="215" w="-1" h="-1" measuredW="107" measuredH="27" zOrder="83" locked="false" isInGroup="-1">
<controlProperties>
<text>1s%20Peak%20Power</text>
</controlProperties>
</control>
<control controlID="92" controlTypeID="com.balsamiq.mockups::Button" x="1301" y="152" w="85" h="27" measuredW="49" measuredH="27" zOrder="84" locked="false" isInGroup="-1">
<controlProperties>
<text>AND</text>
</controlProperties>
</control>
<control controlID="93" controlTypeID="com.balsamiq.mockups::Button" x="1303" y="184" w="85" h="27" measuredW="42" measuredH="27" zOrder="85" locked="false" isInGroup="-1">
<controlProperties>
<text>OR</text>
</controlProperties>
</control>
<control controlID="94" controlTypeID="com.balsamiq.mockups::Button" x="1305" y="216" w="85" h="27" measuredW="40" measuredH="27" zOrder="86" locked="false" isInGroup="-1">
<controlProperties>
<text>%3E%3D</text>
</controlProperties>
</control>
<control controlID="95" controlTypeID="com.balsamiq.mockups::VerticalScrollBar" x="1266" y="126" w="-1" h="123" measuredW="16" measuredH="100" zOrder="87" locked="false" isInGroup="-1"/>
<control controlID="96" controlTypeID="com.balsamiq.mockups::TitleWindow" x="1508" y="61" w="489" h="507" measuredW="450" measuredH="400" zOrder="88" locked="false" isInGroup="-1">
<controlProperties>
<text>Edit%20Data%20Series%20%5BBests%5D</text>
</controlProperties>
</control>
<control controlID="97" controlTypeID="com.balsamiq.mockups::RadioButton" x="1524" y="162" w="136" h="22" measuredW="53" measuredH="22" zOrder="89" locked="false" isInGroup="-1">
<controlProperties>
<state>up</state>
<text>Metric</text>
</controlProperties>
</control>
<control controlID="98" controlTypeID="com.balsamiq.mockups::RadioButton" x="1524" y="190" w="136" h="22" measuredW="43" measuredH="22" zOrder="90" locked="false" isInGroup="-1">
<controlProperties>
<state>selected</state>
<text>Best</text>
</controlProperties>
</control>
<control controlID="99" controlTypeID="com.balsamiq.mockups::RadioButton" x="1524" y="218" w="136" h="22" measuredW="63" measuredH="22" zOrder="91" locked="false" isInGroup="-1">
<controlProperties>
<state>up</state>
<text>Formula</text>
</controlProperties>
</control>
<control controlID="100" controlTypeID="com.balsamiq.mockups::RadioButton" x="1524" y="136" w="136" h="22" measuredW="68" measuredH="22" zOrder="92" locked="false" isInGroup="-1">
<controlProperties>
<text>Measure</text>
</controlProperties>
</control>
<control controlID="101" controlTypeID="com.balsamiq.mockups::Label" x="1525" y="107" w="-1" h="-1" measuredW="30" measuredH="21" zOrder="93" locked="false" isInGroup="-1">
<controlProperties>
<text>Type</text>
</controlProperties>
</control>
<control controlID="102" controlTypeID="com.balsamiq.mockups::Label" x="1524" y="270" w="104" h="-1" measuredW="35" measuredH="21" zOrder="94" locked="false" isInGroup="-1">
<controlProperties>
<text>Name</text>
</controlProperties>
</control>
<control controlID="103" controlTypeID="com.balsamiq.mockups::Label" x="1524" y="310" w="131" h="-1" measuredW="106" measuredH="21" zOrder="95" locked="false" isInGroup="-1">
<controlProperties>
<text>Axis%20Label%20/%20Units</text>
</controlProperties>
</control>
<control controlID="104" controlTypeID="com.balsamiq.mockups::Label" x="1524" y="348" w="131" h="-1" measuredW="36" measuredH="21" zOrder="96" locked="false" isInGroup="-1">
<controlProperties>
<text>Curve</text>
</controlProperties>
</control>
<control controlID="105" controlTypeID="com.balsamiq.mockups::Label" x="1524" y="384" w="131" h="-1" measuredW="44" measuredH="21" zOrder="97" locked="false" isInGroup="-1">
<controlProperties>
<text>Symbol</text>
</controlProperties>
</control>
<control controlID="106" controlTypeID="com.balsamiq.mockups::Label" x="1526" y="422" w="131" h="-1" measuredW="35" measuredH="21" zOrder="98" locked="false" isInGroup="-1">
<controlProperties>
<text>Stack</text>
</controlProperties>
</control>
<control controlID="107" controlTypeID="com.balsamiq.mockups::Label" x="1526" y="454" w="131" h="-1" measuredW="32" measuredH="21" zOrder="99" locked="false" isInGroup="-1">
<controlProperties>
<text>Color</text>
</controlProperties>
</control>
<control controlID="108" controlTypeID="com.balsamiq.mockups::Label" x="1526" y="490" w="111" h="-1" measuredW="55" measuredH="21" zOrder="100" locked="false" isInGroup="-1">
<controlProperties>
<text>Fill%20Curve</text>
</controlProperties>
</control>
<control controlID="109" controlTypeID="com.balsamiq.mockups::TextInput" x="1645" y="267" w="97" h="-1" measuredW="79" measuredH="26" zOrder="101" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="110" controlTypeID="com.balsamiq.mockups::TextInput" x="1643" y="307" w="97" h="-1" measuredW="79" measuredH="26" zOrder="102" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="111" controlTypeID="com.balsamiq.mockups::ComboBox" x="1645" y="346" w="95" h="-1" measuredW="55" measuredH="24" zOrder="103" locked="false" isInGroup="-1">
<controlProperties>
<text>Line</text>
</controlProperties>
</control>
<control controlID="112" controlTypeID="com.balsamiq.mockups::ComboBox" x="1645" y="384" w="95" h="-1" measuredW="64" measuredH="24" zOrder="104" locked="false" isInGroup="-1">
<controlProperties>
<text>Circle</text>
</controlProperties>
</control>
<control controlID="113" controlTypeID="com.balsamiq.mockups::CheckBox" x="1654" y="423" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="105" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="114" controlTypeID="com.balsamiq.mockups::CheckBox" x="1654" y="489" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="106" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="115" controlTypeID="com.balsamiq.mockups::ColorPicker" x="1647" y="453" w="-1" h="-1" measuredW="26" measuredH="28" zOrder="107" locked="false" isInGroup="-1"/>
<control controlID="116" controlTypeID="com.balsamiq.mockups::Label" x="1765" y="270" w="104" h="-1" measuredW="52" measuredH="21" zOrder="108" locked="false" isInGroup="-1">
<controlProperties>
<text>Highlight</text>
</controlProperties>
</control>
<control controlID="117" controlTypeID="com.balsamiq.mockups::Label" x="1763" y="310" w="104" h="-1" measuredW="47" measuredH="21" zOrder="109" locked="false" isInGroup="-1">
<controlProperties>
<text>Outliers</text>
</controlProperties>
</control>
<control controlID="118" controlTypeID="com.balsamiq.mockups::Label" x="1765" y="348" w="104" h="-1" measuredW="50" measuredH="21" zOrder="110" locked="false" isInGroup="-1">
<controlProperties>
<text>Baseline</text>
</controlProperties>
</control>
<control controlID="119" controlTypeID="com.balsamiq.mockups::Label" x="1765" y="422" w="104" h="-1" measuredW="84" measuredH="21" zOrder="111" locked="false" isInGroup="-1">
<controlProperties>
<text>Smooth%20Curve</text>
</controlProperties>
</control>
<control controlID="120" controlTypeID="com.balsamiq.mockups::Label" x="1765" y="452" w="104" h="-1" measuredW="63" measuredH="21" zOrder="112" locked="false" isInGroup="-1">
<controlProperties>
<text>Trend%20Line</text>
</controlProperties>
</control>
<control controlID="121" controlTypeID="com.balsamiq.mockups::CheckBox" x="1869" y="423" w="-1" h="-1" measuredW="20" measuredH="21" zOrder="113" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="122" controlTypeID="com.balsamiq.mockups::CheckBox" x="1869" y="454" w="20" h="21" measuredW="20" measuredH="21" zOrder="114" locked="false" isInGroup="-1">
<controlProperties>
<text/>
</controlProperties>
</control>
<control controlID="123" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1864" y="269" w="95" h="-1" measuredW="41" measuredH="24" zOrder="115" locked="false" isInGroup="-1">
<controlProperties>
<text>0</text>
</controlProperties>
</control>
<control controlID="124" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1864" y="307" w="95" h="-1" measuredW="41" measuredH="24" zOrder="116" locked="false" isInGroup="-1">
<controlProperties>
<text>0</text>
</controlProperties>
</control>
<control controlID="125" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1864" y="347" w="95" h="-1" measuredW="61" measuredH="24" zOrder="117" locked="false" isInGroup="-1">
<controlProperties>
<text>-999</text>
</controlProperties>
</control>
<control controlID="126" controlTypeID="com.balsamiq.mockups::NumericStepper" x="1694" y="147" w="95" h="-1" measuredW="41" measuredH="24" zOrder="118" locked="false" isInGroup="-1">
<controlProperties>
<text>5</text>
</controlProperties>
</control>
<control controlID="127" controlTypeID="com.balsamiq.mockups::ComboBox" x="1797" y="145" w="95" h="-1" measuredW="69" measuredH="24" zOrder="119" locked="false" isInGroup="-1">
<controlProperties>
<text>Minute</text>
</controlProperties>
</control>
<control controlID="128" controlTypeID="com.balsamiq.mockups::Label" x="1694" y="177" w="95" h="-1" measuredW="30" measuredH="21" zOrder="120" locked="false" isInGroup="-1">
<controlProperties>
<text>Peak</text>
</controlProperties>
</control>
<control controlID="129" controlTypeID="com.balsamiq.mockups::ComboBox" x="1797" y="175" w="95" h="-1" measuredW="66" measuredH="24" zOrder="121" locked="false" isInGroup="-1">
<controlProperties>
<text>Power</text>
</controlProperties>
</control>
</controls>
</mockup>

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

View File

@@ -1,7 +1,7 @@
This is GC3-FAQ.info, produced by makeinfo version 4.13 from
This is GC3-FAQ.info, produced by makeinfo version 5.2 from
GC3-FAQ.texinfo.
This manual is for Golden Cheetah, version 3.0.
This manual is for Golden Cheetah, version 3.1.
Copyright (C) 2013 Mark Liversedge
@@ -11,7 +11,7 @@ File: GC3-FAQ.info, Node: Top, Next: Top, Prev: Top
title
*****
This manual is for GoldenCheetah, version 3.0.
This manual is for GoldenCheetah, version 3.1.
* Menu:
@@ -33,29 +33,30 @@ File: GC3-FAQ.info, Node: MOST COMMON QUESTIONS OF ALL, Next: GENERAL, Prev:
1.1 How do I override / manually enter TSS for a ride?
======================================================
The details chart on the analysis view allows you to override metrics
on the metrics tab. By default the most common metrics are listed,
including average HR, distance and so on. From v3.0 the default setup
The details chart on the analysis view allows you to override metrics on
the metrics tab. By default the most common metrics are listed,
including average HR, distance and so on. From v3.1 the default setup
will also include TSS as a metric you can override here.
If the metric is not there you will need to configure GoldenCheetah to
allow it to be shown. This is simple to do and described in 3.9 below.
The 3.1 upgrade process should have added it to the Metric tab if it was
not already there.
1.2 How do I add or remove a chart?
===================================
To add a new chart to the view you can select from the + menu on the
right hand side of the scope bar (the scope bar is underneath the
toolbar and lets you select from Home, Analysis, Train etc).
To add a new chart to the view you can select from the hamburger menu on
the right hand side of the chart bar.
Depending upon which view you are on the charts available will differ.
For example realtime plots only appear on the Train view, whilst charts
that work with individual rides will only appear on the analysis view.
To remove a chart, when you mouse over a chart (in tabbed or tiled
mode) a small triangle will appear in the top left of the chart. This
is a menu drop down, if you click on it you will see a `Close' option.
This is the option to remove (close) the chart.
To remove a chart, when you mouse over a chart (in tabbed or tiled mode)
the word 'More...' will appear in the top left of the chart. This is a
menu drop down, if you click on it you will see a 'Close' option. This
is the option to remove (close) the chart.
1.3 Can I enter my weight and track/plot it?
============================================
@@ -63,16 +64,16 @@ This is the option to remove (close) the chart.
Weight can be maintained in 3 ways;
* Every athlete is setup with a weight value - this is the fallback
value should no other weight measure be available. It can be
found under preferences and athlete.
value should no other weight measure be available. It can be found
under preferences and athlete.
* The 'Weight' field can be maintained in the details screen. This
is found on the 'Workout' tab in the details screen by
default. Any entry here will be used for this ride ONLY.
* The 'Weight' field can be maintained in the details screen. This
is found on the 'Workout' tab in the details screen by default.
Any entry here will be used for this ride ONLY.
* You can download weight from a withings scale. This is performed
manually via the menu option Tools->Get Withings Data. This is
then used to update the local measures database.
* You can download weight from a withings scale. This is performed
manually via the menu option Tools->Get Withings Data. This is
then used to update the local measures database.
When calculating W/KG the Activity value is used if present, if not we
then fall back to the last Withing measure that was collected, and if
@@ -85,20 +86,25 @@ plotted separately in the LTM plots.
1.4 How do I plot x sec power best?
===================================
As of v3.0 it is still not possible to plot custom durations for power
bests. We are looking to add this in version 3.1, but for now you can
only plot 1s, 5s, 10s, 15s, 20s, 30s, 1min, 2min, 5min, 10min, 20min,
30min and 60min bests.
In v3.1 it is now possible to plot custom durations for any data series
on a metric trends chart in the Trends view. You will need to add a
curve for the data series and select 'Best' instead of 'Metric' or
'Estimate' on the curve settings.
For v3.0 or earlier it is still not possible to plot custom durations
for power bests. We are looking to add this in version 3.1, but for now
you can only plot 1s, 5s, 10s, 15s, 20s, 30s, 1min, 2min, 5min, 10min,
20min, 30min and 60min bests.
1.5 I can't find Aerolab / Performance Manager?
===============================================
By default we do not add these charts to the layout. Aerolab can be
added to the Analysis view via the '+' menu found to the right hand
side of the GoldenCheetah scope bar.
By default we do not add these charts to the layout. Aerolab can be
added to the Analysis view via the '+' menu found to the right hand side
of the GoldenCheetah scope bar.
Similarly, the Performance manager can be added to the Home layout via
the '+' menu. We may deprecate this chart in the near future since the
the '+' menu. We may deprecate this chart in the near future since the
LTM charts can be used to plot a PMC and we expect to implement an
interactive PMC for planning in v3.1.
@@ -107,31 +113,31 @@ interactive PMC for planning in v3.1.
It has been deprecated since the Diary view allows you to summarise by
day, week and month and add charts to the view that summarise for the
selection. As the weekly summary was fixed on specific charts and did
not handle other selections (e.g. monthly) it has been deprecated in
selection. As the weekly summary was fixed on specific charts and did
not handle other selections (e.g. monthly) it has been deprecated in
view of the diary view.
At present you can treat the Diary view as you would have the weekly
summary - they offer the same functionality. We expect the diary view
summary - they offer the same functionality. We expect the diary view
to extend to planned workouts when we implement planning functionality
in v3.1.
1.7 Where are all the chart settings?
=====================================
All chart settings can be found under the drop down menu that appears
in the top left hand corner of a chart when you mouse over it. They
will appear as a popup dialog box.
All chart settings can be found under the drop down menu that appears in
the top left hand corner of a chart when you mouse over it, titled
'More...'. They will appear as a popup dialog box.
Additionally, when you move the cursor towards the title of a chart in
a view that is tabbed (not tiled) then a small selection of the most
Additionally, when you move the cursor towards the title of a chart in a
view that is tabbed (not tiled) then a small selection of the most
important settings for the chart will appear for convenience.
1.8 Where is the preferences / options panel?
=============================================
On a Mac the configurations page can be found under 'GoldenCheetah ->
Preferences' on the main menu. Whilst on all other platforms it is
Preferences' on the main menu. Whilst on all other platforms it is
found via 'Tools -> Options'.
We do this to match the general guidelines for the operating system.
@@ -142,15 +148,35 @@ We do this to match the general guidelines for the operating system.
Activities are coloured according to keywords embedded in their details
(metadata) you can configure the field that is used and the values that
are matched and the colours they are shown in from the preferences pane
via the 'Data Fields' toolbar option then select Notes Processing. The
via the 'Data Fields' toolbar option then select Notes Processing. The
keywords and related words are scanned for to determine if the
associated colour should be used for this ride.
They are processed in the order they are defined with the first match
being returned. Take care when using values such as 'TT' and 'race'
since these can also be part of an English word (e.g. ATTEMPT contains
being returned. Take care when using values such as 'TT' and 'race'
since these can also be part of an English word (e.g. ATTEMPT contains
'TT' and graceful contains 'race'.
1.10 GoldenCheetah doesn't find my PowerTap on Ubuntu Linux.
============================================================
If you're using the USB cradle (as opposed to the older, serial one),
the FTDI driver sometimes conflicts with the braille terminal in the
default Ubuntu installation. Try unplugging the PT cradle from the
computer and uninstalling brltty: sudo apt-get remove brltty Then plug
the device back in and it should work.
1.11 GoldenCheetah.dmg installation didn't seem to work.
========================================================
Are you running OS X Snow Leopard (10.6) or later? You need to be. If
you are, and you're still having this problem, open Terminal (in
Applications -> Utilities) and type this at the prompt:
/Applications/GoldenCheetah.app/Contents/MacOS/GoldenCheetah then press
<return> and send an email to the mailing list with whatever it prints
out. We'll help you debug it.

File: GC3-FAQ.info, Node: GENERAL, Next: METRICS, Prev: MOST COMMON QUESTIONS OF ALL, Up: Top
@@ -161,31 +187,31 @@ File: GC3-FAQ.info, Node: GENERAL, Next: METRICS, Prev: MOST COMMON QUESTIONS
==========================
GoldenCheetah is primarily a program for cyclists that own a power
meter. It allows them to record, track and review their performance
against recorded data. It also allows you to ride your turbo and
meter. It allows them to record, track and review their performance
against recorded data. It also allows you to ride your turbo and
collect data as you ride.
If you do not have a power meter then some of the functionality will
not be of use to you as a cyclist. But you can still record and track
progress. We support HR based TRIMP metrics for a HR based PMC for
If you do not have a power meter then some of the functionality will not
be of use to you as a cyclist. But you can still record and track
progress. We support HR based TRIMP metrics for a HR based PMC for
example.
2.2 What is a good book or resource on training with power?
===========================================================
Unquestionably the bible for working with a power meter is Training and
Racing with a Power Meter by Hunter Allan and Andy Coggan. Make sure
Racing with a Power Meter by Hunter Allan and Andy Coggan. Make sure
you look at the 2nd edition since it is revised quite dramatically.
Whilst it is heavily biased towards WKO+ as a software package most of
Whilst it is heavily biased towards WKO+ as a software package most of
the functions of note are also available in GoldenCheetah.
2.3 Where can I download the installer for GoldenCheetah ?
==========================================================
Stable releases are available from `http://www.goldencheetah.org'
whilst the latest and greatest code build is available from
`http://goldencheetah.stand2surf.net'. Development builds are for the
brave, since they may contain bugs. In reality the development builds
Stable releases are available from <http://www.goldencheetah.org> whilst
the latest and greatest code build is available from
<http://goldencheetah.stand2surf.net>. Development builds are for the
brave, since they may contain bugs. In reality the development builds
are a changing feast and often contain latest fixes too.
2.4 Where can I get the source code?
@@ -193,23 +219,23 @@ are a changing feast and often contain latest fixes too.
The GoldenCheetah source code is hosted on github and can be cloned
using the following url;
`git://github.com/GoldenCheetah/GoldenCheetah.git'
'git://github.com/GoldenCheetah/GoldenCheetah.git'
2.5 I am a triathlete is GoldenCheetah appropriate for me?
==========================================================
GoldenCheetah is not a multi-sport program. For tracking cycling
performance it is a good choice. But if you are looking for running and
GoldenCheetah is not a multi-sport program. For tracking cycling
performance it is a good choice. But if you are looking for running and
swimming metrics and tracking then these features are not available at
present. It is an excellent choice for analysing cycling aspects of
present. It is an excellent choice for analysing cycling aspects of
triathlon, or working on the trainer.
2.6 Is there a mailing list?
============================
The mailing list for GoldenCheetah users is maintained via Google
Groups at
`http://groups.google.com/forum/?fromgroups=#forum/golden-cheetah-users'
The mailing list for GoldenCheetah users is maintained via Google Groups
at
<http://groups.google.com/forum/?fromgroups=#forum/golden-cheetah-users>
the first post you make is moderated and may take a while to appear.
Once your first post is made you can make future posts without
moderation.
@@ -217,16 +243,16 @@ moderation.
2.7 How do I report a bug or request a new feature?
===================================================
We use Github issues to record bugs and feature requests. You will need
We use Github issues to record bugs and feature requests. You will need
to create an account on github and then post a new request or bug at
`http://www.github.com/GoldenCheetah/GoldenCheetah/issues'
<http://www.github.com/GoldenCheetah/GoldenCheetah/issues>
2.8 How can I contribute?
=========================
Patches are most welcome via the mailing list or a pull request in
github. Of equal importance is the timely reporting of bugs and help in
testing fixes. We also desperately need volunteers to translate into
github. Of equal importance is the timely reporting of bugs and help in
testing fixes. We also desperately need volunteers to translate into
non-English languages and help with writing documentation including the
maintenance of this FAQ.
@@ -236,8 +262,8 @@ list.
2.9 Can I donate to the project?
================================
We are an open source project. Our software is developed by a
community. We do not have any facility to collect funding or spend it!
We are an open source project. Our software is developed by a
community. We do not have any facility to collect funding or spend it!
We would rather you spread the word if you think our software is good,
and maybe help out with documentation, tutorials or translations if you
can.
@@ -251,70 +277,70 @@ File: GC3-FAQ.info, Node: METRICS, Next: DATA, Prev: GENERAL, Up: Top
3.1 What is the difference between xPower, NP and Daniels EqP?
==============================================================
They all serve the same purpose - to express the variable power you
have generated over a given period of time as a single value. This is
so you can quantify the intensity of the ride and therefore the
training stress of the ride.
They all serve the same purpose - to express the variable power you have
generated over a given period of time as a single value. This is so you
can quantify the intensity of the ride and therefore the training stress
of the ride.
In practice, NP and xPower are largely the same, whilst Daniels EqP
place much higher emphasise on upper intensity work. For more info on
place much higher emphasise on upper intensity work. For more info on
xPower see Dr Skiba's paper on BikeScore
`http://www.physfarm.com/bikescore.pdf'
<http://www.physfarm.com/bikescore.pdf>
3.2 What is the difference between CP and FTP?
==============================================
CP is a shorthand for CP60 in GoldenCheetah, and is computed using the
Scherer/Monod protocol using 3 and 20 minutes. Functional Threshold
Power (FTP) is an actual measure of the power an athlete sustains for
60 minutes.
Scherer/Monod protocol using 3 and 20 minutes. Functional Threshold
Power (FTP) is an actual measure of the power an athlete sustains for 60
minutes.
Since it is very difficult for an athlete to maintain the desired
intensity FTP 'reality' tends to result in a number that is much lower
than CP 'theory'. Often users will consider the two as the same.
than CP 'theory'. Often users will consider the two as the same.
In GC we compute TSS and BikeScore using your 'CP' value. If you set it
to your FTP value TSS will be accurate, BikeScore is likely to be
lower. And if you set it to your CP value BikeScore will be accurate,
but TSS will be overstated.
In GC we compute TSS and BikeScore using your 'CP' value. If you set it
to your FTP value TSS will be accurate, BikeScore is likely to be lower.
And if you set it to your CP value BikeScore will be accurate, but TSS
will be overstated.
3.3 Why does my CP chart show higher watts for a longer duration?
=================================================================
A higher power average for a longer time is possible if an effort has
been "book ended". If, for example, you did a massive 30 second
effort, followed by freewheeling for 29:30 then another massive 30
second effort, then your best average for a continuous 30 minutes would
in fact be lower that your best average for a continuous 30minutes and
30 seconds. (Thanks for Jon Hill from the Golden Cheetah Users mailing
been "book ended". If, for example, you did a massive 30 second effort,
followed by freewheeling for 29:30 then another massive 30 second
effort, then your best average for a continuous 30 minutes would in fact
be lower that your best average for a continuous 30minutes and 30
seconds. (Thanks for Jon Hill from the Golden Cheetah Users mailing
list for this example).
3.4 Can I set a different CP/FTP for different reasons e.g. CP/FTP on a trainer?
================================================================================
We allow you to override the CP value for a specific ride by setting
the "CP" field to the value you wish to use for the ride in question.
We do not have a concept of 'separate' Cps for different purposes - you
will need to specify the CP when the data is imported into GC. But this
We allow you to override the CP value for a specific ride by setting the
"CP" field to the value you wish to use for the ride in question. We do
not have a concept of 'separate' Cps for different purposes - you will
need to specify the CP when the data is imported into GC. But this
allows you to make manual adjustments.
We provide this functionality at user request - we do not endorse the
concept of multiple CP values. But we do recognise the ongoing debate
concept of multiple CP values. But we do recognise the ongoing debate
regarding physiological stress from working on a trainer vs on the road.
3.5 How do I seed the CTL for my PMC?
=====================================
You can seed the starting CTL (we call it LTS, for long term stress)
when you define a season. That way it is re-usable in a number of
places. To do this you edit the season (date range) in the Home View
when you define a season. That way it is re-usable in a number of
places. To do this you edit the season (date range) in the Home View
and can set the Starting LTS.
3.6 Why is elevation different in GoldenCheetah to my other training software / website?
========================================================================================
Different programs will use different hysteresis values to smooth the
small changes in altitude. In GC we use a hysteresis value of 3m.
small changes in altitude. In GC we use a hysteresis value of 3m.
If this is of great concern you can adjust the hysteresis value in
preferences under the general tab.
@@ -322,70 +348,70 @@ preferences under the general tab.
3.7 Why is a metric e.g. TSS or average power different in GoldenCheetah to Garmin Connect?
===========================================================================================
The algorithms for calculating TSS, AP etc are static. They are
The algorithms for calculating TSS, AP etc are static. They are
implemented exactly the same way in GoldenCheetah, Garmin Connect,
TrainingPeaks etc. The algorithms are extremely simple and not prone to
TrainingPeaks etc. The algorithms are extremely simple and not prone to
difficulty in implementation.
However, how each application treats pauses and stops or loss of data
accounts for most differences. In GoldenCheetah we always calculate
AP,TSS etc including stop time. Other applications choose to ignore or
accounts for most differences. In GoldenCheetah we always calculate
AP,TSS etc including stop time. Other applications choose to ignore or
smooth segments of short duration.
In addition, if there are anomalies in your data, with large gaps or
even time going backwards, this will drastically affect GoldenCheetah's
calculations.
We NEVER attempt to interpret data anomalies - if the results are not
as you would expect you will need to correct the data. We do not
'silently' fix the data for you. There is no secret sauce in
We NEVER attempt to interpret data anomalies - if the results are not as
you would expect you will need to correct the data. We do not
'silently' fix the data for you. There is no secret sauce in
GoldenCheetah, we are open and transparent with your data.
3.8 How do I set the metrics shown for intervals in the various summaries?
==========================================================================
In the GoldenCheetah preference pane under the Metrics tab you can
choose the metrics that will be shown in the ride summary charts and
the metrics that will be shown in the interval summary in the analysis
choose the metrics that will be shown in the ride summary charts and the
metrics that will be shown in the interval summary in the analysis
sidebar.
3.9 How do I add a metric to the details screen (so I can override it) ?
========================================================================
If the metric you want (e.g. TSS) is not shown then you will need to
add it via the GoldenCheetah preferences pane. On Mac this is from the
menu option GoldenCheetah->Preferences whilst on Windows and Linux it
is under Tools->Options.
If the metric you want (e.g. TSS) is not shown then you will need to
add it via the GoldenCheetah preferences pane. On Mac this is from the
menu option GoldenCheetah->Preferences whilst on Windows and Linux it is
under Tools->Options.
You will need to select 'Data Fields' option from preferences toolbar
and then the 'fields' tab. You will see a list of fields that are
associated with a particular screen tab. If you scroll down you should
and then the 'fields' tab. You will see a list of fields that are
associated with a particular screen tab. If you scroll down you should
find entries for the 'Metrics' screen tab, you can insert a new entry
here with the '+' button. You should make sure the new entry is called
here with the '+' button. You should make sure the new entry is called
exactly the same thing as the metric in question.
For 'TSS' this is relatively straight forward. For others, e.g.
For 'TSS' this is relatively straight forward. For others, e.g.
'Average Heart Rate' you must make sure that the name includes spaces
etc. Once your metric has been added to the configuration you should
etc. Once your metric has been added to the configuration you should
save that and return to the details screen where you can now maintain
it.
If you are creating a manual entry then there is no 'details' tab in
the dialog. Once you have created the entry (and again in this case TSS
can be entered in the dialog) you should go to the details tab to
maintain any other specific fields. The manual entry dialog is designed
to be simple and accept only the most common of entries.
If you are creating a manual entry then there is no 'details' tab in the
dialog. Once you have created the entry (and again in this case TSS can
be entered in the dialog) you should go to the details tab to maintain
any other specific fields. The manual entry dialog is designed to be
simple and accept only the most common of entries.
3.10 Can you calculate gradient, virtual power or other derived series from the ride data?
==========================================================================================
Not in 3.0. We may introduce derived data series in the future.
Not in 3.1. We plan to extend this functionality in v3.2.
3.11 Can I export metrics or access the metric database GC uses?
================================================================
The metrics are stored within a Sqlite 3 Database called 'metricDBv3'
that can be found in the athlete directory. You can use any Sqlite 3
that can be found in the athlete directory. You can use any Sqlite 3
tools to query and work with the db.
Alternatively you can export the db in its entirety using the
@@ -408,19 +434,19 @@ To join two rides together (making one longer ride from two rides) you
can copy rows in the activity editor and paste special in the ride
editor (right click) and then select append mode.
If you wish to merge rides, that is much harder and would need to be
performed outside of GC or by cutting and pasting columns in the
activity editor.
If you wish to merge rides, in v3.1 there is a new Activity->Merge
wizard that will walk you through merging ride files and also provide
the ability to synchronise timestamps.
4.2 How can I find 'spikes' or specific values in activity data?
================================================================
The activity editor has a function to find data on its toolbar. You can
The activity editor has a function to find data on its toolbar. You can
specify a range or upper or lower limit and find values less than,
greater than or between a range of values.
Additionally, the editor will scan the file looking for anomalies -
where the data appears to be out of normal ranges. These are shown with
where the data appears to be out of normal ranges. These are shown with
a wiggly red line in the editor and can also be listed by clicking on
the anomalies icon on the editor toolbar.
@@ -430,24 +456,24 @@ anomalies in the currently selected ride.
4.3 How can I fix 'spikes' or 'anomalies' in activity data?
===========================================================
You can either manually edit the values in the activity editor (there
is full undo and redo in the editor). Or you can use the fix tools that
You can either manually edit the values in the activity editor (there is
full undo and redo in the editor). Or you can use the fix tools that
are listed under the tool menu option (fix power spikes, fix gaps in
recording, fix gps errors, fix torque.
Each of the fix tools opens a dialog that displays texts to explain
what the fix tool does.
Each of the fix tools opens a dialog that displays texts to explain what
the fix tool does.
4.4 How can I add/remove a field to edit on the details screen?
===============================================================
The fields (metadata) that is editable can be configured in the
preferences pane under the data fields tab. Where no screen is
preferences pane under the data fields tab. Where no screen is
specified (its left blank) it will not be made available.
GoldenCheetah ships with a number of fields defined in the config but
with no screen set. If you wish to use them simply set the screen tab
to the tab you would like it to be shown on. To remove a field set the
to the tab you would like it to be shown on. To remove a field set the
field tab to blank.
4.5 What are 'special fields' ?
@@ -459,10 +485,9 @@ purposes.
Some examples include;
Weight - used in W/KG calculations, Sport and Workout code are used
when exporting to other file formats, Identifier is used to assign a
UUID to the activity when it is uploaded to online services and so
on.
Weight - used in W/KG calculations, Sport and Workout code are used when
exporting to other file formats, Identifier is used to assign a UUID to
the activity when it is uploaded to online services and so on.
There is a full list of special fields and their meaning in the Golden
Cheetah user guide appendices.
@@ -470,8 +495,8 @@ Cheetah user guide appendices.
4.6 How do I find/add/sort/delete/edit intervals ?
==================================================
The context menu (on the right hand side of the splitter handle) for
the interval sidebar in Analysis view contains a number of options for
The context menu (on the right hand side of the splitter handle) for the
interval sidebar in Analysis view contains a number of options for
working with intervals.
Additionally, you can click and drag on the performance (aka ride) plot
@@ -486,13 +511,13 @@ Activity->Export allows you to export the activity to csv, fitlog, gc
4.8 Can I use GC to convert data from one format to another on the command line?
================================================================================
No. It is something we may add in v3.1
No. It is something we may add in v3.2
4.9 Can I delete an athlete and all his/her data?
=================================================
No. It must be done manually by removing the athlete directory via the
operating system. Please ensure you do this when GoldenCheetah is not
No. It must be done manually by removing the athlete directory via the
operating system. Please ensure you do this when GoldenCheetah is not
running.

@@ -505,7 +530,7 @@ File: GC3-FAQ.info, Node: UPLOADING AND DOWNLOADING, Next: SEASONS AND EVENTS,
==================================================
The Sport field in TrainingPeaks must have very specific values,
although this is not documented in the XML Schema. We recommend using a
although this is not documented in the XML Schema. We recommend using a
sport of "Bike" if you plan on uploading rides to training peaks.
5.2 Why does download from TrainingPeaks say I need a premium account?
@@ -514,30 +539,35 @@ sport of "Bike" if you plan on uploading rides to training peaks.
Training Peaks only allow paid up members to get access to their data.
If you are using a free service they do not let you retrieve your data.
5.3 Why is data uploaded to Strava all wrong?
=============================================
In general Strava will only use GPS data. If your ride does not contain
GPS data then Strava is not likely to play nice. In addition many of
the other data series will be ignored. This is related to Strava data
processing in V2.0 of their API.
We always upload as TCX since the JSON flavour of their API appears to
have less functionality.
5.4 What settings do I need to get GoldenCheetah to upload to my Google Calendar?
5.3 What settings do I need to get GoldenCheetah to upload to my Google Calendar?
=================================================================================
The upload to Google Calendar uses their CalDAV API, and as such needs
to specify a collection. This means when entering the details in the
to specify a collection. This means when entering the details in the
passwords pane of preferences you should use the following for the
caldav url:
`https://www.google.com/calendar/dav/xxxx@gmail.com/events/'
<https://www.google.com/calendar/dav/xxxx@gmail.com/events/>
Where xxxx is your username. The username will need to be repeated in
Where xxxx is your username. The username will need to be repeated in
the username field and obviously set the password too.
5.4 When setting up my Withings wifi scales where do I get the userid and key ?
===============================================================================
You will need to login to your Withings account
(<http://my.withings.com>) and click on the 'share' button at the top of
the dashboard. From there you will get a popup box with lots of
options.
If you click on 'share on my website' you will be greeted with a number
of code snippets you can embed in a web page. If you look closely in
the top right hand corner there will be a box containing the user id and
public key. These are the two values you need to enter into the options
dialog.
You will now be able to retrieve withings data via the tools menu.

File: GC3-FAQ.info, Node: SEASONS AND EVENTS, Next: CHARTS, Prev: UPLOADING AND DOWNLOADING, Up: Top
@@ -547,19 +577,31 @@ File: GC3-FAQ.info, Node: SEASONS AND EVENTS, Next: CHARTS, Prev: UPLOADING A
6.1 Why are there different types of seasons?
=============================================
This is to help with planning functions. As of v3 there is no real
This is to help with planning functions. As of v3 there is no real
distinction made. Adhoc seasons are expected to be used solely as date
ranges and have no associated plan. Whilst other season types may
contain plans. This is only relevant for planning functions that are
contain plans. This is only relevant for planning functions that are
not available yet.
6.2 What is event used for?
===========================
It is only used to annotate a LTM chart - so you can show an 'event'
that happened at a particular date. There are no rules about what
constitutes and event. It could be a race, a training camp or just a
day that was particularly meaningful e.g. illness, crash.
that happened at a particular date. There are no rules about what
constitutes and event. It could be a race, a training camp or just a
day that was particularly meaningful e.g. illness, crash.
6.3 How do create/edit/delete seasons and events?
=================================================
Seasons and Events are created and edited in the sidebar for the Home
view. Seasons are listed under date ranges, whilst events are listed
under the events sidebar item. In both cases they can be created and
deleted from the sidebar item's drop down menu.
Please note that in v3.1 events can only be created when a user season
is selected, since events are associated with a particular season. This
constraint will be removed in v3.2.

File: GC3-FAQ.info, Node: CHARTS, Next: INDEX, Prev: SEASONS AND EVENTS, Up: Top
@@ -577,85 +619,70 @@ similarly 'This' 'month' and prior '2' is a month 2 months ago, whilst
'This' 'month' prior and 0 is just this month.
7.2 How does the mean max chart calculate CP when showing power?
================================================================
The CP algorithm searches your best power for two durations; for
anaerobic efforts it looks between 15s and 1min, for aerobic it looks
for best efforts between 10mins and an hour.
Once it has found these two best values it will curve fit the two to
enable the 60min value to be extracted. Bear in mind this is a
theoretical number and as described above is applicable to the
BikeScore algorithm. The value for FTP that the TSS algorithm requires
is simply the highest value for 60mins for the time period, assuming
you have performed a 60minute test recently.
7.3 How should I use Aerolab?
7.2 How should I use Aerolab?
=============================
The following is a brief piece of advice from Robert Chung, from a
discussion on the Golden Cheetah Users mailing list:
Ideally, you'll want calm conditions (both in terms of wind and
traffic) but here's a quickie test you can do just to get a handle
on what to do. Try to find a loop without stop signs, or an
out-and-back with maybe a little dip or something in the middle. Make
sure you won't get hit by a car and have good sight lines. I just go
around my block a few times. Do a loop in the drops, then another
loop faster, then a loop slower; then repeat with your hands on the
hoods.
Ideally, you'll want calm conditions (both in terms of wind and traffic)
but here's a quickie test you can do just to get a handle on what to do.
Try to find a loop without stop signs, or an out-and-back with maybe a
little dip or something in the middle. Make sure you won't get hit by a
car and have good sight lines. I just go around my block a few times.
Do a loop in the drops, then another loop faster, then a loop slower;
then repeat with your hands on the hoods.
Weigh yourself and the bike and ballpark the air density.
See whether you can come close to modeling the "true" elevation profile
by sliding the CdA slider around. Even with this informal test, as
long as the wind isn't blowing too hard, you ought to be able to
see a difference between the loops where you were in the drops and
the loops where you on the hoods, and to spot little bumps and dips in
the road.
by sliding the CdA slider around. Even with this informal test, as long
as the wind isn't blowing too hard, you ought to be able to see a
difference between the loops where you were in the drops and the loops
where you on the hoods, and to spot little bumps and dips in the road.
There is also an overview of Virtual Elevation to measure aerodynamics
in this YouTube video from the power seminar at Interbike 2011 given by
Jim Meyer the founder of Quarq:
`http://www.youtube.com/watch?v=b8tJnFE_BFg&feature=youtu.be&t=27m58s'
<http://www.youtube.com/watch?v=b8tJnFE_BFg&feature=youtu.be&t=27m58s>
Finally, Robert Chung's original paper is included in the docs section
of the GoldenCheetah repository, you can it up here (click on 'View
Raw' to download):
of the GoldenCheetah repository, you can it up here (click on 'View Raw'
to download):
`https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/contrib/ChungVE.pdf'
<https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/contrib/ChungVE.pdf>
7.4 My map doesn't show?
7.3 My map doesn't show?
========================
This is most likely because you have a proxy that requires
authentication or session details. We do not have sophisticated support
for internet proxy servers. We will re-use the operating system
authentication or session details. We do not have sophisticated support
for internet proxy servers. We will re-use the operating system
settings where they are configured.
7.5 What is the treemap plot used for?
7.4 What is the treemap plot used for?
======================================
Typically it is used to visualise where you spend your time or where
you get best results. It is not particularly useful if you do not
maintain details for each ride e.g. workout code, sport et al.
Typically it is used to visualise where you spend your time or where you
get best results. It is not particularly useful if you do not maintain
details for each ride e.g. workout code, sport et al.
7.6 Can I change the colors in plot x ?
7.5 Can I change the colors in plot x ?
=======================================
With the exception of the Long Term Metric plots the colours on the
charts are configured in the GoldenCheetah preferences pane.
charts are configured in the GoldenCheetah preferences pane. It is
possible to apply a theme or change each individual color.
We want to use the same colours to plot each data series across the
charts, so you can change them globally.
The only colours you cannot change are the colours assigned to
intervals when plotting them on scatterplot or PfPv. These colours are
assigned according to their sequence.
The only colours you cannot change are the colours assigned to intervals
when plotting them on scatterplot or PfPv. These colours are assigned
according to their sequence.
7.7 How do you zoom in on a chart?
7.6 How do you zoom in on a chart?
==================================
You can zoom in on the distribution, scatterplot and PfPv charts by
@@ -666,17 +693,17 @@ bottom of the chart (if you select the full plot in the chart settings).
There are no other zoom options for the other charts.
7.8 I zoomed in but can't zoom out?
7.7 I zoomed in but can't zoom out?
===================================
Right click will zoom back out to the previous zoom level (in the case
of zooming multiple times). If you select another activity the chart
will return to fully zoomed out.
7.9 GoldenCheetah is saying there is no data for a chart, but I'm sure there is?
7.8 GoldenCheetah is saying there is no data for a chart, but I'm sure there is?
================================================================================
You should check in the editor if the data series is present. if the
You should check in the editor if the data series is present. if the
activity is a manual activity entry it will contain no data.

@@ -689,104 +716,118 @@ Index
* Menu:
* add: MOST COMMON QUESTIONS OF ALL.
(line 20)
(line 22)
* adhoc: SEASONS AND EVENTS. (line 9)
* Aerolab <1>: CHARTS. (line 33)
* Aerolab: MOST COMMON QUESTIONS OF ALL.
(line 69)
* algorithm: CHARTS. (line 19)
(line 75)
* Aerolab <1>: CHARTS. (line 19)
* anomalies: DATA. (line 23)
* anomalies <1>: DATA. (line 38)
* AP: METRICS. (line 80)
* best: MOST COMMON QUESTIONS OF ALL.
(line 61)
(line 62)
* bug: GENERAL. (line 66)
* Chung: CHARTS. (line 33)
* cervo: MOST COMMON QUESTIONS OF ALL.
(line 136)
* Chung: CHARTS. (line 19)
* clone: GENERAL. (line 40)
* colour <1>: CHARTS. (line 84)
* colour: MOST COMMON QUESTIONS OF ALL.
(line 115)
(line 121)
* colour <1>: CHARTS. (line 68)
* contribute: GENERAL. (line 73)
* CP <1>: CHARTS. (line 19)
* CP: METRICS. (line 22)
* CSV: DATA. (line 88)
* CP <1>: METRICS. (line 39)
* CP <2>: METRICS. (line 50)
* CSV: DATA. (line 87)
* CTL: METRICS. (line 63)
* cycle: SEASONS AND EVENTS. (line 9)
* Daniels: METRICS. (line 9)
* donate: GENERAL. (line 85)
* download: GENERAL. (line 31)
* download <1>: UPLOADING AND DOWNLOADING.
(line 16)
* download: GENERAL. (line 31)
* elevation: METRICS. (line 71)
* EqP: METRICS. (line 9)
* event: SEASONS AND EVENTS. (line 18)
* event <1>: SEASONS AND EVENTS. (line 26)
* feature: GENERAL. (line 66)
* FITLOG: DATA. (line 88)
* FITLOG: DATA. (line 87)
* FTP: METRICS. (line 22)
* FTP <1>: METRICS. (line 50)
* Garmin Connect: METRICS. (line 80)
* github: GENERAL. (line 40)
* Google: UPLOADING AND DOWNLOADING.
(line 33)
(line 22)
* install: GENERAL. (line 31)
* join: DATA. (line 9)
* JSON: DATA. (line 88)
* JSON: DATA. (line 87)
* LTS: METRICS. (line 63)
* mail: GENERAL. (line 56)
* map: CHARTS. (line 69)
* map: CHARTS. (line 53)
* merge: DATA. (line 9)
* month: CHARTS. (line 9)
* NP: METRICS. (line 9)
* options: MOST COMMON QUESTIONS OF ALL.
(line 106)
(line 112)
* override: METRICS. (line 110)
* PMC <1>: METRICS. (line 63)
* PMC: MOST COMMON QUESTIONS OF ALL.
(line 69)
(line 75)
* PMC <1>: METRICS. (line 63)
* powertap: MOST COMMON QUESTIONS OF ALL.
(line 136)
* preferences: MOST COMMON QUESTIONS OF ALL.
(line 106)
(line 112)
* prior: CHARTS. (line 9)
* PWX: DATA. (line 88)
* PWX: DATA. (line 87)
* remove: MOST COMMON QUESTIONS OF ALL.
(line 20)
(line 22)
* report: GENERAL. (line 66)
* season: SEASONS AND EVENTS. (line 9)
* season <1>: SEASONS AND EVENTS. (line 26)
* settings: MOST COMMON QUESTIONS OF ALL.
(line 95)
(line 101)
* source: GENERAL. (line 40)
* spikes: DATA. (line 23)
* spikes <1>: DATA. (line 38)
* split: DATA. (line 9)
* Strava: UPLOADING AND DOWNLOADING.
(line 22)
* TCX: DATA. (line 88)
* TCX: DATA. (line 87)
* trainer: METRICS. (line 50)
* TrainingPeaks: UPLOADING AND DOWNLOADING.
(line 9)
* treemap: CHARTS. (line 77)
* TrainingPeaks <1>: UPLOADING AND DOWNLOADING.
(line 16)
* treemap: CHARTS. (line 61)
* triathlete: GENERAL. (line 47)
* TSS <1>: METRICS. (line 80)
* TSS: MOST COMMON QUESTIONS OF ALL.
(line 9)
* unzoom: CHARTS. (line 108)
* TSS <1>: METRICS. (line 80)
* unzoom: CHARTS. (line 93)
* upload: UPLOADING AND DOWNLOADING.
(line 9)
* VE: CHARTS. (line 33)
* usb: MOST COMMON QUESTIONS OF ALL.
(line 136)
* VE: CHARTS. (line 19)
* weekly summary: MOST COMMON QUESTIONS OF ALL.
(line 81)
(line 87)
* weight: MOST COMMON QUESTIONS OF ALL.
(line 36)
(line 37)
* Withings: UPLOADING AND DOWNLOADING.
(line 35)
* xPower: METRICS. (line 9)
* zoom: CHARTS. (line 97)
* zoom: CHARTS. (line 82)
* zoom <1>: CHARTS. (line 93)

Tag Table:
Node: Top164
Node: MOST COMMON QUESTIONS OF ALL609
Node: GENERAL6062
Node: METRICS9684
Node: DATA16676
Node: UPLOADING AND DOWNLOADING20606
Node: SEASONS AND EVENTS22371
Node: CHARTS23230
Node: INDEX28031
Node: Top163
Node: MOST COMMON QUESTIONS OF ALL608
Node: GENERAL7263
Node: METRICS10899
Node: DATA17912
Node: UPLOADING AND DOWNLOADING21867
Node: SEASONS AND EVENTS23922
Node: CHARTS25327
Node: INDEX29480

End Tag Table

Binary file not shown.

View File

@@ -9,7 +9,7 @@
@paragraphindent 0
@copying
This manual is for Golden Cheetah, version 3.0.
This manual is for Golden Cheetah, version 3.1.
Copyright @copyright{} 2013 Mark Liversedge
@end copying
@@ -35,7 +35,7 @@ Copyright @copyright{} 2013 Mark Liversedge
@node Top,Top,Top,
@top title
This manual is for GoldenCheetah, version 3.0.
This manual is for GoldenCheetah, version 3.1.
@end ifnottex
@menu
@@ -58,24 +58,24 @@ This manual is for GoldenCheetah, version 3.0.
The details chart on the analysis view allows you to override metrics on the metrics tab.
By default the most common metrics are listed, including average HR, distance and so on.
From v3.0 the default setup will also include TSS as a metric you can override here.
From v3.1 the default setup will also include TSS as a metric you can override here.
If the metric is not there you will need to configure GoldenCheetah to allow it to be shown.
This is simple to do and described in 3.9 below.
This is simple to do and described in 3.9 below. The 3.1 upgrade process should have added it
to the Metric tab if it was not already there.
@section How do I add or remove a chart?
@cindex add
@cindex remove
To add a new chart to the view you can select from the + menu on the right hand side of
the scope bar (the scope bar is underneath the toolbar and lets you select from Home,
Analysis, Train etc).
To add a new chart to the view you can select from the hamburger menu on the right hand side of
the chart bar.
Depending upon which view you are on the charts available will differ. For example realtime
plots only appear on the Train view, whilst charts that work with individual rides will only
appear on the analysis view.
To remove a chart, when you mouse over a chart (in tabbed or tiled mode) a small triangle
To remove a chart, when you mouse over a chart (in tabbed or tiled mode) the word 'More...'
will appear in the top left of the chart. This is a menu drop down, if you click on it
you will see a `Close' option. This is the option to remove (close) the chart.
@@ -110,7 +110,11 @@ the LTM plots.
@section How do I plot x sec power best?
@cindex best
As of v3.0 it is still not possible to plot custom durations for power bests. We are
In v3.1 it is now possible to plot custom durations for any data series on a metric
trends chart in the Trends view. You will need to add a curve for the data series
and select `Best' instead of `Metric' or `Estimate' on the curve settings.
For v3.0 or earlier it is still not possible to plot custom durations for power bests. We are
looking to add this in version 3.1, but for now you can only plot 1s, 5s, 10s, 15s, 20s,
30s, 1min, 2min, 5min, 10min, 20min, 30min and 60min bests.
@@ -147,7 +151,7 @@ implement planning functionality in v3.1.
@cindex settings
All chart settings can be found under the drop down menu that appears in the top left hand
corner of a chart when you mouse over it. They will appear as a popup dialog box.
corner of a chart when you mouse over it, titled `More...'. They will appear as a popup dialog box.
Additionally, when you move the cursor towards the title of a chart in a view that is tabbed
(not tiled) then a small selection of the most important settings for the chart will appear
@@ -175,7 +179,23 @@ They are processed in the order they are defined with the first match being retu
care when using values such as 'TT' and 'race' since these can also be part of an English
word (e.g. ATTEMPT contains 'TT' and graceful contains 'race'.
@section GoldenCheetah doesn't find my PowerTap on Ubuntu Linux.
@cindex powertap
@cindex cervo
@cindex usb
If you're using the USB cradle (as opposed to the older, serial one), the FTDI driver sometimes
conflicts with the braille terminal in the default Ubuntu installation. Try unplugging the PT cradle
from the computer and uninstalling brltty: sudo apt-get remove brltty
Then plug the device back in and it should work.
@section GoldenCheetah.dmg installation didn't seem to work.
Are you running OS X Snow Leopard (10.6) or later? You need to be. If you are, and you're still
having this problem, open Terminal (in Applications -> Utilities) and type this at the prompt:
/Applications/GoldenCheetah.app/Contents/MacOS/GoldenCheetah then press <return>
and send an email to the mailing list with whatever it prints out. We'll help you debug it.
@node GENERAL,METRICS,MOST COMMON QUESTIONS OF ALL,Top
@chapter GENERAL
@@ -417,7 +437,7 @@ dialog is designed to be simple and accept only the most common of entries.
@section Can you calculate gradient, virtual power or other derived series from the ride data?
Not in 3.0. We may introduce derived data series in the future.
Not in 3.1. We plan to extend this functionality in v3.2.
@@ -447,8 +467,8 @@ To join two rides together (making one longer ride from two rides) you can copy
in the activity editor and paste special in the ride editor (right click) and then select
append mode.
If you wish to merge rides, that is much harder and would need to be performed outside
of GC or by cutting and pasting columns in the activity editor.
If you wish to merge rides, in v3.1 there is a new Activity->Merge wizard that will walk
you through merging ride files and also provide the ability to synchronise timestamps.
@@ -532,7 +552,7 @@ Training Peaks PWX or Garmin TCX format.
@section Can I use GC to convert data from one format to another on the command line?
No. It is something we may add in v3.1
No. It is something we may add in v3.2
@@ -567,18 +587,6 @@ using a free service they do not let you retrieve your data.
@section Why is data uploaded to Strava all wrong?
@cindex Strava
In general Strava will only use GPS data. If your ride does not contain GPS data then
Strava is not likely to play nice. In addition many of the other data series will be
ignored. This is related to Strava data processing in V2.0 of their API.
We always upload as TCX since the JSON flavour of their API appears to have less
functionality.
@section What settings do I need to get GoldenCheetah to upload to my Google Calendar?
@cindex Google
@@ -592,6 +600,19 @@ Where xxxx is your username. The username will need to be repeated in the userna
field and obviously set the password too.
@section When setting up my Withings wifi scales where do I get the userid and key ?
@cindex Withings
You will need to login to your Withings account (@url{http://my.withings.com}) and
click on the `share' button at the top of the dashboard. From there you will get a
popup box with lots of options.
If you click on `share on my website' you will be greeted with a number of code
snippets you can embed in a web page. If you look closely in the top right hand
corner there will be a box containing the user id and public key. These are the
two values you need to enter into the options dialog.
You will now be able to retrieve withings data via the tools menu.
@node SEASONS AND EVENTS,CHARTS,UPLOADING AND DOWNLOADING,Top
@chapter SEASONS AND EVENTS
@@ -618,6 +639,16 @@ a particular date. There are no rules about what constitutes and event. It could
race, a training camp or just a day that was particularly meaningful e.g. illness, crash.
@section How do create/edit/delete seasons and events?
@cindex event
@cindex season
Seasons and Events are created and edited in the sidebar for the Home view. Seasons are
listed under date ranges, whilst events are listed under the events sidebar item. In
both cases they can be created and deleted from the sidebar item's drop down menu.
Please note that in v3.1 events can only be created when a user season is selected, since
events are associated with a particular season. This constraint will be removed in v3.2.
@node CHARTS,INDEX,SEASONS AND EVENTS,Top
@chapter CHARTS
@@ -636,22 +667,6 @@ prior '2' is a month 2 months ago, whilst 'This' 'month' and prior '1' is last m
@section How does the mean max chart calculate CP when showing power?
@cindex CP
@cindex algorithm
The CP algorithm searches your best power for two durations; for anaerobic efforts it
looks between 15s and 1min, for aerobic it looks for best efforts between 10mins and
an hour.
Once it has found these two best values it will curve fit the two to enable the
60min value to be extracted. Bear in mind this is a theoretical number and as described
above is applicable to the BikeScore algorithm. The value for FTP that the TSS algorithm
requires is simply the highest value for 60mins for the time period, assuming you have
performed a 60minute test recently.
@section How should I use Aerolab?
@cindex Aerolab
@cindex Chung
@@ -709,7 +724,8 @@ e.g. workout code, sport et al.
@cindex colour
With the exception of the Long Term Metric plots the colours on the charts are
configured in the GoldenCheetah preferences pane.
configured in the GoldenCheetah preferences pane. It is possible to apply a theme
or change each individual color.
We want to use the same colours to plot each data series across the charts, so you
can change them globally.

View File

@@ -0,0 +1,46 @@
We are proud to announce that GoldenCheetah v3.1 was released today.
It can be downloaded from our new website[http://www.goldencheetah.org/index.html#section-download]
We have recorded a video[https://vimeo.com/99817526] to explain the main changes, and the user guide[https://github.com/GoldenCheetah/GoldenCheetah/wiki/Main-Page_Users-Guide] has been overhauled to cover all the main features along with an updated FAQ[https://github.com/GoldenCheetah/GoldenCheetah/wiki/FAQ].
We have also added a section on the science of GoldenCheetah[http://www.goldencheetah.org/index.html#section-science] to help users new to power training and analysis.
MAJOR NEW FEATURES
1. Compare Mode
* Across Summary, Ride, QA, CP, Histogram, Metric charts
* Compare Athletes, Seasons, Rides, Intervals
* Easy and intuitive user interface
2. Additional Power Duration Models
* Multiple PD models now available
* Track changes in model estimates for W', CP, P-Max, FTP over time
* Track changes in model estimates for any duration over time
2. Merge data from multiple rides into a single ride
3. Share Dialog to upload to multiple services in one click
OTHER SELECTED HIGHLIGHTS
* Open Athletes in Tabs
* Redesign Tabbed mode with a ChartBar
* Themes and better support for color customisation
* Improved Interactivity (axes, interval hover)
Device enhancements
* Fixed up Tacx Fortius Support
* Pedal Smoothness / Torque Effectiveness support
Metrics and new science
* Plot best x power
* Plot estimated W', CP, FTP et al
* W'bal implemented with metrics
Charts
* Improved UX for chart configuration and setup
* Export data for MMP curves, trends data
* Over 50 new charting options (heat, stack, labels etc etc)
Work on 3.11 starts today, focusing on indoor training.

270
doc/user/GC31-Release.info Normal file
View File

@@ -0,0 +1,270 @@
This is GC31-Release.info, produced by makeinfo version 5.2 from
GC31-Release.texinfo.

File: GC31-Release.info, Node: Top, Next: Top, Prev: Top
title
*****
These release notes are for GoldenCheetah, version 3.1.
* Menu:
* WHATS NEW:: What's new in V3.1
* CONTRIBUTORS:: List of Contributors to V3.1

File: GC31-Release.info, Node: WHATS NEW, Next: CONTRIBUTORS, Prev: CONTRIBUTORS, Up: Top
1 Whats New
***********
1.1 Major new features; Compare, Share and Merge
================================================
We have added a new feature to enable comparing rides and intervals
across all the charts where it is sensible to try; performance plot, cp
chart, histogram and QA charts all support compare. Additionally it is
possible to compare trends across different seasons as well as
histograms. And of course, these are also possible across athletes; so
you can compare one athletes season or ride with another athletes season
or ride.
Wherever it is sensible to compare things, we think it is now possible
to compare things.
We have also unified upload to "cloud" across Strava, RideWithGPS and
Cycling Analytics. With a single click you can upload to all services.
We do not currently support Garmin Connect as they have closed their
system and only work with commercial partners - for this reason we
recommend storing data outside for future data security.
Lastly, it is now possible to merge data from different sources into a
single ridefile. This is particularly useful when working with
multipled devices or integrating data from devices like the Moxy SM02
monitor.
1.2 General Enhancements
========================
We have made the following general / UI enhancements:
* Open Athletes in Tabs - it is possible to open up all your athletes
within a single window and switch tabs.
* ChartBar - the chartbar has become a toolbar item and is
scrollable. This dramatically increases the screen estate
available for displaying charts and data but also makes the UI less
'quirky' and align more to typical desktop application styles.
* Themes and better support for color customisation - we now have
much more sophisticated support for color customisation and support
across all the charts. Themes allow you to switch between light on
dark and dark on light setups quickly and easily.
* Improved Interactivity - mouse over interactivity has been extended
over the ride list and most charts for faster exploration of data
and to provide a more fluid and dynamic user experience. This
extendes to isolating curves within a chart by hovering over the
axis labels and automatically selecting intervals as you hover over
their data in the QA and ride charts.
* Autofilter in Trends view - as well as advance data filtering
within chart setup and the toolbar search box we have now added
autofilters in the trends sidebar to make it simple to filter data
based upon metadata e.g. all running files or rides on your TT
bike.
* Specify athlete library location - You can now specify where data
is stored to make it easier to integrate with backup or other
synchronisation tools.
* Improved Dropbox support (CRC) - We will check the data within a
ride has changed (as opposed to its timestamp) before refreshing
metrics. This is to remove unneccessary metric refreshes when
copying data between computers or synchronising using tools like
Dropbox.
* Find intervals via matches, hills etc - The find intervals dialog
will now find hills as well as sustained efforts using W'
consumption (see support for W'bal).
1.3 Enhanced Device Support
===========================
We have fixed or enhanced device support for:
* Fixed up Tacx Fortius Support - Dave Waterworth has updated the
original beta code for Fortius support to now make the Fortius and
fully supported device in train view.
* Joule GPS updates - the latest firmware is now supported and no
longer crashes GC (!).
* FIT ride file updates - better support for custom FIT sections that
are being used by vendors to suport localised data.
* Pedal Smoothness / Torque Effectiveness support - the Rotor and
Vector data series are now extracted and stored in ridefiles and
can be plotted alongside all the other ride data series on
performance, scatter and histogram plots.
* Moxy support - we have added support for the Moxy SM02 monitor and
can be imported and merged with ride data using the new merge
dialog.
1.4 New Metrics Implemented
===========================
We have implemented a lot of new science in 3.1 and along with that
there are a lot of associated metrics:
* Plot bests - It is now possible to plot user-defined durations for
power bests. For example it is now possible to plot 13s power
best, but we have extended this to cover all ride data series, so
you can plot best durations for heartrate, speed, cadence and so on
within a metric trends chart. This feature has been the most
requested feature since LTM was implemeted in 2010, so we've
finally got there.
* Plot Model Estimates - With the new PD models we also derive
estimates for W', CP et al using each of the models. These can
then be plotted; an example 'CP History' plot in the trends view is
provide as an example.
* W'bal implemented with metrics - The W'bal data series is derived
from power data and can be plotted alongside all other ride data.
It has also been implemented within the erg plot to assess ERG
workouts before attempting them.
* TISS implemented - An an Ae TISS have been implemented and can be
plotted as data series within a ride but also as inputs into a PMC
chart. An example 'Stress' chart is provided to plot these in the
Trends and Rides view.
* aPower - We have implemented Altitude Power to adjust recorded
power to take into account the effect of altitude on vo2max and
thus power output. This can be plotted alongside all other ride
data series.
* Polarised Zones - Histogram chart will now plot power histograms in
Polarised Zones as well as the more familar Coggan 7 levels.
* Pacing Index / Fatigue Index - Experimentally added to help review
interval efforts.
* W' work - To compliment W'bal and Work metrics we now isolate and
can track how much W' energy is being expended. This is closely
related to tracking Anaerobic training.
* Average Pedal Smoothness / Torque Efficiency - the Rotor/Vector
metrics can be plotted alongside ride data but also as average
metrics to track across weeks, months and seasons.
1.5 Chart Enhancements
======================
We have made significant changes across all the charts in 3.1. These
have been added to support the new models and science and also to try
and enhance the utility and user experience.
* LTM Chart - It is now possible to select charts via a Chart
selection sidebar thus reducing the number of charts needed to be
pre-configured on the chart bar. We have also tidied up the LTM
settings dialog and improved the UX for setting up charts in the
first place. To support the new compare mode we have also added a
Stack mode and a Data table mode to look at series in isolation or
just review the numbers. It is also now possible to export the
chart data to manipulate or analyse in other tools. Lastly, we
have also added Labels and Quadratic trend lines to create charts
that are more readable without resorting to tooltips and guess
work.
* CP Chart - The critical power chart has seen a lot of new features
added both to support the new PD models but also to provide the
possibility to plot and compare intervals. The key new features
include User selectable CP models and the ability to fine tune the
search intervals used by each of the 4 models. It is also now
possible to plot rates of change for power, heartrate etc and also
to plot heat and heat by age. You can also plot a ride as
percentge of best or as a centile. And as with the LTM charts it
is also possible to export the PD data and model to review and
assess in other tools.
* Ride Chart - It is now possible to plot lots of derived series; NP,
W'bal, xPower, Delta etc and also to plot each series in its own
chart with all series shown as a 'stack'. We have also finally
added the ability to create and edit reference lines for power and
have added an overlay to display interval data as you hover or
select them in the plot.
* Summary Chart - It is mostly unchanged but will now also support
displaying user defined metrics for Athlete Bests for the date
range selected. It will also show model estimates that apply to
the ride or for the date range being summarised.
1.6 Code refactoring and 300 issues fixed
=========================================
Since we release 3.0 in June 2013 we've been busily updating the code to
fix lots and lots of nits and errors, but also slowly adjusting the code
to provide a better platform for new features.
We have deferred almost all features related to indoor training to a
release 3.11 that is planned for the beginning of 2015 with development
starting in August 2014.
However, some of the (boring, tehcnical) foundational things that
changed in 3.1 include:
* QT 5.3 is now supported; so QT video support, QML, Qt Json, faster
webkit and for the future, possible support for IOS and Android
devices.
* QWT 6.1 with multiaxis is now supported; lots of bug fixes and
better rendering on retina and high resolution displays.
* CP chart and AllPlot chart refactored to make it possible to extend
functionality e.g. for new PD models and derived data series.
Some of the functionality that has been fixed include reinstated support
for Strava and Twitter. We also have better native support for
look-and-feel differences across the three platforms we currently
support (Mac, Linux, Windows).
We have also adjusted the startup mechanism to make it possible to
select a different athlete or create a new one if recovering from a
fatal crash.

File: GC31-Release.info, Node: CONTRIBUTORS, Next: WHATS NEW, Prev: WHATS NEW, Up: Top
2 Contributors
**************
2.1 Credits and Contributors
============================
The main contributors continue to be Mark, Damien and Gareth, but a few
new contributors have joined the team in the last year and the future
looks promising. A particular shout out is deserved for Joern
Rischmuller who has updated the GC Wiki to cover all functionality - so
for the first time we have comprehensive user documentation.
The following have all made a contribution to 3.1:
Alejandro Martinez, Bruno Fernandez-Ruiz, Christian Stade-Schuldt,
Damien Grauser, Dave Waterworth, Eric Johnson, Gareth Coco, Ilja Booij,
Jaime Jofre, Joern Rischmuller, Jon Beverley, Jon Escombe, KURASHIKI
Satoru, Mark Liversedge, Rainer Clasen, Ralf Spenneberg, Simon Egli,
Stig B. Dørmænen, Tom Weichmann, Walter Bürki and Alex Delli.

Tag Table:
Node: Top88
Node: WHATS NEW312
Node: CONTRIBUTORS10389

End Tag Table

BIN
doc/user/GC31-Release.pdf Normal file

Binary file not shown.

View File

@@ -0,0 +1,245 @@
\input texinfo @c -*-texinfo-*-
@ifnotinfo
@input palatino
@end ifnotinfo
@c %**start of header
@setfilename Release Notes.texinfo
@settitle Golden Cheetah v3.1 Release Notes
@c %**end of header
@paragraphindent 0
@titlepage
@title Golden Cheetah v3.1 Release Notes
@c @subtitle subtitle-if-any
@c @subtitle second-subtitle
@author Mark Liversedge
@end titlepage
@c So the toc is printed at the start.
@contents
@ifnottex
@node Top,Top,Top,
@top title
These release notes are for GoldenCheetah, version 3.1.
@end ifnottex
@menu
* WHATS NEW:: What's new in V3.1
* CONTRIBUTORS:: List of Contributors to V3.1
@end menu
@node WHATS NEW,CONTRIBUTORS,CONTRIBUTORS,Top
@chapter Whats New
@section Major new features; Compare, Share and Merge
We have added a new feature to enable comparing rides and intervals across all
the charts where it is sensible to try; performance plot, cp chart, histogram
and QA charts all support compare. Additionally it is possible to compare
trends across different seasons as well as histograms. And of course, these are
also possible across athletes; so you can compare one athletes season or ride
with another athletes season or ride.
Wherever it is sensible to compare things, we think it is now possible to compare things.
We have also unified upload to "cloud" across Strava, RideWithGPS and Cycling
Analytics. With a single click you can upload to all services. We do not currently
support Garmin Connect as they have closed their system and only work with commercial
partners - for this reason we recommend storing data outside for future data security.
Lastly, it is now possible to merge data from different sources into a single ridefile.
This is particularly useful when working with multipled devices or integrating data
from devices like the Moxy SM02 monitor.
@section General Enhancements
We have made the following general / UI enhancements:
@itemize @bullet
@item Open Athletes in Tabs - it is possible to open up all your athletes within a
single window and switch tabs.
@item ChartBar - the chartbar has become a toolbar item and is scrollable. This
dramatically increases the screen estate available for displaying charts and data
but also makes the UI less `quirky' and align more to typical desktop application
styles.
@item Themes and better support for color customisation - we now have much more sophisticated
support for color customisation and support across all the charts. Themes allow you
to switch between light on dark and dark on light setups quickly and easily.
@item Improved Interactivity - mouse over interactivity has been extended over the ride
list and most charts for faster exploration of data and to provide a more fluid and
dynamic user experience. This extendes to isolating curves within a chart by hovering
over the axis labels and automatically selecting intervals as you hover over their data
in the QA and ride charts.
@item Autofilter in Trends view - as well as advance data filtering within chart setup and
the toolbar search box we have now added autofilters in the trends sidebar to make it
simple to filter data based upon metadata e.g. all running files or rides on your TT bike.
@item Specify athlete library location - You can now specify where data is stored to make
it easier to integrate with backup or other synchronisation tools.
@item Improved Dropbox support (CRC) - We will check the data within a ride has changed
(as opposed to its timestamp) before refreshing metrics. This is to remove unneccessary
metric refreshes when copying data between computers or synchronising using tools like
Dropbox.
@item Find intervals via matches, hills etc - The find intervals dialog will now find
hills as well as sustained efforts using W' consumption (see support for W'bal).
@end itemize
@section Enhanced Device Support
We have fixed or enhanced device support for:
@itemize @bullet
@item Fixed up Tacx Fortius Support - Dave Waterworth has updated the original beta code
for Fortius support to now make the Fortius and fully supported device in train view.
@item Joule GPS updates - the latest firmware is now supported and no longer crashes GC (!).
@item FIT ride file updates - better support for custom FIT sections that are being used
by vendors to suport localised data.
@item Pedal Smoothness / Torque Effectiveness support - the Rotor and Vector data series
are now extracted and stored in ridefiles and can be plotted alongside all the other ride
data series on performance, scatter and histogram plots.
@item Moxy support - we have added support for the Moxy SM02 monitor and can be imported
and merged with ride data using the new merge dialog.
@end itemize
@section New Metrics Implemented
We have implemented a lot of new science in 3.1 and along with that
there are a lot of associated metrics:
@itemize @bullet
@item Plot bests - It is now possible to plot user-defined durations for power bests.
For example it is now possible to plot 13s power best, but we have extended this to
cover all ride data series, so you can plot best durations for heartrate, speed, cadence
and so on within a metric trends chart. This feature has been the most requested feature
since LTM was implemeted in 2010, so we've finally got there.
@item Plot Model Estimates - With the new PD models we also derive estimates for W', CP et al using
each of the models. These can then be plotted; an example `CP History' plot in the trends view
is provide as an example.
@item W'bal implemented with metrics - The W'bal data series is derived from power data and
can be plotted alongside all other ride data. It has also been implemented within the erg
plot to assess ERG workouts before attempting them.
@item TISS implemented - An an Ae TISS have been implemented and can be plotted as data series
within a ride but also as inputs into a PMC chart. An example `Stress' chart is provided to
plot these in the Trends and Rides view.
@item aPower - We have implemented Altitude Power to adjust recorded power to take into
account the effect of altitude on vo2max and thus power output. This can be plotted alongside
all other ride data series.
@item Polarised Zones - Histogram chart will now plot power histograms in Polarised Zones as well
as the more familar Coggan 7 levels.
@item Pacing Index / Fatigue Index - Experimentally added to help review interval efforts.
@item W' work - To compliment W'bal and Work metrics we now isolate and can track how much
W' energy is being expended. This is closely related to tracking Anaerobic training.
@item Average Pedal Smoothness / Torque Efficiency - the Rotor/Vector metrics can be plotted
alongside ride data but also as average metrics to track across weeks, months and seasons.
@end itemize
@section Chart Enhancements
We have made significant changes across all the charts in 3.1. These have been added
to support the new models and science and also to try and enhance the utility and
user experience.
@itemize @bullet
@item LTM Chart - It is now possible to select charts via a Chart selection sidebar thus
reducing the number of charts needed to be pre-configured on the chart bar. We have also
tidied up the LTM settings dialog and improved the UX for setting up charts in the first place.
To support the new compare mode we have also added a Stack mode and a Data table mode to
look at series in isolation or just review the numbers. It is also now possible to export
the chart data to manipulate or analyse in other tools. Lastly, we have also added Labels
and Quadratic trend lines to create charts that are more readable without resorting to
tooltips and guess work.
@item CP Chart - The critical power chart has seen a lot of new features added both to
support the new PD models but also to provide the possibility to plot and compare intervals.
The key new features include User selectable CP models and the ability to fine tune the
search intervals used by each of the 4 models. It is also now possible to plot rates of change
for power, heartrate etc and also to plot heat and heat by age. You can also plot a ride as
percentge of best or as a centile. And as with the LTM charts it is also possible to export
the PD data and model to review and assess in other tools.
@item Ride Chart - It is now possible to plot lots of derived series; NP, W'bal, xPower, Delta etc
and also to plot each series in its own chart with all series shown as a 'stack'. We have also
finally added the ability to create and edit reference lines for power and have added an overlay
to display interval data as you hover or select them in the plot.
@item Summary Chart - It is mostly unchanged but will now also support displaying user
defined metrics for Athlete Bests for the date range selected. It will also show model
estimates that apply to the ride or for the date range being summarised.
@end itemize
@section Code refactoring and 300 issues fixed
Since we release 3.0 in June 2013 we've been busily updating the
code to fix lots and lots of nits and errors, but also slowly adjusting
the code to provide a better platform for new features.
We have deferred almost all features related to indoor training to a
release 3.11 that is planned for the beginning of 2015 with development
starting in August 2014.
However, some of the (boring, tehcnical) foundational things that changed in 3.1 include:
@itemize @bullet
@item QT 5.3 is now supported; so QT video support, QML, Qt Json, faster
webkit and for the future, possible support for IOS and Android devices.
@item QWT 6.1 with multiaxis is now supported; lots of bug fixes and better
rendering on retina and high resolution displays.
@item CP chart and AllPlot chart refactored to make it possible to extend
functionality e.g. for new PD models and derived data series.
@end itemize
Some of the functionality that has been fixed include reinstated support
for Strava and Twitter. We also have better native support for look-and-feel
differences across the three platforms we currently support (Mac, Linux, Windows).
We have also adjusted the startup mechanism to make it possible to select a
different athlete or create a new one if recovering from a fatal crash.
@node CONTRIBUTORS,WHATS NEW,WHATS NEW,Top
@chapter Contributors
@section Credits and Contributors
The main contributors continue to be Mark, Damien and Gareth, but a few new contributors
have joined the team in the last year and the future looks promising. A particular shout
out is deserved for Joern Rischmuller who has updated the GC Wiki to cover all functionality --
so for the first time we have comprehensive user documentation.
The following have all made a contribution to 3.1:
Alejandro Martinez, Bruno Fernandez-Ruiz, Christian Stade-Schuldt, Damien Grauser, Dave Waterworth, Eric Johnson,
Gareth Coco, Ilja Booij, Jaime Jofre, Joern Rischmuller, Jon Beverley, Jon Escombe, KURASHIKI Satoru, Mark Liversedge,
Rainer Clasen, Ralf Spenneberg, Simon Egli, Stig B. Dørmænen, Tom Weichmann, Walter Bürki and Alex Delli.
@bye

89
doc/user/GC31-Release.txt Normal file
View File

@@ -0,0 +1,89 @@
Some notes on what is new in GC 3.1
-----------------------------------
MAJOR NEW FEATURES
1. Compare Mode
* Across Summary, Ride, QA, CP, Histogram, Metric charts
* Compare Athletes, Seasons, Rides, Intervals
* Easy and intuitive user interface
2. Additional Power Duration Models
* Multiple PD models now available
* Track changes in model estimates for W', CP, P-Max, FTP over time
* Track changes in model estimates for any duration over time
2. Merge Activities
3. Share Dialog
ENHANCEMENTS
1. General
i Open Athletes in Tabs
ii Redesign Tabbed mode with a ChartBar
iii Themes and better support for color customisation
iv Improved Interactivity (axes, interval hover)
v Autofilter in Trends view
vi Specify athlete library location
vii Improved Dropbox support (CRC)
viii Find intervals via matches, hills etc
ix Fix Elevation
2. Device
i Fixed up Tacx Fortius Support
ii Joule GPS updates
iii FIT ride file updates
iv Pedal Smoothness / Torque Effectiveness support
v Moxy support
3. Metrics
i Plot best x power etc, Plot W', CP et al
ii W'bal implemented with metrics
iii TISS implemented
iv aPower
v Polarised Zones
vi Pacing Index / Fatigue Index
vii W' work
viii Average Pedal Smoothness / Torque Efficiency
4. LTM Chart
i Chart selection sidebar
ii LTM settings cleaned up
iii Stack mode
iv Data table mode
v Labels
vi Quadratic trend lines
5. CP Chart
i User selectable CP models
ii Extended CP Model
iii Plot rates of change
iv Plot heat and heat by age
v Plot as percentge of best
vi Plot centiles
v Ranking
vi Plot intervals
vii Export Data
6. Ride Chart
i Plot lots of derived series; NP, W'bal, xPower, Delta etc etc
ii Plot delta series
iii Plot stack series
iv Isolate series hover on axis
v Create/Edit reference lines
7. Summary Chart
i Athlete Bests
ii Model derived estimates (CP, FTP etc)
8. Foundational
i QT 5 support
ii QWT 6.1 support
iii MainWindow/Context/Athlete refactored
iv CP refactored (for models and intervals)
v AllPlot refactored (for compare)
BUG FIXES
i Over 1000 commits since 3.0 including many bug fixes
ii Eradicating assert reduces crashes
iii Crash dialog/restart to menu

Binary file not shown.

Binary file not shown.

View File

@@ -12,7 +12,7 @@ clean:
MANUAL: GC3-Manual.pdf
FAQ: GC3-FAQ.pdf GC3-FAQ.info
RELEASE: GC3-Release.pdf GC3-Release.info
RELEASE: GC3-Release.pdf GC3-Release.info GC31-Release.pdf GC31-Release.info
## The basic commands, good on Linux/Mac
## need mingw on Windows

View File

@@ -8,10 +8,10 @@ OTHER= 3d.png choose-a-cyclist.png cpint.gp cpint.png critical-power-plot.png cr
pm.png power.zones realtime.png ride-plot.png ride-plot2.png ride-summary.png sample.gp \
sample.png weekly-summary.png google-earth.png aerolab.png
BIN= GoldenCheetah_2.1.0_Linux_x86_64.tgz \
GoldenCheetah_2.1.0_Linux_x86.tgz \
GoldenCheetah_2.1.0_Mac_Universal.dmg \
GoldenCheetah_2.1.0_Windows_Installer.exe
BIN= GoldenCheetah_3.0.1_Mac_Universal.dmg \
GoldenCheetah-3.0.1-1.fc18.x86_64.rpm \
GoldenCheetah-3.0.1-1.fc19.x86_64.rpm \
GoldenCheetah_3.0.1_Windows_Installer.exe
all: $(HTML)
.PHONY: all clean install
@@ -51,6 +51,15 @@ download.html: download.content genpage.pl
release-notes.html: release-notes.content genpage.pl
./genpage.pl "Release Notes" $< > $@
release-notes_2.1.0.html: release-notes_2.1.0.content genpage.pl
./genpage.pl "Release Notes 2.1.0" $< > $@
release-notes_3.0.0.html: release-notes_3.0.0.content genpage.pl
./genpage.pl "Release Notes 3.0.0" $< > $@
release-notes_3.0.1.html: release-notes_3.0.1.content genpage.pl
./genpage.pl "Release Notes 3.0.1" $< > $@
faq.html: faq.content genpage.pl
./genpage.pl "Frequently Asked Questions" $< > $@

View File

@@ -11,7 +11,8 @@ Installing dependencies
</font></big>
<p>GC requires a number of libraries. On Mac OS X, you can get most of these
through <a href="http://www.macports.org/">Mac Ports</a>. On Linux and other
through <a href="http://www.macports.org/">Mac Ports</a> or
<a href="http://www.brew.sh/">Homebrew</a>. On Linux and other
Unixes, you can use whatever package manager your distribution provides. (We
list the package names for MacPorts and Ubuntu below.) On Windows, you'll
probably need to download and install everything by hand. You might also want

View File

@@ -2,20 +2,21 @@
<p>
Golden Cheetah is available in binary form for
Linux x86, Mac OS X (universal binary), and Windows.
Fedora (RPMs), Mac OS X (Universal Intel binary), and Windows.
It is also available as source code.
</p>
<p>
Golden Cheetah downloads data from all versions of the PowerTap
computer including the new Joule. If you're using the PowerTap USB cradle
(as opposed to the older, serial cable), you may need to install the
<a href="http://www.ftdichip.com/Drivers/D2XX.htm">FTDI USB driver</a>
before downloading.
computer including the new Joule GPS. Previously you needed to have the
FTDI USB Drivers installed if you were using the PowerTap USB cradle
(as opposed to the older, serial cable). This should not be necessary.
If you are having problems then you can manually install the
<a href="http://www.ftdichip.com/Drivers/D2XX.htm">FTDI USB driver</a>.
</p>
<p>
On Linux and Mac OS X, Golden Cheetah also downloads from the SRM PCV. On Mac
On Windows, Linux and Mac OS X, Golden Cheetah also downloads from the SRM PCV. On Mac
OS X, you'll need to install <a href="http://osx-pl2303.sourceforge.net/">the
open source PL2303 driver</a> to download from an SRM. Please see the
<a href="https://github.com/GoldenCheetah/GoldenCheetah/wiki/Installing-the-d2xx-drivers-on-mac-os">WIKI</a> article
@@ -25,24 +26,40 @@ PCV on Mac OS X</a> for further information.
<p>
<font face="arial,helvetica,sanserif">
<big><strong>Download Release 2.1</strong></big>
<big><strong>Download Release 3.0.2</strong></big>
</font>
</p>
<p>This is a bug fix release with a few new features.</p>
<ul>
<li><a href="GoldenCheetah_2.1.0_Windows_Installer.exe">Windows 32-bit (runs on 64bit as well)</a>
<li><a href="GoldenCheetah_2.1.0_Mac_Universal.dmg">Mac OS X Universal 10.4->10.7</a><br>
<li><a href="GoldenCheetah_2.1.0_Linux_x86.tgz">Linux x86</a><br>
<li><a href="GoldenCheetah_2.1.0_Linux_x86_64.tgz">Linux x86_64</a><br>
<li><a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah_3.0.2_Windows_Installer.exe">Windows 32-bit (runs on 64bit as well)</a>
<li><a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah_3.0.2_Mac_Universal.dmg">Mac OS X Intel Universal (10.6+)</a><br>
<li>Fedora 18 RPMS - <a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah-3.0.2-1.fc18.i686.rpm">32bit</a>
/ <a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah-3.0.2-1.fc18.x86_64.rpm">64 bit</a><br>
<li>Fedora 19 RPMS - <a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah-3.0.2-1.fc19.i686.rpm">32bit</a>
/ <a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah-3.0.2-1.fc19.x86_64.rpm">64 bit</a><br>
<li>Fedora 20 RPMS - <a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah-3.0.2-1.fc20.i686.rpm">32bit</a>
/ <a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP2/GoldenCheetah-3.0.2-1.fc20.x86_64.rpm">64 bit</a><br>
</ul>
</p>
<p>
Please follow the <a href="/users-guide.html">User's Guide</a> on how to install
and use Golden Cheetah.
Installation is simple. Download the file for your operating system.<br>
On Mac, open the DMG and drag and drop where you would like to install.<br>
For Windows, run the Installer and follow the prompts.<br>
For Fedora, install as root (yum install filename.rpm) or using sudo (sudo yum install filename.rpm).<br>
</p>
<p>
You can also <a href="release-notes.html">view the release notes</a> for 2.1
There is a <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-Manual.pdf?raw=true">Manual</a>
and a <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-FAQ.pdf?raw=true">FAQ</a> that
you can use to help you use the program.
</p>
<p>
There is the older Version 2.1.0 <a href="/users-guide.html">User's Guide</a> on how to install
and use Golden Cheetah that can assist also.
</p>
<p>
You can also <a href="release-notes.html">view the release notes</a> for 3.0.2
or <a href="older-releases.html">download older releases</a> of Golden Cheetah.
</p>

View File

@@ -1,5 +1,12 @@
<!-- $Id: faq.content,v 1.4 2006/07/05 16:59:56 srhea Exp $ -->
<h2>Documentation</h2>
<p>
There is a <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-Manual.pdf?raw=true">Manual</a>
and a <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-FAQ.pdf?raw=true">FAQ</a> that
you can use to help you use the program.
</p>
<p>
<b><i>GoldenCheetah doesn't find my PowerTap on Ubuntu Linux.</i></b>
<p>

View File

@@ -54,6 +54,7 @@ body {
<img src="logo.jpg" width="175" height="175" alt="Picture of Cheetah">
<p> <b><a href="index.html">Introduction</a></b>
<br> <b><a href="download.html">Download</a></b>
<br> <b><a href="screenshots.html">Screenshots</a>
<br> <b><a href="wiki.html">Wiki</a>
<br> <b><a href="users-guide.html">User's Guide</a>
@@ -61,7 +62,6 @@ body {
<br> <b><a href="faq.html">FAQ</a>
<br> <b><a href="wishlist.html">Wish List</a>
<br> <b><a href="license.html">License</a></b>
<br> <b><a href="download.html">Download</a></b>
<br> <b><a href="contrib.html">Contributors</a></b>
<br> <b><a href="search.html">Search</a></b>
<br> <b><a href="mailing-list.html">Mailing List</a></b>

View File

@@ -13,8 +13,7 @@ GoldenCheetah is a software package that:
<ul>
<li>Downloads ride data directly from the CycleOps PowerTap and the SRM
PowerControl V. Support for SRM PowerControl VI and VII is planned for the
future.<p>
PowerControl V, VI and VII.</p>
<li>Imports ride data downloaded with other programs, including TrainingPeaks
WKO+ and the manufacturers' software for the Ergomo, Garmin, Polar, PowerTap,
@@ -24,8 +23,7 @@ and SRM devices.<p>
BikeScore calculation, histogram analysis, a best interval finder, and a pedal
force versus pedal velocity chart, to name just a few.<p>
<li>Is available for Linux, Mac OS X, and Windows. (The Windows version
does not yet support direct downloads from the SRM PowerControl.)<p>
<li>Is available for Linux, Mac OS X, and Windows.<p>
<li>Is released under an Open Source license.
</ul>

View File

@@ -18,13 +18,122 @@ please see <a href="download.html">the download page</a> instead.
<td><i>Description</i></td>
</tr>
<tr>
<td valign="top">3.0.1</td>
<td valign="top">
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP1/GoldenCheetah_3.0.1_Mac_Universal.dmg">Mac OS X Intel Universal (10.6+)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP1/GoldenCheetah_3.0.1_Windows_Installer.exe">Windows 32-bit</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP1/GoldenCheetah-3.0.1-2.fc18.x86_64.rpm">Fedora 18 RPM (64bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0-SP1/GoldenCheetah-3.0.1-2.fc19.x86_64.rpm">Fedora 19 RPM (64bit)</a>
</td>
<td valign="top">
<a href="release-notes_3.0.1.html">Full Version 3.0.1 change log.</a><br>
</td>
</tr>
<tr>
<td valign="top">3.0.0</td>
<td valign="top">
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0/GoldenCheetah_3.0.0_Mac_32bit.dmg">Mac OS X Intel (32bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0/GoldenCheetah_3.0.0_Mac_64bit.dmg">Mac OS X Intel (64bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v3.0/GoldenCheetah_3.0.0_Windows_Installer.exe">Windows 32-bit</a>
</td>
<td valign="top">
<p>
New Features and Enhancements
<ul>
<li>See the full log below.</li>
<li>See the <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-Release.pdf?raw=true">Release Notes</a> PDF on GitHub.</li>
<li>A PDF <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-Manual.pdf?raw=true">User's Manual</a></li>
<li>A PDF <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-FAQ.pdf?raw=true">Frequently Asked Questions (FAQ)</a></li>
<li>Welcome Screens to help setup the program.</li>
</ul>
</p>
<p>
Internationalisation
<ul>
<li>German (Tilman Schmiedeberg)</li>
<li>Italian (Marco Piccirilli)</li>
<li>Japanese (Okano Takayoshi)</li>
<li>Spanish (Alejandro Martinez)</li>
</ul>
</p>
<p>
Development Builds
<ul>
<li>Gareth Coco</li>
<li>Jamie Kimberley</li>
</ul>
</p>
<p>
<a href="release-notes_3.0.0.html">Full Version 3.0.0 change log.</a><br>
</p>
</td>
</tr>
<tr>
<td valign="top">2.1.0</td>
<td valign="top">
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.1/GoldenCheetah_2.1.0_Linux_x86.tgz">Linux (32bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.1/GoldenCheetah_2.1.0_Linux_x86_64.tgz">Linux (64bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.1/GoldenCheetah_2.1.0_Mac_Universal.dmg">Mac OS X Universal</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.1/GoldenCheetah_2.1.0_Windows_Installer.exe">Windows 32-bit</a>
</td>
<td valign="top">
<p>
New Features and Enhancements
<ul>
<li>FIT file support for Mac OSX - Rainer Clasen</li>
<li>SRM 5 - Rainer Clasen</li>
<li>Aerolab Improvements - Damien Grauser</li>
<li>O-Sync Macro X device support - Damien Grauser</li>
<li>Air density (RHO) Calculator - Steven Gribble</li>
<li>Virtual Power - Darren Hague</li>
<li>GoldenCheetah JSON - Mark Liversedge</li>
<li>Support TrainerRoad.com TCX Files - Mark Liversedge</li>
<li>Garmin GPX - Greg Lonnon</li>
<li>Sigma SLF/SMF - Frank Zschockelt</li>
</ul>
</p>
<p>
Internationalisation
<ul>
<li>Czech (David Kramar)</li>
<li>French (Damien Grauser, Guillaume LeMaitre)</li>
<li>German (Alexander Pietsch)</li>
<li>Italian (Robert Masso)</li>
<li>Portugese (Thomas Irps)</li>
<li>Portugese-Brazil (Bruno Assis)</li>
<li>Japanese (Mitsukuni Sato, Keisuke Yamaguchi)</li>
<li>Spanish (Alejandro Martinez)</li>
</ul>
</p>
<p>
Development Builds
<ul>
<li>Gareth Coco</li>
<li>Jamie Kimberley</li>
</ul>
</p>
<p>
<a href="release-notes_2.1.0.html">Full Version 2.1.0 change log.</a><br>
</p>
</td>
</tr>
<tr>
<td valign="top">2.0.0</td>
<td valign="top">
<a href="GoldenCheetah_2.0.0_Linux_x86.gz">Linux x86</a><br>
<a href="GoldenCheetah_2.0.0_Linux_x86_64.gz">Linux x86_64</a><br>
<a href="GoldenCheetah_2.0.0_Mac_Universal.zip">Mac OS X Universal</a><br>
<a href="GoldenCheetah_2.0.0_Windows_Installer.exe">Windows 32-bit</a>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.0/GoldenCheetah_2.0.0_Linux_x86.gz">Linux (32bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.0/GoldenCheetah_2.0.0_Linux_x86_64.gz">Linux (64bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.0/GoldenCheetah_2.0.0_Mac_Universal.dmg">Mac OS X Universal</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v2.0/GoldenCheetah_2.0.0_Windows_Installer.exe">Windows 32-bit</a>
</td>
<td valign="top">
<p>
@@ -107,10 +216,10 @@ Builds, testing and support
<tr>
<td valign="top">1.3.0</td>
<td valign="top">
<a href="GoldenCheetah_1.3.0_Linux_x86.gz">Linux x86</a><br>
<a href="GoldenCheetah_1.3.0_Linux_x86_64.gz">Linux x86_64</a><br>
<a href="GoldenCheetah_1.3.0_Mac_Universal.zip">Mac OS X Universal</a><br>
<a href="GoldenCheetah_1.3.0_Windows_Installer.exe">Windows 32-bit</a>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.3/GoldenCheetah_1.3.0_Linux_x86.gz">Linux (32bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.3/GoldenCheetah_1.3.0_Linux_x86_64.gz">Linux (64bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.3/GoldenCheetah_1.3.0_Mac_Universal.zip">Mac OS X Universal</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.3/GoldenCheetah_1.3.0_Windows_Installer.exe">Windows 32-bit</a>
</td>
<td valign="top">
<p>
@@ -207,10 +316,10 @@ Other new features:
<tr>
<td valign="top">1.2.0</td>
<td valign="top">
<a href="GoldenCheetah_1.2.0_Linux_x86.tgz">Linux x86</a><br>
<a href="GoldenCheetah_1.2.0_Linux_x86_64.tgz">Linux x86_64</a><br>
<a href="GoldenCheetah_1.2.0_Darwin_Universal.dmg">Mac OS X Universal</a><br>
<a href="GoldenCheetah_1.2.0_Windows_Installer.exe">Windows 32-bit</a>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.2/GoldenCheetah_1.2.0_Linux_x86.tgz">Linux (32bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.2/GoldenCheetah_1.2.0_Linux_x86_64.tgz">Linux (6bit)</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.2/GoldenCheetah_1.2.0_Darwin_Universal.dmg">Mac OS X Universal</a><br>
<a href="https://github.com/GoldenCheetah/GoldenCheetah/releases/download/v1.2/GoldenCheetah_1.2.0_Windows_Installer.exe">Windows 32-bit</a>
</td>
<td valign="top">
<p>

View File

@@ -1,252 +1,51 @@
<p>
<font face="arial,helvetica,sanserif">
<big><strong>GoldenCheetah 2.1</strong></big>
<big><strong>GoldenCheetah 3.0.2</strong></big>
</font>
</p>
<p>
New Features and Enhancements
<ul>
<li>FIT file support for Mac OSX - Rainer Clasen</li>
<li>SRM 5 - Rainer Clasen</li>
<li>Aerolab Improvements - Damien Grauser</li>
<li>O-Sync Macro X device support - Damien Grauser</li>
<li>Air density (RHO) Calculator - Steven Gribble</li>
<li>Virtual Power - Darren Hague</li>
<li>GoldenCheetah JSON - Mark Liversedge</li>
<li>Support TrainerRoad.com TCX Files - Mark Liversedge</li>
<li>Garmin GPX - Greg Lonnon</li>
<li>Sigma SLF/SMF - Frank Zschockelt</li>
</ul>
</p>
<p>
Internationalisation
<ul>
<li>Czech (David Kramar)</li>
<li>French (Damien Grauser, Guillaume LeMaitre)</li>
<li>German (Alexander Pietsch)</li>
<li>Italian (Robert Masso)</li>
<li>Portugese (Thomas Irps)</li>
<li>Portugese-Brazil (Bruno Assis)</li>
<li>Japanese (Mitsukuni Sato, Keisuke Yamaguchi)</li>
<li>Spanish (Alejandro Martinez)</li>
</ul>
</p>
<p>
Development Builds
<ul>
<li>Gareth Coco</li>
<li>Jamie Kimberley</li>
</ul>
</p>
<p>
Full Change Log
<pre>
Alejandro Martinez (7):
Add Spanish Translation and Enable Metrics Translation
Add Spanish Translation & Fix Translation Issues
Set UTF-8 in charts,metadata and seasons xml files
Add HrZones to Weekly Summary and Fix Spanish Translation
Update Spanish Translation
Enable 3d Plot Translation and include spanish translation
Rho Estimator Translation
Bruno Assis (1):
Portugese (Brazil) Translation
Damien (22):
Modify csv import for ergomo file with comma or semicolon separator
Remove error logs for unused datas in ride file
handle showHr/Speed/Cad/Alt state for stacked view
Add summary metrics list to preferences
Correct crash with truncated files
Add PeakPowerHr metric (average HR during peak power)
Altitude scale present with no altitude data.
Bug #178 TRIMP is not updated after modification in Rest Hr Tag -> compute metric after save
Add a setFocus on the Treelist to correct a MacOs Bug of Qt
Modification to handle odd start page and compatible with qt 4.6
Correct interval
Modify TRIMP formula to use time_riding instead of workout time
Modify Aerolab to add interval highlight and zoom + auto offset
Aerolab : Change LCD display to LineEdit
Correct bug in the peakPowerHr formula
Correct encoding in json parser
Correct bug #496 for longitude < -65
Remove Joule warnings
Update french translation for rho estimator
Change speed to double in Bin parser
Correct intialisation of altitude for TCX without altitude
Correct intialisation of altitude for TCX without altitude
Damien Grauser (2):
Update French translation.
O_Sync Macro X device support
Darren Hague (5):
Virtual Power; Better GSC-10 pairing support.
Corrected - to + in CycleOps formula
Use realtime clock for realtime-mode clock
Add virtual power support for BT-ATS trainer
Remove toMSecsSinceEpoch() and work around
David (1):
Updated Czech translations
Eric Brandt (1):
fix realtime mode load timer and lcd sig. digit display issues
Frank Zschockelt (2):
Support for Sigma SLF/SMF file formats
Included 4 sample sigma files in the test/rides directory
Gareth Coco (25):
Changes to map markers
FIT file reader fixes
Set default Smoothing (secs) in Ride Plot to one (1) second
Change start date from UTC to localtime for bin ride file
Make interval period on map user defineable
Reorder liboauth includes
Comment out QwtDesigner build in qwtconfig.pri.in
Changed kph to km/h in displays
Changed KPH to km/h in displays
Update translation .qm files
Update gc_fr.qm for updated French translation
Fixes for RealtimeController
Initialise LAT/LON to zero (0.0) in the parser
Updated Spanish Translation
Add a Portuguese translation
Add a TCX ride exporter
Fix interpolation of lat/lon when missing or 0/0
Allow CdA to lowest possible in AerolabWindow.cpp
Update translation files
Ordered build - qwt then src
Fixes for Manual Ride Entry
Comment added and replace tabs with spaces
v2.1dev - Allow ride to be added with no Average HR
Update documentation
Added v2.0.0 information.
Greg Lonnon (3):
GPX RideFile Support
changes to the markers in google maps.
Added a QFilesystemWatcher to monitor adding files to the workout directory.
Ilja Booij (1):
fix 'Wrong distance on Tacx caf file import'
Jamie Kimberley (6):
Update download page to reflect build of mac 10.4
force use of no elide and scrollbars in main tab
Update user guide steps 1 and 2
clean up wishlist web page
Add other TRIMP metrics to performance manager.
update French Translation
Justin Knotzke (2):
Cycleops Test Ride
Update of German translation by LukeNRG
Keisuke Yamaguchi (1):
Update Japanese translation files
LukeNRG (4):
German Translation
Updated German Translation
Updated German Translations
German Translations
Mark Liversedge (59):
Updated www.goldencheetah.org for v2.0 release.
Joule support fixed on download page.
Add link to wiki from the website.
Mac PPC binary added to downloads page.
Translations Bonanza!
Fix Computrainer with Stereo FTDI adaptor
Fix 'Save data' in RealtimeWindow
Updated Czech translation
Fix Wko GPS parsing on 64bit
Fix Virtual Power for Fluid2
Revert "Add Spanish Translation and Enable Metrics Translation"
Fix WKO parser for Ergomo users
Better rounding of time in AllPlot
Fix WKO+ file reader GPS 'drops'
Remove console error for seasons.xml
Fix RideSummaryWindow crash
Fix RideEditor find dialog for 'between'
Fix .man crash in CP plot
Better support for Negative, Inf, NaN and High Values
Fix annoying gap in CP curve.
Fix Save when old .bak exists
Fix SummaryWindow crash
Don't allow Nan or Inf sample values
Fix LogY Intervals on Histogram
Fit files sometimes go backwards
Guess ride date time for Poweragent CSV files
Add JSON support to v2.1
Fix date/time handling when importing rides
Update .gitignore for Lex/yacc
Fix Macro device data crash
Support FR310xt latest firmware
Fix FitRideFile for header change
Fix Download Ride Dialog instructions refresh
SplitRide overwrites existing file
Revert "SplitRide overwrites existing file"
Fix Split Ride file loss bug
Check Date/Time unique
Summary fixups
Updated translation files.
Add virtual power for LeMond Revolution
Use strtod() to convert text to double
Fix FTDI Adaptor on Linux and Mac
Better Bounds Checking in RideFile::intervalBegin()
Forward support in .json for temp/slope
Add Virtual Power for 1UP USA bike trainer
FitRideFile distance of zero bug
Disable roch text in metadata
Fix zero speed in TxtRideFile for Imperial units
Support TrainerRoad.com TCX Files/Tcx speed in meters/sec The TCX parser ignored samples where distance is
Fix crash if TRIMP zones > 5
Fix PWX file intervals
Fix SEGV on empty/dodgy FIT files
Mitsukuni Sato (1):
Japanese Translation
Rainer Clasen (8):
Added SRM5 file format read support
whitespace cleanup
fix reading signed values from srm files
Fit: ignore unknown message types
Fit: support big/little endian data
Fit: handle unknown fields gracefully
SrmRideFile: turned assertions into graceful fail
FitRideFile: turned assertions into graceful fail
Roberto Massa (1):
Italian Translation
Roderic Campbell (1):
There was what looked like a copy paste error. I changed the zone 7 label to the appropriate 7 instead of
Steven Gribble (1):
This patch adds an air density (rho) calculator feature to GoldenCheetah.
Thomas Irps (1):
Portuguese translation
Tim Shaffer (1):
Make the default date range for Performance Manager a user preference.
kohasa (1):
enabled editing interval duration by keyboard.
lemaitre (1):
Updating of the French translation
unknown (1):
This patch correct altitude for TCX files converted from FIT files These files doesn't have altitude for e
</pre>
</p>
<pre>
$ git checkout release_3.0.1
$ git shortlog v3.0-SP2 ^v3.0-SP1
Christian Stade-Schuldt (3):
Added virtual power support for Tacx Blue Twist trainer
Added virtual power support for Tacx Blue Motion trainer
added Tacx Blue Twist and Tacx Blue Motion to Device Wizard
Damien (6):
AerobicDecoupling: Correct formula fix #721
AllPlot: Handle noTemp with no smooth fix #634
FitRideFile: correct issue with unknown field type in fit file fix #724
FitRideFile: We may need to add string support
FitRideFile: wrong copy-paste
GoogleMapControl: Small fix for Google Map fix #814
Gareth Coco (1):
Update translations for upcoming release
Jaime Jofre (1):
Fixes issue #791
Mark Liversedge (7):
Increase Starting LTS limits
Fix WKO import - another optpad constant
Compromise on import
Fix SEGV on bad file/header in FitRideFile
Revert "Fix SEGV on bad file/header in FitRideFile"
Another attempt to fix SEGV in FitRideFile
Release 3.0-SP2
Stig B. Dørmænen (1):
Made the fault handling in TPDownload a little more user friendly
Walter (1):
using milliseconds for delta_t when calculating speed, supports Suunto Ambit gpx datafiles
alexdelli (1):
Added Support for Elite Supercrono PowerMag
</pre>

View File

@@ -0,0 +1,252 @@
<p>
<font face="arial,helvetica,sanserif">
<big><strong>GoldenCheetah 2.1</strong></big>
</font>
</p>
<p>
New Features and Enhancements
<ul>
<li>FIT file support for Mac OSX - Rainer Clasen</li>
<li>SRM 5 - Rainer Clasen</li>
<li>Aerolab Improvements - Damien Grauser</li>
<li>O-Sync Macro X device support - Damien Grauser</li>
<li>Air density (RHO) Calculator - Steven Gribble</li>
<li>Virtual Power - Darren Hague</li>
<li>GoldenCheetah JSON - Mark Liversedge</li>
<li>Support TrainerRoad.com TCX Files - Mark Liversedge</li>
<li>Garmin GPX - Greg Lonnon</li>
<li>Sigma SLF/SMF - Frank Zschockelt</li>
</ul>
</p>
<p>
Internationalisation
<ul>
<li>Czech (David Kramar)</li>
<li>French (Damien Grauser, Guillaume LeMaitre)</li>
<li>German (Alexander Pietsch)</li>
<li>Italian (Robert Masso)</li>
<li>Portugese (Thomas Irps)</li>
<li>Portugese-Brazil (Bruno Assis)</li>
<li>Japanese (Mitsukuni Sato, Keisuke Yamaguchi)</li>
<li>Spanish (Alejandro Martinez)</li>
</ul>
</p>
<p>
Development Builds
<ul>
<li>Gareth Coco</li>
<li>Jamie Kimberley</li>
</ul>
</p>
<p>
Full Change Log
<pre>
Alejandro Martinez (7):
Add Spanish Translation and Enable Metrics Translation
Add Spanish Translation & Fix Translation Issues
Set UTF-8 in charts,metadata and seasons xml files
Add HrZones to Weekly Summary and Fix Spanish Translation
Update Spanish Translation
Enable 3d Plot Translation and include spanish translation
Rho Estimator Translation
Bruno Assis (1):
Portugese (Brazil) Translation
Damien (22):
Modify csv import for ergomo file with comma or semicolon separator
Remove error logs for unused datas in ride file
handle showHr/Speed/Cad/Alt state for stacked view
Add summary metrics list to preferences
Correct crash with truncated files
Add PeakPowerHr metric (average HR during peak power)
Altitude scale present with no altitude data.
Bug #178 TRIMP is not updated after modification in Rest Hr Tag -> compute metric after save
Add a setFocus on the Treelist to correct a MacOs Bug of Qt
Modification to handle odd start page and compatible with qt 4.6
Correct interval
Modify TRIMP formula to use time_riding instead of workout time
Modify Aerolab to add interval highlight and zoom + auto offset
Aerolab : Change LCD display to LineEdit
Correct bug in the peakPowerHr formula
Correct encoding in json parser
Correct bug #496 for longitude < -65
Remove Joule warnings
Update french translation for rho estimator
Change speed to double in Bin parser
Correct intialisation of altitude for TCX without altitude
Correct intialisation of altitude for TCX without altitude
Damien Grauser (2):
Update French translation.
O_Sync Macro X device support
Darren Hague (5):
Virtual Power; Better GSC-10 pairing support.
Corrected - to + in CycleOps formula
Use realtime clock for realtime-mode clock
Add virtual power support for BT-ATS trainer
Remove toMSecsSinceEpoch() and work around
David (1):
Updated Czech translations
Eric Brandt (1):
fix realtime mode load timer and lcd sig. digit display issues
Frank Zschockelt (2):
Support for Sigma SLF/SMF file formats
Included 4 sample sigma files in the test/rides directory
Gareth Coco (25):
Changes to map markers
FIT file reader fixes
Set default Smoothing (secs) in Ride Plot to one (1) second
Change start date from UTC to localtime for bin ride file
Make interval period on map user defineable
Reorder liboauth includes
Comment out QwtDesigner build in qwtconfig.pri.in
Changed kph to km/h in displays
Changed KPH to km/h in displays
Update translation .qm files
Update gc_fr.qm for updated French translation
Fixes for RealtimeController
Initialise LAT/LON to zero (0.0) in the parser
Updated Spanish Translation
Add a Portuguese translation
Add a TCX ride exporter
Fix interpolation of lat/lon when missing or 0/0
Allow CdA to lowest possible in AerolabWindow.cpp
Update translation files
Ordered build - qwt then src
Fixes for Manual Ride Entry
Comment added and replace tabs with spaces
v2.1dev - Allow ride to be added with no Average HR
Update documentation
Added v2.0.0 information.
Greg Lonnon (3):
GPX RideFile Support
changes to the markers in google maps.
Added a QFilesystemWatcher to monitor adding files to the workout directory.
Ilja Booij (1):
fix 'Wrong distance on Tacx caf file import'
Jamie Kimberley (6):
Update download page to reflect build of mac 10.4
force use of no elide and scrollbars in main tab
Update user guide steps 1 and 2
clean up wishlist web page
Add other TRIMP metrics to performance manager.
update French Translation
Justin Knotzke (2):
Cycleops Test Ride
Update of German translation by LukeNRG
Keisuke Yamaguchi (1):
Update Japanese translation files
LukeNRG (4):
German Translation
Updated German Translation
Updated German Translations
German Translations
Mark Liversedge (59):
Updated www.goldencheetah.org for v2.0 release.
Joule support fixed on download page.
Add link to wiki from the website.
Mac PPC binary added to downloads page.
Translations Bonanza!
Fix Computrainer with Stereo FTDI adaptor
Fix 'Save data' in RealtimeWindow
Updated Czech translation
Fix Wko GPS parsing on 64bit
Fix Virtual Power for Fluid2
Revert "Add Spanish Translation and Enable Metrics Translation"
Fix WKO parser for Ergomo users
Better rounding of time in AllPlot
Fix WKO+ file reader GPS 'drops'
Remove console error for seasons.xml
Fix RideSummaryWindow crash
Fix RideEditor find dialog for 'between'
Fix .man crash in CP plot
Better support for Negative, Inf, NaN and High Values
Fix annoying gap in CP curve.
Fix Save when old .bak exists
Fix SummaryWindow crash
Don't allow Nan or Inf sample values
Fix LogY Intervals on Histogram
Fit files sometimes go backwards
Guess ride date time for Poweragent CSV files
Add JSON support to v2.1
Fix date/time handling when importing rides
Update .gitignore for Lex/yacc
Fix Macro device data crash
Support FR310xt latest firmware
Fix FitRideFile for header change
Fix Download Ride Dialog instructions refresh
SplitRide overwrites existing file
Revert "SplitRide overwrites existing file"
Fix Split Ride file loss bug
Check Date/Time unique
Summary fixups
Updated translation files.
Add virtual power for LeMond Revolution
Use strtod() to convert text to double
Fix FTDI Adaptor on Linux and Mac
Better Bounds Checking in RideFile::intervalBegin()
Forward support in .json for temp/slope
Add Virtual Power for 1UP USA bike trainer
FitRideFile distance of zero bug
Disable roch text in metadata
Fix zero speed in TxtRideFile for Imperial units
Support TrainerRoad.com TCX Files/Tcx speed in meters/sec The TCX parser ignored samples where distance is
Fix crash if TRIMP zones > 5
Fix PWX file intervals
Fix SEGV on empty/dodgy FIT files
Mitsukuni Sato (1):
Japanese Translation
Rainer Clasen (8):
Added SRM5 file format read support
whitespace cleanup
fix reading signed values from srm files
Fit: ignore unknown message types
Fit: support big/little endian data
Fit: handle unknown fields gracefully
SrmRideFile: turned assertions into graceful fail
FitRideFile: turned assertions into graceful fail
Roberto Massa (1):
Italian Translation
Roderic Campbell (1):
There was what looked like a copy paste error. I changed the zone 7 label to the appropriate 7 instead of
Steven Gribble (1):
This patch adds an air density (rho) calculator feature to GoldenCheetah.
Thomas Irps (1):
Portuguese translation
Tim Shaffer (1):
Make the default date range for Performance Manager a user preference.
kohasa (1):
enabled editing interval duration by keyboard.
lemaitre (1):
Updating of the French translation
unknown (1):
This patch correct altitude for TCX files converted from FIT files These files doesn't have altitude for e
</pre>
</p>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,99 @@
<p>
<font face="arial,helvetica,sanserif">
<big><strong>GoldenCheetah 3.0.1</strong></big>
</font>
</p>
<p>
Full Change Log
</p>
<pre>
$ git checkout release_3.0.0
$ git shortlog v3.0-SP1 ^v3.0
Christian Stade-Schuldt (1):
Updated Tacx Satori Virtual Power values
Damien (16):
CsvRideFile: add temperature and hill slope (%) parsing for ibike csv file
Bin2RideFile: Changes in Summary pages for Data version 5
Bin2RideFile: correct bug for some GPS data
JouleDevice: Remove debug lines
JouleDevice: Remove debug lines
Aerolab: Add a constant altitude option
GoogleMap: Little fix
ShareDialog 2/3 : For version 3.0.1
FitRideFile: Add Calibration Event parsing
Correction for release_3.0.0 branch
AllPlot: plot references lines
OAuthDialog: Remove qDebug()
ShareDialog: Manage null error message
ShareDialog: Add upload to CyclingAnalytics and SelfLoops
FitRideFile: Correction for last Garmin firmware updates In last Garmin firmware there is some (unknow) fields with multi
FitRideFile: - Add Left/Right TorqueEff and Left/Rigth PedalSmooth - Open Truncated file
Dave Waterworth (2):
Fix Tacx Fortius Device Support
More Fortius Fixes
Eric Johnson (1):
Use float division when converting wheel size
G Coco (2):
Reinstate Twitter functionality
Merge StraveDialog and RideWithGPSDialog
Gareth Coco (3):
Website updates for Version 3.0 (cherry picked from commit fb339a527b7937ef8141b90af81cd2fd8017f891)
assert cleanup
Update translation source files
Jaime (1):
Work around to ensure controller key presses aren't missed. Borrowed from Fortius.cpp
Jon Escombe (3):
Detach kernel driver before claiming USB2 ANT+ interface.
Don't reset ANT channel settings on search timeout
Don't reset ANT channel settings on search timeout
Mark Liversedge (18):
Fixup Fit File issue
Fix PWX export SEGV
Deprecate Strava Support
Fix allplot crash on daft power value
Recognise Dave Waterworth
Merge pull request #694 from gcoco/release_3.0.0
Truncate Altitude values
Interval Summary Off By 1 Error
Add /dev/cu.usbserial as a serial device
Merge pull request #713 from gcoco/qwt-fix
V3.0 SP1 RC1 Update
Fix LC_LOCALE on Xcode 5
Fix findBests when no speed/gps
Merge branch 'release_3.0.0' of https://github.com/GoldenCheetah/GoldenCheetah into release_3.0.0
Batch Export remembers last format/dir
Fix 3d grid when users specify background colors
Fix SEGV if metric not available
V3.1 SP1 (3.0.1) released
Rainer Clasen (9):
SrmDevice: fix writing srmio data
inlude srmio version + commit in about dialog
make srmio details in version dialog conditionally
Tcx: fix speed in summary information
fix PWX export: handle end of gaps gracefully.
fix PWX export: always write summarydata
PWX export: keep timestamp + distance precision
PWX: read/write temperature
use pwx for Trainingstagebuch upload
Walter Bürki (1):
adding hr,cad,power,temp of Suunto Ambit gpx files
gcoco (5):
Support Twitter API 1.1
Twitter API change
Kurt Kinetic Road Machine PowerCurve fix
Get rid of qwt compile error about format string.
Add Garmin Forerunner 910XT
</pre>

View File

@@ -3,6 +3,12 @@
<p>
<center>
<p>
<h2><font face="arial,helvetica,sanserif">
Version 2.1.0
</font></h2>
<p>
<p>
<big><font face="arial,helvetica,sanserif">
Ride Summary

View File

@@ -1,12 +1,24 @@
<!-- $Id: users-guide.content,v 1.5 2006/05/27 16:32:46 GoldenCheetah Exp $ -->
<h2><font face="arial,helvetica,sanserif">Version 3.0</font></h2>
<p>
Please dowload the <a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-Manual.pdf?raw=true">Manual</a>
for great information on how to use all the functions in Golden Cheetah.
</p>
<p>
You can also see a list of
<a href="https://github.com/GoldenCheetah/GoldenCheetah/blob/master/doc/user/GC3-FAQ.pdf?raw=true">Frequently Asked Questions (FAQ)</a>.
</p>
<p>
Note that more detailed information is often available on the
<a href ="wiki.html">
Golden Cheetah Wiki</a>.
<h2><font face="arial,helvetica,sanserif">Version 2.1</font></h2>
<p>
What follows is a brief step-by-step guide to installing and setting up
Golden Cheetah.
Golden Cheetah Version 2.1.0.
<p>
<big><font face="arial,helvetica,sanserif">

BIN
doc/wiki/2d_Plot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

BIN
doc/wiki/3d_Plot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
doc/wiki/Aerolab.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Some files were not shown because too many files have changed in this diff Show More