garminclimb 1.2.2 → 1.2.3
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.
- package/.claude/settings.local.json +4 -1
- package/bin/index.js +8 -16
- package/bin/index.js.map +1 -1
- package/bin/parse.js +17 -251
- package/bin/parse.js.map +1 -1
- package/charts-embed.html +13 -21
- package/package.json +1 -1
- package/src/index.ts +8 -7
- package/src/parse.ts +18 -375
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
"Bash(node -e \"const { ActivityType } = require\\('garmin-connect/dist/garmin/types/activity'\\); console.log\\('ActivityType.Cycling =', ActivityType.Cycling\\); console.log\\('All types:', JSON.stringify\\(ActivityType, null, 2\\)\\);\")",
|
|
24
24
|
"Bash(ls:*)",
|
|
25
25
|
"Bash(npm run:*)",
|
|
26
|
-
"Bash(python3 -c ':*)"
|
|
26
|
+
"Bash(python3 -c ':*)",
|
|
27
|
+
"Bash(node *)",
|
|
28
|
+
"Bash(open *)",
|
|
29
|
+
"Bash(make *)"
|
|
27
30
|
]
|
|
28
31
|
}
|
|
29
32
|
}
|
package/bin/index.js
CHANGED
|
@@ -62,22 +62,14 @@ commander_1.program
|
|
|
62
62
|
function loadData() {
|
|
63
63
|
const indoorData = fs.readFileSync(path.join(exports.garminDataFolder, "indoorClimbingActivities.json"), "utf8");
|
|
64
64
|
const boulderData = fs.readFileSync(path.join(exports.garminDataFolder, "boulderingActivities.json"), "utf8");
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
catch (e) {
|
|
70
|
-
let
|
|
71
|
-
try {
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
catch (e) { }
|
|
75
|
-
let cyclingData = "[]";
|
|
76
|
-
try {
|
|
77
|
-
cyclingData = fs.readFileSync(path.join(exports.garminDataFolder, "cyclingActivities.json"), "utf8");
|
|
78
|
-
}
|
|
79
|
-
catch (e) { }
|
|
80
|
-
return `var INDOOR_DATA = ${indoorData};\nvar BOULDER_DATA = ${boulderData};\nvar STRENGTH_DATA = ${strengthData};\nvar CYCLING_DATA = ${cyclingData};\nvar RUNNING_DATA = ${runningData};\n`;
|
|
65
|
+
// Strength, running, cycling data loading commented out — climbing-only
|
|
66
|
+
// let strengthData = "[]";
|
|
67
|
+
// try { strengthData = fs.readFileSync(path.join(garminDataFolder, "strengthTrainingActivities.json"), "utf8"); } catch (e) {}
|
|
68
|
+
// let runningData = "[]";
|
|
69
|
+
// try { runningData = fs.readFileSync(path.join(garminDataFolder, "runningActivities.json"), "utf8"); } catch (e) {}
|
|
70
|
+
// let cyclingData = "[]";
|
|
71
|
+
// try { cyclingData = fs.readFileSync(path.join(garminDataFolder, "cyclingActivities.json"), "utf8"); } catch (e) {}
|
|
72
|
+
return `var INDOOR_DATA = ${indoorData};\nvar BOULDER_DATA = ${boulderData};\n`;
|
|
81
73
|
}
|
|
82
74
|
commander_1.program
|
|
83
75
|
.command("chartjs")
|
package/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAChB,QAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,yCAAsC;AACtC,mCAAgC;AAEhC,mBAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;KAC9D,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;KAC9D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IACzC,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IACzC,IAAA,mBAAQ,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,mBAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,aAAK,GAAE,CAAC;AACV,CAAC,CAAC,CAAC;AAEL,SAAS,QAAQ;IACf,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAC;IACzG,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,2BAA2B,CAAC,EAAE,MAAM,CAAC,CAAC;IACtG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAChB,QAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,yCAAsC;AACtC,mCAAgC;AAEhC,mBAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;KAC9D,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;KAC9D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IACzC,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IACzC,IAAA,mBAAQ,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,mBAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,aAAK,GAAE,CAAC;AACV,CAAC,CAAC,CAAC;AAEL,SAAS,QAAQ;IACf,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAC;IACzG,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,2BAA2B,CAAC,EAAE,MAAM,CAAC,CAAC;IACtG,wEAAwE;IACxE,2BAA2B;IAC3B,+HAA+H;IAC/H,0BAA0B;IAC1B,qHAAqH;IACrH,0BAA0B;IAC1B,qHAAqH;IACrH,OAAO,qBAAqB,UAAU,yBAAyB,WAAW,KAAK,CAAC;AAClF,CAAC;AAED,mBAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6BT,UAAU;EAClB,SAAS;;QAEH,CAAC;IACL,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,mBAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAC9B,yBAAyB,EACzB,aAAa,UAAU,eAAe,CACvC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,mBAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/bin/parse.js
CHANGED
|
@@ -113,7 +113,6 @@ const numberToGrade = (number) => {
|
|
|
113
113
|
return grade.padEnd(8, " ");
|
|
114
114
|
};
|
|
115
115
|
const parse = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
-
var _a;
|
|
117
116
|
const indoorClimbingActivities = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/indoorClimbingActivities.json`, "utf8"));
|
|
118
117
|
// ?.reverse();
|
|
119
118
|
const activeIndoorSplits = indoorClimbingActivities.map((activity) => {
|
|
@@ -443,256 +442,23 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
443
442
|
},
|
|
444
443
|
});
|
|
445
444
|
console.log("```");
|
|
446
|
-
// === STRENGTH TRAINING ===
|
|
447
|
-
try {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
},
|
|
464
|
-
pullup: {
|
|
465
|
-
label: "Weighted Pull-Up",
|
|
466
|
-
match: (cat, sub) => cat === "PULL_UP",
|
|
467
|
-
},
|
|
468
|
-
rdl: {
|
|
469
|
-
label: "Romanian Deadlift",
|
|
470
|
-
match: (cat, sub) => cat === "DEADLIFT" && (sub || "").includes("ROMANIAN"),
|
|
471
|
-
},
|
|
472
|
-
};
|
|
473
|
-
const exerciseData = { bench: [], squat: [], pullup: [], rdl: [] };
|
|
474
|
-
for (const activity of strengthActivities) {
|
|
475
|
-
const date = ((_a = activity === null || activity === void 0 ? void 0 : activity.startTimeLocal) === null || _a === void 0 ? void 0 : _a.split(" ")[0]) || "";
|
|
476
|
-
const exercises = (activity === null || activity === void 0 ? void 0 : activity.exerciseSets) || (activity === null || activity === void 0 ? void 0 : activity.fullSummarizedExerciseSets) || (activity === null || activity === void 0 ? void 0 : activity.summarizedExerciseSets) || [];
|
|
477
|
-
for (const exKey of Object.keys(exercisePatterns)) {
|
|
478
|
-
const pattern = exercisePatterns[exKey];
|
|
479
|
-
for (const ex of exercises) {
|
|
480
|
-
const cat = ((ex === null || ex === void 0 ? void 0 : ex.category) || "").toUpperCase();
|
|
481
|
-
const sub = ((ex === null || ex === void 0 ? void 0 : ex.subCategory) || "").toUpperCase();
|
|
482
|
-
if (pattern.match(cat, sub)) {
|
|
483
|
-
exerciseData[exKey].push({
|
|
484
|
-
date,
|
|
485
|
-
maxWeight: mgToLbs((ex === null || ex === void 0 ? void 0 : ex.maxWeight) || 0),
|
|
486
|
-
totalVolume: mgToLbs((ex === null || ex === void 0 ? void 0 : ex.volume) || 0),
|
|
487
|
-
sets: (ex === null || ex === void 0 ? void 0 : ex.sets) || 0,
|
|
488
|
-
totalReps: (ex === null || ex === void 0 ? void 0 : ex.reps) || 0,
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
for (const exKey of Object.keys(exercisePatterns)) {
|
|
495
|
-
const pattern = exercisePatterns[exKey];
|
|
496
|
-
const sessions = exerciseData[exKey];
|
|
497
|
-
if (sessions.length === 0)
|
|
498
|
-
continue;
|
|
499
|
-
console.log(`\n${pattern.label} (${sessions.length} sessions)`);
|
|
500
|
-
console.log(` All Time Max Weight: ${Math.max(...sessions.map(s => s.maxWeight))} lbs`);
|
|
501
|
-
console.log(` All Time Max Session Volume: ${Math.max(...sessions.map(s => s.totalVolume))} lbs`);
|
|
502
|
-
console.log(` Average Max Weight: ${Math.round(sessions.reduce((a, s) => a + s.maxWeight, 0) / sessions.length)} lbs`);
|
|
503
|
-
console.log(` Total Reps All Time: ${sessions.reduce((a, s) => a + s.totalReps, 0)}\n`);
|
|
504
|
-
// Per-session max weight
|
|
505
|
-
generateChart(sessions.map((s, i) => [i, s.maxWeight]), `${pattern.label} - Max Weight Per Session (lbs)`, {
|
|
506
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
507
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessions[value]) === null || _a === void 0 ? void 0 : _a.date; },
|
|
508
|
-
});
|
|
509
|
-
// Per-session volume
|
|
510
|
-
generateChart(sessions.map((s, i) => [i, s.totalVolume]), `${pattern.label} - Total Volume Per Session (lbs)`, {
|
|
511
|
-
height: 10,
|
|
512
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
513
|
-
barChart: true,
|
|
514
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessions[value]) === null || _a === void 0 ? void 0 : _a.date; },
|
|
515
|
-
});
|
|
516
|
-
// Monthly max weight
|
|
517
|
-
const maxWeightByMonth = sessions.reduce((acc, s) => {
|
|
518
|
-
const parts = s.date.split("-");
|
|
519
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
520
|
-
acc[key] = Math.max(acc[key] || 0, s.maxWeight);
|
|
521
|
-
return acc;
|
|
522
|
-
}, {});
|
|
523
|
-
generateChart(Object.keys(maxWeightByMonth).map((month, i) => [i, maxWeightByMonth[month]]), `${pattern.label} - Max Weight By Month (lbs)`, {
|
|
524
|
-
width: YEAR_WIDTH,
|
|
525
|
-
formatter: (value, { axis }) => axis === "y" ? value : Object.keys(maxWeightByMonth)[value],
|
|
526
|
-
});
|
|
527
|
-
// Monthly volume
|
|
528
|
-
const volumeByMonth = sessions.reduce((acc, s) => {
|
|
529
|
-
const parts = s.date.split("-");
|
|
530
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
531
|
-
acc[key] = (acc[key] || 0) + s.totalVolume;
|
|
532
|
-
return acc;
|
|
533
|
-
}, {});
|
|
534
|
-
generateChart(Object.keys(volumeByMonth).map((month, i) => [i, volumeByMonth[month]]), `${pattern.label} - Total Volume By Month (lbs)`, {
|
|
535
|
-
height: 10,
|
|
536
|
-
width: YEAR_WIDTH,
|
|
537
|
-
barChart: true,
|
|
538
|
-
formatter: (value, { axis }) => axis === "y" ? value : Object.keys(volumeByMonth)[value],
|
|
539
|
-
});
|
|
540
|
-
// Yearly max weight
|
|
541
|
-
const maxWeightByYear = aggregateByYear(maxWeightByMonth, "max");
|
|
542
|
-
generateChart(maxWeightByYear.map(([, val], index) => [index, val]), `${pattern.label} - Max Weight By Year (lbs)`, {
|
|
543
|
-
width: maxWeightByYear.length * 20,
|
|
544
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = maxWeightByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
|
|
545
|
-
});
|
|
546
|
-
// Yearly volume
|
|
547
|
-
const volumeByYear = aggregateByYear(volumeByMonth);
|
|
548
|
-
generateChart(volumeByYear.map(([, val], index) => [index, val]), `${pattern.label} - Total Volume By Year (lbs)`, {
|
|
549
|
-
height: 10,
|
|
550
|
-
width: volumeByYear.length * 20,
|
|
551
|
-
barChart: true,
|
|
552
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = volumeByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
|
|
553
|
-
});
|
|
554
|
-
// Per-session reps
|
|
555
|
-
generateChart(sessions.map((s, i) => [i, s.totalReps]), `${pattern.label} - Total Reps Per Session`, {
|
|
556
|
-
height: 10,
|
|
557
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
558
|
-
barChart: true,
|
|
559
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessions[value]) === null || _a === void 0 ? void 0 : _a.date; },
|
|
560
|
-
});
|
|
561
|
-
// Monthly reps
|
|
562
|
-
const repsByMonth = sessions.reduce((acc, s) => {
|
|
563
|
-
const parts = s.date.split("-");
|
|
564
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
565
|
-
acc[key] = (acc[key] || 0) + s.totalReps;
|
|
566
|
-
return acc;
|
|
567
|
-
}, {});
|
|
568
|
-
generateChart(Object.keys(repsByMonth).map((month, i) => [i, repsByMonth[month]]), `${pattern.label} - Total Reps By Month`, {
|
|
569
|
-
height: 10,
|
|
570
|
-
width: YEAR_WIDTH,
|
|
571
|
-
barChart: true,
|
|
572
|
-
formatter: (value, { axis }) => axis === "y" ? value : Object.keys(repsByMonth)[value],
|
|
573
|
-
});
|
|
574
|
-
// Yearly reps
|
|
575
|
-
const repsByYear = aggregateByYear(repsByMonth);
|
|
576
|
-
generateChart(repsByYear.map(([, val], index) => [index, val]), `${pattern.label} - Total Reps By Year`, {
|
|
577
|
-
height: 10,
|
|
578
|
-
width: repsByYear.length * 20,
|
|
579
|
-
barChart: true,
|
|
580
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = repsByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
|
|
581
|
-
});
|
|
582
|
-
}
|
|
583
|
-
console.log("```");
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
catch (e) {
|
|
587
|
-
// No strength training data available, skip
|
|
588
|
-
}
|
|
589
|
-
// === RUNNING & CYCLING ===
|
|
590
|
-
const cardioTypes = [
|
|
591
|
-
{ file: "cyclingActivities.json", label: "Cycling", unit: "mi" },
|
|
592
|
-
{ file: "runningActivities.json", label: "Running", unit: "mi" },
|
|
593
|
-
];
|
|
594
|
-
for (const cardio of cardioTypes) {
|
|
595
|
-
try {
|
|
596
|
-
const activities = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/${cardio.file}`, "utf8"));
|
|
597
|
-
if (!(activities === null || activities === void 0 ? void 0 : activities.length))
|
|
598
|
-
continue;
|
|
599
|
-
console.log("\n```");
|
|
600
|
-
console.log(`\n\n${cardio.label} ===============================\n`);
|
|
601
|
-
const metersToMiles = (m) => Math.round((m / 1609.344) * 100) / 100;
|
|
602
|
-
const secondsToMinutes = (s) => Math.round(s / 60);
|
|
603
|
-
const pacePerMile = (dist, dur) => {
|
|
604
|
-
const miles = dist / 1609.344;
|
|
605
|
-
if (miles === 0)
|
|
606
|
-
return 0;
|
|
607
|
-
return Math.round((dur / 60) / miles * 100) / 100; // min/mile
|
|
608
|
-
};
|
|
609
|
-
const sessions = activities.map((a) => {
|
|
610
|
-
var _a;
|
|
611
|
-
return ({
|
|
612
|
-
date: ((_a = a === null || a === void 0 ? void 0 : a.startTimeLocal) === null || _a === void 0 ? void 0 : _a.split(" ")[0]) || "",
|
|
613
|
-
distance: metersToMiles((a === null || a === void 0 ? void 0 : a.distance) || 0),
|
|
614
|
-
duration: secondsToMinutes((a === null || a === void 0 ? void 0 : a.duration) || 0),
|
|
615
|
-
pace: pacePerMile((a === null || a === void 0 ? void 0 : a.distance) || 0, (a === null || a === void 0 ? void 0 : a.duration) || 0),
|
|
616
|
-
calories: (a === null || a === void 0 ? void 0 : a.calories) || 0,
|
|
617
|
-
avgHR: (a === null || a === void 0 ? void 0 : a.averageHR) || 0,
|
|
618
|
-
elevGain: metersToFeet((a === null || a === void 0 ? void 0 : a.elevationGain) || 0),
|
|
619
|
-
});
|
|
620
|
-
});
|
|
621
|
-
const totalDist = Math.round(sessions.reduce((a, s) => a + s.distance, 0) * 100) / 100;
|
|
622
|
-
const totalTime = sessions.reduce((a, s) => a + s.duration, 0);
|
|
623
|
-
const avgPace = Math.round(sessions.filter(s => s.pace > 0).reduce((a, s) => a + s.pace, 0) / sessions.filter(s => s.pace > 0).length * 100) / 100;
|
|
624
|
-
const bestPace = Math.round(Math.min(...sessions.filter(s => s.pace > 0).map(s => s.pace)) * 100) / 100;
|
|
625
|
-
const totalCalories = sessions.reduce((a, s) => a + s.calories, 0);
|
|
626
|
-
console.log(`${cardio.label} (${sessions.length} sessions)`);
|
|
627
|
-
console.log(` Total Distance: ${totalDist} ${cardio.unit}`);
|
|
628
|
-
console.log(` Total Time: ${totalTime} min (${Math.round(totalTime / 60)} hrs)`);
|
|
629
|
-
console.log(` Average Pace: ${avgPace} min/${cardio.unit}`);
|
|
630
|
-
console.log(` Best Pace: ${bestPace} min/${cardio.unit}`);
|
|
631
|
-
console.log(` Total Calories: ${totalCalories}\n`);
|
|
632
|
-
// Per-session distance
|
|
633
|
-
generateChart(sessions.map((s, i) => [i, s.distance]), `${cardio.label} - Distance Per Session (${cardio.unit})`, {
|
|
634
|
-
height: 10,
|
|
635
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
636
|
-
barChart: true,
|
|
637
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessions[value]) === null || _a === void 0 ? void 0 : _a.date; },
|
|
638
|
-
});
|
|
639
|
-
// Per-session pace
|
|
640
|
-
generateChart(sessions.filter(s => s.pace > 0).map((s, i) => [i, s.pace]), `${cardio.label} - Pace Per Session (min/${cardio.unit})`, {
|
|
641
|
-
width: sessions.filter(s => s.pace > 0).length * CHART_WIDTH_PER_DATA_POINT,
|
|
642
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessions.filter(s => s.pace > 0)[value]) === null || _a === void 0 ? void 0 : _a.date; },
|
|
643
|
-
});
|
|
644
|
-
// Per-session duration
|
|
645
|
-
generateChart(sessions.map((s, i) => [i, s.duration]), `${cardio.label} - Duration Per Session (min)`, {
|
|
646
|
-
height: 10,
|
|
647
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
648
|
-
barChart: true,
|
|
649
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessions[value]) === null || _a === void 0 ? void 0 : _a.date; },
|
|
650
|
-
});
|
|
651
|
-
// Monthly aggregations
|
|
652
|
-
const groupByMonth = (fn) => sessions.reduce((acc, s) => {
|
|
653
|
-
const parts = s.date.split("-");
|
|
654
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
655
|
-
acc[key] = fn(s, acc[key] || 0);
|
|
656
|
-
return acc;
|
|
657
|
-
}, {});
|
|
658
|
-
const distByMonth = groupByMonth((s, prev) => Math.round((prev + s.distance) * 100) / 100);
|
|
659
|
-
const durationByMonth = groupByMonth((s, prev) => prev + s.duration);
|
|
660
|
-
const sessionsByMonth = groupByMonth((s, prev) => prev + 1);
|
|
661
|
-
generateChart(Object.keys(distByMonth).map((m, i) => [i, distByMonth[m]]), `${cardio.label} - Distance By Month (${cardio.unit})`, {
|
|
662
|
-
height: 10, width: YEAR_WIDTH, barChart: true,
|
|
663
|
-
formatter: (value, { axis }) => axis === "y" ? value : Object.keys(distByMonth)[value],
|
|
664
|
-
});
|
|
665
|
-
generateChart(Object.keys(durationByMonth).map((m, i) => [i, durationByMonth[m]]), `${cardio.label} - Duration By Month (min)`, {
|
|
666
|
-
height: 10, width: YEAR_WIDTH, barChart: true,
|
|
667
|
-
formatter: (value, { axis }) => axis === "y" ? value : Object.keys(durationByMonth)[value],
|
|
668
|
-
});
|
|
669
|
-
generateChart(Object.keys(sessionsByMonth).map((m, i) => [i, sessionsByMonth[m]]), `${cardio.label} - Sessions By Month`, {
|
|
670
|
-
height: 10, width: YEAR_WIDTH, barChart: true,
|
|
671
|
-
formatter: (value, { axis }) => axis === "y" ? value : Object.keys(sessionsByMonth)[value],
|
|
672
|
-
});
|
|
673
|
-
// Yearly
|
|
674
|
-
console.log("\nYearly Stats ===============================\n");
|
|
675
|
-
const distByYear = aggregateByYear(distByMonth);
|
|
676
|
-
generateChart(distByYear.map(([, val], i) => [i, val]), `${cardio.label} - Distance By Year (${cardio.unit})`, {
|
|
677
|
-
height: 10, width: distByYear.length * 20, barChart: true,
|
|
678
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = distByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
|
|
679
|
-
});
|
|
680
|
-
const durationByYear = aggregateByYear(durationByMonth);
|
|
681
|
-
generateChart(durationByYear.map(([, val], i) => [i, val]), `${cardio.label} - Duration By Year (min)`, {
|
|
682
|
-
height: 10, width: durationByYear.length * 20, barChart: true,
|
|
683
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = durationByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
|
|
684
|
-
});
|
|
685
|
-
const sessionsByYear = aggregateByYear(sessionsByMonth);
|
|
686
|
-
generateChart(sessionsByYear.map(([, val], i) => [i, val]), `${cardio.label} - Sessions By Year`, {
|
|
687
|
-
height: 10, width: sessionsByYear.length * 20, barChart: true,
|
|
688
|
-
formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = sessionsByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
|
|
689
|
-
});
|
|
690
|
-
console.log("```");
|
|
691
|
-
}
|
|
692
|
-
catch (e) {
|
|
693
|
-
// No data for this cardio type
|
|
694
|
-
}
|
|
695
|
-
}
|
|
445
|
+
// === STRENGTH TRAINING === (commented out — climbing-only)
|
|
446
|
+
// try {
|
|
447
|
+
// const strengthActivities = JSON.parse(
|
|
448
|
+
// fs.readFileSync(`${garminDataFolder}/strengthTrainingActivities.json`, "utf8"),
|
|
449
|
+
// );
|
|
450
|
+
// if (strengthActivities?.length > 0) {
|
|
451
|
+
// // ... strength training charts omitted
|
|
452
|
+
// }
|
|
453
|
+
// } catch (e) {}
|
|
454
|
+
// === RUNNING & CYCLING === (commented out — climbing-only)
|
|
455
|
+
// const cardioTypes = [
|
|
456
|
+
// { file: "cyclingActivities.json", label: "Cycling", unit: "mi" },
|
|
457
|
+
// { file: "runningActivities.json", label: "Running", unit: "mi" },
|
|
458
|
+
// ];
|
|
459
|
+
// for (const cardio of cardioTypes) {
|
|
460
|
+
// // ... cardio charts omitted
|
|
461
|
+
// }
|
|
696
462
|
});
|
|
697
463
|
exports.parse = parse;
|
|
698
464
|
//# sourceMappingURL=parse.js.map
|
package/bin/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/charts-embed.html
CHANGED
|
@@ -75,62 +75,53 @@
|
|
|
75
75
|
<div id="gc-session-boulder-charts"></div>
|
|
76
76
|
</details>
|
|
77
77
|
|
|
78
|
+
<!-- Strength Training, Cycling, Running sections commented out — climbing-only -->
|
|
79
|
+
<!--
|
|
78
80
|
<h1>Strength Training</h1>
|
|
79
81
|
<div class="gc-stats" id="gc-strength-stats-summary"></div>
|
|
80
|
-
|
|
81
82
|
<details open><summary><h2>Yearly Overview: Strength</h2></summary>
|
|
82
83
|
<div id="gc-strength-yearly-charts"></div>
|
|
83
84
|
</details>
|
|
84
|
-
|
|
85
85
|
<details open><summary><h2>Monthly Trends: Strength</h2></summary>
|
|
86
86
|
<div id="gc-strength-monthly-charts"></div>
|
|
87
87
|
</details>
|
|
88
|
-
|
|
89
88
|
<details open><summary><h2>Per-Session: Bench Press</h2></summary>
|
|
90
89
|
<div id="gc-session-bench-charts"></div>
|
|
91
90
|
</details>
|
|
92
|
-
|
|
93
91
|
<details open><summary><h2>Per-Session: Back Squat</h2></summary>
|
|
94
92
|
<div id="gc-session-squat-charts"></div>
|
|
95
93
|
</details>
|
|
96
|
-
|
|
97
94
|
<details open><summary><h2>Per-Session: Weighted Pull-Up</h2></summary>
|
|
98
95
|
<div id="gc-session-pullup-charts"></div>
|
|
99
96
|
</details>
|
|
100
|
-
|
|
101
97
|
<details open><summary><h2>Per-Session: Romanian Deadlift</h2></summary>
|
|
102
98
|
<div id="gc-session-rdl-charts"></div>
|
|
103
99
|
</details>
|
|
104
100
|
|
|
105
101
|
<h1>Cycling</h1>
|
|
106
102
|
<div class="gc-stats" id="gc-cycling-stats-summary"></div>
|
|
107
|
-
|
|
108
103
|
<details open><summary><h2>Yearly Overview: Cycling</h2></summary>
|
|
109
104
|
<div id="gc-cycling-yearly-charts"></div>
|
|
110
105
|
</details>
|
|
111
|
-
|
|
112
106
|
<details open><summary><h2>Monthly Trends: Cycling</h2></summary>
|
|
113
107
|
<div id="gc-cycling-monthly-charts"></div>
|
|
114
108
|
</details>
|
|
115
|
-
|
|
116
109
|
<details open><summary><h2>Per-Session: Cycling</h2></summary>
|
|
117
110
|
<div id="gc-cycling-session-charts"></div>
|
|
118
111
|
</details>
|
|
119
112
|
|
|
120
113
|
<h1>Running</h1>
|
|
121
114
|
<div class="gc-stats" id="gc-running-stats-summary"></div>
|
|
122
|
-
|
|
123
115
|
<details open><summary><h2>Yearly Overview: Running</h2></summary>
|
|
124
116
|
<div id="gc-running-yearly-charts"></div>
|
|
125
117
|
</details>
|
|
126
|
-
|
|
127
118
|
<details open><summary><h2>Monthly Trends: Running</h2></summary>
|
|
128
119
|
<div id="gc-running-monthly-charts"></div>
|
|
129
120
|
</details>
|
|
130
|
-
|
|
131
121
|
<details open><summary><h2>Per-Session: Running</h2></summary>
|
|
132
122
|
<div id="gc-running-session-charts"></div>
|
|
133
123
|
</details>
|
|
124
|
+
-->
|
|
134
125
|
</div>
|
|
135
126
|
|
|
136
127
|
<script>
|
|
@@ -462,14 +453,15 @@ function renderCardio(activities, sport) {
|
|
|
462
453
|
if (typeof INDOOR_DATA !== 'undefined' && typeof BOULDER_DATA !== 'undefined') {
|
|
463
454
|
render(INDOOR_DATA, BOULDER_DATA);
|
|
464
455
|
}
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
456
|
+
// Strength, Cycling, Running rendering commented out — climbing-only
|
|
457
|
+
// if (typeof STRENGTH_DATA !== 'undefined' && STRENGTH_DATA && STRENGTH_DATA.length > 0) {
|
|
458
|
+
// renderStrength(STRENGTH_DATA);
|
|
459
|
+
// }
|
|
460
|
+
// if (typeof CYCLING_DATA !== 'undefined' && CYCLING_DATA && CYCLING_DATA.length > 0) {
|
|
461
|
+
// renderCardio(CYCLING_DATA, 'cycling');
|
|
462
|
+
// }
|
|
463
|
+
// if (typeof RUNNING_DATA !== 'undefined' && RUNNING_DATA && RUNNING_DATA.length > 0) {
|
|
464
|
+
// renderCardio(RUNNING_DATA, 'running');
|
|
465
|
+
// }
|
|
474
466
|
})();
|
|
475
467
|
</script>
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -30,13 +30,14 @@ program
|
|
|
30
30
|
function loadData() {
|
|
31
31
|
const indoorData = fs.readFileSync(path.join(garminDataFolder, "indoorClimbingActivities.json"), "utf8");
|
|
32
32
|
const boulderData = fs.readFileSync(path.join(garminDataFolder, "boulderingActivities.json"), "utf8");
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
// Strength, running, cycling data loading commented out — climbing-only
|
|
34
|
+
// let strengthData = "[]";
|
|
35
|
+
// try { strengthData = fs.readFileSync(path.join(garminDataFolder, "strengthTrainingActivities.json"), "utf8"); } catch (e) {}
|
|
36
|
+
// let runningData = "[]";
|
|
37
|
+
// try { runningData = fs.readFileSync(path.join(garminDataFolder, "runningActivities.json"), "utf8"); } catch (e) {}
|
|
38
|
+
// let cyclingData = "[]";
|
|
39
|
+
// try { cyclingData = fs.readFileSync(path.join(garminDataFolder, "cyclingActivities.json"), "utf8"); } catch (e) {}
|
|
40
|
+
return `var INDOOR_DATA = ${indoorData};\nvar BOULDER_DATA = ${boulderData};\n`;
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
program
|
package/src/parse.ts
CHANGED
|
@@ -592,379 +592,22 @@ export const parse = async () => {
|
|
|
592
592
|
|
|
593
593
|
console.log("```");
|
|
594
594
|
|
|
595
|
-
// === STRENGTH TRAINING ===
|
|
596
|
-
try {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
},
|
|
614
|
-
squat: {
|
|
615
|
-
label: "Back Squat",
|
|
616
|
-
match: (cat, sub) => cat === "SQUAT" && (sub || "").includes("BACK_SQUAT"),
|
|
617
|
-
},
|
|
618
|
-
pullup: {
|
|
619
|
-
label: "Weighted Pull-Up",
|
|
620
|
-
match: (cat, sub) => cat === "PULL_UP",
|
|
621
|
-
},
|
|
622
|
-
rdl: {
|
|
623
|
-
label: "Romanian Deadlift",
|
|
624
|
-
match: (cat, sub) => cat === "DEADLIFT" && (sub || "").includes("ROMANIAN"),
|
|
625
|
-
},
|
|
626
|
-
};
|
|
627
|
-
|
|
628
|
-
type SessionData = { date: string; maxWeight: number; totalVolume: number; sets: number; totalReps: number };
|
|
629
|
-
const exerciseData: { [key: string]: SessionData[] } = { bench: [], squat: [], pullup: [], rdl: [] };
|
|
630
|
-
|
|
631
|
-
for (const activity of strengthActivities) {
|
|
632
|
-
const date = activity?.startTimeLocal?.split(" ")[0] || "";
|
|
633
|
-
const exercises = activity?.exerciseSets || activity?.fullSummarizedExerciseSets || activity?.summarizedExerciseSets || [];
|
|
634
|
-
|
|
635
|
-
for (const exKey of Object.keys(exercisePatterns)) {
|
|
636
|
-
const pattern = exercisePatterns[exKey];
|
|
637
|
-
|
|
638
|
-
for (const ex of exercises) {
|
|
639
|
-
const cat = (ex?.category || "").toUpperCase();
|
|
640
|
-
const sub = (ex?.subCategory || "").toUpperCase();
|
|
641
|
-
|
|
642
|
-
if (pattern.match(cat, sub)) {
|
|
643
|
-
exerciseData[exKey].push({
|
|
644
|
-
date,
|
|
645
|
-
maxWeight: mgToLbs(ex?.maxWeight || 0),
|
|
646
|
-
totalVolume: mgToLbs(ex?.volume || 0),
|
|
647
|
-
sets: ex?.sets || 0,
|
|
648
|
-
totalReps: ex?.reps || 0,
|
|
649
|
-
});
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
for (const exKey of Object.keys(exercisePatterns)) {
|
|
656
|
-
const pattern = exercisePatterns[exKey];
|
|
657
|
-
const sessions = exerciseData[exKey];
|
|
658
|
-
if (sessions.length === 0) continue;
|
|
659
|
-
|
|
660
|
-
console.log(`\n${pattern.label} (${sessions.length} sessions)`);
|
|
661
|
-
console.log(` All Time Max Weight: ${Math.max(...sessions.map(s => s.maxWeight))} lbs`);
|
|
662
|
-
console.log(` All Time Max Session Volume: ${Math.max(...sessions.map(s => s.totalVolume))} lbs`);
|
|
663
|
-
console.log(` Average Max Weight: ${Math.round(sessions.reduce((a, s) => a + s.maxWeight, 0) / sessions.length)} lbs`);
|
|
664
|
-
console.log(` Total Reps All Time: ${sessions.reduce((a, s) => a + s.totalReps, 0)}\n`);
|
|
665
|
-
|
|
666
|
-
// Per-session max weight
|
|
667
|
-
generateChart(
|
|
668
|
-
sessions.map((s, i) => [i, s.maxWeight]),
|
|
669
|
-
`${pattern.label} - Max Weight Per Session (lbs)`,
|
|
670
|
-
{
|
|
671
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
672
|
-
formatter: (value: number, { axis }: any) =>
|
|
673
|
-
axis === "y" ? value : sessions[value]?.date,
|
|
674
|
-
},
|
|
675
|
-
);
|
|
676
|
-
|
|
677
|
-
// Per-session volume
|
|
678
|
-
generateChart(
|
|
679
|
-
sessions.map((s, i) => [i, s.totalVolume]),
|
|
680
|
-
`${pattern.label} - Total Volume Per Session (lbs)`,
|
|
681
|
-
{
|
|
682
|
-
height: 10,
|
|
683
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
684
|
-
barChart: true,
|
|
685
|
-
formatter: (value: number, { axis }: any) =>
|
|
686
|
-
axis === "y" ? value : sessions[value]?.date,
|
|
687
|
-
},
|
|
688
|
-
);
|
|
689
|
-
|
|
690
|
-
// Monthly max weight
|
|
691
|
-
const maxWeightByMonth = sessions.reduce((acc: any, s) => {
|
|
692
|
-
const parts = s.date.split("-");
|
|
693
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
694
|
-
acc[key] = Math.max(acc[key] || 0, s.maxWeight);
|
|
695
|
-
return acc;
|
|
696
|
-
}, {});
|
|
697
|
-
|
|
698
|
-
generateChart(
|
|
699
|
-
Object.keys(maxWeightByMonth).map((month, i) => [i, maxWeightByMonth[month]]),
|
|
700
|
-
`${pattern.label} - Max Weight By Month (lbs)`,
|
|
701
|
-
{
|
|
702
|
-
width: YEAR_WIDTH,
|
|
703
|
-
formatter: (value: number, { axis }: any) =>
|
|
704
|
-
axis === "y" ? value : Object.keys(maxWeightByMonth)[value],
|
|
705
|
-
},
|
|
706
|
-
);
|
|
707
|
-
|
|
708
|
-
// Monthly volume
|
|
709
|
-
const volumeByMonth = sessions.reduce((acc: any, s) => {
|
|
710
|
-
const parts = s.date.split("-");
|
|
711
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
712
|
-
acc[key] = (acc[key] || 0) + s.totalVolume;
|
|
713
|
-
return acc;
|
|
714
|
-
}, {});
|
|
715
|
-
|
|
716
|
-
generateChart(
|
|
717
|
-
Object.keys(volumeByMonth).map((month, i) => [i, volumeByMonth[month]]),
|
|
718
|
-
`${pattern.label} - Total Volume By Month (lbs)`,
|
|
719
|
-
{
|
|
720
|
-
height: 10,
|
|
721
|
-
width: YEAR_WIDTH,
|
|
722
|
-
barChart: true,
|
|
723
|
-
formatter: (value: number, { axis }: any) =>
|
|
724
|
-
axis === "y" ? value : Object.keys(volumeByMonth)[value],
|
|
725
|
-
},
|
|
726
|
-
);
|
|
727
|
-
|
|
728
|
-
// Yearly max weight
|
|
729
|
-
const maxWeightByYear = aggregateByYear(maxWeightByMonth, "max");
|
|
730
|
-
generateChart(
|
|
731
|
-
maxWeightByYear.map(([, val], index) => [index, val]),
|
|
732
|
-
`${pattern.label} - Max Weight By Year (lbs)`,
|
|
733
|
-
{
|
|
734
|
-
width: maxWeightByYear.length * 20,
|
|
735
|
-
formatter: (value: number, { axis }: any) =>
|
|
736
|
-
axis === "y" ? value : maxWeightByYear[value]?.[0],
|
|
737
|
-
},
|
|
738
|
-
);
|
|
739
|
-
|
|
740
|
-
// Yearly volume
|
|
741
|
-
const volumeByYear = aggregateByYear(volumeByMonth);
|
|
742
|
-
generateChart(
|
|
743
|
-
volumeByYear.map(([, val], index) => [index, val]),
|
|
744
|
-
`${pattern.label} - Total Volume By Year (lbs)`,
|
|
745
|
-
{
|
|
746
|
-
height: 10,
|
|
747
|
-
width: volumeByYear.length * 20,
|
|
748
|
-
barChart: true,
|
|
749
|
-
formatter: (value: number, { axis }: any) =>
|
|
750
|
-
axis === "y" ? value : volumeByYear[value]?.[0],
|
|
751
|
-
},
|
|
752
|
-
);
|
|
753
|
-
|
|
754
|
-
// Per-session reps
|
|
755
|
-
generateChart(
|
|
756
|
-
sessions.map((s, i) => [i, s.totalReps]),
|
|
757
|
-
`${pattern.label} - Total Reps Per Session`,
|
|
758
|
-
{
|
|
759
|
-
height: 10,
|
|
760
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
761
|
-
barChart: true,
|
|
762
|
-
formatter: (value: number, { axis }: any) =>
|
|
763
|
-
axis === "y" ? value : sessions[value]?.date,
|
|
764
|
-
},
|
|
765
|
-
);
|
|
766
|
-
|
|
767
|
-
// Monthly reps
|
|
768
|
-
const repsByMonth = sessions.reduce((acc: any, s) => {
|
|
769
|
-
const parts = s.date.split("-");
|
|
770
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
771
|
-
acc[key] = (acc[key] || 0) + s.totalReps;
|
|
772
|
-
return acc;
|
|
773
|
-
}, {});
|
|
774
|
-
|
|
775
|
-
generateChart(
|
|
776
|
-
Object.keys(repsByMonth).map((month, i) => [i, repsByMonth[month]]),
|
|
777
|
-
`${pattern.label} - Total Reps By Month`,
|
|
778
|
-
{
|
|
779
|
-
height: 10,
|
|
780
|
-
width: YEAR_WIDTH,
|
|
781
|
-
barChart: true,
|
|
782
|
-
formatter: (value: number, { axis }: any) =>
|
|
783
|
-
axis === "y" ? value : Object.keys(repsByMonth)[value],
|
|
784
|
-
},
|
|
785
|
-
);
|
|
786
|
-
|
|
787
|
-
// Yearly reps
|
|
788
|
-
const repsByYear = aggregateByYear(repsByMonth);
|
|
789
|
-
generateChart(
|
|
790
|
-
repsByYear.map(([, val], index) => [index, val]),
|
|
791
|
-
`${pattern.label} - Total Reps By Year`,
|
|
792
|
-
{
|
|
793
|
-
height: 10,
|
|
794
|
-
width: repsByYear.length * 20,
|
|
795
|
-
barChart: true,
|
|
796
|
-
formatter: (value: number, { axis }: any) =>
|
|
797
|
-
axis === "y" ? value : repsByYear[value]?.[0],
|
|
798
|
-
},
|
|
799
|
-
);
|
|
800
|
-
}
|
|
801
|
-
console.log("```");
|
|
802
|
-
}
|
|
803
|
-
} catch (e) {
|
|
804
|
-
// No strength training data available, skip
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
// === RUNNING & CYCLING ===
|
|
808
|
-
const cardioTypes = [
|
|
809
|
-
{ file: "cyclingActivities.json", label: "Cycling", unit: "mi" },
|
|
810
|
-
{ file: "runningActivities.json", label: "Running", unit: "mi" },
|
|
811
|
-
];
|
|
812
|
-
|
|
813
|
-
for (const cardio of cardioTypes) {
|
|
814
|
-
try {
|
|
815
|
-
const activities = JSON.parse(
|
|
816
|
-
fs.readFileSync(`${garminDataFolder}/${cardio.file}`, "utf8"),
|
|
817
|
-
);
|
|
818
|
-
if (!activities?.length) continue;
|
|
819
|
-
|
|
820
|
-
console.log("\n```");
|
|
821
|
-
console.log(`\n\n${cardio.label} ===============================\n`);
|
|
822
|
-
|
|
823
|
-
const metersToMiles = (m: number): number => Math.round((m / 1609.344) * 100) / 100;
|
|
824
|
-
const secondsToMinutes = (s: number): number => Math.round(s / 60);
|
|
825
|
-
const pacePerMile = (dist: number, dur: number): number => {
|
|
826
|
-
const miles = dist / 1609.344;
|
|
827
|
-
if (miles === 0) return 0;
|
|
828
|
-
return Math.round((dur / 60) / miles * 100) / 100; // min/mile
|
|
829
|
-
};
|
|
830
|
-
|
|
831
|
-
type CardioSession = { date: string; distance: number; duration: number; pace: number; calories: number; avgHR: number; elevGain: number };
|
|
832
|
-
const sessions: CardioSession[] = activities.map((a: any) => ({
|
|
833
|
-
date: a?.startTimeLocal?.split(" ")[0] || "",
|
|
834
|
-
distance: metersToMiles(a?.distance || 0),
|
|
835
|
-
duration: secondsToMinutes(a?.duration || 0),
|
|
836
|
-
pace: pacePerMile(a?.distance || 0, a?.duration || 0),
|
|
837
|
-
calories: a?.calories || 0,
|
|
838
|
-
avgHR: a?.averageHR || 0,
|
|
839
|
-
elevGain: metersToFeet(a?.elevationGain || 0),
|
|
840
|
-
}));
|
|
841
|
-
|
|
842
|
-
const totalDist = Math.round(sessions.reduce((a, s) => a + s.distance, 0) * 100) / 100;
|
|
843
|
-
const totalTime = sessions.reduce((a, s) => a + s.duration, 0);
|
|
844
|
-
const avgPace = Math.round(sessions.filter(s => s.pace > 0).reduce((a, s) => a + s.pace, 0) / sessions.filter(s => s.pace > 0).length * 100) / 100;
|
|
845
|
-
const bestPace = Math.round(Math.min(...sessions.filter(s => s.pace > 0).map(s => s.pace)) * 100) / 100;
|
|
846
|
-
const totalCalories = sessions.reduce((a, s) => a + s.calories, 0);
|
|
847
|
-
|
|
848
|
-
console.log(`${cardio.label} (${sessions.length} sessions)`);
|
|
849
|
-
console.log(` Total Distance: ${totalDist} ${cardio.unit}`);
|
|
850
|
-
console.log(` Total Time: ${totalTime} min (${Math.round(totalTime / 60)} hrs)`);
|
|
851
|
-
console.log(` Average Pace: ${avgPace} min/${cardio.unit}`);
|
|
852
|
-
console.log(` Best Pace: ${bestPace} min/${cardio.unit}`);
|
|
853
|
-
console.log(` Total Calories: ${totalCalories}\n`);
|
|
854
|
-
|
|
855
|
-
// Per-session distance
|
|
856
|
-
generateChart(
|
|
857
|
-
sessions.map((s, i) => [i, s.distance]),
|
|
858
|
-
`${cardio.label} - Distance Per Session (${cardio.unit})`,
|
|
859
|
-
{
|
|
860
|
-
height: 10,
|
|
861
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
862
|
-
barChart: true,
|
|
863
|
-
formatter: (value: number, { axis }: any) =>
|
|
864
|
-
axis === "y" ? value : sessions[value]?.date,
|
|
865
|
-
},
|
|
866
|
-
);
|
|
867
|
-
|
|
868
|
-
// Per-session pace
|
|
869
|
-
generateChart(
|
|
870
|
-
sessions.filter(s => s.pace > 0).map((s, i) => [i, s.pace]),
|
|
871
|
-
`${cardio.label} - Pace Per Session (min/${cardio.unit})`,
|
|
872
|
-
{
|
|
873
|
-
width: sessions.filter(s => s.pace > 0).length * CHART_WIDTH_PER_DATA_POINT,
|
|
874
|
-
formatter: (value: number, { axis }: any) =>
|
|
875
|
-
axis === "y" ? value : sessions.filter(s => s.pace > 0)[value]?.date,
|
|
876
|
-
},
|
|
877
|
-
);
|
|
878
|
-
|
|
879
|
-
// Per-session duration
|
|
880
|
-
generateChart(
|
|
881
|
-
sessions.map((s, i) => [i, s.duration]),
|
|
882
|
-
`${cardio.label} - Duration Per Session (min)`,
|
|
883
|
-
{
|
|
884
|
-
height: 10,
|
|
885
|
-
width: sessions.length * CHART_WIDTH_PER_DATA_POINT,
|
|
886
|
-
barChart: true,
|
|
887
|
-
formatter: (value: number, { axis }: any) =>
|
|
888
|
-
axis === "y" ? value : sessions[value]?.date,
|
|
889
|
-
},
|
|
890
|
-
);
|
|
891
|
-
|
|
892
|
-
// Monthly aggregations
|
|
893
|
-
const groupByMonth = (fn: (s: CardioSession, prev: number) => number) =>
|
|
894
|
-
sessions.reduce((acc: any, s) => {
|
|
895
|
-
const parts = s.date.split("-");
|
|
896
|
-
const key = `${parts[0]}-${parts[1]}`;
|
|
897
|
-
acc[key] = fn(s, acc[key] || 0);
|
|
898
|
-
return acc;
|
|
899
|
-
}, {});
|
|
900
|
-
|
|
901
|
-
const distByMonth = groupByMonth((s, prev) => Math.round((prev + s.distance) * 100) / 100);
|
|
902
|
-
const durationByMonth = groupByMonth((s, prev) => prev + s.duration);
|
|
903
|
-
const sessionsByMonth = groupByMonth((s, prev) => prev + 1);
|
|
904
|
-
|
|
905
|
-
generateChart(
|
|
906
|
-
Object.keys(distByMonth).map((m, i) => [i, distByMonth[m]]),
|
|
907
|
-
`${cardio.label} - Distance By Month (${cardio.unit})`,
|
|
908
|
-
{
|
|
909
|
-
height: 10, width: YEAR_WIDTH, barChart: true,
|
|
910
|
-
formatter: (value: number, { axis }: any) => axis === "y" ? value : Object.keys(distByMonth)[value],
|
|
911
|
-
},
|
|
912
|
-
);
|
|
913
|
-
|
|
914
|
-
generateChart(
|
|
915
|
-
Object.keys(durationByMonth).map((m, i) => [i, durationByMonth[m]]),
|
|
916
|
-
`${cardio.label} - Duration By Month (min)`,
|
|
917
|
-
{
|
|
918
|
-
height: 10, width: YEAR_WIDTH, barChart: true,
|
|
919
|
-
formatter: (value: number, { axis }: any) => axis === "y" ? value : Object.keys(durationByMonth)[value],
|
|
920
|
-
},
|
|
921
|
-
);
|
|
922
|
-
|
|
923
|
-
generateChart(
|
|
924
|
-
Object.keys(sessionsByMonth).map((m, i) => [i, sessionsByMonth[m]]),
|
|
925
|
-
`${cardio.label} - Sessions By Month`,
|
|
926
|
-
{
|
|
927
|
-
height: 10, width: YEAR_WIDTH, barChart: true,
|
|
928
|
-
formatter: (value: number, { axis }: any) => axis === "y" ? value : Object.keys(sessionsByMonth)[value],
|
|
929
|
-
},
|
|
930
|
-
);
|
|
931
|
-
|
|
932
|
-
// Yearly
|
|
933
|
-
console.log("\nYearly Stats ===============================\n");
|
|
934
|
-
|
|
935
|
-
const distByYear = aggregateByYear(distByMonth);
|
|
936
|
-
generateChart(
|
|
937
|
-
distByYear.map(([, val], i) => [i, val]),
|
|
938
|
-
`${cardio.label} - Distance By Year (${cardio.unit})`,
|
|
939
|
-
{
|
|
940
|
-
height: 10, width: distByYear.length * 20, barChart: true,
|
|
941
|
-
formatter: (value: number, { axis }: any) => axis === "y" ? value : distByYear[value]?.[0],
|
|
942
|
-
},
|
|
943
|
-
);
|
|
944
|
-
|
|
945
|
-
const durationByYear = aggregateByYear(durationByMonth);
|
|
946
|
-
generateChart(
|
|
947
|
-
durationByYear.map(([, val], i) => [i, val]),
|
|
948
|
-
`${cardio.label} - Duration By Year (min)`,
|
|
949
|
-
{
|
|
950
|
-
height: 10, width: durationByYear.length * 20, barChart: true,
|
|
951
|
-
formatter: (value: number, { axis }: any) => axis === "y" ? value : durationByYear[value]?.[0],
|
|
952
|
-
},
|
|
953
|
-
);
|
|
954
|
-
|
|
955
|
-
const sessionsByYear = aggregateByYear(sessionsByMonth);
|
|
956
|
-
generateChart(
|
|
957
|
-
sessionsByYear.map(([, val], i) => [i, val]),
|
|
958
|
-
`${cardio.label} - Sessions By Year`,
|
|
959
|
-
{
|
|
960
|
-
height: 10, width: sessionsByYear.length * 20, barChart: true,
|
|
961
|
-
formatter: (value: number, { axis }: any) => axis === "y" ? value : sessionsByYear[value]?.[0],
|
|
962
|
-
},
|
|
963
|
-
);
|
|
964
|
-
|
|
965
|
-
console.log("```");
|
|
966
|
-
} catch (e) {
|
|
967
|
-
// No data for this cardio type
|
|
968
|
-
}
|
|
969
|
-
}
|
|
595
|
+
// === STRENGTH TRAINING === (commented out — climbing-only)
|
|
596
|
+
// try {
|
|
597
|
+
// const strengthActivities = JSON.parse(
|
|
598
|
+
// fs.readFileSync(`${garminDataFolder}/strengthTrainingActivities.json`, "utf8"),
|
|
599
|
+
// );
|
|
600
|
+
// if (strengthActivities?.length > 0) {
|
|
601
|
+
// // ... strength training charts omitted
|
|
602
|
+
// }
|
|
603
|
+
// } catch (e) {}
|
|
604
|
+
|
|
605
|
+
// === RUNNING & CYCLING === (commented out — climbing-only)
|
|
606
|
+
// const cardioTypes = [
|
|
607
|
+
// { file: "cyclingActivities.json", label: "Cycling", unit: "mi" },
|
|
608
|
+
// { file: "runningActivities.json", label: "Running", unit: "mi" },
|
|
609
|
+
// ];
|
|
610
|
+
// for (const cardio of cardioTypes) {
|
|
611
|
+
// // ... cardio charts omitted
|
|
612
|
+
// }
|
|
970
613
|
};
|