@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
141 lines (140 loc) • 6.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventImporterJSON = void 0;
var event_1 = require("../../../event");
var activity_1 = require("../../../../activities/activity");
var lap_1 = require("../../../../laps/lap");
var creator_1 = require("../../../../creators/creator");
var intensity_zones_1 = require("../../../../intensity-zones/intensity-zones");
var data_store_1 = require("../../../../data/data.store");
var lap_types_1 = require("../../../../laps/lap.types");
var activity_types_1 = require("../../../../activities/activity.types");
var stream_1 = require("../../../../streams/stream");
var data_ibi_1 = require("../../../../data/data.ibi");
var ibi_stream_1 = require("../../../../streams/ibi-stream");
var device_1 = require("../../../../activities/devices/device");
var EventImporterJSON = /** @class */ (function () {
function EventImporterJSON() {
}
EventImporterJSON.getEventFromJSON = function (json) {
// debugger;
var event = new event_1.Event(json.name, new Date(json.startDate), new Date(json.endDate), json.privacy, json.description || undefined, json.isMerge || false);
Object.keys(json.stats).forEach(function (statName) {
event.addStat(data_store_1.DynamicDataLoader.getDataInstanceFromDataType(statName, json.stats[statName]));
});
return event;
};
EventImporterJSON.getCreatorFromJSON = function (json) {
var _this = this;
var creator = new creator_1.Creator(json.name || 'Unknown Device');
if (json.hwInfo) {
creator.hwInfo = json.hwInfo;
}
if (json.swInfo) {
creator.swInfo = json.swInfo;
}
if (json.serialNumber) {
creator.serialNumber = json.serialNumber;
}
if (json.devices && json.devices.length) {
json.devices.forEach(function (jsonDevice) { return creator.devices.push(_this.getDeviceFromJSON(jsonDevice)); });
}
return creator;
};
EventImporterJSON.getDeviceFromJSON = function (json) {
var device = new device_1.Device(json.type);
if (json.index) {
device.index = json.index;
}
if (json.name) {
device.name = json.name;
}
if (json.batteryStatus) {
device.batteryStatus = json.batteryStatus;
}
if (json.batteryVoltage) {
device.batteryVoltage = json.batteryVoltage;
}
if (json.manufacturer) {
device.manufacturer = json.manufacturer;
}
if (json.serialNumber) {
device.serialNumber = json.serialNumber;
}
if (json.product) {
device.product = json.product;
}
if (json.swInfo) {
device.swInfo = json.swInfo;
}
if (json.hwInfo) {
device.hwInfo = json.hwInfo;
}
if (json.antDeviceNumber) {
device.antDeviceNumber = json.antDeviceNumber;
}
if (json.antTransmissionType) {
device.antTransmissionType = json.antTransmissionType;
}
if (json.antNetwork) {
device.antNetwork = json.antNetwork;
}
if (json.sourceType) {
device.sourceType = json.sourceType;
}
if (json.cumOperatingTime) {
device.cumOperatingTime = json.cumOperatingTime;
}
return device;
};
EventImporterJSON.getLapFromJSON = function (json) {
var lap = new lap_1.Lap(new Date(json.startDate), new Date(json.endDate), lap_types_1.LapTypes[json.type]);
Object.keys(json.stats).forEach(function (statName) {
lap.addStat(data_store_1.DynamicDataLoader.getDataInstanceFromDataType(statName, json.stats[statName]));
});
return lap;
};
EventImporterJSON.getStreamFromJSON = function (json) {
if (json.type === data_ibi_1.DataIBI.type) {
return new ibi_stream_1.IBIStream(json.data);
}
return new stream_1.Stream(json.type, json.data);
};
EventImporterJSON.getIntensityZonesFromJSON = function (json) {
var zones = new intensity_zones_1.IntensityZones(json.type);
zones.zone1Duration = json.zone1Duration;
zones.zone2Duration = json.zone2Duration;
zones.zone2LowerLimit = json.zone2LowerLimit;
zones.zone3Duration = json.zone3Duration;
zones.zone3LowerLimit = json.zone3LowerLimit;
zones.zone4Duration = json.zone4Duration;
zones.zone4LowerLimit = json.zone4LowerLimit;
zones.zone5Duration = json.zone5Duration;
zones.zone5LowerLimit = json.zone5LowerLimit;
return zones;
};
EventImporterJSON.getActivityEventFromJSON = function (json) {
return (data_store_1.DynamicDataLoader.getDataInstanceFromDataType(Object.keys(json)[0], Object.values(json)[0]));
};
EventImporterJSON.getActivityFromJSON = function (json) {
var _this = this;
var activity = new activity_1.Activity(new Date(json.startDate), new Date(json.endDate), activity_types_1.ActivityTypes[json.type], EventImporterJSON.getCreatorFromJSON(json.creator));
Object.keys(json.stats).forEach(function (statName) {
activity.addStat(data_store_1.DynamicDataLoader.getDataInstanceFromDataType(statName, json.stats[statName]));
});
json.laps.forEach(function (lapJSON) {
activity.addLap(EventImporterJSON.getLapFromJSON(lapJSON));
});
json.intensityZones.forEach(function (intensityZonesJSON) {
activity.intensityZones.push(EventImporterJSON.getIntensityZonesFromJSON(intensityZonesJSON));
});
if (json.events) {
json.events.forEach(function (activityEvent) {
activity.addEvent(_this.getActivityEventFromJSON(activityEvent));
});
}
return activity;
};
return EventImporterJSON;
}());
exports.EventImporterJSON = EventImporterJSON;