garminclimb 1.0.4 → 1.0.6

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.
@@ -0,0 +1,12 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python3:*)",
5
+ "WebFetch(domain:jottenlips.github.io)",
6
+ "Bash(curl:*)",
7
+ "Bash(open:*)",
8
+ "Bash(npx tsc:*)",
9
+ "Bash(node:*)"
10
+ ]
11
+ }
12
+ }
package/README.md CHANGED
@@ -17,6 +17,48 @@ cd ~/.gc_data
17
17
  ls
18
18
  ```
19
19
 
20
+ # Interactive Chart.js Dashboard
21
+
22
+ Generate a self-contained HTML file with interactive Chart.js graphs. The HTML includes your climbing data inline so it can be opened in any browser without a server.
23
+
24
+ ```shell
25
+ garminclimb chartjs > climbing_dashboard.html
26
+ open climbing_dashboard.html
27
+ ```
28
+
29
+ This outputs a single HTML file with all your data embedded. Charts include:
30
+
31
+ - Yearly and monthly totals for feet climbed (rope, boulder, combined)
32
+ - Yearly and monthly max grades (rope and boulder)
33
+ - Yearly and monthly session counts
34
+ - Per-session stats: max grade, sends, feet, active minutes
35
+ - Per-session bouldering: max grade, splits, active minutes
36
+
37
+ ## Embed in a Markdown File
38
+
39
+ Output an HTML snippet you can paste directly into any markdown file that supports inline HTML (GitHub Pages, Jekyll, static site generators, etc.):
40
+
41
+ ```shell
42
+ garminclimb chartjs-embed > climbing-charts.html
43
+ ```
44
+
45
+ Then include it in your markdown:
46
+
47
+ ```markdown
48
+ # My Climbing Stats
49
+
50
+ Here are my climbing charts from Garmin:
51
+
52
+ {% include climbing-charts.html %}
53
+ ```
54
+
55
+ Or paste the output directly into your `.md` file — the snippet includes scoped CSS (`.gc-dashboard` prefix) so it won't conflict with your site's styles.
56
+
57
+ ```shell
58
+ # Append charts to an existing markdown file
59
+ garminclimb chartjs-embed >> climbing.md
60
+ ```
61
+
20
62
  # Develop locally or make your own charts
21
63
 
22
64
  ```shell
package/bin/index.js CHANGED
@@ -1,8 +1,42 @@
1
1
  #! /usr/bin/env node
2
2
  "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
3
36
  Object.defineProperty(exports, "__esModule", { value: true });
4
37
  exports.garminDataFolder = void 0;
5
38
  const commander_1 = require("commander");
39
+ const fs = __importStar(require("fs"));
6
40
  const os = require("os");
7
41
  const path = require("path");
8
42
  const homeDir = os.homedir();
@@ -25,5 +59,27 @@ commander_1.program
25
59
  .action(() => {
26
60
  (0, parse_1.parse)();
27
61
  });
62
+ commander_1.program
63
+ .command("chartjs")
64
+ .description("Output a standalone Chart.js HTML dashboard")
65
+ .action(() => {
66
+ const htmlPath = path.join(__dirname, "..", "charts.html");
67
+ const html = fs.readFileSync(htmlPath, "utf8");
68
+ const indoorData = fs.readFileSync(path.join(exports.garminDataFolder, "indoorClimbingActivities.json"), "utf8");
69
+ const boulderData = fs.readFileSync(path.join(exports.garminDataFolder, "boulderingActivities.json"), "utf8");
70
+ const output = html.replace("<script>", `<script>\nvar INDOOR_DATA = ${indoorData};\nvar BOULDER_DATA = ${boulderData};\n`);
71
+ console.log(output);
72
+ });
73
+ commander_1.program
74
+ .command("chartjs-embed")
75
+ .description("Output an embeddable Chart.js HTML snippet for markdown files")
76
+ .action(() => {
77
+ const htmlPath = path.join(__dirname, "..", "charts-embed.html");
78
+ const html = fs.readFileSync(htmlPath, "utf8");
79
+ const indoorData = fs.readFileSync(path.join(exports.garminDataFolder, "indoorClimbingActivities.json"), "utf8");
80
+ const boulderData = fs.readFileSync(path.join(exports.garminDataFolder, "boulderingActivities.json"), "utf8");
81
+ const output = html.replace("<script>\n(function() {", `<script>\nvar INDOOR_DATA = ${indoorData};\nvar BOULDER_DATA = ${boulderData};\n(function() {`);
82
+ console.log(output);
83
+ });
28
84
  commander_1.program.parse();
29
85
  //# sourceMappingURL=index.js.map
package/bin/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAEA,yCAAoC;AACpC,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,mBAAO,CAAC,KAAK,EAAE,CAAC"}
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,mBAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAChC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,+BAA+B,CAAC,EAC5D,MAAM,CACP,CAAC;IACF,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CACjC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,2BAA2B,CAAC,EACxD,MAAM,CACP,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CACzB,UAAU,EACV,+BAA+B,UAAU,yBAAyB,WAAW,KAAK,CACnF,CAAC;IACF,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,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAChC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,+BAA+B,CAAC,EAC5D,MAAM,CACP,CAAC;IACF,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CACjC,IAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,2BAA2B,CAAC,EACxD,MAAM,CACP,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CACzB,yBAAyB,EACzB,+BAA+B,UAAU,yBAAyB,WAAW,kBAAkB,CAChG,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,mBAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ // // https://www.mountainproject.com/rss/user-ticks/201166134
3
+ // // <rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
4
+ // // <channel>
5
+ // // <title>Ticks for John Ottenlips Franke on Mountain Project</title>
6
+ // // <description>The Definitive Climbing Resource</description>
7
+ // // <link>https://www.mountainproject.com</link>
8
+ // // <language>en-us</language>
9
+ // // <lastBuildDate>Sat, 24 Jan 2026 19:09:10 +0000</lastBuildDate>
10
+ // // <item>
11
+ // // <title>Tick: Grape Vine (5.7)</title>
12
+ // // <link>https://www.mountainproject.com/route/121871647/grape-vine</link>
13
+ // // <guid isPermaLink="false">MPObject_202273988</guid>
14
+ // // <pubDate>Sat, 27 Dec 2025 21:06:07 +0000</pubDate>
15
+ // // <description><div class="fr-view"><p>Work through a low crux through a series of small ledges. Finish in a small dihedral just before the anchor. Watch out for lots of loose rock.</p></div><br /><img class="" src='https://mountainproject.com/assets/photos/climb/122083536_smallMed_1647451882_topo.jpg?cache=1714597316' alt="Really fun route!"><br><a href="https://www.mountainproject.com/area/105899020/missouri">Missouri</a> &gt; <a href="https://www.mountainproject.com/area/116617972/em-rockwoods-reservation">EM: Rockwoods R&hellip;</a> &gt; <a href="https://www.mountainproject.com/area/121388630/colony-wall">Colony Wall</a> </description>
16
+ // // </item>
17
+ // // <item>
18
+ // // <title>Tick: Xylem (5.10a)</title>
19
+ // // <link>https://www.mountainproject.com/route/121676838/xylem</link>
20
+ // // <guid isPermaLink="false">MPObject_202273688</guid>
21
+ // // <pubDate>Sat, 27 Dec 2025 19:56:10 +0000</pubDate>
22
+ // // <description><div class="fr-view"><p>Begin with a gentle slab start to a comfortable ledge rest, followed by more vertical climbing as the dihedral crack thins into the crux. &nbsp;Careful footwork and body position will help you gain the second ledge to clip the anchors. &nbsp;The dihedral provides some shade, which may be helpful in warmer weather.</p></div><br /><img class="" src='https://mountainproject.com/assets/photos/climb/126305529_smallMed_1717616410.jpg?cache=1725482195' alt="From Above"><br><a href="https://www.mountainproject.com/area/105899020/missouri">Missouri</a> &gt; <a href="https://www.mountainproject.com/area/116617972/em-rockwoods-reservation">EM: Rockwoods R&hellip;</a> &gt; <a href="https://www.mountainproject.com/area/121388630/colony-wall">Colony Wall</a> </description>
23
+ // // </item>
24
+ // // <item>
25
+ // // craswl mtn project urls for route stats
26
+ // import fetch from "node-fetch";
27
+ // import * as xml2js from "xml2js";
28
+ // export const fetchMountainProjectTicks = async (
29
+ // userId: string
30
+ // ): Promise<any[]> => {
31
+ // const url = `https://www.mountainproject.com/rss/user-ticks/${userId}`;
32
+ // const response = await fetch(url);
33
+ // const xmlData = await response.text();
34
+ // const parser = new xml2js.Parser();
35
+ // const result = await parser.parseStringPromise(xmlData);
36
+ // const items = result.rss.channel[0].item;
37
+ // return items.map((item: any) => ({
38
+ // title: item.title[0],
39
+ // link: item.link[0],
40
+ // pubDate: item.pubDate[0],
41
+ // description: item.description[0],
42
+ // }));
43
+ // };
44
+ // // get route height
45
+ // export const fetchRouteHeight = async (routeUrl: string): Promise<string> => {
46
+ // const response = await fetch(routeUrl);
47
+ // const htmlData = await response.text();
48
+ // const heightMatch = htmlData.match(
49
+ // /<li><strong>Height:<\/strong>\s*([\d\sftm]+)/
50
+ // );
51
+ // if (heightMatch && heightMatch[1]) {
52
+ // return heightMatch[1].trim();
53
+ // }
54
+ // return "Unknown";
55
+ // };
56
+ // // Example usage:
57
+ // // (async () => {
58
+ // // const ticks = await fetchMountainProjectTicks("201166134");
59
+ // // for (const tick of ticks) {
60
+ // // const height = await fetchRouteHeight(tick.link);
61
+ // // console.log(`${tick.title} - Height: ${height}`);
62
+ // // }
63
+ // // })();
64
+ //# sourceMappingURL=mtnproject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mtnproject.js","sourceRoot":"","sources":["../src/mtnproject.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mLAAmL;AACnL,eAAe;AACf,wEAAwE;AACxE,iEAAiE;AACjE,kDAAkD;AAClD,gCAAgC;AAChC,oEAAoE;AACpE,YAAY;AACZ,2CAA2C;AAC3C,6EAA6E;AAC7E,yDAAyD;AACzD,wDAAwD;AACxD,2oBAA2oB;AAC3oB,aAAa;AACb,YAAY;AACZ,wCAAwC;AACxC,wEAAwE;AACxE,yDAAyD;AACzD,wDAAwD;AACxD,4yBAA4yB;AAC5yB,aAAa;AACb,YAAY;AAEZ,6CAA6C;AAC7C,kCAAkC;AAClC,oCAAoC;AAEpC,mDAAmD;AACnD,mBAAmB;AACnB,yBAAyB;AACzB,4EAA4E;AAC5E,uCAAuC;AACvC,2CAA2C;AAE3C,wCAAwC;AACxC,6DAA6D;AAE7D,8CAA8C;AAC9C,uCAAuC;AACvC,4BAA4B;AAC5B,0BAA0B;AAC1B,gCAAgC;AAChC,wCAAwC;AACxC,SAAS;AACT,KAAK;AACL,sBAAsB;AACtB,iFAAiF;AACjF,4CAA4C;AAC5C,4CAA4C;AAC5C,wCAAwC;AACxC,qDAAqD;AACrD,OAAO;AACP,yCAAyC;AACzC,oCAAoC;AACpC,MAAM;AACN,sBAAsB;AACtB,KAAK;AACL,oBAAoB;AACpB,oBAAoB;AACpB,mEAAmE;AACnE,mCAAmC;AACnC,2DAA2D;AAC3D,2DAA2D;AAC3D,SAAS;AACT,WAAW"}
package/bin/parse.js CHANGED
@@ -113,14 +113,15 @@ 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, _b;
117
- const indoorClimbingActivities = (_a = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/indoorClimbingActivities.json`, "utf8"))) === null || _a === void 0 ? void 0 : _a.reverse();
116
+ const indoorClimbingActivities = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/indoorClimbingActivities.json`, "utf8"));
117
+ // ?.reverse();
118
118
  const activeIndoorSplits = indoorClimbingActivities.map((activity) => {
119
119
  var _a, _b, _c, _d;
120
120
  return ((_b = (_a = activity === null || activity === void 0 ? void 0 : activity.splitSummaries) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.splitType) === "CLIMB_ACTIVE"
121
121
  ? Object.assign(Object.assign({}, (_c = activity === null || activity === void 0 ? void 0 : activity.splitSummaries) === null || _c === void 0 ? void 0 : _c[0]), { start: activity === null || activity === void 0 ? void 0 : activity.startTimeLocal }) : Object.assign(Object.assign({}, (_d = activity === null || activity === void 0 ? void 0 : activity.splitSummaries) === null || _d === void 0 ? void 0 : _d[1]), { start: activity === null || activity === void 0 ? void 0 : activity.startTimeLocal });
122
122
  });
123
- const boulderingActivities = (_b = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/boulderingActivities.json`, "utf8"))) === null || _b === void 0 ? void 0 : _b.reverse();
123
+ const boulderingActivities = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/boulderingActivities.json`, "utf8"));
124
+ // ?.reverse();
124
125
  const activeBoulderingSplits = boulderingActivities
125
126
  .map((activity) => {
126
127
  var _a, _b, _c, _d;
@@ -144,15 +145,6 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
144
145
  (acc[`${year}-${month}`] || 0) + metersToFeet(split === null || split === void 0 ? void 0 : split.totalAscent);
145
146
  return acc;
146
147
  }, {});
147
- generateChart(Object.keys(totalFeetByMonthYear).map((month, index) => [
148
- index,
149
- totalFeetByMonthYear[month],
150
- ]), "Total Route Feet By Month", {
151
- height: 20,
152
- width: YEAR_WIDTH,
153
- barChart: true,
154
- formatter: (value, { axis }) => axis === "y" ? value : Object.keys(totalFeetByMonthYear)[value],
155
- });
156
148
  // each boulder is ~8 feet
157
149
  const totalFeetByMonthYearBouldering = activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits
158
150
  // ?.reverse()
@@ -161,33 +153,203 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
161
153
  const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
162
154
  const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
163
155
  acc[`${year}-${month}`] =
164
- (acc[`${year}-${month}`] || 0) + (split === null || split === void 0 ? void 0 : split.noOfSplits) * 8;
156
+ (acc[`${year}-${month}`] || 0) + (split === null || split === void 0 ? void 0 : split.noOfSplits) * 10;
165
157
  return acc;
166
158
  }, {});
159
+ const totalFeetByMonthYearCombined = Object.keys(totalFeetByMonthYear).reduce((acc, key) => {
160
+ acc[key] =
161
+ totalFeetByMonthYear[key] + (totalFeetByMonthYearBouldering[key] || 0);
162
+ return acc;
163
+ }, {});
164
+ const totalFeet = Object.values(totalFeetByMonthYearCombined).reduce(
165
+ //@ts-ignore
166
+ (sum, feet) => sum + feet, 0);
167
+ console.log(`All Time Total Feet Climbed: ${totalFeet} ft`);
168
+ const totalNumberOfRoutes = activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reduce((acc, split) => acc + (split === null || split === void 0 ? void 0 : split.numClimbSends), 0);
169
+ console.log(`All Time Total Number of Routes Sent Without Falling: ${totalNumberOfRoutes}`);
170
+ const totalNumberOfFalls = activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reduce((acc, split) => acc + (split === null || split === void 0 ? void 0 : split.numFalls), 0);
171
+ console.log(`All Time Total Number of Falls: ${totalNumberOfFalls}`);
172
+ const averageGrade = Math.round((activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reduce((acc, split) => { var _a; return acc + (YDS_GRADE_MAP === null || YDS_GRADE_MAP === void 0 ? void 0 : YDS_GRADE_MAP[(_a = split === null || split === void 0 ? void 0 : split.maxGradeValue) === null || _a === void 0 ? void 0 : _a.valueKey]); }, 0)) / (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length));
173
+ console.log(`All Time Average Max Grade: ${numberToGrade(averageGrade)}`);
174
+ const maxGrade = Math.max(...activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.map((split) => { var _a; return YDS_GRADE_MAP === null || YDS_GRADE_MAP === void 0 ? void 0 : YDS_GRADE_MAP[(_a = split === null || split === void 0 ? void 0 : split.maxGradeValue) === null || _a === void 0 ? void 0 : _a.valueKey]; }));
175
+ console.log(`All Time Max Grade: ${numberToGrade(maxGrade)}`);
176
+ const totalBoulders = activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.reduce((acc, split) => acc + (split === null || split === void 0 ? void 0 : split.noOfSplits), 0);
177
+ console.log(`All Time Total Number of Boulders Climbed: ${totalBoulders}`);
178
+ const averageBoulderGrade = Math.round((activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.reduce((acc, split) => { var _a, _b; return acc + parseInt((_b = (_a = split === null || split === void 0 ? void 0 : split.maxGradeValue) === null || _a === void 0 ? void 0 : _a.valueKey) === null || _b === void 0 ? void 0 : _b.replace(/\D/g, "")); }, 0)) / (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length));
179
+ console.log(`All Time Average Max Boulder Grade: V${averageBoulderGrade}`);
180
+ const maxBoulderGrade = Math.max(...activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.map((split) => { var _a, _b; return parseInt((_b = (_a = split === null || split === void 0 ? void 0 : split.maxGradeValue) === null || _a === void 0 ? void 0 : _a.valueKey) === null || _b === void 0 ? void 0 : _b.replace(/\D/g, "")); }));
181
+ console.log(`All Time Max Boulder Grade: V${maxBoulderGrade}\n`);
182
+ console.log("Total Number of Feet this month", totalFeetByMonthYearCombined[Object.keys(totalFeetByMonthYearCombined)[0]], "\n");
183
+ generateChart(Object.keys(totalFeetByMonthYearCombined).map((month, index) => [
184
+ index,
185
+ totalFeetByMonthYearCombined[month],
186
+ ]), "Total Feet By Month Combined", {
187
+ height: 20,
188
+ width: YEAR_WIDTH,
189
+ barChart: true,
190
+ formatter: (value, { axis }) => axis === "y" ? value : Object.keys(totalFeetByMonthYearCombined)[value],
191
+ });
192
+ generateChart(Object.keys(totalFeetByMonthYear).map((month, index) => [
193
+ index,
194
+ totalFeetByMonthYear[month],
195
+ ]), "Total Route Feet By Month", {
196
+ height: 10,
197
+ width: YEAR_WIDTH,
198
+ barChart: true,
199
+ formatter: (value, { axis }) => axis === "y" ? value : Object.keys(totalFeetByMonthYear)[value],
200
+ });
167
201
  generateChart(Object.keys(totalFeetByMonthYearBouldering).map((month, index) => [
168
202
  index,
169
203
  totalFeetByMonthYearBouldering[month],
170
204
  ]), "Approx Boulder Feet By Month", {
171
- height: 20,
205
+ height: 10,
172
206
  width: YEAR_WIDTH,
173
207
  barChart: true,
174
208
  formatter: (value, { axis }) => axis === "y"
175
209
  ? value
176
210
  : Object.keys(totalFeetByMonthYearBouldering)[value],
177
211
  });
178
- const totalFeetByMonthYearCombined = Object.keys(totalFeetByMonthYear).reduce((acc, key) => {
179
- acc[key] =
180
- totalFeetByMonthYear[key] + (totalFeetByMonthYearBouldering[key] || 0);
212
+ // max rope grade per month
213
+ const maxGradeByMonthYear = activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reduce((acc, split) => {
214
+ var _a, _b, _c;
215
+ const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
216
+ const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
217
+ acc[`${year}-${month}`] = Math.max(acc[`${year}-${month}`] || 0, YDS_GRADE_MAP === null || YDS_GRADE_MAP === void 0 ? void 0 : YDS_GRADE_MAP[(_c = split === null || split === void 0 ? void 0 : split.maxGradeValue) === null || _c === void 0 ? void 0 : _c.valueKey]);
181
218
  return acc;
182
219
  }, {});
183
- generateChart(Object.keys(totalFeetByMonthYearCombined).map((month, index) => [
220
+ generateChart(Object.keys(maxGradeByMonthYear).map((month, index) => [
184
221
  index,
185
- totalFeetByMonthYearCombined[month],
186
- ]), "Total Feet By Month Combined", {
187
- height: 20,
222
+ maxGradeByMonthYear[month],
223
+ ]), "Max Rope Grade By Month", {
224
+ // height: 20,
225
+ width: YEAR_WIDTH,
226
+ formatter: (value, { axis }) => axis === "y"
227
+ ? `${numberToGrade(value)}`
228
+ : Object.keys(maxGradeByMonthYear)[value],
229
+ });
230
+ const maxBoulderGradeByMonthYear = activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.reduce((acc, split) => {
231
+ var _a, _b, _c, _d;
232
+ const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
233
+ const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
234
+ acc[`${year}-${month}`] = Math.max(acc[`${year}-${month}`] || 0, parseInt((_d = (_c = split === null || split === void 0 ? void 0 : split.maxGradeValue) === null || _c === void 0 ? void 0 : _c.valueKey) === null || _d === void 0 ? void 0 : _d.replace(/\D/g, "")));
235
+ return acc;
236
+ }, {});
237
+ generateChart(Object.keys(maxBoulderGradeByMonthYear).map((month, index) => [
238
+ index,
239
+ maxBoulderGradeByMonthYear[month],
240
+ ]), "Max Boulder Grade By Month", {
241
+ // height: 20,
188
242
  width: YEAR_WIDTH,
243
+ formatter: (value, { axis }) => axis === "y"
244
+ ? `V${value}`
245
+ : Object.keys(maxBoulderGradeByMonthYear)[value],
246
+ });
247
+ const numberOfRopeSessionsByMonthYear = activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reduce((acc, split) => {
248
+ var _a, _b;
249
+ const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
250
+ const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
251
+ acc[`${year}-${month}`] = (acc[`${year}-${month}`] || 0) + 1;
252
+ return acc;
253
+ }, {});
254
+ generateChart(Object.keys(numberOfRopeSessionsByMonthYear).map((month, index) => [
255
+ index,
256
+ numberOfRopeSessionsByMonthYear[month],
257
+ ]), "Number of Rope Sessions By Month", {
258
+ // height: 20,
259
+ width: YEAR_WIDTH,
260
+ formatter: (value, { axis }) => axis === "y"
261
+ ? value
262
+ : Object.keys(numberOfRopeSessionsByMonthYear)[value],
263
+ });
264
+ const numberOfBoulderSessionsByMonthYear = activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.reduce((acc, split) => {
265
+ var _a, _b;
266
+ const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
267
+ const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
268
+ acc[`${year}-${month}`] = (acc[`${year}-${month}`] || 0) + 1;
269
+ return acc;
270
+ }, {});
271
+ generateChart(Object.keys(numberOfBoulderSessionsByMonthYear).map((month, index) => [
272
+ index,
273
+ numberOfBoulderSessionsByMonthYear[month],
274
+ ]), "Number of Boulder Sessions By Month", {
275
+ // height: 20,
276
+ width: YEAR_WIDTH,
277
+ formatter: (value, { axis }) => axis === "y"
278
+ ? value
279
+ : Object.keys(numberOfBoulderSessionsByMonthYear)[value],
280
+ });
281
+ // === YEARLY GRAPHS ===
282
+ console.log("\n\nYearly Stats ===============================\n");
283
+ const aggregateByYear = (monthlyData, mode = "sum") => {
284
+ const map = {};
285
+ Object.keys(monthlyData).forEach((key) => {
286
+ const year = key.split("-")[0];
287
+ if (mode === "max") {
288
+ map[year] = Math.max(map[year] || 0, monthlyData[key]);
289
+ }
290
+ else {
291
+ map[year] = (map[year] || 0) + monthlyData[key];
292
+ }
293
+ });
294
+ // Sort descending (2026 first) - return array to avoid JS integer key reordering
295
+ return Object.keys(map)
296
+ .sort((a, b) => parseInt(b) - parseInt(a))
297
+ .map(k => [k, map[k]]);
298
+ };
299
+ const totalFeetByYearCombined = aggregateByYear(totalFeetByMonthYearCombined);
300
+ generateChart(totalFeetByYearCombined.map(([, val], index) => [index, val]), "Total Feet By Year Combined", {
301
+ height: 15,
302
+ width: totalFeetByYearCombined.length * 20,
189
303
  barChart: true,
190
- formatter: (value, { axis }) => axis === "y" ? value : Object.keys(totalFeetByMonthYearCombined)[value],
304
+ formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = totalFeetByYearCombined[value]) === null || _a === void 0 ? void 0 : _a[0]; },
305
+ });
306
+ const totalFeetByYear = aggregateByYear(totalFeetByMonthYear);
307
+ generateChart(totalFeetByYear.map(([, val], index) => [index, val]), "Total Route Feet By Year", {
308
+ height: 10,
309
+ width: totalFeetByYear.length * 20,
310
+ barChart: true,
311
+ formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = totalFeetByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
312
+ });
313
+ const totalBoulderFeetByYear = aggregateByYear(totalFeetByMonthYearBouldering);
314
+ generateChart(totalBoulderFeetByYear.map(([, val], index) => [index, val]), "Approx Boulder Feet By Year", {
315
+ height: 10,
316
+ width: totalBoulderFeetByYear.length * 20,
317
+ barChart: true,
318
+ formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = totalBoulderFeetByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
319
+ });
320
+ const maxGradeByYear = aggregateByYear(maxGradeByMonthYear, "max");
321
+ generateChart(maxGradeByYear.map(([, val], index) => [index, val]), "Max Rope Grade By Year", {
322
+ width: maxGradeByYear.length * 20,
323
+ formatter: (value, { axis }) => {
324
+ var _a;
325
+ return axis === "y"
326
+ ? `${numberToGrade(value)}`
327
+ : (_a = maxGradeByYear[value]) === null || _a === void 0 ? void 0 : _a[0];
328
+ },
329
+ });
330
+ const maxBoulderGradeByYear = aggregateByYear(maxBoulderGradeByMonthYear, "max");
331
+ generateChart(maxBoulderGradeByYear.map(([, val], index) => [index, val]), "Max Boulder Grade By Year", {
332
+ width: maxBoulderGradeByYear.length * 20,
333
+ formatter: (value, { axis }) => {
334
+ var _a;
335
+ return axis === "y"
336
+ ? `V${value}`
337
+ : (_a = maxBoulderGradeByYear[value]) === null || _a === void 0 ? void 0 : _a[0];
338
+ },
339
+ });
340
+ const ropeSessionsByYear = aggregateByYear(numberOfRopeSessionsByMonthYear);
341
+ generateChart(ropeSessionsByYear.map(([, val], index) => [index, val]), "Number of Rope Sessions By Year", {
342
+ height: 10,
343
+ width: ropeSessionsByYear.length * 20,
344
+ barChart: true,
345
+ formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = ropeSessionsByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
346
+ });
347
+ const boulderSessionsByYear = aggregateByYear(numberOfBoulderSessionsByMonthYear);
348
+ generateChart(boulderSessionsByYear.map(([, val], index) => [index, val]), "Number of Boulder Sessions By Year", {
349
+ height: 10,
350
+ width: boulderSessionsByYear.length * 20,
351
+ barChart: true,
352
+ formatter: (value, { axis }) => { var _a; return axis === "y" ? value : (_a = boulderSessionsByYear[value]) === null || _a === void 0 ? void 0 : _a[0]; },
191
353
  });
192
354
  console.log("```");
193
355
  console.log("```");
@@ -219,7 +381,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
219
381
  generateChart(activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.map((split, index) => [
220
382
  index,
221
383
  metersToFeet(split === null || split === void 0 ? void 0 : split.totalAscent),
222
- ]), "Total Feet Per Session", {
384
+ ]), "Total Feet Per Session (approximate, garmin doesn't track boulder completion vs attempts with this API)", {
223
385
  height: 10,
224
386
  width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * CHART_WIDTH_PER_DATA_POINT,
225
387
  barChart: true,
@@ -254,7 +416,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
254
416
  generateChart(activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.map((split, index) => [
255
417
  index,
256
418
  split === null || split === void 0 ? void 0 : split.noOfSplits,
257
- ]), "Number of Climbs per session", {
419
+ ]), "Number of Splits per session (garmin doesn't track boulder completion vs attempts with this API)", {
258
420
  height: 10,
259
421
  barChart: true,
260
422
  width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * CHART_WIDTH_PER_DATA_POINT,
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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"}