@runnerpro/backend 1.19.9 → 1.19.11
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garmin.d.ts","sourceRoot":"","sources":["../../../../src/workout/garmin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"garmin.d.ts","sourceRoot":"","sources":["../../../../src/workout/garmin.ts"],"names":[],"mappings":"AAgRA,QAAA,MAAM,mBAAmB;;;EAWxB,CAAC;AAEF,QAAA,MAAM,mBAAmB,6CASxB,CAAC;AAEF,QAAA,MAAM,mBAAmB,6CAMxB,CAAC;AAEF,QAAA,MAAM,qBAAqB,6CAU1B,CAAC;AAEF,QAAA,MAAM,2BAA2B,4DAWhC,CAAC;AAIF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -65,6 +65,26 @@ const garminOauthActivity = ({ url, httpMethod, userid, params = {} }) => __awai
|
|
|
65
65
|
const secondsPerKmToMetersPerSecond = (secondsPerKm) => {
|
|
66
66
|
return Math.round((1000 / secondsPerKm) * 100) / 100;
|
|
67
67
|
};
|
|
68
|
+
const getWorkoutGarminDuration = (workout) => {
|
|
69
|
+
const rangePlanning = (0, common_1.getWorkoutRangePlanning)({
|
|
70
|
+
workoutType: workout.type,
|
|
71
|
+
distancePlanned: workout.distancePlanned,
|
|
72
|
+
durationPlanned: workout.durationPlanned,
|
|
73
|
+
zonePlanned: workout.zonePlanned,
|
|
74
|
+
});
|
|
75
|
+
if (rangePlanning.fixedMetric === common_1.WORKOUT_FIXED_METRIC.TIME) {
|
|
76
|
+
return {
|
|
77
|
+
type: 'TIME',
|
|
78
|
+
value: Number(workout.durationPlanned),
|
|
79
|
+
valueType: 'SECOND',
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
type: 'DISTANCE',
|
|
84
|
+
value: Number(workout.distancePlanned),
|
|
85
|
+
valueType: 'METER',
|
|
86
|
+
};
|
|
87
|
+
};
|
|
68
88
|
const typeTranslateWorkoutGarmin = (type) => {
|
|
69
89
|
if (type === common_1.WORKOUT_TYPE.FUERZA)
|
|
70
90
|
return 'STRENGTH_TRAINING';
|
|
@@ -111,13 +131,14 @@ const translateWorkoutGarmin = (workout) => {
|
|
|
111
131
|
return null;
|
|
112
132
|
const targetType = getWorkoutGarminTargetType(workout, null);
|
|
113
133
|
const targetValue = getWorkoutGarminTargetValue(workout, null);
|
|
134
|
+
const duration = getWorkoutGarminDuration(workout);
|
|
114
135
|
workoutGarmin.steps.push({
|
|
115
136
|
type: 'WorkoutStep',
|
|
116
137
|
stepOrder: 1,
|
|
117
138
|
intensity: 'ACTIVE',
|
|
118
|
-
durationType:
|
|
119
|
-
durationValue:
|
|
120
|
-
durationValueType:
|
|
139
|
+
durationType: duration.type,
|
|
140
|
+
durationValue: duration.value,
|
|
141
|
+
durationValueType: duration.valueType,
|
|
121
142
|
targetType,
|
|
122
143
|
targetValue: targetValue.value,
|
|
123
144
|
targetValueLow: targetValue.low,
|
|
@@ -174,6 +195,7 @@ const getWorkoutGarminTargetType = (workout, row) => {
|
|
|
174
195
|
};
|
|
175
196
|
const getWorkoutGarminTargetValue = (workout, row) => {
|
|
176
197
|
let value;
|
|
198
|
+
let paceRange = null;
|
|
177
199
|
if (!row) {
|
|
178
200
|
// Si es entrenamiento de bicicleta y tiene potencia -> value = potencia
|
|
179
201
|
// if (workout.type === WORKOUT_TYPE.BIKE && workout.powerPlanned) {
|
|
@@ -182,6 +204,12 @@ const getWorkoutGarminTargetValue = (workout, row) => {
|
|
|
182
204
|
// El resto calcular el ritmo
|
|
183
205
|
// No se puede añadir potencia ya que el valor que hay que dar es una zona, no absoluto
|
|
184
206
|
value = Number(workout.distancePlanned) / Number(workout.durationPlanned);
|
|
207
|
+
paceRange = (0, common_1.getWorkoutRangePlanning)({
|
|
208
|
+
workoutType: workout.type,
|
|
209
|
+
distancePlanned: workout.distancePlanned,
|
|
210
|
+
durationPlanned: workout.durationPlanned,
|
|
211
|
+
zonePlanned: workout.zonePlanned,
|
|
212
|
+
}).paceRange;
|
|
185
213
|
// }
|
|
186
214
|
}
|
|
187
215
|
else {
|
|
@@ -192,8 +220,15 @@ const getWorkoutGarminTargetValue = (workout, row) => {
|
|
|
192
220
|
else if (Number(row.typeMetric2) === 3)
|
|
193
221
|
value = Number(row.valueMetric2);
|
|
194
222
|
// El resto de casos se calcula el ritmo
|
|
195
|
-
else
|
|
223
|
+
else {
|
|
196
224
|
value = secondsPerKmToMetersPerSecond(row.valueMetric2);
|
|
225
|
+
if ([common_1.WORKOUT_TYPE.CORRER, common_1.WORKOUT_TYPE.COMPETICION].includes(workout.type)) {
|
|
226
|
+
paceRange = (0, common_1.getWorkoutPaceRangeByZone)({
|
|
227
|
+
pace: Number(row.valueMetric2),
|
|
228
|
+
zonePlanned: row.zoneMetric2,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
197
232
|
}
|
|
198
233
|
if (!value) {
|
|
199
234
|
return {
|
|
@@ -205,8 +240,8 @@ const getWorkoutGarminTargetValue = (workout, row) => {
|
|
|
205
240
|
else {
|
|
206
241
|
return {
|
|
207
242
|
value,
|
|
208
|
-
low: value - value * 0.02,
|
|
209
|
-
high: value + value * 0.02,
|
|
243
|
+
low: paceRange ? secondsPerKmToMetersPerSecond(paceRange.max) : value - value * 0.02,
|
|
244
|
+
high: paceRange ? secondsPerKmToMetersPerSecond(paceRange.min) : value + value * 0.02,
|
|
210
245
|
};
|
|
211
246
|
}
|
|
212
247
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runnerpro/backend",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.11",
|
|
4
4
|
"description": "A collection of common backend functions",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/cjs/index.js"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"@napi-rs/canvas": "^0.1.53",
|
|
55
|
-
"@runnerpro/common": "^1.
|
|
55
|
+
"@runnerpro/common": "^1.7.0",
|
|
56
56
|
"axios": "^1.6.7",
|
|
57
57
|
"image-size": "^1.0.2",
|
|
58
58
|
"jimp": "^0.22.10",
|