When computing virutalspeed based on slope, altitude, etc, total weight is relevant, specially in up and down hills
It was using 10kg plus the athlete weight. Now, it considers configured bicycle weigth. Not very relevant, but consistent with the data GH has for training
.. we cannot pass wide strings to the 'printd' debug macro
since it uses printf not wprintf. Not a major problem
in this case since it is just a debug statement.
introduced in previous commit that fixed crashes
when embedding python v3.11 or higher
.. for numerous reasons the font scaling on MacOS should be slightly
less than for other platforms to be in keeping with the native
systems font selections
.. instead of trying to create a font and use exactMatch()
.. this is faster and also avoids a qt-bug on MacOS for
QFont::exactMatch() that keeps recurring
.. what dpi scaling and font size are we using. helpful for
understanding how the ui is reacting to different resolutions
and OS specific settings for scaling
.. default font scaling wasn't working (it was always 1.0). This is
now fixed and means fonts are scaled so that GC always looks the
same.
For some users the fonts will appear too large, in this case they
can reduce the font scaling to suit their own preferences.
.. a button on the config dialog to reset appearance settings
to default values. Will be useful when fonts go squiffy
of the user changes the resolution of their display.
.. The default appearance settings on new install or directly
after and upgrade are terrible and create a poor impression
for new users
.. This commit fixes up scaling, font selection and themes so
that for a new install or directly after upgrade they are
set to defaults that are sensible for the current release
.. It is expected that these defaults will change and extend as
we implement new features and the UI evolves- so these should
be used as a basis for defaulting in the future.
.. A second update is required to resolve issues with scaling in
overview charts dependant upon the screen resolution
Cumulative changes from v3.6-RC4
dbd33465c Update FIT SDK to 21.105
708d8744f Support larger font scaling
c85dab80a Skip previously imported files on Auto-Import (#4347)
1ecc6f9ec Python - Add compare support to activity series (#4349)
f0c9f12b4 FitRideFile - Identify Pulse Ox field
ab337f165 WorkoutWizard - Remove references to FTP and CP60
00d09af48 Highlight current selection in Train and Trends (#4320)
e7b9275a3 Update Italian translation
fdb35bf74 Athlete tab colour fix (#4257)
e32eabc10 Update German translation
[publish binaries]
.. as 8k displays become more popular and affordable we need to
support greater font scaling - we now scale up to x5 the
default font size
This should be good for devices well over 8k resolution but
does highlight some limitations with Qt widgets and maximum
sizes they support internally.
If the importable file (after export when inside a .zip/.gz archive)
is present in imports files it means it was previously imported,
so it is skipped on Auto-Import for better performance and to avoid
re-appearance of deleted activities still present in the source folder.
Fixes#3696Fixes#1892
All activity functions working with data series,
both standard and xdata, now include an optional
compareindex=-1 parameter.
When compare mode is enabled compareindex parameter
is used as an index to get data for the corresponding
compare item, be an activity or an interval.
Sample chart contributed by Marcen at the users forum
Fixes#4346
Just a few changes from RC4:
- Updated German, Italian and Spanish translations
- Better contrast in Athlete Tabs when using dark colors
- Better contrast for selected items in Trends/Train sidebar
when using dark colors
- Clarify texts in Relative Wattage Workout Creator
[publish binaries]
* Use wchar when 2 bytes charachers are used
* Mark provisional parameters as UNUSED
* Static cast OR select appropriate data type
* Fill up comment with missing parameter
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
Change on select bg and fg colors for Trends and Train,
currently are barely/no noticeable on Windows and macOs
when using dark colors.
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
.. the original behaviour is reverted, which is not ideal but
does not cause rendering issues on Linux/MacOS and is compatible
with searchbox usage on dialog widgets.
.. any updates to the toolbutton styling will need to consider
a) placement on toolbar and dialog widgets
b) platform specific considerations across Linux/Windows/MacOS
* Corrects Athlete QTabBar tab colours to match NewSideBar,
abstract on select background color selection from NewSideBar
to Colors for reuse in MainWindow
* Fixes dropMenu visibility within the Filter/Search Box on Dark Themes
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
- DataProcessor primary key is english name,
but localized name is displayed in combobox
- tr() macro only works on string constants
- make all messages translatable
- remove unused messages
To better match the new BatchProcessing dialog
- Python DPs are listed together with builtin processors
to be executed like parameterless built in DPs, with
option to cancel.
- They also appear under the Python Fixes submenu, but in
this case they also can be edited.
Batch Processing - Delete, Data Processors & Export
Extension of Batch Export dialog to include other operation on multiple activities:
- run data processor (Builtin or Python)
- delete (after confirmation)
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
Data Processors running on import are applied before the activity
is added to RideCache and metrics are computed, this behavior is
by design, likely to optimize resource usage on bulk import.
So activityMetrics API is not available; a new getTag API was
added for this case and setTag/delTag/hasTag changed to work
in this context too.
When the Python fix is executed on activities already in the cache
either via Edit menu, Filters or other Python Fix changes are
notified via the corresponding RideItem.
Fixes#4095
[publish binaries]
[publish binaries]
Cumulative changes from RC3
402edf5 Stop signal processing during resetPerspective()
64386bc Perspective Selector Sync on switch Athlete tabs
b6fae05 Revert "Keep Perspective Selecto synced when switching athletes"
9eb8138 Revert "Fix strange behaviour when changing views"
0ddea94 Fix strange behaviour when changing views
88246a8 Overview Chart - Update metric pointer in tiles config
46bfab5 Overview - Use sport instead of isRun/isSwim
663bde0 Update Spanish translation (#4322)
30895b0 Update translation files to include latest strings
af21c35 FIT Files - Update sport list and sub sports (#4315)
68c7954 Add test FIT file from Garmin 945 swim with RR data
dfe572c Collect R-R data from Garmin HRM swim (#4319)
ef0eac8 Estimator - Use normalized Sport names
9531acf Remove Garmin devices already included in latest FIT SDK
523d2d1 Update FITmetadata.json to FIT SDK 21.94
bfa4b4b DataFilter - Metric aggretation honors AggregateZero and Count
c65f313 Revert "DataFilter - use RideCache::getAggregate continuation"
e95d116 DataFilter - Avoid crashes when no ride is selected
3c3d202 Fix DataFilter use of PowerIndex
cc5eaf4 Estimates and Performances - Generalize to any sport with power data (#4307)
abb69b8 DialWindow - Fix rolling average initialization
841766e DataFilter - use RideCache::getAggregate continuation
afbb43e DataFilter - asaggstring uses RideCache::getAggregate
33ba1c0 FitRideFile - Avoid crashes on multi-sessions from CloudServices
018bd40 FTMS: Add support for Spin Down Calibration (#4073)
4f97bae DOB - display using 4 digits year
dfeb853 macOS plist - Add required BTLE keys for newer versions
2a99c87 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693 Workout Chart - Imperial units support (#4232)
8919eab Map Chart - Update default Tile Servers
7d0e6de Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbec Train - Improve L/R Balance Dial display
8e0b0a6 R/Python API - Sport case insensitive in Athlete Zones
b08e662 Train - Show lap notifications only when available
2c3eabd RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4 Strava Sync - Tag simulation rides as VirtualRide
53f8f51 Fix memory leak in Python API - part 2
e477b05 ErgDB Download - Decode title to be used as name
3a16d1e Keep Perspective Selecto synced when switching athletes
63d13ba Update Italian translation
f947b6b VideoSync - Distance scaling only applies to CRS workouts
67962bf Fix memory leak in Python API
5f22d12 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63 Remove MapQuest API Key from gcconfig.pri.in
a7ad134 Measures CSV Import - Last field can be empty
90172a4 Replace Tracker in default Trends layout
68b70e0 Fix Elevation - Avoid 302 network error
434580e Disable execution of Python DPs from formulas and Python API
cb23914 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9a Minimum bison version is now 2.7
.. when switching athlete tabs the perspective selector would
always be reset to the first entry, this update makes sure
we reset to the correct one.
Fixes#4325
The problem was introduce by 3a16d1e, the change in perspectiveSelector
current index triggers currentIndexChanged when the view change has
not been finished, to avoid this we use activated signal and add
a check to do nothing when the index has not changed.
The problem was reported at the forum.
When metric selection changes in tiles config the metric
pointer was not updated accordingly leading to inconsistencies
s.t. a Total metric displayed as an Average metric in Trends
until restart, since at tile creation the correct pointer is used.
* move sports list in a function for other calls
* Decode sport and sub-sport and push into activity tag
* Remove inaccurate comments
* Populate additional sports ID from documentation
* use of standardized RideFile::sport()
Fixes#4312Fixes#4313
[publish binaries]
Cumulative changes from RC3
523d2d1 Update FITmetadata.json to FIT SDK 21.94
bfa4b4b DataFilter - Metric aggretation honors AggregateZero and Count
c65f313 Revert "DataFilter - use RideCache::getAggregate continuation"
e95d116 DataFilter - Avoid crashes when no ride is selected
3c3d202 Fix DataFilter use of PowerIndex
cc5eaf4 Estimates and Performances - Generalize to any sport with power data (#4307)
abb69b8 DialWindow - Fix rolling average initialization
841766e DataFilter - use RideCache::getAggregate continuation
afbb43e DataFilter - asaggstring uses RideCache::getAggregate
33ba1c0 FitRideFile - Avoid crashes on multi-sessions from CloudServices
018bd40 FTMS: Add support for Spin Down Calibration (#4073)
4f97bae DOB - display using 4 digits year
dfeb853 macOS plist - Add required BTLE keys for newer versions
2a99c87 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693 Workout Chart - Imperial units support (#4232)
8919eab Map Chart - Update default Tile Servers
7d0e6de Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbec Train - Improve L/R Balance Dial display
8e0b0a6 R/Python API - Sport case insensitive in Athlete Zones
b08e662 Train - Show lap notifications only when available
2c3eabd RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4 Strava Sync - Tag simulation rides as VirtualRide
53f8f51 Fix memory leak in Python API - part 2
e477b05 ErgDB Download - Decode title to be used as name
3a16d1e Keep Perspective Selecto synced when switching athletes
63d13ba Update Italian translation
f947b6b VideoSync - Distance scaling only applies to CRS workouts
67962bf Fix memory leak in Python API
5f22d12 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63 Remove MapQuest API Key from gcconfig.pri.in
a7ad134 Measures CSV Import - Last field can be empty
90172a4 Replace Tracker in default Trends layout
68b70e0 Fix Elevation - Avoid 302 network error
434580e Disable execution of Python DPs from formulas and Python API
cb23914 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9a Minimum bison version is now 2.7
This reverts commit 841766effb
since it provokes crashes in some Trends Overview charts.
TODO: fix aggregation to consider AggregateZero and count
properties of metrics.
[publish binaries]
Cumulative changes from RC3
e95d11671 DataFilter - Avoid crashes when no ride is selected
3c3d2024a Fix DataFilter use of PowerIndex
cc5eaf418 Estimates and Performances - Generalize to any sport with power data (#4307)
abb69b8fb DialWindow - Fix rolling average initialization
841766eff DataFilter - use RideCache::getAggregate continuation
afbb43edd DataFilter - asaggstring uses RideCache::getAggregate
33ba1c03e FitRideFile - Avoid crashes on multi-sessions from CloudServices
018bd404e FTMS: Add support for Spin Down Calibration (#4073)
4f97bae97 DOB - display using 4 digits year
dfeb8532a macOS plist - Add required BTLE keys for newer versions
2a99c8762 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693dd Workout Chart - Imperial units support (#4232)
8919eab5b Map Chart - Update default Tile Servers
7d0e6de0b Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbecf1 Train - Improve L/R Balance Dial display
8e0b0a67a R/Python API - Sport case insensitive in Athlete Zones
b08e662c9 Train - Show lap notifications only when available
2c3eabdd8 RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4f3 Strava Sync - Tag simulation rides as VirtualRide
53f8f5102 Fix memory leak in Python API - part 2
e477b05a9 ErgDB Download - Decode title to be used as name
3a16d1ecc Keep Perspective Selecto synced when switching athletes
63d13ba9e Update Italian translation
f947b6bd3 VideoSync - Distance scaling only applies to CRS workouts
67962bfff Fix memory leak in Python API
5f22d12a6 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63cd Remove MapQuest API Key from gcconfig.pri.in
a7ad1346e Measures CSV Import - Last field can be empty
90172a4a6 Replace Tracker in default Trends layout
68b70e0e4 Fix Elevation - Avoid 302 network error
434580ee8 Disable execution of Python DPs from formulas and Python API
cb23914a5 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9af7 Minimum bison version is now 2.7
Weekly estimates and performances are precomputed for any sport
with power data, not just Bike and Run.
In Trends view both LTM charts and DataFilter select sport based
on applied filters: when all activities are from the same sport,
that is used to select estimates and performances, otherwise
Bike estimates and performances are used for backward compatibility.
This reverts 1a285d1050
For consistency and simplicity, getAggregate honors AggregateZero
and count properties of metrics, beside some special cases.
Fixes#4302
TODO: aggmetric and aggmetricstrings likely have a similar problem.
[publish binaries]
Cumulative changes from RC3
018bd404e FTMS: Add support for Spin Down Calibration (#4073)
4f97bae97 DOB - display using 4 digits year
dfeb8532a macOS plist - Add required BTLE keys for newer versions
2a99c8762 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693dd Workout Chart - Imperial units support (#4232)
8919eab5b Map Chart - Update default Tile Servers
7d0e6de0b Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbecf1 Train - Improve L/R Balance Dial display
8e0b0a67a R/Python API - Sport case insensitive in Athlete Zones
b08e662c9 Train - Show lap notifications only when available
2c3eabdd8 RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4f3 Strava Sync - Tag simulation rides as VirtualRide
53f8f5102 Fix memory leak in Python API - part 2
e477b05a9 ErgDB Download - Decode title to be used as name
3a16d1ecc Keep Perspective Selecto synced when switching athletes
63d13ba9e Update Italian translation
f947b6bd3 VideoSync - Distance scaling only applies to CRS workouts
67962bfff Fix memory leak in Python API
5f22d12a6 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63cd Remove MapQuest API Key from gcconfig.pri.in
a7ad1346e Measures CSV Import - Last field can be empty
90172a4a6 Replace Tracker in default Trends layout
68b70e0e4 Fix Elevation - Avoid 302 network error
434580ee8 Disable execution of Python DPs from formulas and Python API
cb23914a5 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9af7 Minimum bison version is now 2.7
[publish binaries]
Cumulative changes from RC3
2c3eabdd8 RideCache - Fix refresh to include the oldest activity
9c7d1d4f3 Strava Sync - Tag simulation rides as VirtualRide
53f8f5102 Fix memory leak in Python API - part 2
e477b05a9 ErgDB Download - Decode title to be used as name
3a16d1ecc Keep Perspective Selecto synced when switching athletes
63d13ba9e Update Italian translation
f947b6bd3 VideoSync - Distance scaling only applies to CRS workouts
67962bfff Fix memory leak in Python API
5f22d12a6 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63cd Remove MapQuest API Key from gcconfig.pri.in
a7ad1346e Measures CSV Import - Last field can be empty
90172a4a6 Replace Tracker in default Trends layout
68b70e0e4 Fix Elevation - Avoid 302 network error
434580ee8 Disable execution of Python DPs from formulas and Python API
cb23914a5 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9af7 Minimum bison version is now 2.7
This boundary error provokes the cache entry for the oldest
activity don't be refreshed on full cache refresh, only
when the activity is imported or opened (s.t. selecting it
in Activities View).
For most users this may be uneventfull, but if the oldest
activity becomes dirty, a full cache will happend on each
following start, until the oldest activity is opened and
it may explain the behavior reported ocasionally at the forum
and recently in #4297
Py_buildValue does not steal references, leading to an incorrect
reference counter and therefore resources not freed by the
garbage collector.
Contributed by Joachim at the forum.
Title is html encoded, we need to decode it for readability and,
since name is used as a filename, replace "/" by "-".
This still has some limitations s.t. duplicate titles, but they
have easy workarounds for the user and they don't justify to change
the database schema now in my POV.
PyDict_SetItemString does not steal references, leading to an incorrect
reference counter and therefore resources not freed by the garbage collector.
Contributed by Joachim at the forum.
[publish binaries]
Metadata and metrics don't work in these contexts as documented
in #4095 so we disable them to avoid confusion until the root
issue is solved.
Fixes#4288
Just appending the file lists doesn't work like addFilter
does, isfiltered and files are added as optional parameters
to Pespective:filterlist so they are accounted for when
the list of files is generated.
Fixes#4285
- Crash on syntax error happened on <leaf> destructor and the cause
was tokens declared as <leaf> but not creating a leaf, to avoid
this a new <string> type without destructor was added for them.
- Warnings indicated semantic value not set for some rules due to
the lack of $$ = $1, likely bening, but lets avoid it.
This is a continuation of 523ffcc, %destructor bison
directive is used to clean and delete Leaf nodes
allocated and discarded by the parser.
Hopefully fixes#4249
This started to happen after #4277, problem is when parsing fails
treeRoot can point ot non Leaf objects. This does not happens when
parsing from the DataFilter constructor since treeRoot is forced
to NULL on errors, this commit does the same for check and parseFilter.
Remaining problem is the memory leak in these cases, which are frequent
when editing filters in User or LTM charts as explained in #4249
The crash documented in #4249 was related to the conversion of
Leaf of type Symbol to Function when () are found afterwards.
This is fixed in this commit, but more testing is necessary to
see if there are other cases.
clearFilter - delete root Leaf
Leaf constructor: initialize left,right and cond to null pointers
Leaf::clear avoid crashes when called with a null pointer parameter,
and release memory in all cases allocated in the parser
TODO: still crashes if called from DataFilter destructor, see #4249
Missing from RC2 build, also include the fix to avoid crashes when
myPerspective is not set in existing charts and default layouts
without R charts to avoid #4267 for newly create athletes.
[publish binaries]
This was reported at the forum and it is reproducible with
the supplied home-perspectives.xml, it was likely generated
by an older version, but lets get defensive just in case.
- DragDropMode is changed from InternalMove to DragDrop in RideTreeView,
this enables compare of activities again
- DragDropMode is changed from InternalMove to DragDrop in SeasonTreeView,
MoveAction is made the default action and dragEnterEvent ignores
events other than move or from other origins. This avoids compared
date ranges loosing their names.
- DragDropMode is changed from InternalMove to DragDrop in IntervalTreeView,
MoveAction is made the default action and dragEnterEvent ignores
events other than move or from other origins. This avoids removal
of compared intervals from the intervals list.
This solution was contributed by Joachim at the users forum.
Fixes#3622
[publish binaries]
Items are not editable, so it is not used in the normal flow,
and it worsen a bug which clears the date range name in the item
when dropping on compare pane commiting the change to seasons.xml
This allows to request all points at once since post api has
no limits according the documentation.
Break logic is preserve just in case we need it in the future.
Fixes#4261
MapQuest API reaches EOL on Aug-31, let's test the replacement
in all the supported platforms.
Reveal Controls are disabled in this build for all charts,
with Show Console on chart settings for R and Python charts.
[publish binaries]
Since MapQuest elevation service reaches end of life on aug-31,
it is replaced by Open-Elevation public API with minimum changes.
TODO: use Post instead of Get to request more points at a time
Fixes#4206
.. clarify how to make updates in the README
.. replace the fit_example.h from the current SDK
.. added Garmin devices not yet supported in the SDK to
the nongarmin.json file
.. updated the makefile to use python3 and update when
the python program is changed.
For R and Python charts the Show Console setting is now
part of regular settings, and it is replaced by a warning
label when R or Python are disabled to help users.
Since for remaining charts reveal controls are redundant,
they are globally disabled in Perspective class.
TODO: remove all reveal code to simplify charts,
eventually after v3.6 release to minimize risks?
Fixes#4256
[skip AppVeyor]
To avoid rebuild when after_success is cancelled,
so restarting the job can complete the packaging.
Drawback is we need to clear the cache to rebuild
[publish binaries]
.. second release candidate with no open defects in the
backlog for 3.6 this is likely the last release candidate
before we release (unless we find a major defect that
needs to be corrected and tested).
- General is what we have with updated default Trends Overview minus
CP related charts moved to Power Duration perspective.
- Power Duration includes CP related charts in previous layout plus
some useful charts from CloudDB for modelling and profiling.
- Triathlon includes a multisport Overview, TriScore PMC, VO2 Scores
for Bike and Run, CV chart for run and swim and Run profile for now.
- Measures include Weight, HRV and Nutrition charts.
Complements 5e4189f and fixes#3899
Run perspective includes Power analysis, Swim includes HR,
and General defaults for Bike and remaining sport.
Map is an experimental tiled perspective including Map and
Performance charts, intended to create and analize intervals.
To enable workout preview in the more specific layout,
provided the current perspective allows switching,
to avoid unwanted swithing when using the Workout Editor.
Reorder perspectives in default layout.
So workouts with GPS data but no video can use LiveMap chart,
without messing with basic slope workouts
Update default layout to include a perspective for each mode
Part of #3899
.. since it is a generated file lets symlink FITmetadata.json
to the source maintained in util/fit to save having to copy it etc.
.. also removed unused variable 'write' that was left behind from
some unused code during development
.. we try and download the latest from the website when
the first FIT file is opened.
Since importing data is generally not a time critical
action and we only try for the first file this is more
appropriate than checking at each launch.
.. the version number is not checked, it is assumed the
version on the website will always be the very latest.
.. the file is now baked in to the GC binary and loaded
the first time a FIT file is parsed.
.. the getManuProd() function has been changed to use the
loaded metadata to derive product descriptions.
.. we still need to update the code to check the version
available a www.goldencheetah.org and use it if it is
newer than the one cached/baked in.
Different warnings for 2 cases:
- When the imported filename already exists in the library
- When the copy fails for other reasons
They were merged with different messages.
Add erg2 extension as one of admited workout formats to avoid
Scan Workouts removing all referenes to them.
Also uncheck Select All setting by default since currently
there are hundreds of workouts and downloading all of them is unlikely
what the users want to do, besides they are not that easy to remove.
events(date|name|priority|description) returns a vector with the
required field for each event in the current date range span.
For example, to create vertical lines in a Trends User Chart:
sapply(events(date), { annotate(vline, events(name)[i], solid, x); });
When GPS data was available before the first distance tick,
includes test file contributed at the forum.
Fixes#4251
Also reverts the TCX part of 1f094f5 since it is incomplete,
and not such a good idea anyway.
.. a well known issue with deletion of datafilters that
was a side-effect of the old metric refresh code and
threading.
.. now the computation no longer uses QConcurrent::map
the issue with deletion of the datafilter is removed.
.. have tested with metric refreshes and removal and
addition of new user metrics.
.. more testing is required to be sure the problem is
now completely gone.
.. data point allocated twice on heap in appendOrUpdatePoint
which is always called by RideFile::append
.. this leak has been present since v3.4 (!)
Fixes#4248
.. lets not allow the user to call a user defined function
called "count" - despite wanting it for user metrics.
.. terrible flaw in the user metric design, forcing users
to define a function that conflicts with a builtin.
.. this means we can use the count() builtin function
in user metric code, which is kind of important !
.. the template user metric defined a count { } user metric
function that also used the builtin count() function, but
at runtime the user defined function is called causing an
infinite recurse.
.. it is right that user metrics can override builtin functions
but is very unfortunate that the count function is named this
way.
.. most users likely will never encounter this- but will cause a
SEGV stack overflow.
.. precious commit has a significant improvement in performance
since it reduces total CPU activity not related to metric
calculation dramatically.
.. this commit is a minor tweak to ensure updates are shown
relative to the number of activities- so instead of giving
visual feedback after every 100 activities we give feedback
after every 10% of the activies are processed.
.. remove Qt5Concurrent.dll from windows installer as
it is no longer required.
.. remove errant class member in RideCacheRefreshThread
that was added then unused during development.
.. since Qt5.15 QtConcurrent::map() will use all available
worker threads in the global thread pool. And this causes
a deadlock in the GUI since QGraphicsView uses threads to
manage updates.
.. we now manage the metric refresh via RideCacheRefreshThread
and use at most 50% of the overall threads available in the
global thread pool.
.. Have tested obvious triggers such as metric schema updates
and user metrics being changed, but more testing is needed.
Fixes#3611
When a segment is dropped in an empty compare pane
the user is given the choice to add matching segments
from other activities, after this change only activities
of the same sport are considered.
[skip AppVeyor]
Fixes#4196 but may trigger #3611, this is a test build
intented to help on release version selection.
Upgrade Python AppImage to 3.7.13 since 3.7.12 is no longer available.
[publish binaries]
Currently only Train layout is there, so on Reset Layout
the included layouts will be used for remaining views,
but these are more recent than the ones on v3.5 folder.
Part of #3899
Mutual exclusion was held while the training file is imported after
workout stop, this was a mistake introduced in my previous commits
since it can lead to deadlocs. Sorry.
.. start of release cycle, pushed out to get the recent
Withings API update out.
standard config still needs to be fixed up before
we move to the final release
[publish binaries]
This is a continuation of 3db1839, we need coordinate access to
rr and vo2 files at stop time, but there is no need to limit
concurrency between rr and vo2 recording.
rr/vo2 files are opened and appended in response to ANT+/BTLE
initiated signals but closed in response to a GUI event,
there has been data loss reports in the forum likely due to
concurrency problems between different threads, a QMutex
was added to coordinate access to these shared data structures.
R and Python API: add GC.intervalType(type=1) function to get the
localized interval description to be used as parameter for intervals.
Formulas: return the enumerator for intervals function while intervalstrings
continue to return localized type description.
Fixes#4114
1. Typos in spelling (some missing accents, keyboard typos, etc.) fixed
2. Non correct uppercase spelling in Spanish fixed
3. Translation of almost all untranslated source texts
Contributed by @jgpallero
New Garmin devices allows to enter RPE and Feel after some activities,
when these fields are present in FIT files they are used to set
corresponding metadata fields.
Fixes#4124
.. when creating a user chart or a user metric the template
code included calls to sample{}
seemed odd to warn it was a serious performance issue
whilst at the same time using it in the template.
.. we should just deprecate sample{} altogether, will likely
make that change before the release of v3.6
.. It is possible to select a background
color for a user chart and an overview tile.
the user should be encouraged to use a
standard color if they intend on sharing
the chart with others.
.. A couple of new standard colors are also
introduced for alternate and vibrant
overview tile backgrounds
.. Ironically, one of the most visually
appealling approaches is to make one or
more tiles in an overview have the same
background as the overview.
.. Will push some tweaks to the new standard
colors for each theme separately.
.. let folks supply the number of decimal places to round
a number (or vector) by.
e.g. round(config(weight), 1) will round weight to one
decimal place; 75.55kg rounds to 75.5kg.
.. make it possible to add a blank overview chart, which is
useful when building your own dashboards
.. at the same time added a minium scene columns, so when
building a dashboard you don't get a huge item as you
add things, its scaled to a default of 5 columns.
.. will add options to customise the minimum columns so
users can adapt if needed.
.. whilst adding options to the window registry I also
fixed the fact that the old summary was replaced by
overview but with an incorrect window type that meant
it didn't get retained.
registerItems is now a static member of OverviewItemConfig called from main,
and GCColor::setupColors() is called a second time, both after the translator
is installed to enable translations.
Fixes#4089
.. this time lets just set the contents margins before we
show. This is kinda ok, and avoids having to follow every
path from lazy load to selection- since we always get a
show event at the end.
.. switch train view perspective when connection is established
but before we start.
if a media file is selected we choose a video perspective
otherwise we look to see if the mode is erg or slope and
select the perspective that meets that.
by choosing to switch on connect we don't jump around too
soon (especially if editing) but does mean that those
folks that like to autoconnect to devices will have to
select their view manually.
Fixes#4104
.. add configuration of switching mode for train view perspectives
the next commit will add the code that switches when a
workout or media is selected.
.. improved performance when switching between tab/tiled mode
which is especially important in train view (and also when
resizing or entering/exiting full screen mode there).
.. removed the title at the top of a chart, when the same info
is already in the name of a tab, saving some real estate.
.. Dial window stop setting fonts via pixel size (its horribly
slow on Qt with hi-dpi displays
.. some other perspective fixups for performance and also added
some debug for stack tracing (disabled in the commit).
.. the view (e.g. trends view) should set its tab/tile status on
the basis of the current perspective.
this fixes an issue where toggle style got out of whack with
what was on screen.
.. train view resize performance was terrible because each time
a telemetry item was resized it would recalculate the right
pixel size for the font.
this was only a problem in hidpi displays, but these are
becoming more and more popular.
.. standard colors now belong to groups:
* Chart - chart decorations e.g. grid lines
* Data - data series e.g. Power
* Gui - Gui elements e.g. toolbar background
.. when selecting colors in user and trends charts we
now filter out any colors that are not data related
to make it easier for users to find a standard color.
.. when enter/leave full screen mode the view sidebar is
hidden and shown to increase screen real estate (and
especially useful in train view).
.. since the user may want to show/hide for other reasons
the view menu now also has an option to show/hide the
view sidebar selector too.
.. the renumbering of columns removed empty columns. This was not
desirable since in some instances where spanning tiles are used
the user may have deliberately done this.
.. thanks to Alan Benstead at the forums for an example chart to
test this fix against.
.. when a spanning tile moves the layout needs to restart to
take into account its new position (since it will displace
other tiles).
.. to enable us to restart the layout we needed to refactor
the updateGeometry() method to separate out the creation
of animations from layout changes (because an item may be
moved several times as spanners take precedence).
.. tile column numbers also need to be renumbered from 0 when
arranging since it is possible to get out of sync as items
are dragged around.
.. this refactor should also make it slightly easier to fix
any other layout tweaks (now the previous issues have been
resolved).
This reverts commit a023e0efc0.
There are a number of issues with this commit that need
more work and further testing, most notably:
* moving an item causes jarring and unneccessary updates
* moving an item to before the first column causes a SEGV
.. when a spanning tile moves the layout needs to restart to
take into account its new position (since it will displace
other tiles).
.. to enable us to restart the layout we needed to refactor
the updateGeometry() method to separate out the creation
of animations from layout changes (because an item may be
moved several times as spanners take precedence).
.. this refactor should also make it slightly easier to fix
any other layout tweaks.
.. annoying heritage issue with metric names that contain an
apostrophe (') breaking the parser. So we need to add them
as special cases to the lexer.
Fixes#4057
Add support for FTMS devices with Power and Slope control plus Power, Cadence and Speed telemetry
Implement a priority for controllable devices
Avoid connecting Cycling Power Service if there's another source
When CdA is not set, it is estimated at every sample, using cadence. Beforehand, it was computed with the first sample
Co-authored-by: Peret <mail@mail.com>
.. a new checkbox setting for the user chart to refresh when interval
selection changes.
since there is a performance overhead the user must select this
if they are plotting intervals-- most of the time it is not needed.
.. the defaults for opacity was set to 1% and line width of 0px
when adding a series to a user chart were inappropriate.
Some users wouldn't notice and wonder why curves rendered in
a ghostly manner.
Also made worse by the fact that when opengl rendering is
enabled for a series (fast graphics) the opacity and width
are ignored.
This led to a false diagnosis of rendering issues
when the root cause was the configuration of the curve.
.. disable forcing of ANGLE for rendering, which helps where folks
have multiple GPUs but cannot configure them for use in GC.
.. some reports in the forums of issues related to this.
.. add a linear regression to the plot for the current series.
style is solid, dash, dot, dashdot or dashdotdot
"colorname" is a color e.g. "red" or a hex rgb "#fefefe"
DataFilter evaluation requires an activity to get context,
so don't try to evaluate one when there is no current activity
to avoid crashes. It is a marginal edge case without practical
value, but better don't crash when a new user is playing around.
Reported at the forum, easily reproducible creating a KPI tile
in Trends Overview Chart.
The added check is already present in remaining evaluate versions.
.. annotate(hline|vline, "text", style, value) to add a horizontal or
vertical line to the plot for the current series on a UserChart.
style is one of solid, dash, dot, dashdot or dashdotdot which are
the standard Qt pen styles for drawing lines.
I also took the opportunity to refactor how annotations are passed
from the datafilter down to the generic plot. This should make it
far easier to add annotations in the future.
.. fixed a SEGV in the voronoi annotation, which was related to memory
management and the sqrt_nsites variable (honestly, I am amazed it
ever worked).
.. labels in Python and R charts are now broken, will fixup shortly when
worked out how it should work (annotations are related to a series).
To enable source file names and line numbers in stack traces
generated after crashes in crash*.log files.
Intended to make crash report from users easier to analyze.
[skip AppVeyor]
Install gsl and srmio from source
Install R and awscli using official installers
Disabled libsamplerate
This is a workaround to avoid a brew update which would force
the use of Qt 5.15 triggering #3611
[publish binaries]
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 is a desktop application for cyclists and triathletes and coaches
* Analyse using summary metrics like BikeStress, TRIMP or RPE
* Extract insight via models like Critical Power and W'bal
* Track and predict performance using models like Banister and PMC
* Optimise aerodynamics using Virtual Elevation
* Train indoors with ANT and BTLE trainers
* Upload and Download with many cloud services including Strava and Todays Plan
* Import and export data to and from a wide range of bike computers and file formats
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.
GoldenCheetah provides tools for users to develop their own own metrics, models and charts
* A high-performance and powerful built-in scripting language
* Local Python runtime or embedding a user installed runtime
* Embedded user installed R runtime
GoldenCheetah supports community sharing via the Cloud
* Upload and download user developed metrics
* Upload and download user, Python or R charts
* Import indoor workouts from the ErgDB
* Share anonymised data with researchers via the OpenData initiative
GoldenCheetah is free for everyone to use and modify, released under the GPL v2 open source license with pre-built binaries for Mac, Windows and Linux.
@@ -19,7 +35,7 @@ INSTALL-WIN32 For building on Microsoft Windows
INSTALL-LINUX For building on Linux
INSTALL-MAC For building on Apple OS X
INSTALL-MAC For building on Apple MacOS
macOS and Linux: [](https://app.travis-ci.com/GoldenCheetah/GoldenCheetah)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.