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

43 lines (42 loc) 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RouteFileUtilities = void 0; const data_ascent_1 = require("../data/data.ascent"); const data_descent_1 = require("../data/data.descent"); const data_distance_1 = require("../data/data.distance"); const data_grade_avg_1 = require("../data/data.grade-avg"); const data_grade_max_1 = require("../data/data.grade-max"); const data_grade_min_1 = require("../data/data.grade-min"); const stats_utilities_1 = require("../stats/stats.utilities"); class RouteFileUtilities { static reGenerateStatsForRouteFile(routeFile) { routeFile.clearStats(); const routes = routeFile.getRoutes(); if (!routes.length) { return routeFile; } if (routes.length === 1) { routes[0].getStats().forEach(stat => routeFile.addStat(stat)); return routeFile; } this.getSummaryStatsForRoutes(routes).forEach(stat => routeFile.addStat(stat)); return routeFile; } static getSummaryStatsForRoutes(routes) { const stats = []; this.addStatFromValue(stats, stats_utilities_1.StatsUtilities.sum(routes, data_distance_1.DataDistance.type), data_distance_1.DataDistance); this.addStatFromValue(stats, stats_utilities_1.StatsUtilities.sum(routes, data_ascent_1.DataAscent.type), data_ascent_1.DataAscent); this.addStatFromValue(stats, stats_utilities_1.StatsUtilities.sum(routes, data_descent_1.DataDescent.type), data_descent_1.DataDescent); this.addStatFromValue(stats, stats_utilities_1.StatsUtilities.min(routes, data_grade_min_1.DataGradeMin.type), data_grade_min_1.DataGradeMin); this.addStatFromValue(stats, stats_utilities_1.StatsUtilities.max(routes, data_grade_max_1.DataGradeMax.type), data_grade_max_1.DataGradeMax); this.addStatFromValue(stats, stats_utilities_1.StatsUtilities.weightedAverage(routes, data_grade_avg_1.DataGradeAvg.type, data_distance_1.DataDistance.type), data_grade_avg_1.DataGradeAvg); return stats; } static addStatFromValue(stats, value, DataClass) { if (value === null) { return; } stats.push(new DataClass(value)); } } exports.RouteFileUtilities = RouteFileUtilities;