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