[Pharo] Personal fitness tracker web app.
Updated profile page and user profile form.
Changed files
src/MyFitnessTracker-Components/MFTProfilePage.class.st
@@ -10,7 +10,8 @@
10
10
MFTProfilePage >> editProfile [
11
11
12
12
| updatedUser |
13
Removed:
updatedUser := self call: (MFTUserTask edit: self session user).
13
Added:
updatedUser := self session pageManager activePage call:
14
Added:
(MFTUserForm new user: self session user).
14
15
updatedUser ifNil: [ ^ self ].
15
16
self session user: updatedUser.
16
17
self session user isLoggedIn ifTrue: [
@@ -31,10 +32,6 @@
31
32
user := self session user.
32
33
33
34
self renderPageOn: html with: [
34
Removed:
html heading level1 with: [
35
Removed:
html
36
Removed:
code: self session user username;
37
Removed:
text: '''s profile' ].
38
35
self renderProfileActionsOn: html.
39
36
html render: user ]
40
37
]
src/MyFitnessTracker-Components/MFTUserForm.class.st
@@ -1,45 +1,117 @@
1
1
Class {
2
2
#name : 'MFTUserForm',
3
3
#superclass : 'MFTForm',
4
Added:
#instVars : [
5
Added:
'user'
6
Added:
],
4
7
#category : 'MyFitnessTracker-Components-Forms',
5
8
#package : 'MyFitnessTracker-Components',
6
9
#tag : 'Forms'
7
10
}
8
11
9
Removed:
{ #category : 'as yet unclassified' }
10
Removed:
MFTUserForm class >> edit: aMFTWorkout [
11
Removed:
12
Removed:
^ self new
13
Removed:
modelObject: aMFTWorkout;
14
Removed:
yourself
15
Removed:
]
16
Removed:
17
12
{ #category : 'initialization' }
18
13
MFTUserForm >> initialize [
19
14
20
15
super initialize.
21
Removed:
modelObject := MFTWorkout new.
22
Removed:
heading := 'Workout'
16
Added:
heading := 'Profile'.
17
Added:
user := MFTUser new
23
18
]
24
19
25
20
{ #category : 'rendering' }
26
21
MFTUserForm >> renderContentOn: html [
27
22
28
23
self renderFormOn: html with: [
29
Removed:
html
30
Removed:
render: (MFTFormComponent set: #date);
31
Removed:
render: (MFTFormComponent set: #setGroups);
32
Removed:
render: (MFTFormComponent set: #primaryMuscleGroup);
33
Removed:
render: (MFTFormComponent set: #secondaryMuscleGroups) ]
24
Added:
self renderUsernamePickerOn: html.
25
Added:
self renderPasswordPickerOn: html.
26
Added:
self renderDateOfBirthPickerOn: html.
27
Added:
self renderRealFirstNamePickerOn: html.
28
Added:
self renderRealLastNamePickerOn: html ]
34
29
]
35
30
31
Added:
{ #category : 'rendering' }
32
Added:
MFTUserForm >> renderDateOfBirthPickerOn: html [
33
Added:
34
Added:
html formGroup: [
35
Added:
html div
36
Added:
class: 'form-floating';
37
Added:
marginBottom: 3;
38
Added:
with: [
39
Added:
html dateInput5 formControl
40
Added:
placeholder: 'RequiredEntry-PutItAndDoNotUse';
41
Added:
callback: [ :input |
42
Added:
user dateOfBirth: (Date readFrom: input pattern: 'yyyy-mm-dd') ];
43
Added:
value: user dateOfBirth yyyymmdd.
44
Added:
html label: 'Date' ] ]
45
Added:
]
46
Added:
47
Added:
{ #category : 'rendering' }
48
Added:
MFTUserForm >> renderPasswordPickerOn: html [
49
Added:
50
Added:
html formGroup: [
51
Added:
html div
52
Added:
class: 'form-floating';
53
Added:
marginBottom: 3;
54
Added:
with: [
55
Added:
html formPasswordInput
56
Added:
placeholder: 'RequiredEntry-PutItAndDoNotUse';
57
Added:
callback: [ :input |
58
Added:
input ifNotEmpty: [ user passwordHashFromString: input ] ].
59
Added:
html label: 'Change password' ] ]
60
Added:
]
61
Added:
62
Added:
{ #category : 'rendering' }
63
Added:
MFTUserForm >> renderRealFirstNamePickerOn: html [
64
Added:
65
Added:
html formGroup: [
66
Added:
html div
67
Added:
class: 'form-floating';
68
Added:
marginBottom: 3;
69
Added:
with: [
70
Added:
html formTextInput
71
Added:
placeholder: 'RequiredEntry-PutItAndDoNotUse';
72
Added:
callback: [ :input | user realFirstName: input ];
73
Added:
value: user realFirstName.
74
Added:
html label: 'Real first name' ] ]
75
Added:
]
76
Added:
77
Added:
{ #category : 'rendering' }
78
Added:
MFTUserForm >> renderRealLastNamePickerOn: html [
79
Added:
80
Added:
^ html formGroup: [
81
Added:
html div
82
Added:
class: 'form-floating';
83
Added:
marginBottom: 3;
84
Added:
with: [
85
Added:
html formTextInput
86
Added:
placeholder: 'RequiredEntry-PutItAndDoNotUse';
87
Added:
callback: [ :input | user realLastName: input ];
88
Added:
value: user realLastName.
89
Added:
html label: 'Real last name' ] ]
90
Added:
]
91
Added:
92
Added:
{ #category : 'rendering' }
93
Added:
MFTUserForm >> renderUsernamePickerOn: html [
94
Added:
95
Added:
html formGroup: [
96
Added:
html div
97
Added:
class: 'form-floating';
98
Added:
marginBottom: 3;
99
Added:
with: [
100
Added:
html formTextInput
101
Added:
placeholder: 'RequiredEntry-PutItAndDoNotUse';
102
Added:
callback: [ :input | user username: input ];
103
Added:
value: user username.
104
Added:
html label: 'Username' ] ]
105
Added:
]
106
Added:
36
107
{ #category : 'as yet unclassified' }
37
108
MFTUserForm >> submitForm [
38
109
39
Removed:
modelObject setGroups ifEmpty: [
40
Removed:
(self call:
41
Removed:
(MFTConfirmForm new modelObject: 'No exercises were specified.'))
42
Removed:
ifFalse: [ self answer: nil ] ].
110
Added:
self answer: user
111
Added:
]
43
112
44
Removed:
self answer: modelObject
113
Added:
{ #category : 'accessing' }
114
Added:
MFTUserForm >> user: aMFTUser [
115
Added:
116
Added:
user := aMFTUser
45
117
]