@sports-alliance/sports-lib
Version:
A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc
40 lines (39 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataPowerCurve = void 0;
const data_bare_1 = require("./data.bare");
const data_duration_1 = require("./data.duration");
const data_power_1 = require("./data.power");
const data_power_watts_per_kg_1 = require("./data.power-watts-per-kg");
class DataPowerCurve extends data_bare_1.DataBare {
constructor(value) {
super(DataPowerCurve.hydrate(value));
}
static hydrate(value) {
return (value || []).map(point => ({
duration: point.duration instanceof data_duration_1.DataDuration ? point.duration : new data_duration_1.DataDuration(point.duration),
power: point.power instanceof data_power_1.DataPower ? point.power : new data_power_1.DataPower(point.power),
wattsPerKg: point.wattsPerKg
? point.wattsPerKg instanceof data_power_watts_per_kg_1.DataPowerWattsPerKg
? point.wattsPerKg
: new data_power_watts_per_kg_1.DataPowerWattsPerKg(point.wattsPerKg)
: undefined
}));
}
toJSON() {
return {
[DataPowerCurve.type]: this.value.map(point => {
const json = {
duration: point.duration.getValue(),
power: point.power.getValue()
};
if (point.wattsPerKg) {
json.wattsPerKg = point.wattsPerKg.getValue();
}
return json;
})
};
}
}
exports.DataPowerCurve = DataPowerCurve;
DataPowerCurve.type = 'PowerCurve';