Compare commits

...

202 Commits

Author SHA1 Message Date
Mark Liversedge
73a354156d VERSION 3.6 DEVELOPMENT BUILD JULY 2021
.. marking up for release of a new development build.

[publish binaries]
2021-07-09 14:37:30 +01:00
Mark Liversedge
cb092b9d73 Interval Metric config becomes Favourite Metrics
.. Unifying the metric config to "Favourite" metrics that are
   used on the interval sidebar, compare pane and trends popup.
2021-07-09 12:56:14 +01:00
Mark Liversedge
722588f1db Remove RideSummaryWindow configuration pages
.. now the RideSummaryWindow is deprecated we no longer need
   to configure the metrics / bests being displayed on it.
2021-07-09 11:20:29 +01:00
Mark Liversedge
9d6e08547f Deprecate RideSummaryWindow
.. the ride summary on analysis and trends is now replaced by
   the overview dashboard.

.. since RideSummaryWindow uses html to deliver content via
   an embedded web browser it had become unwieldy and the
   UX was klunky and static.

.. additionally the code was unwieldy and difficult to
   maintain and update when new feature were introduced.

.. this is a happy day, goodbye and farewell.
2021-07-09 09:02:50 +01:00
Alejandro Martinez
39a7e67085 Add parent widget to AddPerspective dialog to stop it being hidden
raise doesn't fix the issue on Windows
2021-07-08 18:24:47 -03:00
Mark Liversedge
c4d6ee065e Raise the AddPerspective Edit dialog to stop it being hidden 2021-07-08 19:49:26 +01:00
Mark Liversedge
b738038907 Trends view perspective filter
.. applies to all charts in the perspective, so you can create
   a perspective called "Running" and set the filter to "isRun"
   and all charts in the perspective will only show data from
   runs.

.. updated charts on Trends view to honor the perspective
   filter, as below:

   * Overview
   * Trends
   * User Chart
   * Treemap
   * Critical Power
   * R Chart
   * Python Chart
   * Histogram - for metrics
   * Summary - no change as deprecating shortly

.. renamed the HomeView to TrendsView in line with some of the
   other recent name changes. The class names were set over 10
   years ago and no longer reflect the UI concepts.

.. New signal: GcWindow::perspectiveChanged(Perspective *)

   When the chart is moved from one perspective to another, likely does
   not need to do anything on Analysis view, but on Trends view its
   quite likely the filter has changed, so refresh is needed.

.. New signal: GcWindow::perspectiveFilterChanged(QString)

   When the perspective filter is updated this signal is called but
   only on trends view since it doesn't really matter on Analysis
   from the charts point of view.
2021-07-08 15:17:14 +01:00
Mark Liversedge
3bc1391cb1 Fix display artefacts from last commit
.. although its sub-optimal, this fix resolves rendering issues
   on startup in analysis view (blank chart bar and related).
2021-07-06 18:16:36 +01:00
Mark Liversedge
73e174a982 Startup Analysis view select perspective
.. at startup the perspective selection logic for analysis
   view was not called and just defaulting to the first
   available perspective in the analysis view.
2021-07-06 17:23:17 +01:00
Mark Liversedge
20d34664e3 Analysis View Switch Perspective automatically
.. when creating a perspective you can now add an expression
   that will be evaluated when a ride is selected in the sidebar.

.. For example you can create a perspective "Running" with an
   expression "isRun". When a run is selected on the sidebar
   we automatically switch to the running perspective.

   If now, whilst on the "Running" perspective you select say
   a cycling activity, the expression will evaluate to false,
   so we will look for another perspective to switch to.

   If no expression is found to switch to, and the current
   perspective has an expression that is evaluating to false
   then we just switch back to the first perspective in the
   list (you can reorder them if needed).
2021-07-06 15:39:47 +01:00
Mark Liversedge
8c5144657c Export perspective filename
.. add the view type it is for to the default name, so at least
   the user will have some clue when sharing etc.
2021-07-05 12:00:52 +01:00
Mark Liversedge
eadc3a78bf Honor type of Perspective when import/exporting
.. the perspective type is added to the xml when exporting and
   also when saving state.

.. on import the perspective type is checked to make sure we
   don't import trends views into activities and vice versa.
2021-07-05 11:42:39 +01:00
Mark Liversedge
68e7fcacb4 Perspectives - Part 4a of 4
.. Import and Export perspectives to an '.gchartset' file
   as XML data.

.. Added to MainWindow's View menu and the Manage Perspectives
   dialog.
2021-07-05 11:06:02 +01:00
Mark Liversedge
4e570230a7 Standard Colors Tweaking
.. User Chart annotation labels now work when a standard color
   has been selected.

.. The name of the standard color "CP Curve" has been renamed
   to "Mean-maximal Power" to more accurately reflect how it
   is used in the Critical Power standard charts.
2021-07-04 22:04:26 +01:00
Mark Liversedge
830317ef03 Search Standard Colors in Appearances options
.. so its easier to find the one you want to set.
2021-07-04 21:30:44 +01:00
Mark Liversedge
1335786957 Remove debug
.. erroneous updates left in last commit. Apologies.
2021-07-04 21:13:44 +01:00
Mark Liversedge
271c0a979a Add search when choosing standard colors
.. there are lots of standard colors and they're hard to scroll
   through. A new search box makes it easier to find them.

.. this is in anticipation of adding a lot more standard colors
   for things like W', Pmax, Weight yada yada
2021-07-04 21:10:08 +01:00
Mark Liversedge
1026145f9b Perspectives - Part 3 of 4
.. New dialog to rename, add and remove perspectives, re-order them
   and move charts from one perspective to another.

.. The focus is on managing perspectives and not the general UI
   layout (ie. add/remove charts and rename things etc) this is
   likely to be something this morphs into, but for now lets
   keep it simple (this was complicated enough !)

.. also found a SEGV in CP chart when hover in allplot before the
   CP chart has been notified in another perspective-- there are
   likely to be a few of these kinds of bugs around.
2021-07-04 15:34:40 +01:00
Alejandro Martinez
fe2643eb65 Workout Editor - Change the representation of 1 point workout
When you start with a single click the workout is represented graphically
as a ramp from zero, but the qwkcode and erg code generated starts with a block.
Additionally an initial ramp starting from zero neither works.
This was reported at the forum and, although it is mostly cosmetic, it can be
annoying, so this change fixes both.
2021-07-03 18:47:35 -03:00
Alejandro Martinez
6ecff9e2d1 Travis-ci - build only to generate binaries
[skip appveyor]
To spare scarce Travis-ci credits.
2021-07-02 11:54:56 -03:00
Alejandro Martinez
9023014833 Change build status from travis-ci.org to travis-ci.com
[skip ci]
2021-06-29 17:24:41 -03:00
Alejandro Martinez
c7599be666 Disable RideWithGPS upload
It doesn't work since v1 API was deprecated and v2 support is not complete,
so let's disable it for now.
Related to #3371
2021-06-29 09:47:07 -03:00
Alejandro Martinez
0dd9d045cd Disable dynamic reapply of DataFilter
When activities list is filtered, RideNavigator lose the focus on selected
activity if the filter is reapplied on rideSelected.
Fixes #3341
2021-06-27 19:41:27 -03:00
Alejandro Martinez
7540b69eea Fix error in German translation causing non-refreshing R Chart in Trends
Difference between R Chart in Activities and Trends is a blank at the end
of the name, which is not preserved in German translation so new R Charts in
Trends are created as Activities charts.
Fixes #3427
2021-06-26 10:38:33 -03:00
Alejandro Martinez
de3fadf8e7 Disable extended selection mode in Train workout list
It is unnecessary, since Train mode supports only 1 workout at a time,
and single selection makes it easier to scroll the list in tablet mode.
Related to #3268
2021-06-25 19:43:36 -03:00
Alejandro Martinez
a70231c4bb Update Workout_Control.png for v3.6
[skip ci]
2021-06-25 17:26:39 -03:00
Alejandro Martinez
0262d5f968 Disable VideoSync when using Qt5 video
It is not ready to use.
2021-06-25 14:00:40 -03:00
Alejandro Martinez
6919ade54e Fix build error on VideoWindow when building with Qt5 video
This bug was introduced by #3764
Fixes #3907
2021-06-25 12:04:57 -03:00
Alejandro Martinez
0243aedded Athlete Library setting - Avoid warning when there is no change
Current GC root can be different from athlete library setting
due to GC startup logic and the spurious warning is confusing.
Revert to previous value, not current GC root, if the user chooses to.
Fixes #3903
2021-06-24 19:32:52 -03:00
Mark Liversedge
32a6089f50 Fix SEGV in validation of xdata function
.. xdata() caused a crash in the validator since it tried
   to dereference parameters and caused an index assert.
2021-06-23 12:35:10 +01:00
Mark Liversedge
58c5cc20d2 Trends Chart support named colors
.. better support for themes, trends chart colors update
   based upon the theme if we use named colors.
2021-06-23 10:55:24 +01:00
Mark Liversedge
8753032170 Tidy up perspective selection
.. and setting current ride / date ranges. fixing a regression
   introduced with the recent perspective changes.
2021-06-22 18:40:59 +01:00
Mark Liversedge
e448aa1a8d Fixup date range selection on trend view
.. broken in part 2 of the perspectives updates.
2021-06-22 17:46:29 +01:00
Mark Liversedge
58c8b98f47 Fix UserChartData SEGV when no ride selected
.. edge case but common for new users with no data.
2021-06-22 17:24:24 +01:00
Mark Liversedge
586033c6a5 Fix Chart tab color when dragging
.. it always had a black background instead of the color
   of the tab being dragged, which was jarring with a
   light color scheme.
2021-06-22 17:01:04 +01:00
Mark Liversedge
154077793e Move source for Perspective
.. originally Charts/HomeWindow.{cpp,h} now moved to
   Gui/Perspective.{cpp,h} since its a core Gui element.
2021-06-22 15:53:17 +01:00
Mark Liversedge
07d835e076 Perspectives - Part 2 of 4
.. Perspectives can now be added and are saved and restored on
   startup and close.

.. A new config file 'xxx-perspectives.xml' replaces the old
   'xxx-layout.xml'.

.. HomeWindow has been renamed Perspective across the code.
   With TabView now taking responsibility for loading and
   saving configuration.

.. This is a fairly big refactor that touches upon a number
   of events at startup, including how sidebar events are
   propagated across charts and tabs. And will need a reasonable
   amount of testing before release.

.. Separately, I also fixed a SEGV in the Python chart when
   no ride is selected (an old bug not related to this).
2021-06-22 14:51:13 +01:00
Mark Liversedge
3888246b42 Perspectives - Part 1 of 4
The user will be able to create collections of charts as opposed to
the single long list of charts in each of the four views.

This first update:

.. update toolbar to include a perspective selector

.. also updated aesthetics of toolbar (mostly icons on hidpi)

Further updates pending will:

.. part 2 will introduce code to add, save and restore perspectives

.. part 3 will introduce code to manage and rename perspectives

.. part 4 will introduce new defaults for each perspective

A future enhancement may allow the perspective to be aligned to a
specific sport in activity view, so the perspective can be selected
based upon the sport of the activity being analysed. But that will
not be part of these changes.
2021-06-18 16:15:56 +01:00
Alejandro Martinez
061cb9328c Fix Elevation - Add MapQuest API Key as DP parameter
MapQuest API Key is a new DP parameter to allow users to enter one
and have personal transaction limits.
When empty it defaults to GoldenCheetah API key as before.
Fixes #3900
2021-06-14 19:04:34 -03:00
Alejandro Martinez
c3a1afa0a0 Reduce stack use of DataFilter evaluator
Making Result parameter of Leaf::eval a const reference.
Fixes stack exhaustion on Windows while evaluation nested formulas.
2021-06-13 09:47:26 -03:00
Alejandro Martinez
968bdc1d17 Train WorkoutWidget and WorkoutWizard - Avoid crashes when no zones
Even when zones are created for new athletes, better be safe.
2021-06-11 14:19:11 -03:00
Mark Liversedge
d17d3c59a3 VERSION 3.6 DEVELOPMENT BUILD JUNE 2021
.. marking up for release of a new development build.

[publish binaries]
2021-06-08 08:23:18 +01:00
Alejandro Martinez
99f73bdba5 Use translated version of Bike in sports list for zones
[publish binaries]
2021-06-06 15:03:19 -03:00
Alejandro Martinez
df08c607d1 Update translations files and fix minor translations related issues
There is a pending issue: Class 'GColorDialog' lacks Q_OBJECT macro
[publish binaries]
2021-06-06 11:48:47 -03:00
Alejandro Martinez
2b063c91c2 Ensure default sport for zones 2021-06-06 05:28:40 -03:00
Alejandro Martinez
6e4dba86f0 Fix crash at startup when there is no power.zones 2021-06-05 19:56:15 -03:00
mp
316e62d27c Added missing include <limits> header for std::numeric_limits (#3894) 2021-06-04 11:04:18 +01:00
Alejandro Martinez
a5043d1b59 Identify common endurance sports names for endurance athletes
including translations
To ensure consistency in zones assigment and sync.
Other sports can be added as usual.
[publish binaries]
2021-06-02 11:11:50 -03:00
Alejandro Martinez
0ba409a192 CPPlot - Display model parameters in Pace units for Row
Missing from previous commits
2021-05-29 19:03:23 -03:00
Alejandro Martinez
aed30180f6 Add Pace Row to LTMPopup
Missing from previous commit
2021-05-29 10:47:58 -03:00
Alejandro Martinez
773e5a21b0 Add Row to default sports and Pace Row (min/500)
Fixes #3892
2021-05-27 21:08:34 -03:00
Alejandro Martinez
0d0cf42918 Enable specific HR and Power zones for other sports
Any sport present in the list of possible Sport field values
can have its own HR and/or Power zones like Run before.
Otherwise Bike zones are used as default for backward compatibility.
Fixes #3280 combined with last 3 previous commits.
[publish binaries]
2021-05-26 19:04:32 -03:00
Alejandro Martinez
5472b0b50b Fix missing replacement in LMPlot.cpp from last commit
It goes undetected by MSVC, weird.
2021-05-26 17:09:33 -03:00
Alejandro Martinez
3a07cc52d7 Generalize Power Zones for any sport
All sports defined as values for Sport metadata field can have
specifics Power Zones and default to Bike zones otherwise.
Similar to current power zones for Run.
Part 3 of #3280
2021-05-26 16:15:27 -03:00
Alejandro Martinez
380dc47ac7 Generalize HrZones for any sport
All sports defined as values for Sport metadata field can have
specifics HR Zones and default to Bike zones otherwise.
Similar to current HR zones for Run.
Part 2 of #3280
2021-05-25 20:28:15 -03:00
Mark Liversedge
815496a8d1 Flatten Train View Load Colors
.. the alpha channel was too agressive for light backgrounds and
   was washed out and unpleasant on the eye.

.. reduced the alpha blend to make it flatter and cleaner.
2021-05-23 10:07:28 +01:00
Mark Liversedge
6486e89145 Fix show efforts on CP Plot
.. showEfforts was not being initialised when the plot was created
   which resulted in sustained efforts always being shown regardless
   of the chart setting.
2021-05-22 15:24:47 +01:00
Mark Liversedge
d83041282d User Charts and the Configured Colors - Part 2 of 2
.. themes are now either light or dark, which selects the default
   color set used to set the standard colors.

.. users can of course maintain them, but when applying a theme
   there is no need to adjust now (some of the default colors looked
   poor on a light background).

.. there is a line of code in main.cpp to dump the current colors to
   stderr so it can be cut and paste into colors.cpp -- this makes it
   much easier to use the UI to maintain colors and update the code.
   this is obviously just for developers.

.. letting users define their own themes could be done later, but feels
   like overkill at this point.
2021-05-22 15:11:20 +01:00
Mark Liversedge
176226545f Logical operator is && not "and" in C++
.. bit of a brain fart that g++ clearly allows, whilst MSVC doesn't.
2021-05-22 13:10:45 +01:00
Mark Liversedge
df1d83c357 User Charts and the Configured Colors - Part 1 of 2
.. When creating user charts we can now select a standard color as
   configured in appearances.

.. This means users can select e.g. the "Power color" when plotting a
   power series.

.. The second part of this commit will update the themes to ensure that
   the standard color settings are appropriate for the background (as
   they are inappropriate currently. e.g. Critical power is always
   yellow, even on a light background).
2021-05-22 12:49:55 +01:00
Alejandro Martinez
20a7d74c16 Air density calculator: add ability to use relative humidity
Fixes #1383
2021-05-21 20:28:15 -03:00
Mark Liversedge
489c499ba7 isinf() not std::isinf()
.. sigh. should have been in last commit to fix the one prior.
2021-05-21 13:36:05 +01:00
Mark Liversedge
95e5cb3bc4 isnan() not std::isnan()
.. fixup last commit.
2021-05-21 12:42:38 +01:00
Mark Liversedge
9a0b6e0bc7 qSort is deprecated, use std::sort
.. mostly straight replacement as qt5 containers are templated
   and qSort semantics are the same as std::sort

.. prepping for Qt6.2 which is due late 2021.

Signed-off-by: Mark Liversedge <liversedge@gmail.com>
2021-05-21 11:30:46 +01:00
Alejandro Martinez
44f49c54d6 Air Density Calculator - Use Average Temp from current activity
When available. Fixes #1386
2021-05-20 20:24:22 -03:00
Ale Martinez
bee7d48ac2 DropBox - Report message on connection error 2021-05-18 13:35:39 -03:00
Ale Martinez
d7e1747a2b Python API - setTag/delTag/hasTag manage overrides
Continuation of previous commit. Caveat is value argument is string
so the user is resposible of providing proper string representation
of the value for overrides and numeric metadata.
2021-05-18 13:03:07 -03:00
Alejandro Martinez
9315b301d7 Add setTag/delTag/hasTag to Python API
For Metadata handling in Python Data Processors, similar to set/unset/isset
in formulas, but no metric overrides for now.
- setTag(name, value[, activity])
- delTag(name[, activity])
- hasTag(name[, activity])
All return boolean success indicator and activity is optional,
defaulting to current activity.
setTag and delTag are enabled only in Python Data Processors, mark
the activiy as modified and notify metadata has changed on success.
Fixes #3639
2021-05-17 19:32:41 -03:00
Mark Liversedge
4d5841e4b1 Move Boost GeometricTools_BSplineCurve.h to contrib
.. it is not our code.
2021-05-16 12:27:17 +01:00
Mark Liversedge
e1ac00b860 Move contributed sources to contrib directory
.. Makes it easier to identify code that has been snaffled in from
   other repositories and check licensing

.. The httpserver is now no longer optional, since it is delivered
   as contributed source.
2021-05-16 10:33:09 +01:00
Alejandro Martinez
3d07321b2f RideNavigator - Use uniform row height (#3890)
Variable row height, depending on activity calendar text being empty or not,
provokes refresh issues when calendar text changes from empty to not, or
viceversa.
Instead to try to solve this issue with specific code, I think it is
simpler, and more regular from UX point of view, to have a uniform row height.
After this change row height depends on metadata config only:
1) a new RideMetadata method is introduced (hasCalendarText) to check if
   Calendar Text can be non empty, i.e. if some field has diary checked.
2) RideNavigator uses this method when config changes to set hasCalendarText
   member used to determine row height for all activities.
Fixes #3074
2021-05-15 16:55:38 -03:00
Mark Liversedge
c4204231cc Fix Train Multi/Poly Regression compiler warnings
.. they hide real issues.
2021-05-15 15:24:31 +01:00
Mark Liversedge
f279898bd5 Fix Realtime widgets compiler warnings
.. they hide real issues.
2021-05-15 14:50:22 +01:00
Mark Liversedge
6560194db4 Fix LM compiler warnings
.. they hide real issues.
2021-05-15 14:30:40 +01:00
Mark Liversedge
aaa6bac5ed Fix Colors.cpp compile warnings
.. they hide real issues.
2021-05-15 14:07:08 +01:00
Mark Liversedge
a4e9b52eeb Fix TTSReader compiler warnings
.. spurious warnings hide real issues.
2021-05-15 12:58:56 +01:00
Mark Liversedge
ae2df3a271 Fix KurtInRide/SmartControl compiler warnings
.. they hide issues that are real.
2021-05-15 12:42:25 +01:00
Mark Liversedge
ce920126f5 Fix Imagic compiler warnings 2021-05-15 12:32:34 +01:00
Mark Liversedge
cebf46a99d Disable warning messages for BSPline/FixGPS
.. on a mission to clean up compiler warnings that hide real issues.
2021-05-15 12:19:52 +01:00
Ale Martinez
f072a1ad6e EPM Parser - Don't overwrite distance from position records
For older files with dpf match is not exact, missing coordinates
can be completed using FixGPS.
2021-05-12 19:09:59 -03:00
Paul Johnson
f77f040ae7 Additional Median Option in "Fix Power Spikes" Data Processor (#3887) 2021-05-12 13:43:26 -03:00
Ale Martinez
07c532a588 EPM Parser - Compute distance for old files with dpf 2021-05-09 14:24:19 -03:00
Ale Martinez
6572bbb52a Train View - Auto select matching media and videosync files
When a workout file is selected.
Fixes #3886
2021-05-08 19:06:59 -03:00
Nils
3e153f03ac Velo Hero: Use HTTP with TLS and custom User-Agent (#3885) 2021-05-08 18:07:49 -03:00
Ale Martinez
ac606065aa Train View - Save workout name as Route metadata
Fixes #3630
2021-05-08 17:05:09 -03:00
Ale Martinez
0a03aac7e8 Train View - Cancel any pending start on disconnect 2021-05-07 10:46:05 -03:00
Ale Martinez
79f4bb2815 Train View - Optional countdown for start workout
Configurable in Train Preferences, defaults to 0, which is current behavior.
When countdown > 0, start is delayed and countdown is displayed in
notifications panel.
Fixes #3632
2021-05-06 20:11:46 -03:00
Ale Martinez
d932811c97 PMCData - create a DataFilter for eval at refresh time
To avoid crashes at refresh time on PMC formulas with an expression argument
like sts(BikeStress ?: TRIMP_Zonal_Points)
Fixes #3788
[publish binaries]
2021-05-05 18:29:47 -03:00
Ale Martinez
1e1ddfaaee PMCData - use the metric case when expression is a metric name
Since a simple metric name is the most common use case for PMC functions,
it is useful to avoid the need to call the expression evaluator at refresh
time, for better performance and to sidestep #3788.
2021-05-04 20:38:54 -03:00
Ale Martinez
3e6214624d Activity Chart - don't smooth when secs are not available
This is an edge case, but let's avoid a weird behavior.
2021-05-02 17:13:46 -03:00
Ale Martinez
88060faab6 Activity chart full replot on x-axis change
This is a continuation of previous commit, since x-axis change affects
the is blank status we need a full replot to consider cases when the
selected activity lacks time or distance.
2021-05-02 09:53:54 -03:00
Ale Martinez
6c2a435759 Set Activity plot to Blank when the x-axis series is not present
Fixes #3588
2021-05-01 21:09:26 -03:00
Ale Martinez
c9e01353a0 Equipment update on Strava download
This is a simpler and more efficient version of 96c8508, no need to use
getGearById service since SummaryGear is already available in DetailedActivity
2021-04-30 21:26:02 -03:00
Ale Martinez
9ff6d6ab97 Allow Device metadata field changes like standard fields
This change remove deviceType_ private member from RideFile
replacing its use by access to "Device" metadata field.
The objective is to remove limitations  s.t. update using set
in formulas and ride navigator immediate refresh.
Fixes #3760
2021-04-30 12:51:08 -03:00
Mark Liversedge
d27327d8c1 Improve error message for measures field names
.. when trying to find the right values for the measures() datafilter
   function e.g. measures("Body", "weight") it was not clear why this
   was failing. Added more information to the error message.
2021-04-30 15:23:38 +01:00
Ale Martinez
55e9cdb444 Restrict Scope authorization to drive.file for Google Drive
Full drive access was revoked and drive.apps doesn't work,
bug drive.file is enough for our purposes.
Fixes #3440
2021-04-26 13:08:56 -03:00
Ale Martinez
46be903027 Set HTTP User Agent in Web chart and OAuth dialog
To avoid Google authentication problems.
Fixes #3876
2021-04-26 11:58:42 -03:00
dconka
6c960f11c3 Add more Sigma Sport devices (#3877)
Add new SIGMA Devices ROX 11.1, ROX 2.0, ROX 4.0 and missing PURE GPS
2021-04-26 09:31:22 -03:00
Ale Martinez
96c8508da2 Get Equipment name on Strava download
When the downloaded activity has gear_id, details are retrieved
and name is added to Equipment metadata field.
[publish binaries]
2021-04-23 19:55:51 -03:00
Ale Martinez
37c1ec4bd8 Sync Strava trainer tag
A new Trainer metadata field is included in metadata.xml
On upload a checked Trainer metadata field, or the presence of
TRAIN XData series, marks the activity as trainer.
On download the trainer flag is used to update Trainer metadata field.
2021-04-23 18:11:25 -03:00
Ale Martinez
5540160d3f Sync Strava commute tag
A new "Commute" tag of type CheckBox, added to Workout Tab,
is used on Strava Sync.
Fixes #3700
2021-04-21 19:49:57 -03:00
Alejandro Martinez
2536bafcb2 Tidy up issue template [skip ci] 2021-04-21 18:38:36 -03:00
Alejandro Martinez
8de66b8f2b Update issue template [skip ci]
Let's try to make it more explicit...
2021-04-21 17:59:39 -03:00
Ale Martinez
2cbf324a26 Upgrade Python to 3.7.10 for Travis-ci Linux builds
[skip appveyor]
Python 3.7.9 AppImages is not available anymore.
2021-04-21 12:53:20 -03:00
Ale Martinez
4c7bdc3963 Add context help for Training Preferences and AddDeviceWizard
[publish binaries]
2021-04-21 11:51:07 -03:00
Ale Martinez
133364e597 Fix startup crash on Windows/Linux with HighDPI monitors
The problem is setStyle being applied before button creation...
This bug was introduced in c15d1bc, sorry.
2021-04-20 19:07:55 -03:00
Ale Martinez
39d19e8c1a TrainSidebar - Delay setWhatThis after addWidget
This is a complement of 5a1bd1a, a user is reporting a crash in
Widget::setSyleSheet on Windows at startup after that commit.
I cannot reproduce the issue, but since that change was modeled
after LTMSidebar, lets try to avoide the issue making it even more
similar. This way, the widget already has a proper parent when
HelpWhatsThis is added.
2021-04-19 14:34:13 -03:00
Ale Martinez
f0f1b13754 Deprecated defaultString from DeviceConfiguration
It is not used anymore.
2021-04-18 22:03:57 -03:00
Ale Martinez
de10c10a50 AddDeviceWizard - Add Virtual Power Name to final step
For clarity sake, we may add some validations and warnings later.
2021-04-18 21:05:47 -03:00
comediebenji
5d666c8233 Correcting bug with quote character in workout Textevents and ZWO export (#3872)
Add protection for all XML special characters in workout Textevents and ZWO export
2021-04-18 18:22:34 -03:00
grauser
696a04e8a0 Fit : Add Garmin Edge 130/130Plus 2021-04-18 10:22:24 +02:00
Ale Martinez
e261794992 AddDeviceWizard tidy up
Add recommendation to pair only FE-C sensor for FE-C devices
Group Custom Virtual Power settings, move Name and Create button,
rename for clarity and enable only when Name is not empty.
Remove compiler warnings.
Fixes #3697
2021-04-17 20:40:46 -03:00
Alejandro Martinez
465ec039a2 Enable SportTracks debug as a runtime option (#3869)
It can be enables adding:
--debug-rules "gc.sporttracks.debug=true"
to the command line.
2021-04-15 18:40:53 -03:00
Ale Martinez
ea548695b6 deriveExtCPParameters - Initial estimates setup after data verification
deriveExtCPParameters established Initial parameters estimates before
the data verification steps so when data don't meet the minimum
criteria for estimation those initial parameters are returned.
This change moves the initialization step after data verification,
similar to what deriveCPParameters does for the envelope fitting case.
Fixes #3862
2021-04-15 12:21:45 -03:00
Oleksiy Mishchenko
0b3a883303 Read EPOC from Garmin FIT file (#3860)
- Read Garmin/Firsbeat estimation of exercise load based on EPOC
- Add "Garmin Edge 1030 Plus" to the list of known devices
2021-04-14 21:34:04 -03:00
Michel Dagenais
c474dae4b6 Facility to trace all the USB communications (#3855)
A new logging category is added gc.usb, inactive by default, to log all the USB transfers between GC and the USB trainers. It can be activated by changing the logging filter with the --debug-rules option.
2021-04-14 21:01:44 -03:00
Ale Martinez
cb04baf734 Update Context Help for Options/Preferences and ScopeBar
Includes separation of Global/Athlete Options and New SideBar.
[publish binaries]
2021-04-14 12:52:31 -03:00
Ale Martinez
e79b474ea8 Add Context Help to Compare Pane and Workout Control 2021-04-13 14:36:01 -03:00
Ale Martinez
c01b696551 Add Context Help for Python, R, Web, Overview and User charts
Fixes #3868
2021-04-13 13:06:09 -03:00
Ale Martinez
5a1bd1a27e Add Context Help to Train View Sidebar and Charts
Fixes #3866
2021-04-12 23:58:04 -03:00
Ale Martinez
c15d1bc33b Add What's This to Help Menu and Toolbar
To make context help easier to access and promote the use of the wiki.
2021-04-12 18:26:32 -03:00
Alejandro Martinez
a0a9c31641 ConfigDialog - Enable What's this and disable min/max buttons
To make config dialog more similar to athlete config.
's
2021-04-10 19:44:20 -03:00
Alejandro Martinez
5f78616696 RideMapWindow - Fix wiki link and add subdomain to OSM Tile Servers 2021-04-10 17:07:58 -03:00
Ale Martinez
4ed2565b2f Map Chart - allow using apikey in OSM url and some useful defaults
This change adds some useful defaults for Tile Servers A/B/C when not set
and allows to enter full urls including apikey, s.t.:
https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=<your-apikey-here>
so use OpenCycleMap with your own apikey.
[publish binaries]
2021-04-09 16:03:04 -03:00
Ale Martinez
6e77d6bde8 Recognize Paul Johnson
https://github.com/GoldenCheetah/GoldenCheetah/commits?author=paulj49457
2021-04-09 12:34:10 -03:00
Ale Martinez
df1b5fdcaa RideMapWindow - Fix marker icons position for OSM maps
Leaflet.js API uses the upper left corner as reference point while
GoldenCheetah icons, designed for Google Maps API, uses bottom center.
Since all marker icons are fixed size 32x37, this change adds the attribute
iconAnchor:[16,37] to fix positioning.
Fixes #3193
2021-04-09 12:31:13 -03:00
Paul Johnson
378cf95784 New Map Chart display options (#3851)
This change allows the user to independently via the new chart checkboxes to:
- ignore any Power Shading Zones and always draw the red line (Hide Shaded Zones)
- remove the route background yellow line (Hide Yellow Line)
2021-04-09 12:30:11 -03:00
Ale Martinez
2a8678d416 Overview Metric Tile - Enable decorations for Pace related metrics
For Pace related metrics converting back from toString using toDouble
fails and then sparkline, up/down, etc. are not displayed.
This change avoids that conversion to fix this issue and to make code simpler.
2021-04-08 19:27:10 -03:00
Ale Martinez
e3fda3cc0d Overview - Fix up/down in Metric and RPE tiles
Add declaration for variable v inside the loop used to compute avg/min/max
to avoid affecting variable v in the outer scope, this is the minimum change
to fix the problem and the same pattern is present in other tiles.
Without this change up/down is based on the first activity of the same sport
in the previous 30 days, instead of the current one.
2021-04-07 21:11:44 -03:00
comediebenji
a2b95df762 Add "Ramp" qName to ZwiftParser (#3863) 2021-04-07 11:03:57 -03:00
Alejandro Martinez
3f476a8226 Add Polarized option to ZoneOverviewItem (#3858)
Adds a “Polarized” option to Overview Zone tile to chart HR/Power/Pace as 3 zones histogram, it has no effect on Fatigue/WBal zones.
Complements #2555
[publish binaries]
2021-04-04 09:43:08 -03:00
Paul Johnson
92f81ef711 Removed the unused styleOptions from RideMap (#3849)
* Removed the unused styleOptions functions and associated Q_PROPERTY.
* Remove unused dark.css resource
Co-authored-by: Ale Martinez <amtriathlon@gmail.com>
2021-04-02 18:56:47 -03:00
Ale Martinez
e849b4fd81 Workout Editor - round decimal watts for qwkcode and remove cues
Decimal watts, which tipically happens when a workout is scaled,
play havoc with qwkcode, so lets avoid them.
Text cues are not supported either in qwkcode yet, adding them
was my mistake, so I commented out them for now.
Fixes #3846
2021-04-02 14:54:22 -03:00
Ale Martinez
239f66fa6f Enable external links in AboutDialog
Fixes #3856
2021-04-01 10:39:10 -03:00
Ale Martinez
be3cb9d149 Change links to goldencheetah.org to use https 2021-04-01 10:36:11 -03:00
Michel Dagenais
58617cb165 Add debugging options to select the log file, format and rules, and redirect stderr (#3837)
* Add debugging options to select the log file, format and rules, and redirect stderr even on Windows
* unistd.h does not exist on Windows use io.h instead
* STDERR_FILENO does not exist on Windows
* Different strategies and much error checking to redirect stderr on Windows
* Synchronize cerr and stderr with filedes 2 and STD_ERROR_HANDLE
* Some functions like write in Linux and Win32 have slightly different signatures
* Code cleanup, final test to check that fd=2, stderr, qDebug and cerr are redirected
* Remove the file and line number from the default logging format in release mode
2021-03-30 13:17:18 -03:00
Paul Johnson
5c33ffb1d4 Fix compiler warning in MetricSelect.cpp (#3852) 2021-03-28 20:15:04 -03:00
Ale Martinez
b9b6745da5 Upgrade Travis-ci Linux build environment to bionic
[skip AppVeyor]
In preparation for the end of xenial support
2021-03-27 12:21:02 -03:00
Ale Martinez
763235a573 Update INSTALL-LINUX to build v3.6 on Ubuntu 18.04
Once Ubuntu 16.04 reached EOL we will switch Travis-ci builds to 18.04,
this guide is intended to help new developers setting up a local build
environment.
2021-03-26 20:06:42 -03:00
Ale Martinez
e9abe68736 Fix compiler warning: shift of negative value in LocationInterPolation.h
It is harmless but annoying and polutes build logs, lets avoid it.
2021-03-26 18:59:08 -03:00
Ale Martinez
cabe078453 Change LTMPlot curves QHash to QMultiHash
To allow duplicate keys happening when the same metric/measure or
Best/PMC/Banister combination is used in more than one curve.
This is useful when the curves have different filters or trendlines,
for example, and avoids a weird behavior in these cases.
Fixes #2185
2021-03-20 20:19:59 -03:00
Michel Dagenais
2be7a2c86e Compute the altitude incrementally from slope for Manual Slope Mode (#3847) 2021-03-18 23:22:09 -03:00
Ale Martinez
0fe28abe5a Add Time and Percent in Zones I-II-III metrics for HR, Power and Pace
In total 18 new metrics are added and 6 new charts using them are
included in charts.xml (existing users needs to remove their local
copy in config/charts.xml to activate them, reset doesn't work since
it retrieves the server copy which is v3.5 yet.)

Fixes #2555
[publish binaries]
2021-03-18 21:07:10 -03:00
Ale Martinez
5714a74e88 Add configurable Aerobic Threshold Velocity to Pace Zones
Change CVPage to include AeT Velocity/Pace
Default to 90% CV for runs and 97.5% CV for swims
Used to delimit Polarized Zones I and II
Add config(aetv) to formulas
Add aetv to R/Pyhton/Rest APIs
Fixed column widths to fit contents

Part 3 of #2555
2021-03-17 20:55:48 -03:00
Ale Martinez
44c6749d14 Add configurable Aerobic Threshold Power to Zones
Change CPPage to include AeT Power
Default to 85% CP, used to delimit Polarized Zones I and II
Add config(aetp) to formulas
Add AeTP to R/Pyhton/Rest APIs
Fix W' col resize bug in Power Zones settings #2661

Part 2 of #2555
2021-03-17 13:05:20 -03:00
Ale Martinez
b79166fa59 Add configurable Aerobic Threshold HR to HrZones
Change LTPage to include AeT HR and look like CPPage and CVPage
Default to 90% LTHR, used to delimit Polarized Zones I and II
Add config(aethr) to formulas
Add AeTHR to R/Pyhton/Rest APIs

Part 1 of #2555
2021-03-16 19:52:50 -03:00
Alejandro Martinez
fc9e302aef Remember SRM offset from last successful calibration (#3843)
It should be closer to current offset than the fixed default.
Users having issues with calibration can change default value adding:

[srm]
offset=400

to configglobal-trainmode.ini
2021-03-13 18:09:23 -03:00
Michel Dagenais
921e81fad8 Insure that Web pages are deleted before the Web Profile to avoir error messages (#3845)
When exiting, GC complains that the Web Profile is released before Web pages that refer to it with the message: "Release of profile requested but WebEnginePage still not deleted. Expect troubles !".
The Web pages are now released explicitly in the destructor to insure that they are freed earlier than the Profile.
Fixes #3844
2021-03-13 17:16:22 -03:00
Ale Martinez
3308372445 Add getCRC method to detect all changes in UserMetricSettings
When any change is detected, _userMetrics are reloaded and updated in Metrics
factory, but metric recomputation still depends on fingerprint field to avoid
unnecessary recomputation.
Fixes #3838
2021-03-07 19:03:12 -03:00
Ale Martinez
e6b302dd6c Revert "Add getFingerprint method to detect all changes in UserMetricSettings"
This reverts commit c726325af6.
2021-03-07 10:48:07 -03:00
Ale Martinez
e1b8293f01 Revert "Remove unused fingerprint field from UserMetricSettings"
This reverts commit 92d1244b68.
2021-03-07 10:46:34 -03:00
Ale Martinez
92d1244b68 Remove unused fingerprint field from UserMetricSettings
Code cleanup related to previous commit
2021-03-06 20:52:39 -03:00
Ale Martinez
c726325af6 Add getFingerprint method to detect all changes in UserMetricSettings
Fixes #3838
2021-03-06 16:51:31 -03:00
Ale Martinez
209470bf8f Add "Use template Athlete" option to Athlete creation
It copies xml config files from the selected template athlete, if any.
Together with Athlete > Open > New Athlete, Athlete > Delete and
the new Athlete view should make multiple athletes management easier.
Fixes #308
[publish binaries]
2021-03-04 13:53:21 -03:00
Ale Martinez
bc9eaccde2 Update Windows Readme.txt and remove old install scripts 2021-03-04 11:24:36 -03:00
Ale Martinez
2d6cc255ec Fix link to wiki on Windows installer
Fixes #3834
2021-03-04 11:09:45 -03:00
Ale Martinez
58f8d9394d Missing break from previous commit 2021-03-04 10:54:03 -03:00
Ale Martinez
06914d9446 Add Athlete > Delete menu
Allows to delete a closed athlete without the need to exit the program,
it re-uses the logic in ChooseCyclistDialog and removes the AthleteCard
from AthleteView.
2021-03-03 22:27:17 -03:00
Alejandro Martinez
453b05a188 Enable Athlete Open menu to allow creation of new athletes (#3836)
Objective is to allow creation of new athletes, without the need to
exit GoldenCheetah, using Athlete > Open > New Athlete like in v3.5
When a new athlete is created MainWindow emits newAthlete signal
so AthleteView can create the corresponding AthleteCard.
2021-03-03 19:27:43 -03:00
Ale Martinez
ace6760fbb Set parent widget for file select dialog on Measures CSV import
This fixes an annoying behaviour on Linux where the file select dialog
sometimes is not open on top of import dialog.
2021-02-28 13:17:24 -03:00
dconka
da75f0cc38 Update FitRideFile.cpp (#3832)
Add missing SIGMA SPORT Products with consistent format
2021-02-27 19:46:57 -03:00
Michel Dagenais
14b287109f Illustrate trainer maximum resistance versus rider maximum force (#3830)
[skip ci]
2021-02-25 09:03:21 -03:00
Ale Martinez
b44be0897d Implement value(v, metric) for UserMetric
It needs to be overriden like value(metric)
2021-02-23 19:29:56 -03:00
Christoph Wurst
cf31bffed2 Correctly recognize the Sigmasport iD.FREE product (#3745)
The Sigmasport ROX devices do not set a product ID, hence GC shows any Sigmasport fit import as "Sigmasport ROX". The Sigmasport wearable "iD.FREE", however, sets a product ID of 45. This adds specific logic to the fit ride file detection logic, while leaving the ROX default for backwards compatibility.

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2021-02-23 19:18:02 -03:00
ericchristoffersen
d84d329a78 Fix VLC Hangs with Intentional State and Ordered Async Dispatch (#3764)
Fix VLC Hangs with Intentional State and Ordered Async Dispatch
Two main parts to this change.
- a thread locked managed player state
  Fixes issue where calls to player could occur in wrong order
- all calls to VLC are made via an ordered Async dispatch.
  Fixes issue where qt must process widgets after stop is called.
  By moving stop off the qt gui thread this permits qt to shutdown
  widgets which eventually allows vlc to stop.
  Since vlc stop is async, and we wish vlc operations to be ordered
  we are forced to put all other vlc operations on the same async
  queue.
Fix #3756
2021-02-23 19:13:15 -03:00
Ale Martinez
8d89ba4e67 Add constants for Axis type to R and Python API 2021-02-22 20:41:28 -03:00
Ale Martinez
276791edb9 No Fortius Calibration on building without LibUSB
Fixes #3827
2021-02-18 20:39:01 -03:00
Ale Martinez
2d64166acd Added "with Barometer" to TCX and GPX creator tag
to force Strava upload of altitude data.
The user can revert to Strava basemap on Strava.
Upload to Garmin Connect was tested for regresion.
Fixes #3824
2021-02-17 10:41:28 -03:00
Paul Johnson
cbe75fae47 Fixes #3439 - Activity start time for imported iBike CSV files is incorrect (#3825) 2021-02-16 10:55:16 -03:00
Ale Martinez
537b6677d3 Fix L/R balance in FIT import
To match the code comment and honor FIT file specification
Fixes #3819
2021-02-15 10:38:00 -03:00
peret2000
980c99cfae LiveMapWidget uses configured zoom (#3823)
I noticed zoom configured in xml file is ignored, and code is always starting with a value of 16 for thee zoom of thee live map widget.
This change uses field of the xml; it was already being parsed but not used, so using it is simple and straightforward
Co-authored-by: Peret <mail@mail.com>
2021-02-13 10:37:01 -03:00
Ale Martinez
cdb117486a Overview Chart Screenshots for the wiki
[skip ci]
2021-02-11 16:11:06 -03:00
Iain Macdonald
01b0e4767b ANT+/FE-C Trainer capabilities request fix (#3818)
Co-authored-by: IainMacdonald <iainmacdonald@rogers.com>
fixes #3784
[publish binaries]
2021-02-05 15:58:25 -03:00
Ale Martinez
0eb8d63d07 Add fallback for Athlete Bodyfat
Computed from FatPercent and Weight when FatKg is 0
2021-02-05 11:08:11 -03:00
Ale Martinez
d59b7d43f4 Add fallback for Athlete Bodyfat Percent
Computed from FatKg and Weight when FatPercet is 0
2021-02-04 21:13:32 -03:00
Ale Martinez
d392984993 Add config(sex) and config(dob) to formulas
To enable formulas like Harris-Benedict basal metabolic rate
or TRIMP variants which depend on sex and age.
Fixes #3523
[publish binaries]
2021-02-01 13:51:51 -03:00
mattipee
c72b81ea84 Fortius "rolling" calibration (#3804)
* Rolling calibration
* Differentiate "Give the pedal a kick" and "Allow wheel speed to settle"
2021-01-29 20:00:38 -03:00
Michel Dagenais
773b076606 Get the Altitude for CRS files even when Fast Forwarding (#3806)
* when CRS workout files are read, the altitude is already derived and precomputed from the gradient for all formats handled. A new function was added, altitudeAt, that accesses this value, avoiding to derive anew the altitude from the gradient in the TrainSidebar main loop, and getting the correct altitude value when FastForward.
* Replaced assert by qDebug in ErgFile.cpp because asserts would needlessly kill the program
Fixes #3805
2021-01-29 18:45:56 -03:00
Michel Dagenais
5dc4ace31d Fix the request - reply interactions with the Fortius (#3801)
* Fix the request - reply interactions with the Fortius

The open command is in fact to get a reply with the version. However, some already queued messages need to be skipped, before the well formed reply message is received. The open command is sent initially, and each time the device is disconnected and reconnected. The procedure to open the device and get the version was then put in a separate function.

When the run command is sent with a specified force, a reply comes back with the force echoed. However, here again, some messages may need to be
skipped before the correct reply comes back.

* Updates based on comments

The first reply is always skipped on the T1932 (64 bytes reply). A notification about the motor not turned on is sent when the version number cannot be read.

* Add a comment for a non obvious if condition
2021-01-28 18:12:00 -03:00
mattipee
0427042709 RealtimeController::setWindResistance() should be passed CdARho, not just CdA (#3800)
* Dynamic wind resistance based on altitude
* Clarity CdA vs CdARho
2021-01-28 09:45:13 -03:00
mattipee
d76701285d Change timing to sleep between send and read (#3795) 2021-01-24 20:29:25 -03:00
mattipee
97ce2989bf LibUsb::OpenFortius - Remove call to usb_set_altinterface() (#3732)
Was known bad on OSX, proved an issue on LINUX (for me), and tested on WINDOWS following its removal
2021-01-24 20:27:45 -03:00
Sigfreid74
d8c21e4070 Change Colours for some data series in Train Telemetry (#3792)
Fixes #3796
2021-01-21 13:53:49 -03:00
mattipee
0d3a8c911a Fortius calibration (#3790)
Added calibration trainer command, delayed check for user stopped pedaling with visual feedback on progress and saved calibration for next use on success.
2021-01-21 09:17:18 -03:00
Ale Martinez
a298715bb5 Fix Crash and copy paste error in WorkoutEditor
The crash is reproducible on Linux starting an Erg workout after another
and it is caused by an array index error due to average arrays not being
cleared on start.
2021-01-16 20:02:20 -03:00
mattipee
1b18ec7eeb Fix force/speed/power calculations for Fortius (#3785)
* Initial correction of force/speed/power calculations for Fortius using information from https://github.com/totalreverse/ttyT1941/wiki
* Use wind speed, rolling resistance and wind resistance value from trainer interface, if provided
* Added FortiusANT's AvoidCycleOfDeath() routine from https://github.com/WouterJD/FortiusANT to limit trainer resistance at low wheel speed
2021-01-16 18:05:33 -03:00
ericchristoffersen
33a4cf517d Move manual modes onto common load timer path. (#3776)
Simplify handling of manual modes so they use the same path and load_timer as the non-manual modes.
This means one less path to maintain and modify.
2021-01-15 20:19:36 -03:00
Ale Martinez
105f15e3e0 FixGaps: improve interpolation of left/right balance for smart recording
Similar to 2b6473d
2021-01-15 11:35:07 -03:00
Ale Martinez
d21a603fa1 LRBalance related metrics check for RideFile::NA
Invalid values are now mapped to RideFile::NA on import,
0 and 100 are valid values and should not be excluded.
Fixes #3473
2021-01-14 20:52:30 -03:00
Ale Martinez
5d510388cf TRAIN - Fix LRBalance from ANT+ channels
LRBalance is left side contribution while the ANT+ messages carries
right side pedalPower contribution, so it needs to be converted.
When not available RideFile::NA is used since 0 means 100% right.
Complementes b29f72d, Fixes #3017
2021-01-14 20:13:22 -03:00
Ale Martinez
0b7d817c2d Estimate CP for Runs - Increase distance precision to 3 digits
Distance is in km/mi and 1 digit is not enough to use timed tests to
exhaustion, for distance based TTs likely this is not an issue.
2021-01-14 20:13:22 -03:00
grauser
2b6473da60 Fit : improve interpolation of left/right balance for smart recording 2021-01-14 21:57:51 +01:00
grauser
cefc2cb81c FIT : add some manufacturers 2021-01-14 21:57:51 +01:00
grauser
b29f72d19c RideFitFile :
- Add Right contribution bit in FIT exported
  - Don't asssume left data if right side not confirmed
  - Plot 0 left/Balance

Fix #3017
2021-01-14 21:57:51 +01:00
Christian Taedcke
75ba4c0e90 Daum: Improve support for more cockpits (#3775)
Add support for 8008 TRS and, using the profile string, delay and sound can be configured

This adds the following functionality for daum:
* if the profile string contains a number or the string sound,
  no automatic cockpit configuration is done, but the information from
  the profile string is used
* if the string sound is present, play the sound when connecting
* if a number is present, use this number as the delay in milliseconds
  between commands. A reasonable number to start with is 50 in case of
  connection problems

This also solves the problem, if the cockpit id is not known by
GoldenCheetah. In this case the profile string can be just set to
e.g. 50_sound and the unknown cockpit id is ignored.
2021-01-14 16:43:54 -03:00
Ale Martinez
1d4e93350a User PIE and BAR Charts honor x-axis Date and Time settings
So labels/categories are displayed in Time/Date format
in a similar way to Line and Scatter charts.
2021-01-13 20:30:26 -03:00
Ale Martinez
1120704073 Add screenshots for the wiki - New Metric Trends Curves
[skip ci]
2021-01-12 21:29:01 -03:00
Ale Martinez
41456b5cc1 Upgraded embedded Python to 3.7.9 for Windows builds
[skip travis]
2021-01-11 19:06:56 -03:00
Ale Martinez
cf745c1200 Regenerate vlc3 cache for Linux AppImage
[skip AppVeyor]
Fixes #3763 "main libvlc error: stale plugins cache ..."
2021-01-07 19:49:15 -03:00
Ale Martinez
89d99ccecf UserData screenshots for the wiki
[skip ci]
2021-01-06 18:03:31 -03:00
willfaust
08ff66a7bd Correct spelling of "optimise" in readme (#3758) 2021-01-06 08:43:00 +00:00
Ale Martinez
dfe4da61d8 Fix GC_VERSION for tag builds
The use of / instead of \ as path separator on cmd script line causes
tag builds lack proper version string and report (developer build)
[skip travis]
2021-01-05 20:29:34 -03:00
393 changed files with 127643 additions and 70100 deletions

View File

@@ -1,3 +1,5 @@
if: commit_message =~ /\[publish binaries\]/
branches:
only:
- master
@@ -41,7 +43,7 @@ jobs:
osx_image: xcode11.3
compiler: clang
- os: linux
dist: xenial
dist: bionic
compiler: gcc
before_install:

View File

@@ -1,86 +1,91 @@
Update Note: to build GoldenCheetah v3.6 we are using the APT Package
Manager to install dependencies, including Qt and GSL, on Travis-ci
Ubuntu Xenial build environment.
You can check the travis/linux folder for the complete and updated build scripts,
the minimum Qt version known to work is 5.13 with Qt WebEngine and Qt Charts.
GSL - GNU Scientific Library is a mandatory dependency starting with v3.6
Ale Martinez - May, 2020
+++++++++++++++++++++++
LINUX BUILD WALKTHROUGH
+++++++++++++++++++++++
Mark Liversedge
John Ehrlinger
Ale Martinez
Jan 2015
Version 1.2
Mar 2021
Version 3.6
A walkthrough of building GoldenCheetah from scratch on Ubuntu linux. This walkthrough
should be largely the same for any Linux distro.
A walkthrough of building GoldenCheetah from scratch on Ubuntu linux 18.04
This walkthrough should be largely the same for any Debian derivative Linux
distro, and very similar for others using their correspoing package manager.
CONTENTS
1. BASIC INSTALLATION WITH MANDATORY DEPENDENCIES
- QT
- git
- flex
- bison
- QT
- OpenGL
- gsl
2. ADDING OPTIONAL DEPENDENCIES WHEN BUILDING VERSION 2
2. ADDING OPTIONAL DEPENDENCIES
- FTDI D2XX
- SRMIO
- liboauth
- libkml
3. ADDING OPTIONAL DEPENDENCIES WHEN BUILDING VERSION 3
- checking out the release 3 branch & building with MANDATORY dependencies
- flex
- bison
- libical - Diary window and CalDAV support (google/mobileme calendar integration)
- libvlc - Video playback in training mode
- libical - Diary window and CalDAV support (external calendar integration)
- libusb - If you want support for using USB2 sticks in Train View
- R - If you want R charts
- Python - If you want Python charts, scripts and data processors
1. BASIC INSTALLATION WITH MANDATORY DEPENDENCIES
=================================================
Installed Linux distribution of choice on platforms i386 or amd-64 (currently Debian-based distributions and Arch-based distributions are covered). You will not need to do this if you
already have a Linux distribution installed. Left this step in to highlight the
Linux distribution the commands below were executed on.
Install the Linux distribution of choice on amd64 platform (Ubuntu 18.04 is used
for this document). You will not need to do this if you already have a Linux
distribution installed. Left this step in to highlight the Linux distribution
the commands below were executed on.
login and open a terminal to get a shell prompt
Download MANDATORY DEPENDENCIES (browser)
-----------------------------------------
Install Qt
----------
Download and install the Qt SDK from http://qt-project.org/
Once that is completed test qmake is ok with: qmake --version (should report 4.9.8 or higher)
You can use a browser to download and run the interactive installer, be sure to
select version 5.14.2 or higher including at least the following modules:
- Desktop gcc 64-bit
- Qt Charts
- Qt WebEngine
Once this step is completed add the bin directory to PATH and test qmake is ok:
$ qmake --version
DEBIAN-BASED DISTRIBUTION INSTRUCTIONS
--------------------------------------
Install git with:
Install git
-----------
$ sudo apt-get install git
Said Y to prompt about all git files installed (git-gui et al)
Install FLEX and BISON
----------------------
You will need flex v2.5.9 or later
$ sudo apt-get install bison
$ sudo apt-get install flex
Install Mesa OpenGL utility library
-----------------------------------
sudo apt-get install libglu1-mesa-dev
ARCH-BASED DISTRIBUTION INSTRUCTIONS
------------------------------------
Install GSL development libraries
---------------------------------
sudo apt-get -qq install libgsl-dev
Install git:
$ sudo pacman -S git
Get latest GOLDEN CHEETAH source files
--------------------------------------
$ mkdir -p ~/Projects
$ cd ~/Projects
$ git clone git://github.com/GoldenCheetah/GoldenCheetah.git
$ cd GoldenCheetah
INSTALL FLEX and BISON
----------------------
$ sudo pacman -S flex bison
NEXT STEPS
----------
Configure MANDATORY DEPENDENCIES
--------------------------------
$ cd qwt
$ cp qwtconfig.pri.in qwtconfig.pri
$ cd ../src
$ cp gcconfig.pri.in gcconfig.pri
$ vi gcconfig.pri
Ensure you have the following lines (which are now also in gcconfig.pri.in which has
@@ -94,47 +99,17 @@ win32 {
QMAKE_DEL_FILE = rm -f
}
Build!
------
$ make clean
$ qmake
$ make
To compile translation you need QT tool - lrelease
If it is not found using he defaults in src/src.pro then set the full path and filename in gcconfig.pri
To compile translation you need the QT tool lrelease
If it is not found using the defaults in src/src.pro then set the full path and
filename in gcconfig.pri, s.t.
QMAKE_LRELEASE = /usr/bin/lrelease
When build first time you get number of error messages on .qm files missing:
"RCC: Error in 'Resources/application.qrc': Cannot find file 'translations/gc_fr.qm'"
You can ignore these messages for your build. The .qm files will be created during the
build at a later point in time via the "lrelease" command you configured in gcconfig.pri)
If your QT build includes its own local compress libs then you should comment the line below in gcconfig.pri,
otherwise you will need to have the compress libraries installed separately.
#LIBZ_INCLUDE =
#LIBZ_LIBS = -lz
otherwise you will need to have the compress libraries installed separately.
LIBZ_LIBS = -lz
You will now have a release3 binary but with none of the release3 dependencies compiled in.
Get latest GOLDEN CHEETAH source files
--------------------------------------
$ mkdir -p ~/Projects/Live
$ cd ~/Projects/Live
$ git clone git://github.com/GoldenCheetah/GoldenCheetah.git
$ cd GoldenCheetah
Configure MANDATORY DEPENDENCIES
--------------------------------
$ cd qwt
$ cp qwtconfig.pri.in qwtconfig.pri
$ cd ../src
$ cp gcconfig.pri.in gcconfig.pri
$ vi gcconfig.pri
Comment out the D2XX_INCLUDE and SRMIO_INSTALL lines for now (put # in first character of the line
to comment out), we will install that in a moment, if we need to.
If you are building for your local host you may find that you get better performance if
compiling with gcc -O3 (tree vectorization can have a significat impact) [or -Ofast]
compiling with gcc -O3 (tree vectorization can have a significat impact)
[or -Ofast]
If so you might like to uncomment:
@@ -145,32 +120,42 @@ Save and exit
$ cd ..
BUILD WITH BASIC CONFIGURATION
------------------------------
$ qmake -recursive
$ make
Congratulations you have now build a basic GoldenCheetah and can run this safely. See below for
optional dependencies you can install to support other features.
When build first time you get number of error messages on .qm files missing:
"RCC: Error in 'Resources/application.qrc': Cannot find file 'translations/gc_fr.qm'"
You can ignore these messages for your build. The .qm files will be created
during the build at a later point in time via the "lrelease" command you
configured in gcconfig.pri
ADDING OPTIONAL DEPENDENCIES WHEN BUILDING VERSION 2
====================================================
Congratulations you have now build a basic GoldenCheetah and can run this
safely. See below for optional dependencies you can install to support
other features.
2. ADDING OPTIONAL DEPENDENCIES
===============================
D2XX - For Powertap downloads via USB
-------------------------------------
Download the FTDI drivers from http://www.ftdichip.com/Drivers/D2XX.htm (e.g. I used Linux
64-bit drivers from http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx1.0.4.tar.gz)
Download the FTDI drivers from http://www.ftdichip.com/Drivers/D2XX.htm and
extract:
Extract into your home directory (I put mine into ~/Projects/ with archive manager which
created a sub-directory ~/Projects/libftd2xx1.0.4
$ cd ~/Projects
$ wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx-x86_64-1.3.6.tgz
$ tar xf libftd2xx-x86_64-1.3.6.tgz
$ cd src
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Uncomment the D2XX_INCLUDE entry and make it match (my home is /home/markl)
D2XX_INCLUDE = /home/markl/libftd2xx1.0.4
D2XX_INCLUDE = /home/markl/Projects/libftd2xx-x86_64-1.3.6
Make clean is needed if you have previouslt built, since source files examine #defines before
including this feature. You can skip it if you know why ;)
Make clean is needed if you have previouslt built, since source files examine
#defines before including this feature. You can skip it if you know why ;)
$ make clean
$ qmake
$ make
@@ -195,20 +180,20 @@ $ make
$ sudo make install
Lets go config GC and build with SRMIO
$ cd ~/Projects/Live/GoldenCheetah/src
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Uncomment the SRMIO_INSTALL and replace with the target used from srmio install:
SRMIO_INSTALL = /usr/local/
At the bottom of gcconfig.pri you will see the include directory should reference from
the base install location (/usr/local) make sure it says:
At the bottom of gcconfig.pri you will see the include directory should
reference from the base install location (/usr/local) make sure it says:
SRMIO_INCLUDE = $${SRMIO_INSTALL}/include
SRMIO_LIB = $${SRMIO_INSTALL}/lib/libsrmio.a
Make clean is needed if you have previouslt built, since source files examine #defines before
including this feature. You can skip it if you know why ;)
Make clean is needed if you have previouslt built, since source files examine
#defines before including this feature. You can skip it if you know why ;)
$ make clean
$ qmake
$ make
@@ -218,9 +203,7 @@ You now have SRM support built in.
LIBKML - For export to Google Earth
-----------------------------------
You will need Google Earth 5.2 or later and therefore libkml that supports this. Unfortunately at the time of writing
the officially packaged libkml is too old, so you will need to install from source, which means you will need to have
subversion installed and expat. You may be able to use the currently packaged libkml with
You will need Google Earth 5.2 or later and therefore libkml that supports this.
$ sudo apt-get install libkml-dev
@@ -229,7 +212,8 @@ if this does not work you will need to build from source:
$ sudo apt-get install subversion
$ sudo apt-get install expat libexpat1 libexpat1-dev
Once svn is installed you can grab the libkml source and configure build etc:
Once svn is installed you can grab the libkml source, configure, build and
install:
$ cd ~/Projects
$ svn checkout http://libkml.googlecode.com/svn/trunk/ libkml
$ cd libkml
@@ -246,55 +230,32 @@ if this does not work you will need to build from source:
- examples/{engine,gpx,gx,hellonet,helloworld,regionator,xsd}/Makefile
- and look for the flag -pedantic and remove it. I got this on Linux 64bit builds ymmv.
Once libkml is installed and built:
Once libkml is installed:
$ cd ~/Projects/Live/GoldenCheetah/src
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Ensure KML_INSTALL=/usr/local
Make clean is needed if you have previously built, since source files examine #defines before
including this feature. You can skip it if you know why ;)
Make clean is needed if you have previously built, since source files examine
#defines before including this feature. You can skip it if you know why ;)
$ make clean
$ qmake
$ make
You can now export rides to Google Earth kml format.
ADDING OPTIONAL DEPENDENCIES WHEN BUILDING VERSION 3
====================================================
NOTE: When you run version 3 it will refresh ride metrics and CP files -- this only occurs the
first time it runs (and will refresh only rides that change after that). I find it is best
to import ride files once your build where you want it. i.e. don't import until you have
got all your dependencies sorted.
NOTE: To reduce the dependencies on 'dormant' code there are a number of new pieces of source
that are included in the release3 tree. Notably; qtsoap from qt-solutions, since they
work but are likely to be archived and deprecated. If and when that happens we may well
adopt whatever classes Trolltech introduce.
LIBICAL - Diary integration with Google or MobileMe calendars
-------------------------------------------------------------
$ cd ~/Projects/Live/GoldenCheetah/src
$ sudo apt-get install libical-dev
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
ICAL_INSTALL=/usr/include
ICAL_LIBS=-lical
Since the src.pro wants ICAL installed in a different place we need to hack it, *** this will
be fixed shortly ***
$ vi src.pro
Comment out the ICAL_LIBS entry:
#ICAL_LIBS = $${ICAL_INSTALL}/lib/libical.a
ICAL_INSTALL = /usr
ICAL_INCLUDE = /usr/include
ICAL_LIBS = -lical
$ make clean
$ qmake
@@ -302,21 +263,89 @@ $ make
You should now have diary functions.
NOTE: That upload to MobileMe and Google requires a functioning https lib in QT. Depending
upon the version installed this might not be the case and will need to be built and
configured -- this is beyond the scope of this walkthough. Sorry.
LIBVLC - Video playback in Realtime
-----------------------------------
LIBVLC - Video playback in Realtime (Experimental)
--------------------------------------------------
You will need libvlc 3.0.8 or higher for better performance:
You will need libvlc 1.1.9 or higher (1.1.8 is ok but will segv on exit)
$ sudo apt-get install libvlc-dev
sudo add-apt-repository ppa:jonathonf/vlc-3
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt-get update
sudo apt-get install vlc libvlc-dev libvlccore-dev
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Comment out VLC_INSTALL and it should read:
VLC_INSTALL = /usr/include/vlc/
VLC_INSTALL = /usr
$ make clean
$ qmake
$ make
LIBUSB - for using USB2 sticks in Train View on Linux or Windows
----------------------------------------------------------------
$ sudo apt-get install libusb-1.0-0-dev libudev-dev
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Uncomment or add the following lines:
LIBUSB_USE_V_1 = true # don't use on Windows
LIBUSB_INSTALL = /usr/local
$ make clean
$ qmake
$ make
R Embedding
-----------
Install R 4.0
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/"
sudo apt-get update
sudo apt-get install r-base-dev
R --version
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Uncomment or add the following line:
DEFINES += GC_WANT_R
$ make clean
$ qmake
$ make
Python Embedding
----------------
Install Python 3.7
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7-dev
python3.7 --version
Install SIP 4.19.8:
cd ~/Projects
wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.8/sip-4.19.8.tar.gz
tar xf sip-4.19.8.tar.gz
cd sip-4.19.8
python3.7 configure.py
make
sudo make install
$ cd ~/Projects/GoldenCheetah/src
$ vi gcconfig.pri
Uncomment or add the following lines:
DEFINES += GC_WANT_PYTHON
PYTHONINCLUDES = -I/usr/include/python3.7/
PYTHONLIBS = -L/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu -lpython3.7m
$ make clean
$ qmake

View File

@@ -1,5 +1,10 @@
Issue tracker is **only** for Bugs and Features, before to open a new issue please read the contributing guidelines (link below).
Issue tracker is **only** for Bugs and Features, please don't open issues for questions or technical support. Before to open a new issue please read the contributing guidelines (link below).
If you need help or technical support please see the wiki and use the forums:
Users: https://groups.google.com/forum/#!forum/golden-cheetah-users
Developers: https://groups.google.com/forum/#!forum/golden-cheetah-developers
If you have questions, please read the FAQs and User's/Developer's Guide:
* FAQs - https://github.com/GoldenCheetah/GoldenCheetah/wiki/FAQ
* User's Guide - https://github.com/GoldenCheetah/GoldenCheetah/wiki/UG_Main-Page_Users-Guide
* Developer's Guide - https://github.com/GoldenCheetah/GoldenCheetah/wiki/Developers-guide
If you need help or technical support please use the forums:
* Users - https://groups.google.com/forum/#!forum/golden-cheetah-users
* Developers - https://groups.google.com/forum/#!forum/golden-cheetah-developers

View File

@@ -4,7 +4,7 @@
## About
GoldenCheetah is a desktop application for cyclists and triathletes and coaches, providing a rich set of tools and models to analyse, track and predict performance, optimimise aerodynamics and train indoors.
GoldenCheetah is a desktop application for cyclists and triathletes and coaches, providing a rich set of tools and models to analyse, track and predict performance, optimise aerodynamics and train indoors.
GoldenCheetah integrates with most popular cloud services like Strava and Todays Plan, imports data from bike computers, imports downloads from any website like TrainingPeaks and Garmin and will also connect to smart trainers using ANT+ and Bluetooth.
@@ -22,7 +22,7 @@ INSTALL-LINUX For building on Linux
INSTALL-MAC For building on Apple OS X
macOS and Linux: [![Build Status](https://travis-ci.org/GoldenCheetah/GoldenCheetah.svg?branch=master)](https://travis-ci.org/GoldenCheetah/GoldenCheetah)
macOS and Linux: [![Build Status](https://travis-ci.com/GoldenCheetah/GoldenCheetah.svg?branch=master)](https://travis-ci.com/GoldenCheetah/GoldenCheetah)
Windows: [![Build status](https://ci.appveyor.com/api/projects/status/i6dwn4m8oyu52ihi?svg=true)](https://ci.appveyor.com/project/Joern-R/goldencheetah-knhd8)

View File

@@ -85,7 +85,7 @@ install:
# Get Python embeddable and install packages
- ps: >-
if (-not (Test-Path 'C:\Python')) {
Start-FileDownload "https://www.python.org/ftp/python/3.7.7/python-3.7.7-embed-amd64.zip" Python.zip
Start-FileDownload "https://www.python.org/ftp/python/3.7.9/python-3.7.9-embed-amd64.zip" Python.zip
7z x Python.zip -oC:\Python\
echo python37.zip . '' 'import site' | Out-File C:\Python\python37._pth -Encoding ascii
mkdir C:\Python\lib\site-packages
@@ -114,7 +114,7 @@ install:
before_build:
# Define GC version string, only for tagged builds
- if %APPVEYOR_REPO_TAG%==true echo DEFINES+=GC_VERSION=VERSION_STRING >> src/gcconfig.pri
- if %APPVEYOR_REPO_TAG%==true echo DEFINES+=GC_VERSION=VERSION_STRING >> src\gcconfig.pri
# Enable CloudDB
- echo CloudDB=active >> src\gcconfig.pri

View File

@@ -2,6 +2,10 @@
// BSplineCurve.h from Geometric Tools along with all the GTC headers
// it requires.
// disable warning messages
#pragma GCC diagnostic ignored "-Wunused-value"
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
#define LogError(a) (0); return 0;
#define LogAssert(a,b) (0)

View File

@@ -22,6 +22,9 @@
#endif
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
#pragma GCC diagnostic ignored "-Wcpp"
/* precision-specific definitions */
#define LEVMAR_CHKJAC LM_ADD_PREFIX(levmar_chkjac)
#define LEVMAR_FDIF_FORW_JAC_APPROX LM_ADD_PREFIX(levmar_fdif_forw_jac_approx)
@@ -426,7 +429,7 @@ int info, rank, worksz, *iwork, iworksz;
static int LEVMAR_LUINVERSE(LM_REAL *A, LM_REAL *B, int m)
{
void *buf=NULL;
int buf_sz=0;
//int buf_sz=0;
register int i, j, k, l;
int *idx, maxi=-1, idx_sz, a_sz, x_sz, work_sz, tot_sz;
@@ -439,7 +442,7 @@ LM_REAL *a, *x, *work, max, sum, tmp;
work_sz=m;
tot_sz=(a_sz + x_sz + work_sz)*sizeof(LM_REAL) + idx_sz*sizeof(int); /* should be arranged in that order for proper doubles alignment */
buf_sz=tot_sz;
//buf_sz=tot_sz;
buf=(void *)malloc(tot_sz);
if(!buf){
fprintf(stderr, RCAT("memory allocation in ", LEVMAR_LUINVERSE) "() failed!\n");

View File

@@ -32,6 +32,7 @@ void lmcurve_evaluate(
const double *const par, const int m_dat, const void *const data,
double *const fvec, int *const info)
{
(void)(info);
for (int i = 0; i < m_dat; i++ )
fvec[i] =
((lmcurve_data_struct*)data)->y[i] -

View File

@@ -200,6 +200,8 @@ void QxtSpanSliderPrivate::triggerAction(QAbstractSlider::SliderAction action, b
case QAbstractSlider::SliderMove:
if ((main && mainControl == QxtSpanSlider::UpperHandle) || (!main && altControl == QxtSpanSlider::UpperHandle))
up = true;
no = true;
break;
case QAbstractSlider::SliderNoAction:
no = true;
break;

Some files were not shown because too many files have changed in this diff Show More