[Pharo] Personal fitness tracker web app.
Normalized database access methods + made workout tables even more pretty!
Changed files
src/MyFitnessTracker/MFTExercise.class.st
@@ -277,6 +277,13 @@
277
277
]
278
278
279
279
{ #category : #accessing }
280
Added:
MFTExercise >> primaryMuscleGroup [
281
Added:
282
Added:
^ MFTSQLite3Database allMuscleGroups detect: [ :group |
283
Added:
group id = primaryMuscleGroupId ]
284
Added:
]
285
Added:
286
Added:
{ #category : #accessing }
280
287
MFTExercise >> primaryMuscleGroupId [
281
288
282
289
^ primaryMuscleGroupId
src/MyFitnessTracker/MFTSQLite3Database.class.st
@@ -270,11 +270,8 @@
270
270
MFTSQLite3Database >> deleteWeight: aMFTWeight [
271
271
272
272
connection
273
Removed:
execute: 'DELETE
274
Removed:
FROM Weights
275
Removed:
WHERE user_id = ?
276
Removed:
AND date = ?
277
Removed:
AND value = ?'
273
Added:
execute:
274
Added:
'DELETE FROM Weights WHERE user_id = ? AND date = ? AND value = ?'
278
275
with: {
279
276
user id.
280
277
aMFTWeight date yyyymmdd.
@@ -286,10 +283,7 @@
286
283
287
284
self deleteSets: aMFTWorkout sets.
288
285
connection
289
Removed:
execute: 'DELETE
290
Removed:
FROM Workouts
291
Removed:
WHERE user_id = ?
292
Removed:
AND date = ?'
286
Added:
execute: 'DELETE FROM Workouts WHERE user_id = ? AND date = ?'
293
287
with: {
294
288
user id.
295
289
aMFTWorkout date yyyymmdd }
@@ -326,14 +320,14 @@
326
320
]
327
321
328
322
{ #category : #'as yet unclassified' }
329
Removed:
MFTSQLite3Database >> insertSet: aMFTSet forWorkoutId: workoutId [
323
Added:
MFTSQLite3Database >> insertSet: aMFTSet forWorkout: aMFTWorkout [
330
324
331
325
connection
332
326
execute:
333
327
'INSERT INTO Sets ("workout_id","exercise_id", "set_group", "set_number", "reps", "load", "rpe", "rest_after")
334
Removed:
VALUES(?, ?, ?, ?, ?, ?, ?, ?)'
328
Added:
VALUES(?, ?, ?, ?, ?, ?, ?, ?)'
335
329
with: {
336
Removed:
workoutId.
330
Added:
aMFTWorkout id.
337
331
aMFTSet exerciseId.
338
332
aMFTSet number.
339
333
aMFTSet group.
@@ -344,10 +338,10 @@
344
338
]
345
339
346
340
{ #category : #'as yet unclassified' }
347
Removed:
MFTSQLite3Database >> insertSets: aMFTSetCollection forWorkoutId: workoutId [
341
Added:
MFTSQLite3Database >> insertSets: aMFTSetCollection forWorkout: aMFTWorkout [
348
342
349
343
aMFTSetCollection do: [ :set |
350
Removed:
self insertSet: set forWorkoutId: workoutId ]
344
Added:
self insertSet: set forWorkout: aMFTWorkout ]
351
345
]
352
346
353
347
{ #category : #'as yet unclassified' }
@@ -384,7 +378,7 @@
384
378
user id.
385
379
aMFTWorkout date yyyymmdd.
386
380
aMFTWorkout primaryMuscleGroupId }) onlyValue.
387
Removed:
self insertSets: aMFTWorkout sets forWorkoutId: workoutId.
381
Added:
self insertSets: aMFTWorkout sets forWorkout: aMFTWorkout.
388
382
connection commitTransaction
389
383
]
390
384
src/MyFitnessTracker/MFTSetGroup.class.st
@@ -71,12 +71,15 @@
71
71
72
72
self isSuperset ifTrue: [
73
73
| ex1 ex2 |
74
Removed:
ex1 := sets first exercise primaryMuscleGroupId.
75
Removed:
ex2 := sets second exercise primaryMuscleGroupId.
76
Removed:
ex1 = ex2 ifTrue: [ ^ 'agonist superset' ].
74
Added:
ex1 := sets first exercise.
75
Added:
ex2 := sets second exercise.
76
Added:
ex1 primaryMuscleGroupId = ex2 primaryMuscleGroupId ifTrue: [
77
Added:
^ 'agonist superset ({1})' format:
78
Added:
{ ex1 primaryMuscleGroup englishName } ].
77
79
(MFTMuscleGroup antagonistIds includes: {
78
Removed:
ex1.
79
Removed:
ex2 } asSet) ifTrue: [ ^ 'antagonist superset' ].
80
Added:
ex1 primaryMuscleGroupId.
81
Added:
ex2 primaryMuscleGroupId } asSet) ifTrue: [
82
Added:
^ 'antagonist superset' ].
80
83
^ 'superset' ].
81
84
self isTriset ifTrue: [ ^ 'tri-set' ].
82
85
self isGiantset ifTrue: [ ^ 'giant set' ].
src/MyFitnessTracker/MFTSetsDialog.class.st
@@ -17,7 +17,7 @@
17
17
]
18
18
19
19
{ #category : #adding }
20
Removed:
MFTSetsDialog >> addSet [
20
Added:
MFTSetsDialog >> addSets: anInteger [
21
21
22
22
| set setsSize |
23
23
setsSize := sets size + 1.
@@ -52,13 +52,18 @@
52
52
html outlineButton
53
53
bePrimary;
54
54
beSmall;
55
Removed:
callback: [ self addSet ];
55
Added:
callback: [ self addSets: 1 ];
56
56
with: 'Add set'.
57
57
html outlineButton
58
58
beSecondary;
59
59
beSmall;
60
Removed:
callback: [ self addSuperset ];
61
Removed:
with: 'Add superset' ]
60
Added:
callback: [ self addSets: 2 ];
61
Added:
with: 'Add superset'.
62
Added:
html outlineButton
63
Added:
beSecondary;
64
Added:
beSmall;
65
Added:
callback: [ self addSets: 3 ];
66
Added:
with: 'Add tri-set' ]
62
67
]
63
68
64
69
{ #category : #rendering }
src/MyFitnessTracker/MFTWorkout.class.st
@@ -198,7 +198,7 @@
198
198
html tableHeading
199
199
attributeAt: 'rowspan' put: group sets size + 1;
200
200
style: 'vertical-align: middle';
201
Removed:
with: group type capitalized ].
201
Added:
with: [ html text: group type capitalized ] ].
202
202
group sets do: [ :set |
203
203
html tableRow: [
204
204
html tableData: set exercise englishName capitalized.