[Pharo] Personal fitness tracker web app.
1
Class {
2
#name : 'MFTScreenComponent',
3
#superclass : 'WAComponent',
4
#instVars : [
5
'mainPages',
6
'activePage',
7
'navbar',
8
'footer'
9
],
10
#category : 'MyFitnessTracker-Web-Components',
11
#package : 'MyFitnessTracker-Web',
12
#tag : 'Components'
13
}
14
15
{ #category : 'accessing' }
16
MFTScreenComponent >> activePage [
17
18
^ activePage
19
]
20
21
{ #category : 'accessing' }
22
MFTScreenComponent >> children [
23
24
^ {
25
navbar.
26
activePage.
27
footer }
28
]
29
30
{ #category : 'accessing' }
31
MFTScreenComponent >> footer [
32
33
^ footer
34
]
35
36
{ #category : 'accessing' }
37
MFTScreenComponent >> footer: anObject [
38
39
footer := anObject
40
]
41
42
{ #category : 'initialization' }
43
MFTScreenComponent >> initialize [
44
45
super initialize.
46
mainPages := OrderedDictionary newFrom: {
47
(#home -> MFTHomePage new).
48
(#plan -> MFTPlanPage new).
49
(#profile -> MFTProfilePage new) }.
50
activePage := mainPages at: #home.
51
navbar := MFTNavbarComponent newFrom: {
52
(#home -> [ self setActivePage: #home ]).
53
(#plan -> [ self setActivePage: #plan ]).
54
(#profile -> [ self setActivePage: #profile ]) }
55
asOrderedDictionary.
56
footer := MFTFooterComponent new
57
]
58
59
{ #category : 'accessing' }
60
MFTScreenComponent >> navbar [
61
62
^ navbar
63
]
64
65
{ #category : 'accessing' }
66
MFTScreenComponent >> navbar: aNavbar [
67
68
navbar := aNavbar
69
]
70
71
{ #category : 'accessing' }
72
MFTScreenComponent >> renderContentOn: html [
73
74
html render: navbar.
75
html main
76
class: 'content-fluid';
77
id: 'content';
78
with: activePage.
79
html render: footer
80
]
81
82
{ #category : 'initialization' }
83
MFTScreenComponent >> setActivePage: aByteSymbol [
84
85
activePage := mainPages at: aByteSymbol
86
]
87