@dgpholdings/greatoak-shared 1.1.59 → 1.1.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -24,10 +24,10 @@ export type TRecord = {
|
|
|
24
24
|
speedMin: string;
|
|
25
25
|
speedMax: string;
|
|
26
26
|
durationSecs: string;
|
|
27
|
-
|
|
27
|
+
distance?: string;
|
|
28
28
|
} | {
|
|
29
29
|
type: "cardio-free";
|
|
30
|
-
|
|
30
|
+
distance: string;
|
|
31
31
|
durationSecs: string;
|
|
32
32
|
});
|
|
33
33
|
export type TRecordDuration = Extract<TRecord, {
|
|
@@ -33,7 +33,7 @@ export type TRefinedCardioMachineRecord = RefinedBase & {
|
|
|
33
33
|
};
|
|
34
34
|
export type TRefinedCardioFreeRecord = RefinedBase & {
|
|
35
35
|
type: "cardio-free";
|
|
36
|
-
|
|
36
|
+
distance: number;
|
|
37
37
|
durationSecs: number;
|
|
38
38
|
avgPaceSecsPerKm?: number;
|
|
39
39
|
avgSpeedKmh?: number;
|
|
@@ -28,7 +28,7 @@ const refineRecordEntry = (entry) => {
|
|
|
28
28
|
const speed = (_g = (0, number_util_1.toNumber)(entry.speedMax)) !== null && _g !== void 0 ? _g : 1;
|
|
29
29
|
const resistance = (_h = (0, number_util_1.toNumber)(entry.rpe)) !== null && _h !== void 0 ? _h : 1;
|
|
30
30
|
const durationSecs = (_j = (0, number_util_1.toNumber)((0, time_util_1.mmssToSecs)(entry.durationSecs))) !== null && _j !== void 0 ? _j : 0; // entry.durationSecs comes as mm:ss value naming issue
|
|
31
|
-
const distance = (_k = (0, number_util_1.toNumber)(entry.
|
|
31
|
+
const distance = (_k = (0, number_util_1.toNumber)(entry.distance)) !== null && _k !== void 0 ? _k : 1;
|
|
32
32
|
// Calculate intensity score for progress tracking
|
|
33
33
|
const intensityScore = speed > 0 && resistance > 0 ? speed * resistance : undefined;
|
|
34
34
|
return Object.assign(Object.assign(Object.assign({}, base), { type: "cardio-machine", speed,
|
|
@@ -36,17 +36,15 @@ const refineRecordEntry = (entry) => {
|
|
|
36
36
|
durationSecs }), ((0, isDefined_utils_1.isDefinedNumber)(intensityScore) && { intensityScore }));
|
|
37
37
|
}
|
|
38
38
|
if (entry.type === "cardio-free") {
|
|
39
|
-
const
|
|
39
|
+
const distance = (_l = (0, number_util_1.toNumber)(entry.distance)) !== null && _l !== void 0 ? _l : 0;
|
|
40
40
|
const durationSecs = (_m = (0, number_util_1.toNumber)(entry.durationSecs)) !== null && _m !== void 0 ? _m : 0;
|
|
41
41
|
// Calculate pace (seconds per km)
|
|
42
|
-
const avgPaceSecsPerKm =
|
|
43
|
-
? durationSecs / distanceKm
|
|
44
|
-
: undefined;
|
|
42
|
+
const avgPaceSecsPerKm = distance > 0 && durationSecs > 0 ? durationSecs / distance : undefined;
|
|
45
43
|
// Calculate average speed (km/h)
|
|
46
|
-
const avgSpeedKmh =
|
|
47
|
-
?
|
|
44
|
+
const avgSpeedKmh = distance > 0 && durationSecs > 0
|
|
45
|
+
? distance / (durationSecs / 3600)
|
|
48
46
|
: undefined;
|
|
49
|
-
return Object.assign(Object.assign(Object.assign(Object.assign({}, base), { type: "cardio-free",
|
|
47
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, base), { type: "cardio-free", distance,
|
|
50
48
|
durationSecs }), ((0, isDefined_utils_1.isDefinedNumber)(avgPaceSecsPerKm) && { avgPaceSecsPerKm })), ((0, isDefined_utils_1.isDefinedNumber)(avgSpeedKmh) && { avgSpeedKmh }));
|
|
51
49
|
}
|
|
52
50
|
throw new Error(`Unknown record type: ${entry.type}`);
|
|
@@ -132,10 +132,10 @@ const calculateMETValue = (record, exercise, effortFactor, userProfile) => {
|
|
|
132
132
|
break;
|
|
133
133
|
}
|
|
134
134
|
case "cardio-free": {
|
|
135
|
-
const
|
|
135
|
+
const distance = record.distance;
|
|
136
136
|
const durationSecs = record.durationSecs;
|
|
137
|
-
if (
|
|
138
|
-
const speedKmh = (
|
|
137
|
+
if (distance > 0 && durationSecs > 0 && metabolicData.paceFactors) {
|
|
138
|
+
const speedKmh = (distance * 3600) / durationSecs;
|
|
139
139
|
// Find closest pace factor
|
|
140
140
|
let closestMET = metabolicData.baseMET;
|
|
141
141
|
let closestSpeed = Infinity;
|
|
@@ -152,7 +152,7 @@ const generateSetDescription = (record, exercise, scoreBreakdown) => {
|
|
|
152
152
|
const paceSecondsFormatted = paceSeconds < 10 ? `0${paceSeconds}` : `${paceSeconds}`;
|
|
153
153
|
pace = ` (${paceMinutes}:${paceSecondsFormatted}/km)`;
|
|
154
154
|
}
|
|
155
|
-
return `${record.
|
|
155
|
+
return `${record.distance}km in ${timeStr_cf}${pace} ${effort} • ${calories}`;
|
|
156
156
|
default:
|
|
157
157
|
return `${effort} • ${calories}`;
|
|
158
158
|
}
|