View raw

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