Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New feature: Training Load and performance prediction #103

Open
wants to merge 100 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
1bbea0a
Start from fresh
FJBDev Oct 27, 2022
a5cf472
misc
FJBDev Oct 27, 2022
05bc217
misc
FJBDev Oct 27, 2022
d617d40
misc
FJBDev Oct 27, 2022
f99daae
test
FJBDev Oct 27, 2022
1a8ea8c
revert
FJBDev Oct 27, 2022
744b6ff
fix
FJBDev Oct 27, 2022
50483f8
maybe
FJBDev Oct 27, 2022
65e9fe4
test
FJBDev Oct 27, 2022
0ad3e14
hmm
FJBDev Oct 27, 2022
d4d9a57
test
FJBDev Oct 27, 2022
a2770c0
revert
FJBDev Oct 27, 2022
369aed3
different
FJBDev Oct 27, 2022
a1f6325
test
FJBDev Oct 27, 2022
bbc416e
ok
FJBDev Oct 27, 2022
1d5b8b6
wip
FJBDev Oct 28, 2022
14fcb0e
uc
FJBDev Oct 28, 2022
cbf7ca5
uc
FJBDev Oct 28, 2022
b9e1485
misc
FJBDev Oct 28, 2022
3d49d1c
misc
FJBDev Oct 28, 2022
63228b9
maybe the culprit
FJBDev Oct 28, 2022
8cb7e62
misc
FJBDev Oct 28, 2022
e3b8483
wip
FJBDev Oct 28, 2022
57a99e2
wip
FJBDev Oct 28, 2022
8d34d2d
test
FJBDev Oct 28, 2022
023522f
revert
FJBDev Oct 28, 2022
07e44b2
revert
FJBDev Oct 28, 2022
0507e66
wip
FJBDev Oct 28, 2022
2364f7d
revert
FJBDev Oct 28, 2022
8a9a1fb
revert
FJBDev Oct 28, 2022
1102237
misc
FJBDev Oct 28, 2022
1a27695
fast
FJBDev Oct 28, 2022
587befd
are you serious
FJBDev Oct 28, 2022
f0d45aa
misc
FJBDev Oct 28, 2022
7d41c0a
uc
FJBDev Oct 28, 2022
8f2ac32
uc
FJBDev Oct 28, 2022
3c670d5
misc
FJBDev Oct 28, 2022
fa04317
fix
FJBDev Oct 28, 2022
2e30726
for now
FJBDev Oct 28, 2022
9b64b55
ca va etre long
FJBDev Oct 30, 2022
706501b
more
FJBDev Oct 30, 2022
fd4ef42
more
FJBDev Oct 30, 2022
f2c5ab3
ouf
FJBDev Oct 30, 2022
a449609
for now
FJBDev Oct 30, 2022
b01abd5
better naming
FJBDev Oct 30, 2022
063504e
more
FJBDev Oct 30, 2022
20e2258
misc
FJBDev Oct 30, 2022
29e32b9
wip
FJBDev Oct 30, 2022
b788a40
wip
FJBDev Oct 30, 2022
e1075ce
wip
FJBDev Oct 30, 2022
0469786
wip
FJBDev Oct 30, 2022
d2df671
ca ma gave
FJBDev Oct 30, 2022
3c4c8c8
wip
FJBDev Oct 30, 2022
4783119
avant que ca explose
FJBDev Oct 30, 2022
32f7270
a faire avec BC
FJBDev Oct 30, 2022
b7b4f51
fix
FJBDev Oct 30, 2022
6c64e88
fix
FJBDev Oct 30, 2022
eab8fb1
fix
FJBDev Oct 30, 2022
fccddec
fix
FJBDev Oct 30, 2022
1fd426b
wip
FJBDev Oct 30, 2022
b0fed50
better
FJBDev Oct 30, 2022
33b9656
todo
FJBDev Oct 30, 2022
4ef16d7
fix
FJBDev Oct 31, 2022
36a60b7
misc
FJBDev Oct 31, 2022
9d04940
reverts
FJBDev Oct 31, 2022
476353b
revert
FJBDev Oct 31, 2022
1c120ef
revert
FJBDev Oct 31, 2022
c1e32d4
unit tests fix
FJBDev Oct 31, 2022
19c5c6a
revert
FJBDev Oct 31, 2022
744d1c0
fixes
FJBDev Oct 31, 2022
71f69bd
revert
FJBDev Oct 31, 2022
f1a8a22
fix
FJBDev Oct 31, 2022
72664db
fixes
FJBDev Oct 31, 2022
6a1b62b
beauty
FJBDev Oct 31, 2022
6f842b8
SonarQue
FJBDev Nov 1, 2022
b77c508
Merge remote-tracking branch 'Wolfgang/main' into fb-trainingload
FJBDev Nov 9, 2022
1f21f53
until merging with main
FJBDev Nov 9, 2022
645055d
Update ChartComponentGraph.java
FJBDev Apr 11, 2023
74c8e79
Merge remote-tracking branch 'Wolfgang/main' into fb-trainingload
FJBDev May 2, 2024
6be5cc0
revert
FJBDev May 2, 2024
8e34ab8
merge
FJBDev May 2, 2024
144a5d0
merge
FJBDev May 2, 2024
3e45656
misc
FJBDev May 2, 2024
0584411
fix
FJBDev May 2, 2024
16354fd
revert
FJBDev May 2, 2024
fd26620
fix
FJBDev May 2, 2024
70dd96d
ut fixes
FJBDev May 2, 2024
360a7ac
last
FJBDev May 2, 2024
5009411
fixes
FJBDev May 2, 2024
766231a
revert
FJBDev May 2, 2024
53a019b
fix
FJBDev May 2, 2024
4baaeb1
indent
FJBDev May 2, 2024
ca752f4
fix
FJBDev May 2, 2024
94db5bc
2024
FJBDev May 2, 2024
60a681a
Merge remote-tracking branch 'Wolfgang/main' into fb-trainingload
FJBDev Jun 11, 2024
cd6cd54
misc
FJBDev Jun 11, 2024
ae9538a
misc
FJBDev Jun 11, 2024
5e22d27
misc
FJBDev Jun 11, 2024
1ba7875
2024
FJBDev Jun 11, 2024
aea83de
2024
FJBDev Jun 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/******************************************************************************
* Copyright (C) 2005, 2023 Wolfgang Schramm and Contributors
* Copyright (C) 2005, 2024 Wolfgang Schramm and Contributors
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
Expand Down Expand Up @@ -76,6 +76,8 @@ public class GraphColorManager {
public static final String PREF_GRAPH_TRAINING_PERFORMANCE = "Training_Performance"; //$NON-NLS-1$
public static final String PREF_GRAPH_BODYFAT = "BodyFat"; //$NON-NLS-1$
public static final String PREF_GRAPH_BODYWEIGHT = "BodyWeight"; //$NON-NLS-1$
public static final String PREF_GRAPH_PREDICTED_PERFORMANCE = "Predicted_Performance"; //$NON-NLS-1$
public static final String PREF_GRAPH_TRAINING_STRESS = "Training_Stress"; //$NON-NLS-1$

public static final String PREF_COLOR_GRADIENT_BRIGHT = "bright"; //$NON-NLS-1$
public static final String PREF_COLOR_GRADIENT_DARK = "dark"; //$NON-NLS-1$
Expand Down Expand Up @@ -103,11 +105,11 @@ public class GraphColorManager {
static final String TAG_BRIGHTNESS_MAX = "max"; //$NON-NLS-1$
static final String TAG_BRIGHTNESS_MAX_FACTOR = "maxFactor"; //$NON-NLS-1$

static final String MEMENTO_CHILD_MIN_MAX_VALUE = "minmaxValue"; //$NON-NLS-1$
static final String TAG_IS_MIN_VALUE_OVERWRITE = "isMinOverwrite"; //$NON-NLS-1$
static final String TAG_MIN_VALUE_OVERWRITE = "minValueOverwrite"; //$NON-NLS-1$
static final String TAG_IS_MAX_VALUE_OVERWRITE = "isMaxOverwrite"; //$NON-NLS-1$
static final String TAG_MAX_VALUE_OVERWRITE = "maxValueOverwrite"; //$NON-NLS-1$
private static final String MEMENTO_CHILD_MIN_MAX_VALUE = "minmaxValue"; //$NON-NLS-1$
private static final String TAG_IS_MIN_VALUE_OVERWRITE = "isMinOverwrite"; //$NON-NLS-1$
private static final String TAG_MIN_VALUE_OVERWRITE = "minValueOverwrite"; //$NON-NLS-1$
private static final String TAG_IS_MAX_VALUE_OVERWRITE = "isMaxOverwrite"; //$NON-NLS-1$
private static final String TAG_MAX_VALUE_OVERWRITE = "maxValueOverwrite"; //$NON-NLS-1$

// SET_FORMATTING_OFF

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (C) 2005, 2020 Wolfgang Schramm and Contributors
* Copyright (C) 2005, 2024 Wolfgang Schramm and Contributors
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
Expand Down Expand Up @@ -190,7 +190,7 @@ public void onMesg(final SessionMesg mesg) {

final Float trainingStressScore = mesg.getTrainingStressScore();
if (trainingStressScore != null) {
tourData.setPower_TrainingStressScore(trainingStressScore);
tourData.setTrainingStress_Device(trainingStressScore);
}

final Float intensityFactor = mesg.getIntensityFactor();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (C) 2022 Wolfgang Schramm and Contributors
* Copyright (C) 2022, 2024 Wolfgang Schramm and Contributors
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
Expand Down Expand Up @@ -207,6 +207,7 @@ private DeviceSensor getSensor(final long sensorId) {
* Convert "values=..." into a string array
*
* @param startElement
*
* @return
*/
private String[] getValuesFromAttribute(final StartElement startElement) {
Expand Down Expand Up @@ -384,6 +385,7 @@ private void parseXML(final String importFilePath) throws FactoryConfigurationEr
*
* @param eventReader
* @param startElement_Parent
*
* @throws XMLStreamException
*/
private void parseXML_010_Tour(final XMLEventReader eventReader, final StartElement startElement_Parent) throws XMLStreamException {
Expand Down Expand Up @@ -438,6 +440,7 @@ private void parseXML_010_Tour(final XMLEventReader eventReader, final StartElem
* Parse {@code <tourType>...</tourType>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_020_TourType(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -479,6 +482,7 @@ private void parseXML_020_TourType(final XMLEventReader eventReader) throws XMLS
*
* @param eventReader
* @param startElement_
*
* @throws XMLStreamException
*/
private void parseXML_030_Tags(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -518,6 +522,7 @@ private void parseXML_030_Tags(final XMLEventReader eventReader) throws XMLStrea
* Parse {@code <markers>...</markers>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_040_Markers(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -590,6 +595,7 @@ private void parseXML_042_Marker(final XMLEventReader eventReader,
* Parse {@code <waypoints>...</waypoints>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_050_Waypoints(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -662,6 +668,7 @@ private void parseXML_052_Waypoint(final XMLEventReader eventReader,
* Parse {@code <photos>...</photos>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_060_Photos(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -734,6 +741,7 @@ private void parseXML_062_Photo(final XMLEventReader eventReader,
* Parse {@code <sensorvalues>...</sensorvalues>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_070_SensorValues(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -782,6 +790,7 @@ private void parseXML_072_SensorValue(final StartElement startElement_SensorValu
* Parse {@code <tourreferences>...</tourreferences>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_080_TourReferences(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -854,6 +863,7 @@ private void parseXML_082_TourReference(final XMLEventReader eventReader,
* Parse {@code <dataseries>...</dataseries>}
*
* @param eventReader
*
* @throws XMLStreamException
*/
private void parseXML_100_DataSeries(final XMLEventReader eventReader) throws XMLStreamException {
Expand Down Expand Up @@ -1095,8 +1105,8 @@ private void setValues_Tour_Attributes(final Attribute attribute) {
case "power_Normalized": _tourData.setPower_Normalized( Util.parseInt_0(value)); break; //$NON-NLS-1$
case "power_PedalLeftRightBalance": _tourData.setPower_PedalLeftRightBalance( Util.parseInt_0(value)); break; //$NON-NLS-1$
case "power_TotalWork": _tourData.setPower_TotalWork( Util.parseLong_0(value)); break; //$NON-NLS-1$
case "power_TrainingStressScore": _tourData.setPower_TrainingStressScore( Util.parseFloat_0(value)); break; //$NON-NLS-1$

case "power_TrainingStressScore": _tourData.setTrainingStress_Device( Util.parseFloat_0(value)); //$NON-NLS-1$
_tourData.setTrainingStress_Device( Util.parseFloat_0(value)); break;
case "rearShiftCount": _tourData.setRearShiftCount( Util.parseInt_0(value)); break; //$NON-NLS-1$
case "restPulse": _tourData.setRestPulse( Util.parseInt_0(value)); break; //$NON-NLS-1$

Expand Down Expand Up @@ -1225,4 +1235,4 @@ private void setValues_WayPoint_Tags(final XMLEventReader eventReader,

}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (C) 2020, 2021 Frédéric Bard
* Copyright (C) 2020, 2024 Frédéric Bard
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
Expand Down Expand Up @@ -31,7 +31,7 @@
* For FitLogEx files only:
* We parse and save the CustomDataFieldDefinitions and equipments
*/
public class FitLogEx_SAXHandler extends DefaultHandler {
class FitLogEx_SAXHandler extends DefaultHandler {

private static final String TAG_ACTIVITY_CUSTOM_DATA_FIELD_DEFINITION = FitLog_SAXHandler.TAG_ACTIVITY_CUSTOM_DATA_FIELD
+ "Definition"; //$NON-NLS-1$
Expand All @@ -41,7 +41,7 @@ public class FitLogEx_SAXHandler extends DefaultHandler {

private static final String ATTRIB_CUSTOM_DATA_FIELD_DEFINITION_NAME = "Name"; //$NON-NLS-1$
private static final String ATTRIB_CUSTOM_DATA_FIELD_DEFINITION_OPTIONS = "Options"; //$NON-NLS-1$
private static final String ATTRIB_CUSTOM_DATA_FIELD_DEFINITION_TRIMP = "TRIMP"; //$NON-NLS-1$
static final String ATTRIB_CUSTOM_DATA_FIELD_DEFINITION_TRIMP = "TRIMP"; //$NON-NLS-1$

private static final String TAG_EQUIPMENT_BRAND = "Brand"; //$NON-NLS-1$

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class FitLog_SAXHandler extends DefaultHandler {
class FitLog_SAXHandler extends DefaultHandler {

private static final String TAG_ACTIVITY = "Activity"; //$NON-NLS-1$
private static final String TAG_ACTIVITY_CADENCE = "Cadence"; //$NON-NLS-1$
Expand Down Expand Up @@ -238,25 +238,25 @@ private class Activity {
private LinkedHashMap<String, String> customDataFields = new LinkedHashMap<>();
}

public static class Equipment {
static class Equipment {

String Id;
String Name;
String Id;
private String Name;

String DatePurchased;
String ExpectedLifeKilometers;
String InUse;
String Notes;
String PurchaseLocation;
String PurchasePrice;
String Type;
String WeightKilograms;
String DatePurchased;
String ExpectedLifeKilometers;
String InUse;
String Notes;
String PurchaseLocation;
String PurchasePrice;
String Type;
String WeightKilograms;

// Properties only used to generate the equipment name
String Brand;
String Model;

public String generateNotes() {
private String generateNotes() {

final StringBuilder notes = new StringBuilder(ATTRIB_EQUIPMENT_ID + "(SportTracks): " + Id); //$NON-NLS-1$

Expand Down Expand Up @@ -363,15 +363,15 @@ private class Pause {
private long duration;
}

public FitLog_SAXHandler(final String importFilePath,
final Map<Long, TourData> alreadyImportedTours,
final Map<Long, TourData> newlyImportedTours,
final boolean isFitLogExFile,
FitLog_SAXHandler(final String importFilePath,
final Map<Long, TourData> alreadyImportedTours,
final Map<Long, TourData> newlyImportedTours,
final boolean isFitLogExFile,

final ImportState_File importState_File,
final ImportState_Process importState_Process,
final ImportState_File importState_File,
final ImportState_Process importState_Process,

final FitLogDeviceDataReader device) {
final FitLogDeviceDataReader device) {

_importFilePath = importFilePath;
_alreadyImportedTours = alreadyImportedTours;
Expand Down Expand Up @@ -568,6 +568,10 @@ private TourData createTour() {
tourNotes.append(UI.NEW_LINE);
}
tourNotes.append("\"" + key + "\" : \"" + value + "\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

if (key.toUpperCase().equalsIgnoreCase(FitLogEx_SAXHandler.ATTRIB_CUSTOM_DATA_FIELD_DEFINITION_TRIMP)) {
tourData.setTrainingStress_Device(Float.valueOf(value));
}
});

tourData.setTourDescription(tourNotes.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,7 @@ private void setValues(final SessionMesg sessionMesg) {
sessionMesg.setAvgRightTorqueEffectiveness(_tourData.getPower_AvgRightTorqueEffectiveness());
sessionMesg.setAvgLeftPedalSmoothness(_tourData.getPower_AvgLeftPedalSmoothness());
sessionMesg.setAvgRightPedalSmoothness(_tourData.getPower_AvgRightPedalSmoothness());
sessionMesg.setTrainingStressScore(_tourData.getPower_TrainingStressScore());
sessionMesg.setTrainingStressScore(_tourData.getTrainingStress_Device());
sessionMesg.setIntensityFactor(_tourData.getPower_IntensityFactor());
sessionMesg.setThresholdPower(_tourData.getPower_FTP());
sessionMesg.setTotalTrainingEffect(_tourData.getTraining_TrainingEffect_Aerob());
Expand Down
1 change: 1 addition & 0 deletions bundles/net.tourbook.ext.jars/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@
<classpathentry exported="true" kind="lib" path="commons-suncalc-3.4.jar"/> <!-- https://mvnrepository.com/artifact/org.shredzone.commons/commons-suncalc -->
<classpathentry exported="true" kind="lib" path="fit-21.141.0.jar" sourcepath="/FIT SDK/FitSDKRelease/java"/> <!-- https://mvnrepository.com/artifact/com.garmin/fit https://github.com/garmin/fit-java-sdk -->
<classpathentry exported="true" kind="lib" path="url-detector-0.1.23.jar"/> <!-- https://mvnrepository.com/artifact/io.github.url-detector/url-detector -->
<classpathentry exported="true" kind="lib" path="commons-math3-3.6.1.jar"/> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<classpathentry kind="output" path="bin"/>
</classpath>
7 changes: 6 additions & 1 deletion bundles/net.tourbook.ext.jars/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ Bundle-ClassPath:
jackson-databind-2.17.0.jar,
jackson-annotations-2.17.0.jar,
fit-21.141.0.jar,
url-detector-0.1.23.jar
url-detector-0.1.23.jar,
commons-math3-3.6.1.jar
Export-Package: com.fasterxml.jackson.annotation,
com.fasterxml.jackson.core,
com.fasterxml.jackson.core.async,
Expand Down Expand Up @@ -148,6 +149,10 @@ Export-Package: com.fasterxml.jackson.annotation,
org.apache.commons.imaging.icc,
org.apache.commons.imaging.internal,
org.apache.commons.imaging.palette,
org.apache.commons.math3,
org.apache.commons.math3.analysis,
org.apache.commons.math3.analysis.solvers,
org.apache.commons.math3.exception,
org.apache.commons.lang3,
org.apache.commons.lang3.reflect,
org.apache.commons.lang3.time,
Expand Down
3 changes: 2 additions & 1 deletion bundles/net.tourbook.ext.jars/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ bin.includes = META-INF/,\
lat-lon-timezone-converter-2019-04-30.jar,\
simplelatlng-1.4.0.jar,\
fit-21.141.0.jar,\
url-detector-0.1.23.jar
url-detector-0.1.23.jar,\
commons-math3-3.6.1.jar
Binary file not shown.
3 changes: 2 additions & 1 deletion bundles/net.tourbook.statistics/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
net.tourbook,
net.tourbook.chart,
net.tourbook.common
net.tourbook.common,
org.eclipse.collections
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %Bundle-Vendor
Bundle-RequiredExecutionEnvironment: JavaSE-17
Expand Down
4 changes: 4 additions & 0 deletions bundles/net.tourbook.statistics/plugin.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@ Pref_Day_Summary_Distance = Distance - Day
Pref_Day_Summary_Duration = Tour Time - Day
Pref_Day_Summary_Elevation_Gain = Elevation Gain - Day
Pref_Day_Summary_Elevation_Loss = Elevation Loss - Day
Pref_Day_Summary_TrainingLoad = Training Load - Day

Pref_Month_Summary = Month Summary
Pref_Month_Summary_AthleteData = Athlete's Data - Month
Pref_Month_Summary_Distance = Distance - Month
Pref_Month_Summary_Elevation_Gain = Elevation Gain - Month
Pref_Month_Summary_Elevation_Loss = Elevation Loss - Month
Pref_Month_Summary_TourTime = Tour Time - Month
Pref_Month_Summary_TrainingLoad = Training Load - Month

Pref_Tour_Numbers = Tour Frequency
Pref_Tour_Time = Daytime
Expand All @@ -30,13 +32,15 @@ Pref_Week_Summary_Distance = Distance - Week
Pref_Week_Summary_Duration = Tour Time - Week
Pref_Week_Summary_Elevation_Gain = Elevation Gain - Week
Pref_Week_Summary_Elevation_Loss = Elevation Loss - Week
Pref_Week_Summary_TrainingLoad = Training Load - Week

Pref_Year_Summary = Year Summary
Pref_Year_Summary_AthleteData = Athlete's Data - Year
Pref_Year_Summary_Distance = Distance - Year
Pref_Year_Summary_Elevation_Gain = Elevation Gain - Year
Pref_Year_Summary_Elevation_Loss = Elevation Loss - Year
Pref_Year_Summary_TourTime = Tour Time - Year
Pref_Year_Summary_TrainingLoad = Training Load - Year

Statistic_Battery = Battery SoC

Expand Down
35 changes: 34 additions & 1 deletion bundles/net.tourbook.statistics/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,40 @@
category-data ="AthleteData"
category-time ="Year"
/>

<!-- TRAINING LOAD -->

<statistic
name ="%Pref_Day_Summary_TrainingLoad"
class ="net.tourbook.statistics.graphs.StatisticDay_TrainingLoad"
id ="net.tourbook.statistics.StatisticSummaryDayTrainingLoad"
category-data ="TrainingLoad"
category-time ="Day"
/>

<statistic
name ="%Pref_Week_Summary_TrainingLoad"
class ="net.tourbook.statistics.graphs.StatisticWeek_TrainingLoad"
id ="net.tourbook.statistics.StatisticSummaryWeekTrainingLoad"
category-data ="TrainingLoad"
category-time ="Week"
/>

<statistic
name ="%Pref_Month_Summary_TrainingLoad"
class ="net.tourbook.statistics.graphs.StatisticMonth_TrainingLoad"
id ="net.tourbook.statistics.StatisticSummaryMonthTrainingLoad"
category-data ="TrainingLoad"
category-time ="Month"
/>

<statistic
name ="%Pref_Year_Summary_TrainingLoad"
class ="net.tourbook.statistics.graphs.StatisticYear_TrainingLoad"
id ="net.tourbook.statistics.StatisticSummaryYearTrainingLoad"
category-data ="TrainingLoad"
category-time ="Year"
/>

<!-- BATTERY -->

Expand All @@ -278,7 +312,6 @@
category-time ="Other"
/>


</extension>

</plugin>
Loading
Loading