@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
JavaScript
;
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;