package Ġd his 2 . org . analytics . charts . ui Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . databinding . Observable Field Ċ import Ġd his 2 . org . R Ċ import Ġd his 2 . org . analytics . charts . data . Chart Type Ċ import Ġd his 2 . org . analytics . charts . data . Graph Ċ import Ġd his 2 . org . analytics . charts . extensions . get This From Period Ċ import Ġd his 2 . org . analytics . charts . extensions . isIn Daily Ċ import Ġd his 2 . org . analytics . charts . extensions . isIn Monthly Ċ import Ġd his 2 . org . analytics . charts . extensions . isIn Other Ċ import Ġd his 2 . org . analytics . charts . extensions . isIn Week ly Ċ import Ġd his 2 . org . analytics . charts . extensions . isIn Year ly Ċ import Ġorg . dh is 2 . commons . popup menu . App Menu Helper Ċ import Ġorg . h isp . dh is . android . core . common . Relative Period Ċ import Ġorg . h isp . dh is . android . core . program . Program Indicator Ċ Ċ enum Ġclass ĠSection Type Ġ{ ĊĠĠĠ ĠMAIN , ĊĠĠĠ ĠSUB SECTION Ċ } Ċ Ċ enum Ġclass ĠOrg Unit Filter Type Ġ{ ĊĠĠĠ ĠNONE , ĠALL , ĠSE LECTION Ċ } Ċ Ċ enum Ġclass ĠChart Filter Ġ{ ĊĠĠĠ ĠPER IOD , ĠOR G _ UNIT Ċ } Ċ Ċ val Ġperiod To Id Ġ= Ġhash Map Of ( ĊĠĠĠ ĠRelative Period . TO DAY Ġto ĠR . id . today , ĊĠĠĠ ĠRelative Period . Y EST ER DAY Ġto ĠR . id . y esterday , ĊĠĠĠ ĠRelative Period . LAST _ 3 _ DAYS Ġto ĠR . id . last 3 days , ĊĠĠĠ ĠRelative Period . LAST _ 7 _ DAYS Ġto ĠR . id . last 7 days , ĊĠĠĠ ĠRelative Period . LAST _ 1 4 _ DAYS Ġto ĠR . id . last 1 4 days , ĊĠĠĠ ĠRelative Period . LAST _ 3 0 _ DAYS Ġto ĠR . id . last 3 0 days , ĊĠĠĠ ĠRelative Period . THIS _ WEEK Ġto ĠR . id . this week , ĊĠĠĠ ĠRelative Period . LAST _ WEEK Ġto ĠR . id . last week , ĊĠĠĠ ĠRelative Period . LAST _ 4 _ W EE KS Ġto ĠR . id . last 4 week s , ĊĠĠĠ ĠRelative Period . LAST _ 1 2 _ W EE KS Ġto ĠR . id . last 1 2 week s , ĊĠĠĠ ĠRelative Period . THIS _ MONTH Ġto ĠR . id . this month , ĊĠĠĠ ĠRelative Period . LAST _ MONTH Ġto ĠR . id . last month , ĊĠĠĠ ĠRelative Period . LAST _ 3 _ MONTH S Ġto ĠR . id . last 3 months , ĊĠĠĠ ĠRelative Period . LAST _ 6 _ MONTH S Ġto ĠR . id . last 6 months , ĊĠĠĠ ĠRelative Period . LAST _ 1 2 _ MONTH S Ġto ĠR . id . last 1 2 months , ĊĠĠĠ ĠRelative Period . MONTH S _ THIS _ YEAR Ġto ĠR . id . month This Year , ĊĠĠĠ ĠRelative Period . LAST _ MONTH Ġto ĠR . id . last month , ĊĠĠĠ ĠRelative Period . THIS _ QU AR TER Ġto ĠR . id . this quarter , ĊĠĠĠ ĠRelative Period . LAST _ QU AR TER Ġto ĠR . id . last quarter , ĊĠĠĠ ĠRelative Period . LAST _ 4 _ QU AR TER S Ġto ĠR . id . last 4 quarter , ĊĠĠĠ ĠRelative Period . QU AR TER S _ THIS _ YEAR Ġto ĠR . id . quarter this year , ĊĠĠĠ ĠRelative Period . THIS _ YEAR Ġto ĠR . id . this year , ĊĠĠĠ ĠRelative Period . LAST _ YEAR Ġto ĠR . id . last year , ĊĠĠĠ ĠRelative Period . LAST _ 5 _ YEAR S Ġto ĠR . id . last 5 year Ċ ) Ċ Ċ sealed Ġclass ĠAnalytics Model Ċ Ċ data Ġclass ĠSection Title ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġsection Type : ĠSection Type Ġ= ĠSection Type . MAIN Ċ ) Ġ: ĠAnalytics Model () Ġ{ ĊĠĠĠ Ġfun Ġtext Style (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( section Type Ġ== ĠSection Type . MAIN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType face . BOLD ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType face . NORMAL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Sub section (): ĠBoolean Ġ= Ġsection Type Ġ== ĠSection Type . SUB SECTION Ċ } Ċ Ċ data Ġclass ĠChart Model ( val Ġgraph : ĠGraph ) Ġ: ĠAnalytics Model () Ġ{ ĊĠĠĠ Ġval Ġobservable Chart Type Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable Field < Chart Type >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . chart Type Ġ?: ĠChart Type . LINE _ CH ART ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġorg Unit Callback : Ġ(( Org Unit Filter Type ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġrelative Period Callback : Ġ(( Relative Period ?, ĠRelative Period ?) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġreset Filter Callback : Ġ(( Chart Filter ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġshow Visualization Options ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . chart _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Menu In fl ated Ġ= Ġ{ Ġpopup Menu Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġids To Hide ( graph . chart Type Ġ?: ĠChart Type . LINE _ CH ART ). forEach Ġ{ Ġid To Hide Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id To Hide Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . menu . find Item ( id To Hide ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( itemId Ġ== ĠR . id . period Filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Period Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( itemId Ġ== ĠR . id . org Filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Org Unt Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobservable Chart Type . set ( chart To Load ( itemId )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Period Filters ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Menu Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . period _ filter _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Visualization Options ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . daily Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Daily Period Visualization ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . weekly Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Week ly Period Visualization ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . monthly Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Monthly Period Visualization ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . year ly Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Year ly Period Visualization ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . other Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Other Period Visualization ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . reset _ period Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Filter Callback ?. invoke ( Chart Filter . PERIOD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġapp Menu . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( graph . period To Display Selected Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . show Item ( R . id . reset _ period ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid To Mark Ġ= ĠgetParent By ( graph . period To Display Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id To Mark Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( id To Mark , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( graph . period To Display Default Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid To Mark Ġ= ĠgetParent By ( graph . period To Display Default ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id To Mark Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( id To Mark , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetParent By ( period To Display Selected : ĠRelative Period ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod To Display Selected . isIn Daily () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . id . daily ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod To Display Selected . isIn Week ly () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . id . weekly ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod To Display Selected . isIn Monthly () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . id . monthly ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod To Display Selected . isIn Year ly () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . id . year ly ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod To Display Selected . isIn Other () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . id . other ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Other Period Visualization ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Menu Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . period _ other _ filter _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back _ other Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Period Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpropagate Relative Period ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġapp Menu . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Year ly Period Visualization ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Menu Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . period _ year ly _ filter _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back _ year ly Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Period Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpropagate Relative Period ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġapp Menu . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( graph . period To Display Selected Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Selected . isIn Monthly () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Selected Ġ= Ġperiod To Id [ graph . period To Display Selected ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Selected !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( graph . period To Display Default Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Default . isIn Monthly () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Default Ġ= Ġperiod To Id [ graph . period To Display Default ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Default !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Monthly Period Visualization ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Menu Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . period _ monthly _ filter _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back _ monthly Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Period Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpropagate Relative Period ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġapp Menu . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( graph . period To Display Selected Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Selected . isIn Monthly () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Selected Ġ= Ġperiod To Id [ graph . period To Display Selected ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Selected !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( graph . period To Display Default Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Default . isIn Monthly () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Default Ġ= Ġperiod To Id [ graph . period To Display Default ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Default !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Week ly Period Visualization ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Menu Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . period _ weekly _ filter _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back _ weekly Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Period Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpropagate Relative Period ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġapp Menu . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( graph . period To Display Selected Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Selected . isIn Week ly () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Selected Ġ= Ġperiod To Id [ graph . period To Display Selected ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Selected !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( graph . period To Display Default Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Default . isIn Week ly () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Default Ġ= Ġperiod To Id [ graph . period To Display Default ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Default !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Daily Period Visualization ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Menu Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . period _ daily _ filter _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back _ daily Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Period Filters ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpropagate Relative Period ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġapp Menu . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( graph . period To Display Selected Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Selected . isIn Daily () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Selected Ġ= Ġperiod To Id [ graph . period To Display Selected ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Selected !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( graph . period To Display Default Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . period To Display Default . isIn Daily () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiod Id Default Ġ= Ġperiod To Id [ graph . period To Display Default ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Menu . add Icon To Item ( period Id Default !! , ĠR . drawable . ic _ check _ chart ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpropagate Relative Period ( ĊĠĠĠĠĠĠĠ Ġ@ Id Res ĠitemId : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrelative Period Selected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod To Id . filter Values Ġ{ Ġit Ġ== ĠitemId Ġ}. keys . first () ĊĠĠĠĠĠĠĠ Ġval Ġthis Period Ġ= Ġrelative Period Selected . get This From Period () ĊĠĠĠĠĠĠĠ Ġrelative Period Callback ?. invoke ( relative Period Selected , Ġthis Period ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Org Unt Filters ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Builder Ġ= ĠApp Menu Helper . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= ĠR . menu . org _ unit _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon MenuItem Clicked Ġ= Ġ{ ĠitemId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Visualization Options ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . none Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg Unit Callback ?. invoke ( Org Unit Filter Type . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . all Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg Unit Callback ?. invoke ( Org Unit Filter Type . ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . reset _ org unit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Filter Callback ?. invoke ( Chart Filter . ORG _ UNIT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg Unit Callback ?. invoke ( Org Unit Filter Type . SELECTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġmenu Builder . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( graph . org Units Selected . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Builder . show Item ( R . id . reset _ period ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Text Ġ= Ġmenu Builder . getItem Text ( R . id . selection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Builder . change Item Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . selection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ selection Text Ġ(${ graph . org Units Selected . size })" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( graph . org Units Default . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Builder . show Item ( R . id . reset _ period ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Text Ġ= Ġmenu Builder . getItem Text ( R . id . selection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Builder . change Item Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . selection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ selection Text Ġ(${ graph . org Units Default . size })" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġids To Hide ( original Chart Type : ĠChart Type ): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( observable Chart Type . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . N UT R ITION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . LINE _ CH ART Ġ-> ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Line Graph ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . BAR _ CH ART Ġ-> ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Bar Graph ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . TABLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( original Chart Type Ġ== ĠChart Type . RAD AR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Line Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Bar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( original Chart Type Ġ== ĠChart Type . PI E _ CH ART ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Line Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Bar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Graph ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . SINGLE _ VALUE Ġ-> ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . RAD AR , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . PI E _ CH ART Ġ-> ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Line Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Bar Graph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchart To Load ( itemId : ĠInt ): ĠChart Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Bar Graph Ġ-> ĠChart Type . BAR _ CH ART ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Graph Ġ-> ĠChart Type . TABLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Table Value Ġ-> ĠChart Type . SINGLE _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Rad ar Graph Ġ-> ĠChart Type . RAD AR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . show Pie Chart Ġ-> ĠChart Type . PI E _ CH ART ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( graph . chart Type Ġ!= ĠChart Type . N UT R ITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . LINE _ CH ART ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . N UT R ITION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠIndicator Model ( ĊĠĠĠ Ġval Ġprogram Indicator : ĠProgram Indicator ?, ĊĠĠĠ Ġval Ġvalue : ĠString ?, ĊĠĠĠ Ġval Ġcolor : ĠString ?, ĊĠĠĠ Ġval Ġlocation : ĠString , ĊĠĠĠ Ġval Ġdefault Label : ĠString Ċ ) Ġ: ĠAnalytics Model () Ġ{ ĊĠĠĠ Ġfun Ġlabel (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprogram Indicator ?. displayName () Ġ?: Ġdefault Label ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdescription (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprogram Indicator ?. display Description () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcolor (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( color . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ( color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ const Ġval ĠLOC ATION _ FEED BACK _ WIDGET Ġ= Ġ" feedback " Ċ const Ġval ĠLOC ATION _ IND IC ATOR _ WIDGET Ġ= Ġ" indicators " Ċ