[Pharo] Personal fitness tracker web app.
New forms.
Changed files
src/MyFitnessTracker/MFTExercisesForm.class.st
@@ -0,0 +1,48 @@
1
Added:
Class {
2
Added:
#name : 'MFTExercisesForm',
3
Added:
#superclass : 'MFTForm',
4
Added:
#category : 'MyFitnessTracker-Forms',
5
Added:
#package : 'MyFitnessTracker',
6
Added:
#tag : 'Forms'
7
Added:
}
8
Added:
9
Added:
{ #category : 'as yet unclassified' }
10
Added:
MFTExercisesForm class >> forExerciseCount: anInteger [
11
Added:
12
Added:
| exercises |
13
Added:
exercises := OrderedCollection new: anInteger.
14
Added:
1 to: anInteger do: [ :i |
15
Added:
exercises add: (MFTSQLite3Database allExercises at: i) ].
16
Added:
^ self new
17
Added:
modelObject: exercises;
18
Added:
yourself
19
Added:
]
20
Added:
21
Added:
{ #category : 'initialization' }
22
Added:
MFTExercisesForm >> initialize [
23
Added:
24
Added:
super initialize.
25
Added:
heading := 'Exercise(s)'.
26
Added:
modelObject := OrderedCollection new
27
Added:
]
28
Added:
29
Added:
{ #category : 'rendering' }
30
Added:
MFTExercisesForm >> renderContentOn: html [
31
Added:
32
Added:
self renderFormOn: html with: [ self renderSelectExercisesOn: html ]
33
Added:
]
34
Added:
35
Added:
{ #category : 'rendering' }
36
Added:
MFTExercisesForm >> renderSelectExercisesOn: html [
37
Added:
38
Added:
modelObject doWithIndex: [ :selectedExercise :i |
39
Added:
html formGroup: [
40
Added:
html label: 'Exercise ' , (modelObject size > 1
41
Added:
ifTrue: [ i asString ]
42
Added:
ifFalse: [ '' ]).
43
Added:
html select formControl
44
Added:
list: MFTSQLite3Database allExercises;
45
Added:
selected: selectedExercise;
46
Added:
callback: [ :exercise | modelObject at: i put: exercise ];
47
Added:
labels: [ :each | each englishName ] ] ]
48
Added:
]
src/MyFitnessTracker/MFTSetGroupsForm.class.st
@@ -0,0 +1,123 @@
1
Added:
Class {
2
Added:
#name : 'MFTSetGroupsForm',
3
Added:
#superclass : 'MFTForm',
4
Added:
#category : 'MyFitnessTracker-Forms',
5
Added:
#package : 'MyFitnessTracker',
6
Added:
#tag : 'Forms'
7
Added:
}
8
Added:
9
Added:
{ #category : 'as yet unclassified' }
10
Added:
MFTSetGroupsForm class >> forExercises: anMFTExerciseCollection [
11
Added:
12
Added:
| setGroup |
13
Added:
setGroup := MFTSetGroup new addSets:
14
Added:
(anMFTExerciseCollection collect: [ :exercise |
15
Added:
MFTSet new
16
Added:
exercise: exercise;
17
Added:
reps: 8 ]).
18
Added:
^ self new
19
Added:
modelObject: (OrderedCollection with: setGroup);
20
Added:
yourself
21
Added:
]
22
Added:
23
Added:
{ #category : 'initialization' }
24
Added:
MFTSetGroupsForm >> initialize [
25
Added:
26
Added:
super initialize.
27
Added:
heading := 'Sets'.
28
Added:
modelObject := OrderedCollection with:
29
Added:
(MFTSetGroup new sets:
30
Added:
(OrderedCollection with: (MFTSet new reps: 8)))
31
Added:
]
32
Added:
33
Added:
{ #category : 'rendering' }
34
Added:
MFTSetGroupsForm >> renderContentOn: html [
35
Added:
36
Added:
self renderFormOn: html with: [
37
Added:
self renderSetGroupsTableOn: html.
38
Added:
self renderSetsButtonGroupOn: html ]
39
Added:
]
40
Added:
41
Added:
{ #category : 'rendering' }
42
Added:
MFTSetGroupsForm >> renderSetGroupsRowsOn: html [
43
Added:
44
Added:
| selectedExercises |
45
Added:
selectedExercises := modelObject first sets collect: #exercise.
46
Added:
47
Added:
modelObject do: [ :setGroup |
48
Added:
setGroup sets do: [ :set |
49
Added:
html tableRow: [
50
Added:
modelObject first isIrregularSetGroup ifTrue: [
51
Added:
html tableData with: set exercise englishName capitalized ].
52
Added:
html tableData: [
53
Added:
html numberInput formControl
54
Added:
value: set reps;
55
Added:
callback: [ :value | set reps: value asInteger ] ].
56
Added:
html tableData: [
57
Added:
html numberInput formControl
58
Added:
value: set load;
59
Added:
callback: [ :value |
60
Added:
set load:
61
Added:
(value ifNotEmpty: [ value asNumber ] ifEmpty: [ nil ]) ] ].
62
Added:
html tableData: [
63
Added:
html numberInput formControl
64
Added:
value: set rpe;
65
Added:
callback: [ :value |
66
Added:
set rpe:
67
Added:
(value ifNotEmpty: [ value asInteger ] ifEmpty: [ nil ]) ] ].
68
Added:
html tableData: [
69
Added:
html numberInput formControl
70
Added:
value: set restAfter;
71
Added:
callback: [ :value |
72
Added:
set restAfter:
73
Added:
(value ifNotEmpty: [ value asNumber ] ifEmpty: [ nil ]) ] ] ] ] ]
74
Added:
]
75
Added:
76
Added:
{ #category : 'rendering' }
77
Added:
MFTSetGroupsForm >> renderSetGroupsTableHeaderOn: html [
78
Added:
79
Added:
html tableHead: [
80
Added:
modelObject first isIrregularSetGroup ifTrue: [
81
Added:
html tableHeading with: 'Exercise' ].
82
Added:
html tableHeading
83
Added:
style: 'text-align: right';
84
Added:
with: 'Reps'.
85
Added:
html tableHeading
86
Added:
style: 'text-align: right';
87
Added:
with: 'Load'.
88
Added:
html tableHeading
89
Added:
style: 'text-align: right';
90
Added:
with: 'RPE'.
91
Added:
html tableHeading
92
Added:
style: 'text-align: right';
93
Added:
with: 'Rest After (s)' ]
94
Added:
]
95
Added:
96
Added:
{ #category : 'rendering' }
97
Added:
MFTSetGroupsForm >> renderSetGroupsTableOn: html [
98
Added:
99
Added:
html table
100
Added:
class: 'table table-bordered';
101
Added:
with: [
102
Added:
self renderSetGroupsTableHeaderOn: html.
103
Added:
self renderSetGroupsRowsOn: html ]
104
Added:
]
105
Added:
106
Added:
{ #category : 'rendering' }
107
Added:
MFTSetGroupsForm >> renderSetsButtonGroupOn: html [
108
Added:
109
Added:
html buttonGroup: [
110
Added:
html outlineButton
111
Added:
bePrimary;
112
Added:
beSmall;
113
Added:
callback: [ modelObject addLast: modelObject last ];
114
Added:
with: 'Add set(s)'.
115
Added:
html outlineButton
116
Added:
beDanger;
117
Added:
beSmall;
118
Added:
callback: [
119
Added:
| firstSetGroup |
120
Added:
firstSetGroup := modelObject first.
121
Added:
modelObject := OrderedCollection with: firstSetGroup ];
122
Added:
with: 'Reset' ]
123
Added:
]