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

65 lines (64 loc) 3.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventUtilities = void 0; var event_1 = require("../event"); var data_activity_types_1 = require("../../data/data.activity-types"); var data_device_names_1 = require("../../data/data.device-names"); var privacy_class_interface_1 = require("../../privacy/privacy.class.interface"); var data_description_1 = require("../../data/data.description"); var activity_utilities_1 = require("./activity.utilities"); var EventUtilities = /** @class */ (function () { function EventUtilities() { } EventUtilities.mergeEvents = function (events) { events.sort(function (eventA, eventB) { return +eventA.getFirstActivity().startDate - +eventB.getFirstActivity().startDate; }); var activities = events .reduce(function (activitiesArray, event) { activitiesArray.push.apply(activitiesArray, event.getActivities()); return activitiesArray; }, []) .map(function (activity) { return activity.setID(null); }); var event = new event_1.Event("Merged at " + new Date().toISOString(), activities[0].startDate, activities[activities.length - 1].endDate, privacy_class_interface_1.Privacy.Private, "A merge of 2 or more activities ", true); event.addActivities(activities); this.generateStatsForAll(event); return event; }; EventUtilities.generateStatsForAll = function (event) { // First generate that stats on the activity it self event.getActivities().forEach(function (activity) { activity_utilities_1.ActivityUtilities.generateMissingStreamsAndStatsForActivity(activity); }); this.reGenerateStatsForEvent(event); }; EventUtilities.reGenerateStatsForEvent = function (event) { event.clearStats(); event.startDate = event.getFirstActivity().startDate; event.endDate = event.getLastActivity().endDate; event.addStat(new data_activity_types_1.DataActivityTypes(event.getActivities().map(function (activity) { return activity.type; }))); event.addStat(new data_device_names_1.DataDeviceNames(event.getActivities().map(function (activity) { return activity.creator.name; }))); // If only one if (event.getActivities().length === 1) { event .getFirstActivity() .getStats() .forEach(function (stat) { event.addStat(stat); }); // Add the description var description = event.getStat(data_description_1.DataDescription.type); if (description && description.getValue()) { event.description = description.getValue(); } return; } event.startDate = event.getFirstActivity().startDate; event.endDate = event.getLastActivity().endDate; activity_utilities_1.ActivityUtilities.getSummaryStatsForActivities(event.getActivities()).forEach(function (stat) { return event.addStat(stat); }); }; return EventUtilities; }()); exports.EventUtilities = EventUtilities;