[Pharo] Personal fitness tracker web app.
Update core components.
Changed files
- src/MyFitnessTracker-Core/MFTEquipment.class.st
- src/MyFitnessTracker-Core/MFTMuscle.class.st
- src/MyFitnessTracker-Core/MFTMuscleGroup.class.st
- src/MyFitnessTracker-Core/MFTRoutine.class.st
- src/MyFitnessTracker-Core/MFTSet.class.st
- src/MyFitnessTracker-Core/MFTTrainee.class.st
- src/MyFitnessTracker-Core/MFTWorkout.class.st
src/MyFitnessTracker-Core/MFTEquipment.class.st
@@ -18,7 +18,7 @@
18
18
]
19
19
20
20
{ #category : 'as yet unclassified' }
21
Removed:
MFTEquipment class >> dumbell [
21
Added:
MFTEquipment class >> dumbbell [
22
22
23
23
^ self newWithEnglishName
24
24
]
src/MyFitnessTracker-Core/MFTMuscle.class.st
@@ -181,11 +181,13 @@
181
181
182
182
{ #category : 'instance creation' }
183
183
MFTMuscle class >> newWithLatinName [
184
Removed:
"I return a MFTMuscle instance for which latinName is set to the calling method selector."
184
Added:
"I return a MFTMuscle instance for which latinName is set to the calling method selector, as a space-separated string."
185
185
186
Removed:
^ self new
187
Removed:
latinName: thisContext sender selector;
188
Removed:
yourself
186
Added:
| latinNameFromSender |
187
Added:
latinNameFromSender := (thisContext sender selector splitCamelCase
188
Added:
collect: #asLowercase) joinUsing:
189
Added:
Character space.
190
Added:
^ self new latinName: latinNameFromSender
189
191
]
190
192
191
193
{ #category : 'as yet unclassified' }
src/MyFitnessTracker-Core/MFTMuscleGroup.class.st
@@ -17,7 +17,6 @@
17
17
MFTMuscleGroup class >> abdominal [
18
18
19
19
^ self newWithEnglishName
20
Removed:
description: 'The abdominal muscles constitute the core.';
21
20
muscles: {
22
21
MFTMuscle rectusAbdominis.
23
22
MFTMuscle obliquusExternusAbdominis.
src/MyFitnessTracker-Core/MFTRoutine.class.st
@@ -5,8 +5,8 @@
5
5
#name : 'MFTRoutine',
6
6
#superclass : 'MFTObject',
7
7
#instVars : [
8
Removed:
'routine',
9
Removed:
'trainee'
8
Added:
'trainee',
9
Added:
'cycle'
10
10
],
11
11
#category : 'MyFitnessTracker-Core',
12
12
#package : 'MyFitnessTracker-Core'
@@ -16,13 +16,12 @@
16
16
MFTRoutine class >> heavyDutyOneIdealRoutine [
17
17
18
18
^ self new
19
Removed:
routine: {
20
Removed:
MFTWorkout heavyDutyOneDay1.
21
Removed:
(MFTRest duration: 4 days).
22
Removed:
MFTWorkout heavyDutyOneDay2.
23
Removed:
(MFTRest duration: 4 days).
24
Removed:
MFTWorkout heavyDutyOneDay3.
25
Removed:
(MFTRest duration: 4 days) };
19
Added:
addWorkout: MFTWorkout heavyDutyOneDay1;
20
Added:
addRest: (MFTRest duration: 4 days);
21
Added:
addWorkout: MFTWorkout heavyDutyOneDay2;
22
Added:
addRest: (MFTRest duration: 4 days);
23
Added:
addWorkout: MFTWorkout heavyDutyOneDay3;
24
Added:
addRest: (MFTRest duration: 4 days);
26
25
yourself
27
26
]
28
27
@@ -38,16 +37,21 @@
38
37
]
39
38
40
39
{ #category : 'adding' }
40
Added:
MFTRoutine >> addRest: aMFTRest [
41
Added:
42
Added:
cycle addLast: aMFTRest
43
Added:
]
44
Added:
45
Added:
{ #category : 'as yet unclassified' }
41
46
MFTRoutine >> addWorkout: aMFTWorkout [
42
47
43
Removed:
routine addLast: aMFTWorkout.
44
Removed:
aMFTWorkout routine: self
48
Added:
cycle addLast: aMFTWorkout
45
49
]
46
50
47
51
{ #category : 'adding' }
48
52
MFTRoutine >> addWorkouts: aMFTWorkoutCollection [
49
53
50
Removed:
routine addAll: aMFTWorkoutCollection.
54
Added:
cycle addAll: aMFTWorkoutCollection.
51
55
aMFTWorkoutCollection do: [ :workout | workout routine: self ]
52
56
]
53
57
@@ -64,10 +68,17 @@
64
68
]
65
69
66
70
{ #category : 'accessing' }
71
Added:
MFTRoutine >> cycleDuration [
72
Added:
"I add workout days and rest days."
73
Added:
74
Added:
^ self workouts size days + self totalRestDuration
75
Added:
]
76
Added:
77
Added:
{ #category : 'accessing' }
67
78
MFTRoutine >> initialize [
68
79
69
80
super initialize.
70
Removed:
routine := OrderedCollection new
81
Added:
cycle := OrderedCollection new
71
82
]
72
83
73
84
{ #category : 'as yet unclassified' }
@@ -85,13 +96,15 @@
85
96
{ #category : 'accessing' }
86
97
MFTRoutine >> routine [
87
98
88
Removed:
^ routine
99
Added:
^ cycle
89
100
]
90
101
91
102
{ #category : 'accessing' }
92
Removed:
MFTRoutine >> routine: aMFTWorkoutAndRestCollection [
103
Added:
MFTRoutine >> totalRestDuration [
93
104
94
Removed:
routine := aMFTWorkoutAndRestCollection
105
Added:
^ (cycle
106
Added:
select: [ :each | each class = MFTRest ]
107
Added:
thenCollect: #duration) sum
95
108
]
96
109
97
110
{ #category : 'accessing' }
src/MyFitnessTracker-Core/MFTSet.class.st
@@ -14,6 +14,14 @@
14
14
#package : 'MyFitnessTracker-Core'
15
15
}
16
16
17
Added:
{ #category : 'accessing' }
18
Added:
MFTSet class >> exercise: aMFTExercise [
19
Added:
20
Added:
^ self new
21
Added:
exercise: aMFTExercise;
22
Added:
yourself
23
Added:
]
24
Added:
17
25
{ #category : 'as yet unclassified' }
18
26
MFTSet class >> exercise: aMFTExercise reps: anInteger load: aNumber [
19
27
src/MyFitnessTracker-Core/MFTTrainee.class.st
@@ -5,7 +5,7 @@
5
5
#name : 'MFTTrainee',
6
6
#superclass : 'MFTObject',
7
7
#instVars : [
8
Removed:
'workoutPlan'
8
Added:
'routine'
9
9
],
10
10
#category : 'MyFitnessTracker-Core',
11
11
#package : 'MyFitnessTracker-Core'
@@ -15,7 +15,7 @@
15
15
MFTTrainee class >> newDefault [
16
16
17
17
^ self new
18
Removed:
workoutPlan: MFTWorkoutPlan placeholder;
18
Added:
routine: MFTRoutine heavyDutyOneIdealRoutine;
19
19
yourself
20
20
]
21
21
@@ -29,17 +29,17 @@
29
29
MFTTrainee >> initialize [
30
30
31
31
super initialize.
32
Removed:
workoutPlan := MFTWorkoutPlan new
32
Added:
routine := MFTRoutine new
33
33
]
34
34
35
35
{ #category : 'accessing' }
36
Removed:
MFTTrainee >> workoutPlan [
36
Added:
MFTTrainee >> routine [
37
37
38
Removed:
^ workoutPlan
38
Added:
^ routine
39
39
]
40
40
41
41
{ #category : 'accessing' }
42
Removed:
MFTTrainee >> workoutPlan: aMFTWorkoutPlan [
42
Added:
MFTTrainee >> routine: anObject [
43
43
44
Removed:
workoutPlan := aMFTWorkoutPlan
44
Added:
routine := anObject
45
45
]
src/MyFitnessTracker-Core/MFTWorkout.class.st
@@ -5,12 +5,12 @@
5
5
#name : 'MFTWorkout',
6
6
#superclass : 'MFTObject',
7
7
#instVars : [
8
Removed:
'plan',
9
8
'trainee',
10
9
'setGroups',
11
10
'planned',
12
11
'started',
13
Removed:
'completed'
12
Added:
'completed',
13
Added:
'routine'
14
14
],
15
15
#category : 'MyFitnessTracker-Core',
16
16
#package : 'MyFitnessTracker-Core'
@@ -33,10 +33,27 @@
33
33
34
34
{ #category : 'heavyDutyOne' }
35
35
MFTWorkout class >> heavyDutyOneDay2 [
36
Added:
37
Added:
^ self new
38
Added:
addSetGroup: (MFTSetGroup withSets: {
39
Added:
(MFTSet exercise: MFTExercise latPullover).
40
Added:
(MFTSet exercise: MFTExercise closeGripPalmsUpPulldown) });
41
Added:
addSet: (MFTSet exercise: MFTExercise bentOverBarbellRows);
42
Added:
addSet: (MFTSet exercise: MFTExercise shrug);
43
Added:
addSet: (MFTSet exercise: MFTExercise hyperextension);
44
Added:
addSet: (MFTSet exercise: MFTExercise bicepCurl)
36
45
]
37
46
38
47
{ #category : 'heavyDutyOne' }
39
48
MFTWorkout class >> heavyDutyOneDay3 [
49
Added:
50
Added:
^ self new
51
Added:
addSetGroup: (MFTSetGroup withSets: {
52
Added:
(MFTSet exercise: MFTExercise legExtension).
53
Added:
(MFTSet exercise: MFTExercise squat) });
54
Added:
addSet: (MFTSet exercise: MFTExercise legCurl);
55
Added:
addSet: (MFTSet exercise: MFTExercise calfRaise);
56
Added:
addSet: (MFTSet exercise: MFTExercise sitUp)
40
57
]
41
58
42
59
{ #category : 'placeholders' }
@@ -102,6 +119,13 @@
102
119
]
103
120
104
121
{ #category : 'adding' }
122
Added:
MFTWorkout >> addSet: aMFTSet [
123
Added:
"Automatically wrap MFTSet in a MFTSetGroup."
124
Added:
125
Added:
setGroups addLast: (MFTSetGroup withSet: aMFTSet)
126
Added:
]
127
Added:
128
Added:
{ #category : 'adding' }
105
129
MFTWorkout >> addSetGroup: aMFTSetGroup [
106
130
107
131
setGroups addLast: aMFTSetGroup
@@ -115,10 +139,8 @@
115
139
116
140
{ #category : 'adding' }
117
141
MFTWorkout >> addSets: aMFTSetCollection [
118
Removed:
"Automatically wrap each MFTSet in a MFTSetGroup."
119
142
120
Removed:
aMFTSetCollection do: [ :set |
121
Removed:
setGroups addLast: (MFTSetGroup withSet: set) ]
143
Added:
aMFTSetCollection do: [ :set | self addSet: set ]
122
144
]
123
145
124
146
{ #category : 'testing' }
@@ -198,27 +220,27 @@
198
220
]
199
221
200
222
{ #category : 'accessing' }
201
Removed:
MFTWorkout >> plan [
223
Added:
MFTWorkout >> planned [
202
224
203
Removed:
^ plan
225
Added:
^ planned
204
226
]
205
227
206
228
{ #category : 'accessing' }
207
Removed:
MFTWorkout >> plan: aMFTWorkoutPlan [
229
Added:
MFTWorkout >> planned: aDateAndTime [
208
230
209
Removed:
plan := aMFTWorkoutPlan
231
Added:
planned := aDateAndTime
210
232
]
211
233
212
234
{ #category : 'accessing' }
213
Removed:
MFTWorkout >> planned [
235
Added:
MFTWorkout >> routine [
214
236
215
Removed:
^ planned
237
Added:
^ routine
216
238
]
217
239
218
240
{ #category : 'accessing' }
219
Removed:
MFTWorkout >> planned: aDateAndTime [
241
Added:
MFTWorkout >> routine: aMFTWorkoutPlan [
220
242
221
Removed:
planned := aDateAndTime
243
Added:
routine := aMFTWorkoutPlan
222
244
]
223
245
224
246
{ #category : 'accessing' }
@@ -265,9 +287,10 @@
265
287
{ #category : 'accessing' }
266
288
MFTWorkout >> status [
267
289
268
Removed:
self isCompleted ifTrue: [ ^ 'completed ' , completed asString ].
269
Removed:
self isLive ifTrue: [ ^ 'started ' , started asString ].
270
Removed:
self isPlanned ifTrue: [ ^ 'planned ' , planned asString ].
290
Added:
self isCompleted ifTrue: [
291
Added:
^ 'completed ' , completed asDate asString ].
292
Added:
self isLive ifTrue: [ ^ 'started ' , started asDate asString ].
293
Added:
self isPlanned ifTrue: [ ^ 'planned ' , planned asDate asString ].
271
294
^ 'no status'
272
295
]
273
296