[Pharo] Personal fitness tracker web app.
Added canonicalName attribute to muscles and exercises, for easier deserialization from database.
Changed files
src/MyFitnessTracker/MFTExercise.class.st
@@ -34,6 +34,7 @@
34
34
#name : #MFTExercise,
35
35
#superclass : #Object,
36
36
#instVars : [
37
Added:
'canonicalName',
37
38
'englishName',
38
39
'sets',
39
40
'primaryMuscle',
@@ -153,15 +154,26 @@
153
154
MFTExercise class >> newWithEnglishName [
154
155
"I return a MFTExercise instance for which englishName is set to the calling method selector, as a space-separated string."
155
156
156
Removed:
| exerciseNameFromSender |
157
Added:
| senderSelector exerciseNameFromSender |
158
Added:
senderSelector := thisContext sender selector.
157
159
exerciseNameFromSender := (thisContext sender selector splitCamelCase
158
160
collect: #asLowercase) joinUsing:
159
161
Character space.
160
162
^ self new
163
Added:
canonicalName: senderSelector;
161
164
englishName: exerciseNameFromSender;
162
165
yourself
163
166
]
164
167
168
Added:
{ #category : #exercise }
169
Added:
MFTExercise class >> pullUp [
170
Added:
171
Added:
^ self newWithEnglishName
172
Added:
primaryMuscle: MFTMuscleGroup back;
173
Added:
secondaryMuscles: { MFTMuscle bicepsBrachii };
174
Added:
yourself
175
Added:
]
176
Added:
165
177
{ #category : #'instance creation' }
166
178
MFTExercise class >> sets: aMFTSetCollection [
167
179
@@ -173,7 +185,7 @@
173
185
{ #category : #exercise }
174
186
MFTExercise class >> shoulderPressDumbell [
175
187
176
Removed:
^ self new
188
Added:
^ self newWithEnglishName
177
189
englishName: 'shoulder press (dumbell)';
178
190
primaryMuscle: MFTMuscle deltoidAnterior;
179
191
secondaryMuscles: { MFTMuscle deltoidMedial };
@@ -212,6 +224,18 @@
212
224
]
213
225
214
226
{ #category : #accessing }
227
Added:
MFTExercise >> canonicalName [
228
Added:
229
Added:
^ canonicalName
230
Added:
]
231
Added:
232
Added:
{ #category : #accessing }
233
Added:
MFTExercise >> canonicalName: anObject [
234
Added:
235
Added:
canonicalName := anObject
236
Added:
]
237
Added:
238
Added:
{ #category : #accessing }
215
239
MFTExercise >> englishName [
216
240
217
241
^ englishName
@@ -227,6 +251,7 @@
227
251
MFTExercise >> initialize [
228
252
229
253
super initialize.
254
Added:
canonicalName := String new.
230
255
englishName := String new.
231
256
sets := OrderedCollection new.
232
257
primaryMuscle := MFTMuscleGroup new.
@@ -270,9 +295,9 @@
270
295
]
271
296
272
297
{ #category : #accessing }
273
Removed:
MFTExercise >> sets: anOrderedCollection [
298
Added:
MFTExercise >> sets: aMFTSetCollection [
274
299
275
Removed:
sets := anOrderedCollection
300
Added:
sets := aMFTSetCollection asOrderedCollection
276
301
]
277
302
278
303
{ #category : #'as yet unclassified' }
src/MyFitnessTracker/MFTMuscle.class.st
@@ -2,6 +2,7 @@
2
2
#name : #MFTMuscle,
3
3
#superclass : #Object,
4
4
#instVars : [
5
Added:
'canonicalName',
5
6
'latinName',
6
7
'englishName',
7
8
'description'
@@ -176,13 +177,16 @@
176
177
177
178
{ #category : #'instance creation' }
178
179
MFTMuscle class >> newWithLatinName [
179
Removed:
"I return a MFTMuscle instance for which latinName is set to the calling method selector, as a space-separated string."
180
Added:
"I return a MFTMuscle instance for which latinName is set to the calling method selector, as a space-separated string.
181
Added:
182
Added:
canonicalName stores the name of the calling method; this way, we can reliably create MFTMuscle instances."
180
183
181
Removed:
| muscleNameFromSender |
182
Removed:
muscleNameFromSender := (thisContext sender selector splitCamelCase
183
Removed:
collect: #asLowercase) joinUsing:
184
Removed:
Character space.
184
Added:
| senderSelector muscleNameFromSender |
185
Added:
senderSelector := thisContext sender selector.
186
Added:
muscleNameFromSender := (senderSelector splitCamelCase collect:
187
Added:
#asLowercase) joinUsing: Character space.
185
188
^ self new
189
Added:
canonicalName: senderSelector;
186
190
latinName: muscleNameFromSender;
187
191
yourself
188
192
]
@@ -294,6 +298,18 @@
294
298
]
295
299
296
300
{ #category : #accessing }
301
Added:
MFTMuscle >> canonicalName [
302
Added:
303
Added:
^ canonicalName
304
Added:
]
305
Added:
306
Added:
{ #category : #accessing }
307
Added:
MFTMuscle >> canonicalName: anObject [
308
Added:
309
Added:
canonicalName := anObject
310
Added:
]
311
Added:
312
Added:
{ #category : #accessing }
297
313
MFTMuscle >> description [
298
314
299
315
^ description
@@ -321,6 +337,7 @@
321
337
MFTMuscle >> initialize [
322
338
323
339
super initialize.
340
Added:
canonicalName := String new.
324
341
latinName := String new.
325
342
englishName := String new.
326
343
description := String new
src/MyFitnessTracker/MFTMuscleGroup.class.st
@@ -2,6 +2,7 @@
2
2
#name : #MFTMuscleGroup,
3
3
#superclass : #SBSComponent,
4
4
#instVars : [
5
Added:
'canonicalName',
5
6
'englishName',
6
7
'latinName',
7
8
'description',
@@ -105,8 +106,11 @@
105
106
MFTMuscleGroup class >> newWithEnglishName [
106
107
"I return a MFTMuscle Group instance for which englishName is set to the calling method selector."
107
108
109
Added:
| senderSelector |
110
Added:
senderSelector := thisContext sender selector.
108
111
^ self new
109
Removed:
englishName: thisContext sender selector;
112
Added:
canonicalName: senderSelector;
113
Added:
englishName: senderSelector;
110
114
yourself
111
115
]
112
116
@@ -123,6 +127,18 @@
123
127
]
124
128
125
129
{ #category : #accessing }
130
Added:
MFTMuscleGroup >> canonicalName [
131
Added:
132
Added:
^ canonicalName
133
Added:
]
134
Added:
135
Added:
{ #category : #accessing }
136
Added:
MFTMuscleGroup >> canonicalName: anObject [
137
Added:
138
Added:
canonicalName := anObject
139
Added:
]
140
Added:
141
Added:
{ #category : #accessing }
126
142
MFTMuscleGroup >> description [
127
143
128
144
^ description
@@ -150,6 +166,7 @@
150
166
MFTMuscleGroup >> initialize [
151
167
152
168
super initialize.
169
Added:
canonicalName := String new.
153
170
englishName := String new.
154
171
description := String new.
155
172
muscles := OrderedCollection new