Class { #name : 'MFTScreenComponent', #superclass : 'WAComponent', #instVars : [ 'mainPages', 'activePage', 'navbar', 'footer' ], #category : 'MyFitnessTracker-Web-Components', #package : 'MyFitnessTracker-Web', #tag : 'Components' } { #category : 'accessing' } MFTScreenComponent >> activePage [ ^ activePage ] { #category : 'accessing' } MFTScreenComponent >> children [ ^ { navbar. activePage. footer } ] { #category : 'accessing' } MFTScreenComponent >> footer [ ^ footer ] { #category : 'accessing' } MFTScreenComponent >> footer: anObject [ footer := anObject ] { #category : 'initialization' } MFTScreenComponent >> initialize [ super initialize. mainPages := OrderedDictionary newFrom: { (#home -> MFTHomePage new). (#plan -> MFTPlanPage new). (#profile -> MFTProfilePage new) }. activePage := mainPages at: #home. navbar := MFTNavbarComponent newFrom: { (#home -> [ self setActivePage: #home ]). (#plan -> [ self setActivePage: #plan ]). (#profile -> [ self setActivePage: #profile ]) } asOrderedDictionary. footer := MFTFooterComponent new ] { #category : 'accessing' } MFTScreenComponent >> navbar [ ^ navbar ] { #category : 'accessing' } MFTScreenComponent >> navbar: aNavbar [ navbar := aNavbar ] { #category : 'accessing' } MFTScreenComponent >> renderContentOn: html [ html render: navbar. html main class: 'content-fluid'; id: 'content'; with: activePage. html render: footer ] { #category : 'initialization' } MFTScreenComponent >> setActivePage: aByteSymbol [ activePage := mainPages at: aByteSymbol ]