.. Strings and vectors of strings are useful for plotting bar charts
or wherever category variables are needed, they are also useful
when working with xdata names and metadata within ride files.
.. Full support for strings will be introduced over the next 4
commits, including this one (1 of 4):
1 - Basics - Create, Assign, Coerce, isString
2 - Operators - Logical, Math etc
3 - Functions - sort, uniq, aggregate etc
4 - String Functions - cat, split, toupper/lower etc
.. Will wait until all 4 commits are completed and string support
is feature complete before updating the wiki.
[skip appveyor]
Homebrew upgraded to python to 3.8, switched back to the 3.7.5
included with the Travis image until we decided to upgrade.
Changing to 3.8 requires to upgrade SIP to 5.x and testing.
.. click on item in list to select it and click thru to analysis view.
.. also implemented a hotspot() method in chartspaceitem to tell the
chartspace to stop stealing events when in our hotspot-- in this
case it was the area where we paint the list.
.. stackpointer increment before redo and indexing into the stack
when stackpoint is -1 in NavigationModel::forward().
.. introduced in the last commit.
.. clicking on an activity in the trend overview bubble chart will
switch to analysis view to look at it.
.. to support this all the underlying changes to navigation model
and related have been updated to force view change and allow
going back and forth in the navigation model.
.. along the way a couple of bugs were also squased. The worst was
a SEGV related to Tab::rideSelected() calling MainWindow::sidebar.
.. now the main foundational code is in place we can add more click
through opportunities; e.g. top N on overview, user chart.
.. back and forward buttons to navigate between views and selections.
.. currently limited to just rides, date ranges and views.
.. next step is to enable click to select from trends overviews to allow
users to drill down from the season overview into activities and
back again.
.. part of the shift from searching through lists to analyse data to
exploring data visually with drill down and click through.
.. the buttons are very basic and there is no way to explore the
history / recently viewed items etc. these will come later.
Fixes#3529
.. the user can configure the colour of toolbars and sidebars, so this
is honored in the sidebar painting,
.. we should look at separating out the way theme colors are edited;
the core colors are more important than the pallete colors like
CPOWER etc (and as an aside the palette colors should be usable
from user chart config too).
.. gap between ride list and sidebar color didn't get reset when change
color theme in preferences. (was a nightmare to find the fix).
.. overview default backgrounds when changing themes were also really
bad choices and toned down. quite why we have to change in pages.cpp
and colors.cpp is a bit tedious.
.. new metric 'Activity Date' which is days since 1900/01/01 as a metric
so can use wherever metrics are used.
.. added RideMetric::isDate() so we can mark as a date and honor setting
in RideMetric::toString()
.. updated BubbleViz to support Dates by using xoff and yoff to truncate
the values used when days since values.
.. changed the default config for a trends view bubble viz in overview
to use activity date as the x-axis.
.. thanks to Ale for the original idea behind this.
.. repurpose the interval bubble to show activities instead of
intervals.
.. changed the animation/transition to work better when looking at
seasons by resizing the axes before updating the points.
[skip appveyor]
Not a great difference, but we are too close to 50' limit
Also reduce curl max time to avoid timouts.
For Linux buils remove --silent build to avoid the job being cancelled
The block was introduced in bb6d2552c0 to
avoid the upload of charts without configuration, now configuration is
possible and it will be interesting to see what layouts users share.
The y scale is computed from the font instead of only from the current content, to avoid having different scales between different Text widgets of the same size. For example, "kph" has a high k and low p, resulting in a text widget with bigger bounding box, and thus smaller scale than a text widget with "watts". Options are added for alignment and for text width, to help align the different entries. The formatting of metrics with the integer part as Text and fraction as AltText is more systematic and it is possible to add an AltTextSuffix, to specify the units when they are not provided in VideoWindow. The visibility of the BoundingRect and Background car be controlled.
.. its much faster to vectorize and use the samples() function in init
or value function when working with user metrics.
for example this code:
sample {
work <- work + (POWER * recIntSecs);
}
value { work; }
count { Duration; }
should be refactored to:
value {
work <- sum(samples(power) * recIntSecs);
}
count { Duration; }
To be used as workouts and videosync with free Ergo Planet Videos
EPM files contain video sync plus geolocation information in XML format
Library of free rides: http://wiki.ergoplanet.de/myor/roadmovie-galerie
The problem is altitude set to zero in those examples, likely because it is
redundant when you resort to the EPP (Ergo Planet Program) for slope data,
but the EPP is an unpublished binary format we don't support directly.
So the workflow to use the those synchronized videos is:
1) Import the .epm file to GoldenCheetah as an activity
2) Use Fix Elevation and Fix GPS to add and smooth elevation and route data
3) Export the conditioned activity to GoldenCheetah JSON format
4) Import the .json file as Workout and VideoSync files,
plus the .avi as media in GC Train mode using Scan Workouts and Media
5) Train using a Video Window with overlay widgets and simulated speed for
better experience.
Fix base class toString 2 parameters bug
Use toString(metric, value) in getStringForSymbol to avoid setting the value
Use toString(metric, value) in MetricOverviewItem::setDateRange for testing