UNPKG

@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
"use strict"; 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; } } ];