package Ġcom . tech eni ac . health sample . ui . launch . step Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . github . mike phil . chart ing . components . Y Axis Ċ import Ġcom . github . mike phil . chart ing . data .* Ċ import Ġcom . tech eni ac . health sample . R Ċ import Ġcom . tech eni ac . health sample . data . DataManager Ċ import Ġcom . tech eni ac . health sample . data . model . Chart Model Ċ import Ġcom . tech eni ac . health sample . ui . base . Base ViewModel Ċ import Ġcom . tech eni ac . health sample . utils . App Constants Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠRob in son Ġon Ġ 1 8 ĠNov Ġ 2 0 2 1 Ċ Ġ*/ Ċ class ĠStep ViewModel Ġ@ Inject Ġconstructor ( data Manager : ĠData Manager ) Ġ: ĊĠĠĠ ĠBase ViewModel < Step Navigator >( data Manager ) Ġ{ Ċ Ċ // ĠĠĠ Ġfun Ġstep () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġdisplay Loader ( true ) Ċ // ĠĠĠĠĠĠĠ Ġdata Manager . step (" req ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠApi Observer < Any >( composite Disposable ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠAny ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Loader ( false ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Combined Chart LiveData Ġ= ĠMutable LiveData < Chart Model >() ĊĠĠĠ Ġprivate Ġval Ġm Step Progress LiveData Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠ Ġfun Ġget Step Progress ( steps : ĠInt ): ĠLive Data < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( steps Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constants . progress Steps Ġ= ĠApp Constants . progress Steps Ġ+ Ġsteps ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Step Progress LiveData . value Ġ= ĠApp Constants . progress Steps ĊĠĠĠĠĠĠĠ Ġreturn Ġm Step Progress LiveData ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠLine Data , ĠBar Data , ĠP ie Entry ĊĠĠĠĠ Ġ* Ġ Ġset Ġdummy Ġdata Ġin Ġcharts ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġget Chart Data ( context : ĠContext , Ġtype : ĠInt ): ĠLive Data < Chart Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbar Chart Label Array : ĠArray < String > ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Chart Label Array Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sun " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Chart Label Array Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sun ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tue ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Wed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Thu ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Fri ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sat " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Chart Label Array Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Jan ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Feb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mar ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Apr ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" May ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Jun ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Jul ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Aug ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sep ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Oct ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Nov ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Dec " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠLine Data ĊĠĠĠĠĠĠĠ Ġval Ġm Line Data Ġ= ĠLine Data () ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Entry >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġbar Chart Label Array . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsteps Ġ= ĠApp Constants . random Count ( App Constants . line Chart Start Range , ĠApp Constants . line Chart End Range ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsteps . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġm Line DataSet Ġ= ĠLine DataSet ( entries , Ġcontext . getString ( R . string . runtime )) ĊĠĠĠĠĠĠĠ Ġm Line DataSet . color Ġ= ĠContext Compat . getColor ( context , ĠR . color . run ) ĊĠĠĠĠĠĠĠ Ġm Line DataSet . set Draw Values ( true ) ĊĠĠĠĠĠĠĠ Ġm Line DataSet . value TextColor Ġ= ĠContext Compat . getColor ( context , ĠR . color . black ) ĊĠĠĠĠĠĠĠ Ġm Line DataSet . lineWidth Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠ Ġm Line DataSet . set Circle Color ( Context Compat . getColor ( context , ĠR . color . red )) ĊĠĠĠĠĠĠĠ Ġ// Ġm Line DataSet . set Circle Color ( Color . rgb ( 2 4 0 , Ġ 2 3 8 , Ġ 7 0 )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġm Line DataSet . mode Ġ= ĠLine DataSet . Mode . C UB IC _ BE ZI ER ĊĠĠĠĠĠĠĠ Ġm Line DataSet . value Text Size Ġ= Ġ 1 0 f ĊĠĠĠĠĠĠĠ Ġm Line DataSet . lineWidth Ġ= Ġ 2 F ĊĠĠĠĠĠĠĠ Ġm Line DataSet . axis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ Ġm Line Data . add DataSet ( m Line DataSet ) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠBar Data ĊĠĠĠĠĠĠĠ Ġval Ġm Bar Data Ġ= ĠBar Data () ĊĠĠĠĠĠĠĠ Ġval Ġbar Entries : ĠArrayList < Bar Entry > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ ĠApp Constants . total Steps Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġbar Chart Label Array . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsteps Ġ= ĠApp Constants . random Count ( App Constants . bar Chart Start Range , ĠApp Constants . bar Chart End Range ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constants . total Steps Ġ= ĠApp Constants . total Steps Ġ+ Ġsteps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Entries . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBar Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsteps . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġm Bar DataSet Ġ= ĠBar DataSet ( bar Entries , Ġcontext . getString ( R . string . steps )) ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġm Bar DataSet . axis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ Ġm Bar DataSet . color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Primary ) ĊĠĠĠĠĠĠĠ Ġm Bar DataSet . value TextColor Ġ= ĠContext Compat . getColor ( context , ĠR . color . cli mb ) ĊĠĠĠĠĠĠĠ Ġm Bar DataSet . value Text Size Ġ= Ġ 1 2 f ĊĠĠĠĠĠĠĠ Ġval Ġbar Width Ġ= Ġ 0 . 9 f ĊĠĠĠĠĠĠĠ Ġm Bar Data . bar Width Ġ= Ġbar Width ĊĠĠĠĠĠĠĠ Ġm Bar Data . add DataSet ( m Bar DataSet ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBar Data ĊĠĠĠĠĠĠĠ Ġval Ġm Heart Line Data Ġ= ĠLine Data () ĊĠĠĠĠĠĠĠ Ġval Ġheart Entries Ġ= ĠArrayList < Entry >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheart Entries . add ( Entry ( index . toFloat (), ĠApp Constants . random Count ( App Constants . heart Rate End Range ). toFloat ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠLine DataSet ( heart Entries , Ġcontext . getString ( R . string . heart _ rate )) ĊĠĠĠĠĠĠĠ Ġset . axis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ Ġset . color Ġ= ĠContext Compat . getColor ( context , ĠR . color . red ) ĊĠĠĠĠĠĠĠ Ġset . value TextColor Ġ= ĠContext Compat . getColor ( context , ĠR . color . white ) ĊĠĠĠĠĠĠĠ Ġset . lineWidth Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġset . set Draw Circ les ( false ) ĊĠĠĠĠĠĠĠ Ġset . is Highlight Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset . set Draw Values ( false ) ĊĠĠĠĠĠĠĠ Ġset . mode Ġ= ĠLine DataSet . Mode . C UB IC _ BE ZI ER ĊĠĠĠĠĠĠĠ Ġset . cubic Intensity Ġ= Ġ 0 . 3 f ĊĠĠĠĠĠĠĠ Ġm Heart Line Data . add DataSet ( set ) ĊĊĊĠĠĠĠĠĠĠ Ġ// Pie Ġlabel Ġand Ġvalue ĊĠĠĠĠĠĠĠ Ġval Ġlist Pie Ġ= ĠArrayList < Pie Entry >() ĊĠĠĠĠĠĠĠ Ġlist Pie . add ( Pie Entry ( 6 0 F , Ġcontext . getString ( R . string . j og ))) ĊĠĠĠĠĠĠĠ Ġlist Pie . add ( Pie Entry ( 2 0 F , Ġcontext . getString ( R . string . run ))) ĊĠĠĠĠĠĠĠ Ġlist Pie . add ( Pie Entry ( 1 0 F , Ġcontext . getString ( R . string . cli mb ))) ĊĊĠĠĠĠĠĠĠ Ġ// Pie Ġlist Ġcolors ĊĠĠĠĠĠĠĠ Ġval Ġlist Colors Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġlist Colors . add ( Context Compat . getColor ( context , ĠR . color . j og )) ĊĠĠĠĠĠĠĠ Ġlist Colors . add ( Context Compat . getColor ( context , ĠR . color . run )) ĊĠĠĠĠĠĠĠ Ġlist Colors . add ( Context Compat . getColor ( context , ĠR . color . cli mb )) ĊĊĠĠĠĠĠĠĠ Ġm Combined Chart LiveData . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Chart Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Line Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Heart Line Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bar Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Pie , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Colors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Chart Label Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constants . progress Steps , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constants . total Steps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġm Combined Chart LiveData ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ