mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-15 00:49:55 +00:00
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
This commit is contained in:
@@ -208,35 +208,35 @@ Bindings::athleteZones(PyObject* date, QString sport) const
|
||||
gcZoneConfig swim("bike");
|
||||
|
||||
// BIKE POWER
|
||||
if (context->athlete->zones(false)) {
|
||||
if (context->athlete->zones("Bike")) {
|
||||
|
||||
// run through the bike zones
|
||||
int range=context->athlete->zones(false)->whichRange(forDate);
|
||||
int range=context->athlete->zones("Bike")->whichRange(forDate);
|
||||
if (range >= 0) {
|
||||
bike.date = forDate;
|
||||
bike.cp = context->athlete->zones(false)->getCP(range);
|
||||
bike.wprime = context->athlete->zones(false)->getWprime(range);
|
||||
bike.pmax = context->athlete->zones(false)->getPmax(range);
|
||||
bike.aetp = context->athlete->zones(false)->getAeT(range);
|
||||
bike.ftp = context->athlete->zones(false)->getFTP(range);
|
||||
bike.zoneslow = context->athlete->zones(false)->getZoneLows(range);
|
||||
bike.cp = context->athlete->zones("Bike")->getCP(range);
|
||||
bike.wprime = context->athlete->zones("Bike")->getWprime(range);
|
||||
bike.pmax = context->athlete->zones("Bike")->getPmax(range);
|
||||
bike.aetp = context->athlete->zones("Bike")->getAeT(range);
|
||||
bike.ftp = context->athlete->zones("Bike")->getFTP(range);
|
||||
bike.zoneslow = context->athlete->zones("Bike")->getZoneLows(range);
|
||||
}
|
||||
}
|
||||
|
||||
// RUN POWER
|
||||
if (context->athlete->zones(false)) {
|
||||
if (context->athlete->zones("Run")) {
|
||||
|
||||
// run through the bike zones
|
||||
int range=context->athlete->zones(true)->whichRange(forDate);
|
||||
int range=context->athlete->zones("Run")->whichRange(forDate);
|
||||
if (range >= 0) {
|
||||
|
||||
run.date = forDate;
|
||||
run.cp = context->athlete->zones(true)->getCP(range);
|
||||
run.wprime = context->athlete->zones(true)->getWprime(range);
|
||||
run.pmax = context->athlete->zones(true)->getPmax(range);
|
||||
run.aetp = context->athlete->zones(true)->getAeT(range);
|
||||
run.ftp = context->athlete->zones(true)->getFTP(range);
|
||||
run.zoneslow = context->athlete->zones(true)->getZoneLows(range);
|
||||
run.cp = context->athlete->zones("Run")->getCP(range);
|
||||
run.wprime = context->athlete->zones("Run")->getWprime(range);
|
||||
run.pmax = context->athlete->zones("Run")->getPmax(range);
|
||||
run.aetp = context->athlete->zones("Run")->getAeT(range);
|
||||
run.ftp = context->athlete->zones("Run")->getFTP(range);
|
||||
run.zoneslow = context->athlete->zones("Run")->getZoneLows(range);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -299,41 +299,41 @@ Bindings::athleteZones(PyObject* date, QString sport) const
|
||||
} else {
|
||||
|
||||
// BIKE POWER
|
||||
if (context->athlete->zones(false)) {
|
||||
if (context->athlete->zones("Bike")) {
|
||||
|
||||
for (int range=0; range < context->athlete->zones(false)->getRangeSize(); range++) {
|
||||
for (int range=0; range < context->athlete->zones("Bike")->getRangeSize(); range++) {
|
||||
|
||||
// run through the bike zones
|
||||
gcZoneConfig c("bike");
|
||||
|
||||
c.date = context->athlete->zones(false)->getStartDate(range);
|
||||
c.cp = context->athlete->zones(false)->getCP(range);
|
||||
c.wprime = context->athlete->zones(false)->getWprime(range);
|
||||
c.pmax = context->athlete->zones(false)->getPmax(range);
|
||||
c.aetp = context->athlete->zones(false)->getAeT(range);
|
||||
c.ftp = context->athlete->zones(false)->getFTP(range);
|
||||
c.zoneslow = context->athlete->zones(false)->getZoneLows(range);
|
||||
c.date = context->athlete->zones("Bike")->getStartDate(range);
|
||||
c.cp = context->athlete->zones("Bike")->getCP(range);
|
||||
c.wprime = context->athlete->zones("Bike")->getWprime(range);
|
||||
c.pmax = context->athlete->zones("Bike")->getPmax(range);
|
||||
c.aetp = context->athlete->zones("Bike")->getAeT(range);
|
||||
c.ftp = context->athlete->zones("Bike")->getFTP(range);
|
||||
c.zoneslow = context->athlete->zones("Bike")->getZoneLows(range);
|
||||
|
||||
config << c;
|
||||
}
|
||||
}
|
||||
|
||||
// RUN POWER
|
||||
if (context->athlete->zones(false)) {
|
||||
if (context->athlete->zones("Run")) {
|
||||
|
||||
// run through the bike zones
|
||||
for (int range=0; range < context->athlete->zones(true)->getRangeSize(); range++) {
|
||||
for (int range=0; range < context->athlete->zones("Run")->getRangeSize(); range++) {
|
||||
|
||||
// run through the bike zones
|
||||
gcZoneConfig c("run");
|
||||
|
||||
c.date = context->athlete->zones(true)->getStartDate(range);
|
||||
c.cp = context->athlete->zones(true)->getCP(range);
|
||||
c.wprime = context->athlete->zones(true)->getWprime(range);
|
||||
c.pmax = context->athlete->zones(true)->getPmax(range);
|
||||
c.aetp = context->athlete->zones(true)->getAeT(range);
|
||||
c.ftp = context->athlete->zones(true)->getFTP(range);
|
||||
c.zoneslow = context->athlete->zones(true)->getZoneLows(range);
|
||||
c.date = context->athlete->zones("Run")->getStartDate(range);
|
||||
c.cp = context->athlete->zones("Run")->getCP(range);
|
||||
c.wprime = context->athlete->zones("Run")->getWprime(range);
|
||||
c.pmax = context->athlete->zones("Run")->getPmax(range);
|
||||
c.aetp = context->athlete->zones("Run")->getAeT(range);
|
||||
c.ftp = context->athlete->zones("Run")->getFTP(range);
|
||||
c.zoneslow = context->athlete->zones("Run")->getZoneLows(range);
|
||||
|
||||
config << c;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user