garminclimb 1.0.2 → 1.0.4

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/bin/index.js CHANGED
@@ -23,7 +23,6 @@ commander_1.program
23
23
  .command("charts")
24
24
  .description("Parse activities from Garmin Connect")
25
25
  .action(() => {
26
- console.log("Parsing activities...");
27
26
  (0, parse_1.parse)();
28
27
  });
29
28
  commander_1.program.parse();
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,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,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,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"}
package/bin/parse.js CHANGED
@@ -50,6 +50,7 @@ const fs = __importStar(require("fs"));
50
50
  const simple_ascii_chart_1 = __importDefault(require("simple-ascii-chart"));
51
51
  const _1 = require(".");
52
52
  const YEAR_WIDTH = 12 * 10;
53
+ const CHART_WIDTH_PER_DATA_POINT = 12;
53
54
  const YDS_GRADE_MAP = {
54
55
  _5_6: 0,
55
56
  _5_7: 1,
@@ -112,31 +113,94 @@ const numberToGrade = (number) => {
112
113
  return grade.padEnd(8, " ");
113
114
  };
114
115
  const parse = () => __awaiter(void 0, void 0, void 0, function* () {
115
- const indoorClimbingActivities = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/indoorClimbingActivities.json`, "utf8"));
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
118
  const activeIndoorSplits = indoorClimbingActivities.map((activity) => {
117
119
  var _a, _b, _c, _d;
118
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"
119
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 });
120
122
  });
121
- const boulderingActivities = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/boulderingActivities.json`, "utf8"));
122
- const activeBoulderingSplits = boulderingActivities === null || boulderingActivities === void 0 ? void 0 : boulderingActivities.reverse().map((activity) => {
123
+ const boulderingActivities = (_b = JSON.parse(fs.readFileSync(`${_1.garminDataFolder}/boulderingActivities.json`, "utf8"))) === null || _b === void 0 ? void 0 : _b.reverse();
124
+ const activeBoulderingSplits = boulderingActivities
125
+ .map((activity) => {
123
126
  var _a, _b, _c, _d;
124
127
  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"
125
128
  ? 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 });
126
- }).filter((split) => (split === null || split === void 0 ? void 0 : split.noOfSplits) !== 1);
129
+ })
130
+ .filter((split) => (split === null || split === void 0 ? void 0 : split.noOfSplits) !== 1);
127
131
  const metersToFeet = (meters) => Math.round(meters * 3.28084);
128
132
  const generateChart = (data, title, options) => {
129
133
  console.log(title);
130
134
  console.log((0, simple_ascii_chart_1.default)(data, options));
131
135
  };
132
- generateChart(activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reverse().map((split, index) => {
136
+ console.log("```");
137
+ const totalFeetByMonthYear = activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits
138
+ // ?.reverse()
139
+ .reduce((acc, split) => {
140
+ var _a, _b;
141
+ const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
142
+ const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
143
+ acc[`${year}-${month}`] =
144
+ (acc[`${year}-${month}`] || 0) + metersToFeet(split === null || split === void 0 ? void 0 : split.totalAscent);
145
+ return acc;
146
+ }, {});
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
+ // each boulder is ~8 feet
157
+ const totalFeetByMonthYearBouldering = activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits
158
+ // ?.reverse()
159
+ .reduce((acc, split) => {
160
+ var _a, _b;
161
+ const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
162
+ const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
163
+ acc[`${year}-${month}`] =
164
+ (acc[`${year}-${month}`] || 0) + (split === null || split === void 0 ? void 0 : split.noOfSplits) * 8;
165
+ return acc;
166
+ }, {});
167
+ generateChart(Object.keys(totalFeetByMonthYearBouldering).map((month, index) => [
168
+ index,
169
+ totalFeetByMonthYearBouldering[month],
170
+ ]), "Approx Boulder Feet By Month", {
171
+ height: 20,
172
+ width: YEAR_WIDTH,
173
+ barChart: true,
174
+ formatter: (value, { axis }) => axis === "y"
175
+ ? value
176
+ : Object.keys(totalFeetByMonthYearBouldering)[value],
177
+ });
178
+ const totalFeetByMonthYearCombined = Object.keys(totalFeetByMonthYear).reduce((acc, key) => {
179
+ acc[key] =
180
+ totalFeetByMonthYear[key] + (totalFeetByMonthYearBouldering[key] || 0);
181
+ return acc;
182
+ }, {});
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
+ console.log("```");
193
+ console.log("```");
194
+ generateChart(activeIndoorSplits
195
+ // ?.reverse()
196
+ .map((split, index) => {
133
197
  var _a;
134
198
  return [
135
199
  index,
136
200
  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],
137
201
  ];
138
202
  }), "Max Grade Per Session Indoor Climbing", {
139
- width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * 10,
203
+ width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * CHART_WIDTH_PER_DATA_POINT,
140
204
  formatter: (value, { axis }) => {
141
205
  var _a, _b;
142
206
  return axis === "y"
@@ -149,7 +213,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
149
213
  split === null || split === void 0 ? void 0 : split.numClimbSends,
150
214
  ]), "Number of Sends per session", {
151
215
  height: 20,
152
- width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * 10,
216
+ width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * CHART_WIDTH_PER_DATA_POINT,
153
217
  formatter: (value, { axis }) => { var _a, _b; return axis === "y" ? value : (_b = (_a = activeIndoorSplits[value]) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0]; },
154
218
  });
155
219
  generateChart(activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.map((split, index) => [
@@ -157,34 +221,17 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
157
221
  metersToFeet(split === null || split === void 0 ? void 0 : split.totalAscent),
158
222
  ]), "Total Feet Per Session", {
159
223
  height: 10,
160
- width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * 10,
224
+ width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * CHART_WIDTH_PER_DATA_POINT,
161
225
  barChart: true,
162
226
  formatter: (value, { axis }) => { var _a, _b; return axis === "y" ? value : (_b = (_a = activeIndoorSplits[value]) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0]; },
163
227
  });
164
- const totalFeetByMonthYear = activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.reduce((acc, split) => {
165
- var _a, _b;
166
- const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
167
- const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
168
- acc[`${year}-${month}`] =
169
- (acc[`${year}-${month}`] || 0) + metersToFeet(split === null || split === void 0 ? void 0 : split.totalAscent);
170
- return acc;
171
- }, {});
172
- generateChart(Object.keys(totalFeetByMonthYear).map((month, index) => [
173
- index,
174
- totalFeetByMonthYear[month],
175
- ]), "Total Route Feet By Month", {
176
- height: 20,
177
- width: YEAR_WIDTH,
178
- barChart: true,
179
- formatter: (value, { axis }) => axis === "y" ? value : Object.keys(totalFeetByMonthYear)[value],
180
- });
181
228
  generateChart(activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.map((split, index) => [
182
229
  index,
183
230
  Math.round((split === null || split === void 0 ? void 0 : split.duration) / 60),
184
231
  ]), "Active Minutes Per Session", {
185
232
  height: 20,
186
233
  barChart: true,
187
- width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * 10,
234
+ width: (activeIndoorSplits === null || activeIndoorSplits === void 0 ? void 0 : activeIndoorSplits.length) * CHART_WIDTH_PER_DATA_POINT,
188
235
  formatter: (value, { axis }) => { var _a, _b; return axis === "y" ? value : (_b = (_a = activeIndoorSplits[value]) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0]; },
189
236
  });
190
237
  console.log("\n\nBouldering===============================");
@@ -196,7 +243,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
196
243
  ];
197
244
  }), "Max Grade Per Session Bouldering", {
198
245
  height: 10,
199
- width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * 10,
246
+ width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * CHART_WIDTH_PER_DATA_POINT,
200
247
  formatter: (value, { axis }) => {
201
248
  var _a, _b;
202
249
  return axis === "y"
@@ -210,7 +257,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
210
257
  ]), "Number of Climbs per session", {
211
258
  height: 10,
212
259
  barChart: true,
213
- width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * 10,
260
+ width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * CHART_WIDTH_PER_DATA_POINT,
214
261
  formatter: (value, { axis }) => {
215
262
  var _a, _b;
216
263
  return axis === "y"
@@ -224,7 +271,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
224
271
  ]), "Active Minutes Bouldering Per Session", {
225
272
  height: 10,
226
273
  barChart: true,
227
- width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * 10,
274
+ width: (activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.length) * CHART_WIDTH_PER_DATA_POINT,
228
275
  formatter: (value, { axis }) => {
229
276
  var _a, _b;
230
277
  return axis === "y"
@@ -232,40 +279,7 @@ const parse = () => __awaiter(void 0, void 0, void 0, function* () {
232
279
  : (_b = (_a = activeBoulderingSplits[value]) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0];
233
280
  },
234
281
  });
235
- // each boulder is ~8 feet
236
- const totalFeetByMonthYearBouldering = activeBoulderingSplits === null || activeBoulderingSplits === void 0 ? void 0 : activeBoulderingSplits.reduce((acc, split) => {
237
- var _a, _b;
238
- const month = (_a = split === null || split === void 0 ? void 0 : split.start) === null || _a === void 0 ? void 0 : _a.split(" ")[0].split("-")[1];
239
- const year = (_b = split === null || split === void 0 ? void 0 : split.start) === null || _b === void 0 ? void 0 : _b.split(" ")[0].split("-")[0];
240
- acc[`${year}-${month}`] =
241
- (acc[`${year}-${month}`] || 0) + (split === null || split === void 0 ? void 0 : split.noOfSplits) * 8;
242
- return acc;
243
- }, {});
244
- generateChart(Object.keys(totalFeetByMonthYearBouldering).map((month, index) => [
245
- index,
246
- totalFeetByMonthYearBouldering[month],
247
- ]), "Approx Boulder Feet By Month", {
248
- height: 20,
249
- width: YEAR_WIDTH,
250
- barChart: true,
251
- formatter: (value, { axis }) => axis === "y"
252
- ? value
253
- : Object.keys(totalFeetByMonthYearBouldering)[value],
254
- });
255
- const totalFeetByMonthYearCombined = Object.keys(totalFeetByMonthYear).reduce((acc, key) => {
256
- acc[key] =
257
- totalFeetByMonthYear[key] + (totalFeetByMonthYearBouldering[key] || 0);
258
- return acc;
259
- }, {});
260
- generateChart(Object.keys(totalFeetByMonthYearCombined).map((month, index) => [
261
- index,
262
- totalFeetByMonthYearCombined[month],
263
- ]), "Total Feet By Month Combined", {
264
- height: 20,
265
- width: YEAR_WIDTH,
266
- barChart: true,
267
- formatter: (value, { axis }) => axis === "y" ? value : Object.keys(totalFeetByMonthYearCombined)[value],
268
- });
282
+ console.log("```");
269
283
  });
270
284
  exports.parse = parse;
271
285
  //# 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "garminclimb",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/index.ts CHANGED
@@ -23,7 +23,6 @@ program
23
23
  .command("charts")
24
24
  .description("Parse activities from Garmin Connect")
25
25
  .action(() => {
26
- console.log("Parsing activities...");
27
26
  parse();
28
27
  });
29
28
 
package/src/parse.ts CHANGED
@@ -5,6 +5,7 @@ type YDSGradeMap = { [key: string]: number };
5
5
  import { garminDataFolder } from ".";
6
6
 
7
7
  const YEAR_WIDTH = 12 * 10;
8
+ const CHART_WIDTH_PER_DATA_POINT = 12;
8
9
 
9
10
  const YDS_GRADE_MAP: YDSGradeMap = {
10
11
  _5_6: 0,
@@ -75,7 +76,7 @@ const numberToGrade = (number: number): string => {
75
76
  export const parse = async () => {
76
77
  const indoorClimbingActivities = JSON.parse(
77
78
  fs.readFileSync(`${garminDataFolder}/indoorClimbingActivities.json`, "utf8")
78
- );
79
+ )?.reverse();
79
80
 
80
81
  const activeIndoorSplits = indoorClimbingActivities.map((activity: any) =>
81
82
  activity?.splitSummaries?.[0]?.splitType === "CLIMB_ACTIVE"
@@ -85,10 +86,9 @@ export const parse = async () => {
85
86
 
86
87
  const boulderingActivities = JSON.parse(
87
88
  fs.readFileSync(`${garminDataFolder}/boulderingActivities.json`, "utf8")
88
- );
89
+ )?.reverse();
89
90
 
90
91
  const activeBoulderingSplits = boulderingActivities
91
- ?.reverse()
92
92
  .map((activity: any) =>
93
93
  activity?.splitSummaries?.[0]?.splitType === "CLIMB_ACTIVE"
94
94
  ? { ...activity?.splitSummaries?.[0], start: activity?.startTimeLocal }
@@ -103,16 +103,98 @@ export const parse = async () => {
103
103
  console.log(plot(data, options));
104
104
  };
105
105
 
106
+ console.log("```");
107
+
108
+ const totalFeetByMonthYear = activeIndoorSplits
109
+ // ?.reverse()
110
+ ?.reduce((acc: any, split: any) => {
111
+ const month = split?.start?.split(" ")[0].split("-")[1];
112
+ const year = split?.start?.split(" ")[0].split("-")[0];
113
+ acc[`${year}-${month}`] =
114
+ (acc[`${year}-${month}`] || 0) + metersToFeet(split?.totalAscent);
115
+ return acc;
116
+ }, {});
117
+
118
+ generateChart(
119
+ Object.keys(totalFeetByMonthYear).map((month: string, index) => [
120
+ index,
121
+ totalFeetByMonthYear[month],
122
+ ]),
123
+ "Total Route Feet By Month",
124
+ {
125
+ height: 20,
126
+ width: YEAR_WIDTH,
127
+ barChart: true,
128
+ formatter: (value: number, { axis }: any) =>
129
+ axis === "y" ? value : Object.keys(totalFeetByMonthYear)[value],
130
+ }
131
+ );
132
+
133
+ // each boulder is ~8 feet
134
+ const totalFeetByMonthYearBouldering = activeBoulderingSplits
135
+ // ?.reverse()
136
+ ?.reduce((acc: any, split: any) => {
137
+ const month = split?.start?.split(" ")[0].split("-")[1];
138
+ const year = split?.start?.split(" ")[0].split("-")[0];
139
+ acc[`${year}-${month}`] =
140
+ (acc[`${year}-${month}`] || 0) + split?.noOfSplits * 8;
141
+ return acc;
142
+ }, {});
143
+
144
+ generateChart(
145
+ Object.keys(totalFeetByMonthYearBouldering).map((month: string, index) => [
146
+ index,
147
+ totalFeetByMonthYearBouldering[month],
148
+ ]),
149
+ "Approx Boulder Feet By Month",
150
+ {
151
+ height: 20,
152
+ width: YEAR_WIDTH,
153
+ barChart: true,
154
+ formatter: (value: number, { axis }: any) =>
155
+ axis === "y"
156
+ ? value
157
+ : Object.keys(totalFeetByMonthYearBouldering)[value],
158
+ }
159
+ );
160
+
161
+ const totalFeetByMonthYearCombined = Object.keys(totalFeetByMonthYear).reduce(
162
+ (acc: any, key: string) => {
163
+ acc[key] =
164
+ totalFeetByMonthYear[key] + (totalFeetByMonthYearBouldering[key] || 0);
165
+ return acc;
166
+ },
167
+ {}
168
+ );
169
+ generateChart(
170
+ Object.keys(totalFeetByMonthYearCombined).map((month: string, index) => [
171
+ index,
172
+ totalFeetByMonthYearCombined[month],
173
+ ]),
174
+ "Total Feet By Month Combined",
175
+ {
176
+ height: 20,
177
+ width: YEAR_WIDTH,
178
+ barChart: true,
179
+ formatter: (value: number, { axis }: any) =>
180
+ axis === "y" ? value : Object.keys(totalFeetByMonthYearCombined)[value],
181
+ }
182
+ );
183
+
184
+ console.log("```");
185
+
186
+ console.log("```");
187
+
106
188
  generateChart(
107
189
  activeIndoorSplits
108
- ?.reverse()
190
+ // ?.reverse()
109
191
  .map((split: any, index: number) => [
110
192
  index,
111
193
  YDS_GRADE_MAP?.[split?.maxGradeValue?.valueKey],
112
194
  ]),
113
195
  "Max Grade Per Session Indoor Climbing",
114
196
  {
115
- width: activeIndoorSplits?.length * 10,
197
+ width: activeIndoorSplits?.length * CHART_WIDTH_PER_DATA_POINT,
116
198
  formatter: (value: number, { axis }: any) =>
117
199
  axis === "y"
118
200
  ? `${numberToGrade(value)}`
@@ -128,7 +210,7 @@ export const parse = async () => {
128
210
  "Number of Sends per session",
129
211
  {
130
212
  height: 20,
131
- width: activeIndoorSplits?.length * 10,
213
+ width: activeIndoorSplits?.length * CHART_WIDTH_PER_DATA_POINT,
132
214
  formatter: (value: number, { axis }: any) =>
133
215
  axis === "y" ? value : activeIndoorSplits[value]?.start?.split(" ")[0],
134
216
  }
@@ -142,39 +224,13 @@ export const parse = async () => {
142
224
  "Total Feet Per Session",
143
225
  {
144
226
  height: 10,
145
- width: activeIndoorSplits?.length * 10,
227
+ width: activeIndoorSplits?.length * CHART_WIDTH_PER_DATA_POINT,
146
228
  barChart: true,
147
229
  formatter: (value: number, { axis }: any) =>
148
230
  axis === "y" ? value : activeIndoorSplits[value]?.start?.split(" ")[0],
149
231
  }
150
232
  );
151
233
 
152
- const totalFeetByMonthYear = activeIndoorSplits?.reduce(
153
- (acc: any, split: any) => {
154
- const month = split?.start?.split(" ")[0].split("-")[1];
155
- const year = split?.start?.split(" ")[0].split("-")[0];
156
- acc[`${year}-${month}`] =
157
- (acc[`${year}-${month}`] || 0) + metersToFeet(split?.totalAscent);
158
- return acc;
159
- },
160
- {}
161
- );
162
-
163
- generateChart(
164
- Object.keys(totalFeetByMonthYear).map((month: string, index) => [
165
- index,
166
- totalFeetByMonthYear[month],
167
- ]),
168
- "Total Route Feet By Month",
169
- {
170
- height: 20,
171
- width: YEAR_WIDTH,
172
- barChart: true,
173
- formatter: (value: number, { axis }: any) =>
174
- axis === "y" ? value : Object.keys(totalFeetByMonthYear)[value],
175
- }
176
- );
177
-
178
234
  generateChart(
179
235
  activeIndoorSplits?.map((split: any, index: number) => [
180
236
  index,
@@ -184,7 +240,7 @@ export const parse = async () => {
184
240
  {
185
241
  height: 20,
186
242
  barChart: true,
187
- width: activeIndoorSplits?.length * 10,
243
+ width: activeIndoorSplits?.length * CHART_WIDTH_PER_DATA_POINT,
188
244
  formatter: (value: number, { axis }: any) =>
189
245
  axis === "y" ? value : activeIndoorSplits[value]?.start?.split(" ")[0],
190
246
  }
@@ -199,7 +255,7 @@ export const parse = async () => {
199
255
  "Max Grade Per Session Bouldering",
200
256
  {
201
257
  height: 10,
202
- width: activeBoulderingSplits?.length * 10,
258
+ width: activeBoulderingSplits?.length * CHART_WIDTH_PER_DATA_POINT,
203
259
  formatter: (value: number, { axis }: any) =>
204
260
  axis === "y"
205
261
  ? `V${value}`
@@ -216,7 +272,7 @@ export const parse = async () => {
216
272
  {
217
273
  height: 10,
218
274
  barChart: true,
219
- width: activeBoulderingSplits?.length * 10,
275
+ width: activeBoulderingSplits?.length * CHART_WIDTH_PER_DATA_POINT,
220
276
  formatter: (value: number, { axis }: any) =>
221
277
  axis === "y"
222
278
  ? value
@@ -233,7 +289,7 @@ export const parse = async () => {
233
289
  {
234
290
  height: 10,
235
291
  barChart: true,
236
- width: activeBoulderingSplits?.length * 10,
292
+ width: activeBoulderingSplits?.length * CHART_WIDTH_PER_DATA_POINT,
237
293
  formatter: (value: number, { axis }: any) =>
238
294
  axis === "y"
239
295
  ? value
@@ -241,55 +297,5 @@ export const parse = async () => {
241
297
  }
242
298
  );
243
299
 
244
- // each boulder is ~8 feet
245
- const totalFeetByMonthYearBouldering = activeBoulderingSplits?.reduce(
246
- (acc: any, split: any) => {
247
- const month = split?.start?.split(" ")[0].split("-")[1];
248
- const year = split?.start?.split(" ")[0].split("-")[0];
249
- acc[`${year}-${month}`] =
250
- (acc[`${year}-${month}`] || 0) + split?.noOfSplits * 8;
251
- return acc;
252
- },
253
- {}
254
- );
255
-
256
- generateChart(
257
- Object.keys(totalFeetByMonthYearBouldering).map((month: string, index) => [
258
- index,
259
- totalFeetByMonthYearBouldering[month],
260
- ]),
261
- "Approx Boulder Feet By Month",
262
- {
263
- height: 20,
264
- width: YEAR_WIDTH,
265
- barChart: true,
266
- formatter: (value: number, { axis }: any) =>
267
- axis === "y"
268
- ? value
269
- : Object.keys(totalFeetByMonthYearBouldering)[value],
270
- }
271
- );
272
-
273
- const totalFeetByMonthYearCombined = Object.keys(totalFeetByMonthYear).reduce(
274
- (acc: any, key: string) => {
275
- acc[key] =
276
- totalFeetByMonthYear[key] + (totalFeetByMonthYearBouldering[key] || 0);
277
- return acc;
278
- },
279
- {}
280
- );
281
- generateChart(
282
- Object.keys(totalFeetByMonthYearCombined).map((month: string, index) => [
283
- index,
284
- totalFeetByMonthYearCombined[month],
285
- ]),
286
- "Total Feet By Month Combined",
287
- {
288
- height: 20,
289
- width: YEAR_WIDTH,
290
- barChart: true,
291
- formatter: (value: number, { axis }: any) =>
292
- axis === "y" ? value : Object.keys(totalFeetByMonthYearCombined)[value],
293
- }
294
- );
300
+ console.log("```");
295
301
  };