@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
213 lines (212 loc) • 8.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FITSampleMapper = void 0;
var data_latitude_degrees_1 = require("../../../../data/data.latitude-degrees");
var data_altitude_1 = require("../../../../data/data.altitude");
var data_heart_rate_1 = require("../../../../data/data.heart-rate");
var data_cadence_1 = require("../../../../data/data.cadence");
var data_temperature_1 = require("../../../../data/data.temperature");
var data_distance_1 = require("../../../../data/data.distance");
var data_speed_1 = require("../../../../data/data.speed");
var data_vertical_speed_1 = require("../../../../data/data.vertical-speed");
var data_power_1 = require("../../../../data/data.power");
var data_longitude_degrees_1 = require("../../../../data/data.longitude-degrees");
var data_form_power_1 = require("../../../../data/data.form-power");
var data_leg_stiffness_1 = require("../../../../data/data.leg-stiffness");
var data_vertical_oscillation_1 = require("../../../../data/data.vertical-oscillation");
var helpers_1 = require("../../../utilities/helpers");
var data_accumulated_power_1 = require("../../../../data/data.accumulated-power");
var data_stryd_altitude_1 = require("../../../../data/data.stryd-altitude");
var data_stryd_distance_1 = require("../../../../data/data.stryd-distance");
var data_stryd_speed_1 = require("../../../../data/data.stryd-speed");
var data_right_balance_1 = require("../../../../data/data.right-balance");
var data_left_balance_1 = require("../../../../data/data.left-balance");
var data_stance_time_1 = require("../../../../data/data.stance-time");
var data_stance_time_balance_1 = require("../../../../data/data.stance-time-balance");
var data_step_length_1 = require("../../../../data/data.step-length");
var data_vertical_ratio_1 = require("../../../../data/data.vertical-ratio");
var data_ground_time_1 = require("../../../../data/data.ground-time");
var data_air_power_1 = require("../../../../data/data.air-power");
var constants_1 = require("../../../../constants/constants");
exports.FITSampleMapper = [
{
dataType: data_latitude_degrees_1.DataLatitudeDegrees.type,
getSampleValue: function (sample) {
return helpers_1.isNumber(sample.position_lat)
? Math.round(sample.position_lat * Math.pow(10, constants_1.GNSS_DEGREES_PRECISION_NUMBER_OF_DECIMAL_PLACES)) /
Math.pow(10, constants_1.GNSS_DEGREES_PRECISION_NUMBER_OF_DECIMAL_PLACES)
: sample.position_lat;
}
},
{
dataType: data_longitude_degrees_1.DataLongitudeDegrees.type,
getSampleValue: function (sample) {
return helpers_1.isNumber(sample.position_long)
? Math.round(sample.position_long * Math.pow(10, constants_1.GNSS_DEGREES_PRECISION_NUMBER_OF_DECIMAL_PLACES)) /
Math.pow(10, constants_1.GNSS_DEGREES_PRECISION_NUMBER_OF_DECIMAL_PLACES)
: sample.position_long;
}
},
{
dataType: data_distance_1.DataDistance.type,
getSampleValue: function (sample) {
return sample.distance;
}
},
{
dataType: data_heart_rate_1.DataHeartRate.type,
getSampleValue: function (sample) {
return sample.heart_rate;
}
},
{
dataType: data_altitude_1.DataAltitude.type,
getSampleValue: function (sample) {
return helpers_1.isNumber(sample.enhanced_altitude)
? Math.round(sample.enhanced_altitude * Math.pow(10, constants_1.ALTITUDE_PRECISION_NUMBER_OF_DECIMAL_PLACES)) /
Math.pow(10, constants_1.ALTITUDE_PRECISION_NUMBER_OF_DECIMAL_PLACES)
: helpers_1.isNumber(sample.altitude)
? Math.round(sample.altitude * Math.pow(10, constants_1.ALTITUDE_PRECISION_NUMBER_OF_DECIMAL_PLACES)) /
Math.pow(10, constants_1.ALTITUDE_PRECISION_NUMBER_OF_DECIMAL_PLACES)
: sample.altitude;
}
},
{
dataType: data_stryd_altitude_1.DataStrydAltitude.type,
getSampleValue: function (sample) {
return helpers_1.isNumber(sample.Elevation)
? Math.round(sample.Elevation * Math.pow(10, constants_1.ALTITUDE_PRECISION_NUMBER_OF_DECIMAL_PLACES)) /
Math.pow(10, constants_1.ALTITUDE_PRECISION_NUMBER_OF_DECIMAL_PLACES)
: sample.Elevation;
}
},
{
dataType: data_stryd_distance_1.DataStrydDistance.type,
getSampleValue: function (sample) {
return sample.Distance;
}
},
{
dataType: data_stryd_speed_1.DataStrydSpeed.type,
getSampleValue: function (sample) {
return sample.Speed;
}
},
{
dataType: data_cadence_1.DataCadence.type,
getSampleValue: function (sample) {
var cadenceValue = sample.cadence;
if (helpers_1.isNumber(sample.fractional_cadence)) {
cadenceValue += sample.fractional_cadence;
}
return cadenceValue;
}
},
{
dataType: data_speed_1.DataSpeed.type,
getSampleValue: function (sample) {
return sample.enhanced_speed || sample.speed;
}
},
{
dataType: data_vertical_speed_1.DataVerticalSpeed.type,
getSampleValue: function (sample) {
return sample.vertical_speed;
}
},
{
dataType: data_power_1.DataPower.type,
getSampleValue: function (sample) {
return helpers_1.isNumber(sample.power) ? sample.power : helpers_1.isNumber(sample.Power) ? sample.Power : sample.RP_Power;
}
},
{
dataType: data_accumulated_power_1.DataAccumulatedPower.type,
getSampleValue: function (sample) {
return sample.accumulated_power;
}
},
{
dataType: data_temperature_1.DataTemperature.type,
getSampleValue: function (sample) {
return sample.temperature;
}
},
{
dataType: data_form_power_1.DataFormPower.type,
getSampleValue: function (sample) {
return sample['Form Power'];
}
},
{
dataType: data_air_power_1.DataAirPower.type,
getSampleValue: function (sample) {
return sample['Air Power'];
}
},
{
dataType: data_ground_time_1.DataGroundTime.type,
getSampleValue: function (sample) {
return sample['Ground Time'] / 1000;
}
},
{
dataType: data_leg_stiffness_1.DataLegStiffness.type,
getSampleValue: function (sample) {
return sample['Leg Spring Stiffness'];
}
},
{
dataType: data_vertical_oscillation_1.DataVerticalOscillation.type,
getSampleValue: function (sample) {
return sample.vertical_oscillation;
}
},
{
dataType: data_right_balance_1.DataRightBalance.type,
getSampleValue: function (sample) {
if (!sample.left_right_balance) {
return null;
}
return sample.left_right_balance.right === true
? sample.left_right_balance.value
: 100 - sample.left_right_balance.value;
}
},
// @todo if conservation of data is needed this can be taken of and generated on the fly
{
dataType: data_left_balance_1.DataLeftBalance.type,
getSampleValue: function (sample) {
if (!sample.left_right_balance) {
return null;
}
return sample.left_right_balance.right === false
? sample.left_right_balance.value
: 100 - sample.left_right_balance.value;
}
},
{
dataType: data_stance_time_1.DataStanceTime.type,
getSampleValue: function (sample) {
return sample.stance_time;
}
},
{
dataType: data_stance_time_balance_1.DataStanceTimeBalance.type,
getSampleValue: function (sample) {
return sample.stance_time_balance;
}
},
{
dataType: data_step_length_1.DataStepLength.type,
getSampleValue: function (sample) {
return sample.step_length / 1000;
}
},
{
dataType: data_vertical_ratio_1.DataVerticalRatio.type,
getSampleValue: function (sample) {
return sample.vertical_ratio;
}
}
];