Clean up and update MFT core.

Commit
a06bb19b2bcad3745b5246772bc70960fea160d3
Author
Marius Peter <marius.peter@tutanota.com>
Author date
Committer
Marius Peter <marius.peter@tutanota.com>
Committer date
Changed files
src/MyFitnessTracker-Core/MFTAthlete.class.st
index aee1095a..00000000 100644..000000
@@ -1,118 +0,0 @@
1 Removed: Class {
2 Removed: #name : 'MFTAthlete',
3 Removed: #superclass : 'Object',
4 Removed: #instVars : [
5 Removed: 'name',
6 Removed: 'nickname',
7 Removed: 'born',
8 Removed: 'died',
9 Removed: 'bio',
10 Removed: 'workouts'
11 Removed: ],
12 Removed: #category : 'MyFitnessTracker-Core',
13 Removed: #package : 'MyFitnessTracker-Core'
14 Removed: }
15 Removed:
16 Removed: { #category : 'as yet unclassified' }
17 Removed: MFTAthlete class >> allAthletes [
18 Removed:
19 Removed: ^ { #'Arnold Alois Schwarzenneger'. #'Michael John Mentzer'.
20 Removed: #'Thomas Steven Platz' }
21 Removed: ]
22 Removed:
23 Removed: { #category : 'accessing' }
24 Removed: MFTAthlete >> bio [
25 Removed:
26 Removed: ^ bio
27 Removed: ]
28 Removed:
29 Removed: { #category : 'accessing' }
30 Removed: MFTAthlete >> born [
31 Removed:
32 Removed: ^ born
33 Removed: ]
34 Removed:
35 Removed: { #category : 'accessing' }
36 Removed: MFTAthlete >> died [
37 Removed:
38 Removed: ^ died
39 Removed: ]
40 Removed:
41 Removed: { #category : 'initialization' }
42 Removed: MFTAthlete >> initialize [
43 Removed:
44 Removed: super initialize.
45 Removed: name := 'John Default'.
46 Removed: nickname := 'Johnny D.'.
47 Removed: born := Date year: 1990 month: 1 day: 1.
48 Removed: died := Date year: 2001 month: 1 day: 1.
49 Removed: bio := 'John Default is still today regarded as one of the most default bodybuilders ever.'
50 Removed: ]
51 Removed:
52 Removed: { #category : 'accessing' }
53 Removed: MFTAthlete >> name [
54 Removed:
55 Removed: ^ name
56 Removed: ]
57 Removed:
58 Removed: { #category : 'accessing' }
59 Removed: MFTAthlete >> nickname [
60 Removed:
61 Removed: ^ nickname
62 Removed: ]
63 Removed:
64 Removed: { #category : 'accessing' }
65 Removed: MFTAthlete >> prizes [
66 Removed:
67 Removed: ^ {
68 Removed: (MFTPrize year: 1989 competition: 'Default Prize' place: 1).
69 Removed: (MFTPrize year: 1988 competition: 'Default Prize' place: 2) }
70 Removed: ]
71 Removed:
72 Removed: { #category : 'rendering' }
73 Removed: MFTAthlete >> renderContentOn: html [
74 Removed:
75 Removed: html heading level2 with: name.
76 Removed: html heading level3 textMuted with:
77 Removed: nickname , ' (' , born year asString , '–' , died year asString
78 Removed: , ')'.
79 Removed: html outlineButton bePrimary
80 Removed: dataToggle: 'collapse';
81 Removed: dataTarget: '#collapsePrizes';
82 Removed: with: 'Prizes'.
83 Removed: html collapse
84 Removed: id: 'collapsePrizes';
85 Removed: with: [
86 Removed: html div
87 Removed: marginTopAndBottom: 3;
88 Removed: style: 'height: 14em; overflow: scroll';
89 Removed: with: [ self renderPrizesTableOn: html ] ].
90 Removed: html paragraph: bio
91 Removed: ]
92 Removed:
93 Removed: { #category : 'rendering' }
94 Removed: MFTAthlete >> renderPrizesTableOn: html [
95 Removed:
96 Removed: html table
97 Removed: class: 'table table-striped table-bordered';
98 Removed: with: [
99 Removed: html tableHead: [
100 Removed: html tableRow: [
101 Removed: html tableHeading: 'Year'.
102 Removed: html tableHeading: 'Competition'.
103 Removed: html tableHeading: 'Place'.
104 Removed: html tableHeading: 'Category' ] ].
105 Removed: html tableBody: [
106 Removed: self prizes do: [ :prize |
107 Removed: html tableRow: [
108 Removed: html tableData: prize year.
109 Removed: html tableData: prize competition.
110 Removed: html tableData: prize place.
111 Removed: html tableData: prize category ] ] ] ]
112 Removed: ]
113 Removed:
114 Removed: { #category : 'accessing' }
115 Removed: MFTAthlete >> workouts [
116 Removed:
117 Removed: self subclassResponsibility
118 Removed: ]
src/MyFitnessTracker-Core/MFTExercise.class.st
index 09e39441..c9e8f37b 100644..100644
@@ -9,9 +9,8 @@
9 9 "
10 10 Class {
11 11 #name : 'MFTExercise',
12 Removed: #superclass : 'Object',
12 Added: #superclass : 'MFTObject',
13 13 #instVars : [
14 Removed: 'id',
15 14 'primaryMuscleGroupId',
16 15 'englishName',
17 16 'frenchName'
@@ -55,23 +54,13 @@
55 54 frenchName := aString
56 55 ]
57 56
58 Removed: { #category : 'accessing' }
59 Removed: MFTExercise >> id [
60 Removed:
61 Removed: ^ id
62 Removed: ]
63 Removed:
64 Removed: { #category : 'accessing' }
65 Removed: MFTExercise >> id: anObject [
66 Removed:
67 Removed: id := anObject
68 Removed: ]
69 Removed:
70 57 { #category : 'initialization' }
71 58 MFTExercise >> initialize [
72 59
73 60 super initialize.
74 Removed: englishName := String new
61 Added: primaryMuscleGroupId := Integer new.
62 Added: englishName := String new.
63 Added: frenchName := String new
75 64 ]
76 65
77 66 { #category : 'accessing' }
src/MyFitnessTracker-Core/MFTMikeMentzer.class.st
index 671bbd3d..00000000 100644..000000
@@ -1,102 +0,0 @@
1 Removed: Class {
2 Removed: #name : 'MFTMikeMentzer',
3 Removed: #superclass : 'MFTAthlete',
4 Removed: #category : 'MyFitnessTracker-Core',
5 Removed: #package : 'MyFitnessTracker-Core'
6 Removed: }
7 Removed:
8 Removed: { #category : 'initialization' }
9 Removed: MFTMikeMentzer >> initialize [
10 Removed:
11 Removed: super initialize.
12 Removed: name := 'Michael John Mentzer'.
13 Removed: nickname := 'Mike Mentzer'.
14 Removed: born := Date year: 1955 month: 11 day: 15.
15 Removed: died := Date year: 2001 month: 6 day: 10.
16 Removed: bio := 'Mike Mentzer is most famous for his Heavy Duty training regimen.'
17 Removed: ]
18 Removed:
19 Removed: { #category : 'accessing' }
20 Removed: MFTMikeMentzer >> prizes [
21 Removed:
22 Removed: ^ {
23 Removed: (MFTPrize year: 1971 competition: 'Mr. Lancaster' place: 1).
24 Removed: (MFTPrize year: 1971 competition: 'AAU Mr. America' place: 10).
25 Removed: (MFTPrize year: 1971 competition: 'AAU Teen Mr America' place: 2).
26 Removed: (MFTPrize
27 Removed: year: 1975
28 Removed: competition: 'IFBB Mr. America'
29 Removed: place: 3
30 Removed: category: 'Medium').
31 Removed: (MFTPrize
32 Removed: year: 1975
33 Removed: competition: 'ABBA Mr. USA'
34 Removed: place: 2
35 Removed: category: 'Medium').
36 Removed: (MFTPrize
37 Removed: year: 1976
38 Removed: competition: 'IFBB Mr. America'
39 Removed: place: 1
40 Removed: category: 'Overall').
41 Removed: (MFTPrize
42 Removed: year: 1976
43 Removed: competition: 'IFBB Mr. America'
44 Removed: place: 1
45 Removed: category: 'Medium').
46 Removed: (MFTPrize
47 Removed: year: 1976
48 Removed: competition: 'IFBB Mr. Universe'
49 Removed: place: 2
50 Removed: category: 'MW').
51 Removed: (MFTPrize
52 Removed: year: 1977
53 Removed: competition: 'IFBB North American Championships'
54 Removed: place: 1
55 Removed: category: 'Overall').
56 Removed: (MFTPrize
57 Removed: year: 1977
58 Removed: competition: 'IFBB North American Championships'
59 Removed: place: 1
60 Removed: category: 'MW').
61 Removed: (MFTPrize
62 Removed: year: 1977
63 Removed: competition: 'IFBB Mr. Universe'
64 Removed: place: 2
65 Removed: category: 'HW').
66 Removed: (MFTPrize
67 Removed: year: 1978
68 Removed: competition: 'IFBB USA vs the World'
69 Removed: place: 1
70 Removed: category: 'HW').
71 Removed: (MFTPrize
72 Removed: year: 1978
73 Removed: competition: 'IFBB World Amateur Championships'
74 Removed: place: 1
75 Removed: category: 'HW').
76 Removed: (MFTPrize year: 1978 competition: 'IFBB Mr. Universe' place: 1).
77 Removed: (MFTPrize year: 1979 competition: 'IFBB Canada Pro Cup' place: 2).
78 Removed: (MFTPrize
79 Removed: year: 1979
80 Removed: competition: 'IFBB Florida Pro Invitational'
81 Removed: place: 1).
82 Removed: (MFTPrize
83 Removed: year: 1979
84 Removed: competition: 'IFBB Night of Champions'
85 Removed: place: 3).
86 Removed: (MFTPrize
87 Removed: year: 1979
88 Removed: competition: 'IFBB Mr. Olympia'
89 Removed: place: 2
90 Removed: category: 'Overall').
91 Removed: (MFTPrize
92 Removed: year: 1979
93 Removed: competition: 'IFBB Mr. Olympia'
94 Removed: place: 1
95 Removed: category: 'Heavyweight Division').
96 Removed: (MFTPrize
97 Removed: year: 1979
98 Removed: competition: 'IFBB Pittsburgh Pro Invitational'
99 Removed: place: 2).
100 Removed: (MFTPrize year: 1979 competition: 'IFBB Southern Pro Cup' place: 1).
101 Removed: (MFTPrize year: 1980 competition: 'IFBB Mr. Olympia' place: 5) }
102 Removed: ]
src/MyFitnessTracker-Core/MFTMuscle.class.st
index 3536564b..aac0d0d3 100644..100644
@@ -1,8 +1,10 @@
1 Added: "
2 Added: I represent a muscle of the human body.
3 Added: "
1 4 Class {
2 5 #name : 'MFTMuscle',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 Removed: 'id',
6 8 'primaryMuscleGroupId',
7 9 'latinName',
8 10 'englishName',
@@ -43,21 +45,19 @@
43 45 ]
44 46
45 47 { #category : 'as yet unclassified' }
46 Removed: MFTMuscle >> function: anObject [
48 Added: MFTMuscle >> function: aString [
47 49
48 Removed: function := anObject
50 Added: function := aString
49 51 ]
50 52
51 Removed: { #category : 'as yet unclassified' }
52 Removed: MFTMuscle >> id [
53 Added: { #category : 'initialization' }
54 Added: MFTMuscle >> initialize [
53 55
54 Removed: ^ id
55 Removed: ]
56 Removed:
57 Removed: { #category : 'as yet unclassified' }
58 Removed: MFTMuscle >> id: anObject [
59 Removed:
60 Removed: id := anObject
56 Added: super initialize.
57 Added: primaryMuscleGroupId := Integer new.
58 Added: latinName := String new.
59 Added: englishName := String new.
60 Added: function := String new
61 61 ]
62 62
63 63 { #category : 'as yet unclassified' }
src/MyFitnessTracker-Core/MFTMuscleGroup.class.st
index cb73fc76..4c504490 100644..100644
@@ -1,8 +1,10 @@
1 Added: "
2 Added: I represent a group of muscles in the human body.
3 Added: "
1 4 Class {
2 5 #name : 'MFTMuscleGroup',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 Removed: 'id',
6 8 'englishName',
7 9 'frenchName',
8 10 'function',
@@ -76,19 +78,7 @@
76 78 function := anObject
77 79 ]
78 80
79 Removed: { #category : 'as yet unclassified' }
80 Removed: MFTMuscleGroup >> id [
81 Removed:
82 Removed: ^ id
83 Removed: ]
84 Removed:
85 Removed: { #category : 'as yet unclassified' }
86 Removed: MFTMuscleGroup >> id: anObject [
87 Removed:
88 Removed: id := anObject
89 Removed: ]
90 Removed:
91 Removed: { #category : 'as yet unclassified' }
81 Added: { #category : 'initialization' }
92 82 MFTMuscleGroup >> initialize [
93 83
94 84 super initialize.
src/MyFitnessTracker-Core/MFTObject.class.st
index 00000000..82f8025d 000000..100644
@@ -0,0 +1,24 @@
1 Added: "
2 Added: I provide an id to all objects in the MFT core domain.
3 Added: "
4 Added: Class {
5 Added: #name : 'MFTObject',
6 Added: #superclass : 'Object',
7 Added: #instVars : [
8 Added: 'id'
9 Added: ],
10 Added: #category : 'MyFitnessTracker-Core',
11 Added: #package : 'MyFitnessTracker-Core'
12 Added: }
13 Added:
14 Added: { #category : 'accessing' }
15 Added: MFTObject >> id [
16 Added:
17 Added: ^ id
18 Added: ]
19 Added:
20 Added: { #category : 'accessing' }
21 Added: MFTObject >> id: anObject [
22 Added:
23 Added: id := anObject
24 Added: ]
src/MyFitnessTracker-Core/MFTPrize.class.st
index e161f17e..00000000 100644..000000
@@ -1,81 +0,0 @@
1 Removed: Class {
2 Removed: #name : 'MFTPrize',
3 Removed: #superclass : 'Object',
4 Removed: #instVars : [
5 Removed: 'year',
6 Removed: 'competition',
7 Removed: 'place',
8 Removed: 'category'
9 Removed: ],
10 Removed: #category : 'MyFitnessTracker-Core',
11 Removed: #package : 'MyFitnessTracker-Core'
12 Removed: }
13 Removed:
14 Removed: { #category : 'as yet unclassified' }
15 Removed: MFTPrize class >> year: aDate competition: aCompetition place: anInteger [
16 Removed:
17 Removed: ^ self new
18 Removed: year: aDate;
19 Removed: competition: aCompetition;
20 Removed: place: anInteger;
21 Removed: yourself
22 Removed: ]
23 Removed:
24 Removed: { #category : 'as yet unclassified' }
25 Removed: MFTPrize class >> year: aDate competition: aCompetition place: anInteger category: aCategory [
26 Removed:
27 Removed: ^ self new
28 Removed: year: aDate;
29 Removed: competition: aCompetition;
30 Removed: place: anInteger;
31 Removed: category: aCategory;
32 Removed: yourself
33 Removed: ]
34 Removed:
35 Removed: { #category : 'accessing' }
36 Removed: MFTPrize >> category [
37 Removed:
38 Removed: ^ category
39 Removed: ]
40 Removed:
41 Removed: { #category : 'accessing' }
42 Removed: MFTPrize >> category: anObject [
43 Removed:
44 Removed: category := anObject
45 Removed: ]
46 Removed:
47 Removed: { #category : 'accessing' }
48 Removed: MFTPrize >> competition [
49 Removed:
50 Removed: ^ competition
51 Removed: ]
52 Removed:
53 Removed: { #category : 'accessing' }
54 Removed: MFTPrize >> competition: anObject [
55 Removed:
56 Removed: competition := anObject
57 Removed: ]
58 Removed:
59 Removed: { #category : 'accessing' }
60 Removed: MFTPrize >> place [
61 Removed:
62 Removed: ^ place
63 Removed: ]
64 Removed:
65 Removed: { #category : 'accessing' }
66 Removed: MFTPrize >> place: aValue [
67 Removed:
68 Removed: place := aValue asInteger
69 Removed: ]
70 Removed:
71 Removed: { #category : 'accessing' }
72 Removed: MFTPrize >> year [
73 Removed:
74 Removed: ^ year
75 Removed: ]
76 Removed:
77 Removed: { #category : 'accessing' }
78 Removed: MFTPrize >> year: aDate [
79 Removed:
80 Removed: year := aDate
81 Removed: ]
src/MyFitnessTracker-Core/MFTSet.class.st
index 392fcc7f..b3b5b883 100644..100644
@@ -1,8 +1,10 @@
1 Added: "
2 Added: I represent a workout set.
3 Added: "
1 4 Class {
2 5 #name : 'MFTSet',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 Removed: 'id',
6 8 'workoutId',
7 9 'exerciseId',
8 10 'number',
@@ -260,18 +262,6 @@
260 262 MFTSet >> hasVolume [
261 263
262 264 ^ self volume ~~ 0
263 Removed: ]
264 Removed:
265 Removed: { #category : 'accessing' }
266 Removed: MFTSet >> id [
267 Removed:
268 Removed: ^ id
269 Removed: ]
270 Removed:
271 Removed: { #category : 'accessing' }
272 Removed: MFTSet >> id: anObject [
273 Removed:
274 Removed: id := anObject
275 265 ]
276 266
277 267 { #category : 'accessing' }
src/MyFitnessTracker-Core/MFTSetGroup.class.st
index 51808ea8..ae73f6b3 100644..100644
@@ -1,3 +1,6 @@
1 Added: "
2 Added: I represent a group of sets performed during a workout.
3 Added: "
1 4 Class {
2 5 #name : 'MFTSetGroup',
3 6 #superclass : 'Object',
src/MyFitnessTracker-Core/MFTUser.class.st
index f0347323..42f7f82a 100644..100644
@@ -1,8 +1,10 @@
1 Added: "
2 Added: I represent a user of MFT.
3 Added: "
1 4 Class {
2 5 #name : 'MFTUser',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 Removed: 'id',
6 8 'username',
7 9 'passwordHash',
8 10 'realFirstName',
@@ -94,19 +96,7 @@
94 96 dateOfBirth := aDate
95 97 ]
96 98
97 Removed: { #category : 'as yet unclassified' }
98 Removed: MFTUser >> id [
99 Removed:
100 Removed: ^ id
101 Removed: ]
102 Removed:
103 Removed: { #category : 'as yet unclassified' }
104 Removed: MFTUser >> id: anObject [
105 Removed:
106 Removed: id := anObject
107 Removed: ]
108 Removed:
109 Removed: { #category : 'as yet unclassified' }
99 Added: { #category : 'initialization' }
110 100 MFTUser >> initialize [
111 101
112 102 super initialize.
src/MyFitnessTracker-Core/MFTWeight.class.st
index 10e7ad25..fd587e8a 100644..100644
@@ -1,8 +1,10 @@
1 Added: "
2 Added: I represent the weight of a user measured at a given date.
3 Added: "
1 4 Class {
2 5 #name : 'MFTWeight',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 Removed: 'id',
6 8 'userId',
7 9 'date',
8 10 'kilograms'
@@ -15,7 +17,8 @@
15 17 MFTWeight class >> kilograms: aWeight date: aDate [
16 18
17 19 ^ self new
18 Removed: initialize: aWeight date: aDate;
20 Added: weight: aWeight;
21 Added: date: aDate;
19 22 yourself
20 23 ]
21 24
@@ -46,17 +49,17 @@
46 49 ]
47 50
48 51 { #category : 'accessing' }
49 Removed: MFTWeight >> id [
52 Added: MFTWeight >> date: anObject [
50 53
51 Removed: ^ id
54 Added: date := anObject
52 55 ]
53 56
54 57 { #category : 'initialization' }
55 Removed: MFTWeight >> initialize: aWeight date: aDate [
58 Added: MFTWeight >> initialize [
56 59
57 60 super initialize.
58 Removed: kilograms := aWeight.
59 Removed: date := aDate
61 Added: kilograms := Integer new.
62 Added: date := Date new
60 63 ]
61 64
62 65 { #category : 'accessing' }
@@ -66,7 +69,19 @@
66 69 ]
67 70
68 71 { #category : 'accessing' }
72 Added: MFTWeight >> kilograms: anObject [
73 Added:
74 Added: kilograms := anObject
75 Added: ]
76 Added:
77 Added: { #category : 'accessing' }
69 78 MFTWeight >> userId [
70 79
71 80 ^ userId
81 Added: ]
82 Added:
83 Added: { #category : 'accessing' }
84 Added: MFTWeight >> userId: anObject [
85 Added:
86 Added: userId := anObject
72 87 ]
src/MyFitnessTracker-Core/MFTWorkout.class.st
index 07a15ac3..c204c3ad 100644..100644
@@ -1,8 +1,10 @@
1 Added: "
2 Added: I represent a user's workout.
3 Added: "
1 4 Class {
2 5 #name : 'MFTWorkout',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 Removed: 'id',
6 8 'userId',
7 9 'date',
8 10 'primaryMuscleGroupId',
@@ -102,29 +104,6 @@
102 104 { #category : 'as yet unclassified' }
103 105 MFTWorkout >> date: aDate [
104 106 date := aDate
105 Removed: ]
106 Removed:
107 Removed: { #category : 'as yet unclassified' }
108 Removed: MFTWorkout >> guessPrimaryMuscle [
109 Removed: "TODO: guess the workout's primary muscle based on the most represented primary muscle in the workout's exercises."
110 Removed:
111 Removed: | primaryMuscles groupedByMuscle mostFrequentMuscle |
112 Removed: primaryMuscles := exercises collect: [ :each | each primaryMuscle ].
113 Removed: groupedByMuscle := primaryMuscles groupBy: [ :each | each ].
114 Removed: mostFrequentMuscle := groupedByMuscle keys max: [ :muscle |
115 Removed: (groupedByMuscle at: muscle) size ]
116 Removed: ]
117 Removed:
118 Removed: { #category : 'as yet unclassified' }
119 Removed: MFTWorkout >> id [
120 Removed:
121 Removed: ^ id
122 Removed: ]
123 Removed:
124 Removed: { #category : 'as yet unclassified' }
125 Removed: MFTWorkout >> id: anObject [
126 Removed:
127 Removed: id := anObject
128 107 ]
129 108
130 109 { #category : 'initialization' }
src/MyFitnessTracker-Core/MFTWorkoutPlan.class.st
index b0f50ef7..80a344ee 100644..100644
@@ -1,12 +1,22 @@
1 Added: "
2 Added: I represent a collection of workouts.
3 Added: "
1 4 Class {
2 5 #name : 'MFTWorkoutPlan',
3 Removed: #superclass : 'Object',
6 Added: #superclass : 'MFTObject',
4 7 #instVars : [
5 8 'workouts'
6 9 ],
7 10 #category : 'MyFitnessTracker-Core',
8 11 #package : 'MyFitnessTracker-Core'
9 12 }
13 Added:
14 Added: { #category : 'accessing' }
15 Added: MFTWorkoutPlan >> initialize: aMFTWorkoutCollection [
16 Added:
17 Added: super initialize.
18 Added: workouts := aMFTWorkoutCollection
19 Added: ]
10 20
11 21 { #category : 'accessing' }
12 22 MFTWorkoutPlan >> workouts [
src/MyFitnessTracker-Core/ManifestMyFitnessTrackerCore.class.st
index 00000000..60581d3d 000000..100644
@@ -0,0 +1,10 @@
1 Added: "
2 Added: Please describe the package using the class comment of the included manifest class. The manifest class also includes other additional metadata for the package. These meta data are used by other tools such as the SmalllintManifestChecker and the critics Browser
3 Added: "
4 Added: Class {
5 Added: #name : 'ManifestMyFitnessTrackerCore',
6 Added: #superclass : 'PackageManifest',
7 Added: #category : 'MyFitnessTracker-Core-Manifest',
8 Added: #package : 'MyFitnessTracker-Core',
9 Added: #tag : 'Manifest'
10 Added: }