New forms.

Commit
3d915ea1beb902231b1ef23b61f79448ddbbb053
Author
Marius Peter <marius.peter@tutanota.com>
Author date
Committer
Marius Peter <marius.peter@tutanota.com>
Committer date
Changed files
src/MyFitnessTracker/MFTExercisesForm.class.st
index 00000000..3d06e1a9 000000..100644
@@ -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
index 00000000..b697c3c2 000000..100644
@@ -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: ]