MFTExercises and MFTExercise classes are hopelessly broken. Clean slate!

Commit
e54519523b3697ca03a12321a654d92ecc277a9e
Author
Marius Peter <marius.peter@tutanota.com>
Author date
Committer
Marius Peter <marius.peter@tutanota.com>
Committer date
Changed files
src/MyFitnessTracker/MFTExerciseDialog.class.st
index 12afc262..00000000 100644..000000
@@ -1,180 +0,0 @@
1 Removed: "
2 Removed: I represent a dialog for a single exercise.
3 Removed: "
4 Removed: Class {
5 Removed: #name : #MFTExerciseDialog,
6 Removed: #superclass : #MFTDialog,
7 Removed: #instVars : [
8 Removed: 'exercise',
9 Removed: 'sets'
10 Removed: ],
11 Removed: #category : #'MyFitnessTracker-Dialog'
12 Removed: }
13 Removed:
14 Removed: { #category : #actions }
15 Removed: MFTExerciseDialog class >> edit: aMFTExercise [
16 Removed:
17 Removed: ^ self new
18 Removed: exercise: aMFTExercise;
19 Removed: sets: aMFTExercise sets;
20 Removed: action: #edit;
21 Removed: yourself
22 Removed: ]
23 Removed:
24 Removed: { #category : #accessing }
25 Removed: MFTExerciseDialog >> exercise [
26 Removed:
27 Removed: ^ exercise
28 Removed: ]
29 Removed:
30 Removed: { #category : #accessing }
31 Removed: MFTExerciseDialog >> exercise: anObject [
32 Removed:
33 Removed: exercise := anObject
34 Removed: ]
35 Removed:
36 Removed: { #category : #initialization }
37 Removed: MFTExerciseDialog >> initialize [
38 Removed:
39 Removed: super initialize.
40 Removed: exercise := MFTExercise new.
41 Removed: sets := OrderedCollection new
42 Removed: ]
43 Removed:
44 Removed: { #category : #testing }
45 Removed: MFTExerciseDialog >> isDeprecated [
46 Removed: "Use MFTSetDialog instead."
47 Removed:
48 Removed: ^ true
49 Removed: ]
50 Removed:
51 Removed: { #category : #rendering }
52 Removed: MFTExerciseDialog >> renderAddSetRowOn: html [
53 Removed:
54 Removed: html tableRow: [
55 Removed: html tableData: [
56 Removed: html outlineButton
57 Removed: bePrimary;
58 Removed: beSmall;
59 Removed: callback: [ sets add: MFTSet new ];
60 Removed: with: 'Add' ].
61 Removed: html
62 Removed: tableData;
63 Removed: tableData;
64 Removed: tableData ]
65 Removed: ]
66 Removed:
67 Removed: { #category : #rendering }
68 Removed: MFTExerciseDialog >> renderContentOn: html [
69 Removed:
70 Removed: self renderDialogOn: html with: [
71 Removed: self renderExerciseSelectOn: html.
72 Removed: self renderSetsTableOn: html ]
73 Removed: ]
74 Removed:
75 Removed: { #category : #rendering }
76 Removed: MFTExerciseDialog >> renderExerciseSelectOn: html [
77 Removed:
78 Removed: | allExercises selectedExercise |
79 Removed: allExercises := MFTUtils allExercises.
80 Removed: selectedExercise := allExercises
81 Removed: detect: [ :each |
82 Removed: each englishName = exercise englishName ]
83 Removed: ifNone: [ nil ].
84 Removed: html formGroup: [
85 Removed: html label: 'Exercise'.
86 Removed: html select formControl
87 Removed: list: allExercises;
88 Removed: selected: selectedExercise;
89 Removed: callback: [ :value | exercise := value ];
90 Removed: labels: [ :each | each englishName ] ]
91 Removed: ]
92 Removed:
93 Removed: { #category : #rendering }
94 Removed: MFTExerciseDialog >> renderSetsRowsOn: html [
95 Removed: "TODO: something fishy is going on here. Why are reps and rpe instantiated as nil, but become the empty string after adding additional empty sets?"
96 Removed:
97 Removed: sets doWithIndex: [ :set :i |
98 Removed: html tableRow: [
99 Removed: html tableData: [
100 Removed: html buttonGroup: [
101 Removed: html outlineButton
102 Removed: beDanger;
103 Removed: beSmall;
104 Removed: callback: [ sets removeAt: i ];
105 Removed: with: 'Remove'.
106 Removed: html outlineButton
107 Removed: beSecondary;
108 Removed: beSmall;
109 Removed: callback: [ sets add: set copy afterIndex: i ];
110 Removed: with: 'Duplicate' ] ].
111 Removed: html tableData: [
112 Removed: html numberInput formControl
113 Removed: value: set reps;
114 Removed: callback: [ :value | set reps: value asInteger ] ].
115 Removed: html tableData: [
116 Removed: html numberInput formControl
117 Removed: value: set weight;
118 Removed: callback: [ :value |
119 Removed: value
120 Removed: ifNotEmpty: [ set weight: value asNumber ]
121 Removed: ifEmpty: [ set weight: nil ] ] ].
122 Removed: html tableData: [
123 Removed: html numberInput formControl
124 Removed: value: set rpe;
125 Removed: callback: [ :value |
126 Removed: value
127 Removed: ifNotEmpty: [ set rpe: value asInteger ]
128 Removed: ifEmpty: [ set rpe: nil ] ] ] ] ]
129 Removed: ]
130 Removed:
131 Removed: { #category : #rendering }
132 Removed: MFTExerciseDialog >> renderSetsTableOn: html [
133 Removed:
134 Removed: html formGroup: [
135 Removed: html label: 'Sets'.
136 Removed: html table
137 Removed: class: 'table table-hover';
138 Removed: with: [
139 Removed: sets ifNotEmpty: [ self renderTableHeaderOn: html ].
140 Removed: self renderSetsRowsOn: html.
141 Removed: self renderAddSetRowOn: html ] ]
142 Removed: ]
143 Removed:
144 Removed: { #category : #delegation }
145 Removed: MFTExerciseDialog >> renderSubmitOn: html [
146 Removed:
147 Removed: html buttonGroup: [
148 Removed: html formButton
149 Removed: beSubmit;
150 Removed: bePrimary;
151 Removed: callback: [ self answer: (exercise sets: sets) ];
152 Removed: with: (completion ifNil: [ 'Submit' ] ifNotNil: [ 'Next' ]).
153 Removed: html formButton
154 Removed: beSubmit;
155 Removed: beSecondary;
156 Removed: callback: [ self answer: MFTExercise new ];
157 Removed: with: (completion ifNil: [ 'Cancel' ] ifNotNil: [ 'Skip' ]) ]
158 Removed: ]
159 Removed:
160 Removed: { #category : #rendering }
161 Removed: MFTExerciseDialog >> renderTableHeaderOn: html [
162 Removed:
163 Removed: html tableHead: [
164 Removed: html
165 Removed: tableHeading;
166 Removed: tableHeading: 'Reps';tableHeading: 'Weight';
167 Removed: tableHeading: 'RPE' ]
168 Removed: ]
169 Removed:
170 Removed: { #category : #accessing }
171 Removed: MFTExerciseDialog >> sets [
172 Removed:
173 Removed: ^ sets
174 Removed: ]
175 Removed:
176 Removed: { #category : #accessing }
177 Removed: MFTExerciseDialog >> sets: anObject [
178 Removed:
179 Removed: sets := anObject
180 Removed: ]
src/MyFitnessTracker/MFTExercisesDialog.class.st
index 0f88dac0..00000000 100644..000000
@@ -1,163 +0,0 @@
1 Removed: Class {
2 Removed: #name : #MFTExercisesDialog,
3 Removed: #superclass : #MFTDialog,
4 Removed: #instVars : [
5 Removed: 'exercises'
6 Removed: ],
7 Removed: #category : #'MyFitnessTracker-Dialog'
8 Removed: }
9 Removed:
10 Removed: { #category : #actions }
11 Removed: MFTExercisesDialog class >> edit: aMFTExerciseCollection [
12 Removed:
13 Removed: self halt.
14 Removed: ^ self new
15 Removed: exercises: aMFTExerciseCollection;
16 Removed: action: #edit;
17 Removed: yourself
18 Removed: ]
19 Removed:
20 Removed: { #category : #adding }
21 Removed: MFTExercisesDialog >> addExercise [
22 Removed:
23 Removed: | exercise |
24 Removed: exercise := self call: MFTExerciseDialog new.
25 Removed: exercise englishName ifNotEmpty: [ exercises add: exercise ]
26 Removed: ]
27 Removed:
28 Removed: { #category : #accessing }
29 Removed: MFTExercisesDialog >> editExerciseAt: i [
30 Removed:
31 Removed: | oldExercise newExercise |
32 Removed: oldExercise := exercises at: i.
33 Removed: newExercise := self call: (MFTExerciseDialog edit: oldExercise).
34 Removed: newExercise ifNotNil: [ exercises at: i put: newExercise ]
35 Removed: ]
36 Removed:
37 Removed: { #category : #accessing }
38 Removed: MFTExercisesDialog >> exercises [
39 Removed:
40 Removed: ^ exercises
41 Removed: ]
42 Removed:
43 Removed: { #category : #accessing }
44 Removed: MFTExercisesDialog >> exercises: aCollection [
45 Removed:
46 Removed: exercises := aCollection
47 Removed: ]
48 Removed:
49 Removed: { #category : #initialization }
50 Removed: MFTExercisesDialog >> initialize [
51 Removed:
52 Removed: super initialize.
53 Removed: exercises := OrderedCollection new
54 Removed: ]
55 Removed:
56 Removed: { #category : #testing }
57 Removed: MFTExercisesDialog >> isDeprecated [
58 Removed: "Use MFTSetsDialog instead."
59 Removed:
60 Removed: ^ true
61 Removed: ]
62 Removed:
63 Removed: { #category : #rendering }
64 Removed: MFTExercisesDialog >> renderAddExerciseRowOn: html [
65 Removed:
66 Removed: html tableRow: [
67 Removed: html tableData: [
68 Removed: html outlineButton
69 Removed: bePrimary;
70 Removed: beSmall;
71 Removed: callback: [ self addExercise ];
72 Removed: with: 'Add'.
73 Removed: html
74 Removed: tableData;
75 Removed: tableData;
76 Removed: tableData.
77 Removed: ((exercises collect: #sets) anySatisfy: #isNotEmpty) ifTrue: [
78 Removed: html tableData ] ] ]
79 Removed: ]
80 Removed:
81 Removed: { #category : #rendering }
82 Removed: MFTExercisesDialog >> renderContentOn: html [
83 Removed:
84 Removed: self renderDialogOn: html with: [
85 Removed: html table
86 Removed: class: 'table table-hover';
87 Removed: with: [
88 Removed: exercises ifNotEmpty: [
89 Removed: self renderTableHeaderOn: html.
90 Removed: self renderExercisesRowsOn: html ].
91 Removed: self renderAddExerciseRowOn: html ] ]
92 Removed: ]
93 Removed:
94 Removed: { #category : #rendering }
95 Removed: MFTExercisesDialog >> renderExerciseActionsButtonGroupOn: html at: i [
96 Removed:
97 Removed: html buttonGroup: [
98 Removed: html outlineButton
99 Removed: beSecondary;
100 Removed: beSmall;
101 Removed: callback: [ exercises removeAt: i ];
102 Removed: with: 'Delete'.
103 Removed: html outlineButton
104 Removed: beSecondary;
105 Removed: beSmall;
106 Removed: callback: [ self editExerciseAt: i ];
107 Removed: with: 'Edit' ]
108 Removed: ]
109 Removed:
110 Removed: { #category : #rendering }
111 Removed: MFTExercisesDialog >> renderExercisesRowsOn: html [
112 Removed:
113 Removed: exercises doWithIndex: [ :exercise :i |
114 Removed: html tableRow: [
115 Removed: html tableData: [
116 Removed: self renderExerciseActionsButtonGroupOn: html at: i ].
117 Removed: html tableData: exercise englishName.
118 Removed: html tableData: exercise primaryMuscle englishName.
119 Removed: ((exercises collect: #sets) anySatisfy: #isNotEmpty) ifTrue: [
120 Removed: html tableData
121 Removed: style: 'text-align: right';
122 Removed: with: exercise repsBySet size ].
123 Removed: ((exercises collect: #volume) anySatisfy: [ :volume | volume ~~ 0 ])
124 Removed: ifTrue: [
125 Removed: html tableData
126 Removed: style: 'text-align: right';
127 Removed: with: exercise volume ] ] ]
128 Removed: ]
129 Removed:
130 Removed: { #category : #rendering }
131 Removed: MFTExercisesDialog >> renderSubmitOn: html [
132 Removed:
133 Removed: html buttonGroup: [
134 Removed: html formButton
135 Removed: beSubmit;
136 Removed: bePrimary;
137 Removed: callback: [ self answer: exercises ];
138 Removed: with: (completion ifNil: [ 'Submit' ] ifNotNil: [ 'Next' ]).
139 Removed: html formButton
140 Removed: beSubmit;
141 Removed: beSecondary;
142 Removed: callback: [ self answer: OrderedCollection new ];
143 Removed: with: (completion ifNil: [ 'Cancel' ] ifNotNil: [ 'Skip' ]) ]
144 Removed: ]
145 Removed:
146 Removed: { #category : #rendering }
147 Removed: MFTExercisesDialog >> renderTableHeaderOn: html [
148 Removed:
149 Removed: html tableHead: [
150 Removed: html
151 Removed: tableHeading;
152 Removed: tableHeading: 'Exercise';
153 Removed: tableHeading: 'Primary Muscle'.
154 Removed: ((exercises collect: #sets) anySatisfy: #isNotEmpty) ifTrue: [
155 Removed: html tableHeading
156 Removed: style: 'text-align: right';
157 Removed: with: 'Sets' ].
158 Removed: ((exercises collect: #volume) anySatisfy: [ :volume | volume ~~ 0 ])
159 Removed: ifTrue: [
160 Removed: html tableHeading
161 Removed: style: 'text-align: right';
162 Removed: with: 'Volume' ] ]
163 Removed: ]