package Ġcom . ax el _ stein . glu co se _ tracker . ui . statistics Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . ax el _ stein . glu co se _ tracker . R Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . room . dao .* Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . room . model . G lu co se Measured Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . room . model . G lu co se Statistics Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . room . repository . Log Repository Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . room . repository . Me al Repository Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . settings . App Resources Ċ import Ġcom . ax el _ stein . glu co se _ tracker . data . settings . AppSettings Ċ import Ġcom . ax el _ stein . glu co se _ tracker . ui . App Ċ import Ġcom . ax el _ stein . glu co se _ tracker . ui . statistics . helpers . Chart Data Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers . io Ċ import Ġjavax . inject . Inject Ċ import Ġkotlin . math . round ToInt Ċ Ċ class ĠStatistics ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstats Dao : ĠStats Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgl u co se Dao : ĠG lu co se Log Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġa 1 c Dao : ĠA 1 c Log Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweight Dao : ĠWeight Log Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġap Dao : ĠAp Log Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsettings : ĠApp Settings ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlog Repository : ĠLog Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Resources : ĠApp Resources ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġme al Repository : ĠMe al Repository ĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġvar Ġstats Period Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġchart Period Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġchart Type Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġgl u co se Chart Period Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġgl u co se Chart Type Ġ= Ġ- 1 ĊĊĠĠĠ Ġprivate Ġval Ġstats Data Ġ= ĠMutable LiveData < G lu co se Statistics ?> () ĊĠĠĠ Ġval Ġgl u co se Statistics LiveData : ĠLive Data < G lu co se Statistics ?> Ġ= Ġstats Data ĊĊĠĠĠ Ġprivate Ġval Ġcontrol Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġval Ġdi abet es Control LiveData : ĠLive Data < Int > Ġ= Ġcontrol ĊĊĠĠĠ Ġprivate Ġval Ġshow Error Ġ= ĠMutable LiveData ( false ) ĊĠĠĠ Ġval Ġshow Error LiveData : ĠLive Data < Boolean > Ġ= Ġshow Error ĊĊĠĠĠ Ġprivate Ġval Ġchart Ġ= ĠMutable LiveData < Chart Data ?> () ĊĠĠĠ Ġval Ġchart LiveData : ĠLive Data < Chart Data ?> Ġ= Ġchart ĊĊĠĠĠ Ġprivate Ġval Ġgl u co se Chart Ġ= ĠMutable LiveData < Chart Data ?> () ĊĠĠĠ Ġval Ġgl u co se Chart LiveData : ĠLive Data < Chart Data ?> Ġ= Ġgl u co se Chart ĊĊĠĠĠ Ġprivate Ġval Ġgl u co se Types Ġ= ĠMutable LiveData < List < G lu co se Measured >>() ĊĠĠĠ Ġval Ġgl u co se Types LiveData : ĠLive Data < List < G lu co se Measured >> Ġ= Ġgl u co se Types ĊĊĠĠĠ Ġprivate Ġval Ġn utr ition ViewData Ġ= ĠMutable LiveData < N utr ition ViewData >() ĊĠĠĠ Ġval Ġn utr ition View LiveData : ĠLive Data < N utr ition ViewData > Ġ= Ġn utr ition ViewData ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . app Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġgl u co se Types . value Ġ= Ġapp Resources . get G lu co se Measured List () ĊĠĠĠĠĠĠĠ Ġset Stats Period ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġload N utr ition Data () ĊĊĠĠĠĠĠĠĠ Ġsettings . observe G lu co se Units () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsettings . observe Measurement System () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog Repository . observe Updates () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset Stats Dao ( dao : ĠStats Dao ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstats Dao Ġ= Ġdao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset G lu co se Dao ( dao : ĠG lu co se Log Dao ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgl u co se Dao Ġ= Ġdao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset A 1 c Dao ( dao : ĠA 1 c Log Dao ) Ġ{ ĊĠĠĠĠĠĠĠ Ġa 1 c Dao Ġ= Ġdao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset Weight Dao ( dao : ĠWeight Log Dao ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweight Dao Ġ= Ġdao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset Ap Dao ( dao : ĠAp Log Dao ) Ġ{ ĊĠĠĠĠĠĠĠ Ġap Dao Ġ= Ġdao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset Settings ( settings : ĠApp Settings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . settings Ġ= Ġsettings ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset Log Repository ( repository : ĠLog Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . log Repository Ġ= Ġrepository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset App Resources ( resources : ĠApp Resources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Resources Ġ= Ġresources ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġset Me al Repository ( repository : ĠMe al Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġme al Repository Ġ= Ġrepository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠN utr ition ViewData Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcal ories Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcal ories Max Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġcal ories Description Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġvar Ġprotein Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġprotein Max Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġprotein Description Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġvar Ġfat Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġfat Max Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġfat Description Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġvar Ġcar bs Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcar bs Max Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġcar bs Description Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġprivate Ġfun Ġload N utr ition Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġme al Repository . get Today Me als (). subscribe ({ Ġme als Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠN utr ition ViewData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . cal ories Max Ġ= Ġsettings . get Cal ories Limit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . protein Max Ġ= Ġsettings . get Protein Limit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . fat Max Ġ= Ġsettings . getF at Limit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . car bs Max Ġ= Ġsettings . get Car bs Limit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġme als . on Each Ġ{ Ġme al Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al . food Serv ings . on Each Ġ{ Ġserving Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . cal ories Ġ+= Ġserving . cal ories . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . protein Ġ+= Ġserving . protein . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . fat Ġ+= Ġserving . fat . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . car bs Ġ+= Ġserving . car bs . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Description Ġ= Ġ{ Ġvalue : ĠInt , Ġmax : ĠInt , Ġtemplate Res : ĠInt , Ġtemplate Max Res : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( app Resources . context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Ġ> Ġ 0 ) ĠgetString ( template Max Res , Ġvalue , Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠgetString ( template Res , Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . cal ories Description Ġ= Ġset Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . cal ories , Ġdata . cal ories Max , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . template _ cal ories , ĠR . string . template _ cal ories _ max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . protein Description Ġ= Ġset Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . protein , Ġdata . protein Max , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . template _ grams , ĠR . string . template _ grams _ max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . fat Description Ġ= Ġset Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . fat , Ġdata . fat Max , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . template _ grams , ĠR . string . template _ grams _ max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . car bs Description Ġ= Ġset Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . car bs , Ġdata . car bs Max , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . template _ grams , ĠR . string . template _ grams _ max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġn utr ition ViewData . post Value ( data ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Stats Period ( p : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( stats Period Ġ!= Ġp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstats Period Ġ= Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Stats () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġforce Update () Ġ{ ĊĠĠĠĠĠĠĠ Ġload Stats () ĊĠĠĠĠĠĠĠ Ġset Chart Period ( chart Period ) ĊĠĠĠĠĠĠĠ Ġset G lu co se Chart Type ( glu co se Chart Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġprivate Ġfun Ġload Stats () Ġ{ ĊĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ Ġgl u co se Dao . getAll () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Maybe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . from Single ( when Ġ( stats Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġstats Dao . today () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġstats Dao . week () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġstats Dao . two Week s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġstats Dao . month () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġstats Dao . three Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġstats Dao . six Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġstats Dao . year () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġstats Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stats . min _ mm ol Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats Data . post Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats . min Formatted Ġ= Ġformat Min ( stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats . max Formatted Ġ= Ġformat Max ( stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats . avg Formatted Ġ= Ġformat Avg ( stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats . a 1 c Formatted Ġ= Ġformat A 1 C ( stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats Data . post Value ( stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats Data . post Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Min ( glu co se Statistics : ĠG lu co se Statistics ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġif Ġ( settings . use M mol As G lu co se Units ()) Ġgl u co se Statistics . min _ mm ol Ġelse Ġgl u co se Statistics . min _ mg ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Max ( glu co se Statistics : ĠG lu co se Statistics ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġif Ġ( settings . use M mol As G lu co se Units ()) Ġgl u co se Statistics . max _ mm ol Ġelse Ġgl u co se Statistics . max _ mg ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Avg ( glu co se Statistics : ĠG lu co se Statistics ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ( if Ġ( settings . use M mol As G lu co se Units ()) Ġgl u co se Statistics . avg _ mm ol Ġelse Ġgl u co se Statistics . avg _ mg ) Ġ?: Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format ("% . 1 f ", Ġvalue . toFloat ()). replace (',', Ġ'.') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat A 1 C ( glu co se Statistics : ĠG lu co se Statistics ): ĠString Ġ= Ġ"${ String . format ("% . 1 f ", Ġcalc A 1 C ( glu co se Statistics ))} %" ĊĠĠĠĠĠĠĠ Ġ. replace (',', Ġ'.') ĊĊĠĠĠ Ġprivate Ġfun Ġcalc A 1 C ( glu co se Statistics : ĠG lu co se Statistics ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuse M mol Ġ= Ġsettings . use M mol As G lu co se Units () ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ( if Ġ( settings . use M mol As G lu co se Units ()) Ġgl u co se Statistics . avg _ mm ol Ġelse Ġgl u co se Statistics . avg _ mg ) Ġ?: Ġreturn Ġ 0 f ĊĠĠĠĠĠĠĠ Ġval Ġavg Ġ= Ġvalue . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġa 1 c Ġ= Ġif Ġ( use M mol ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( avg Ġ+ Ġ 2 . 5 9 f ) Ġ/ Ġ 1 . 5 9 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( avg Ġ+ Ġ 4 6 . 7 f ) Ġ/ Ġ 2 8 . 7 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontrol . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 c Ġ< Ġ 7 f Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 c Ġin Ġ 7 f .. 8 f Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġa 1 c ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Chart Period ( period : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchart Period Ġ= Ġperiod ĊĠĠĠĠĠĠĠ Ġset Chart Type ( chart Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Chart Type ( type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchart Type Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġload Ap Chart Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġload Weight Chart Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġload A 1 c Chart Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġprivate Ġfun Ġload A 1 c Chart Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( chart Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġa 1 c Dao . getLast Month () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġa 1 c Dao . getLast Three Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġa 1 c Dao . getLast Six Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġa 1 c Dao . getBy This Year () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. subscribe On ( io ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠChart Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . set A 1 c Logs ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . isEmpty ()) Ġchart . post Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġchart . post Value ( data ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġprivate Ġfun Ġload Weight Chart Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( chart Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġweight Dao . getLast Month () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġweight Dao . getLast Three Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġweight Dao . getLast Six Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġweight Dao . getBy This Year () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. subscribe On ( io ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠChart Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . set Weight Logs ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . isEmpty ()) Ġchart . post Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġchart . post Value ( data ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġprivate Ġfun Ġload Ap Chart Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( chart Period Ġ== Ġ- 1 ) Ġreturn ĊĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( chart Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġap Dao . get Today () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġap Dao . getLast Week () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġap Dao . getLast Two Week s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġap Dao . getLast Month () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġap Dao . getLast Three Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġap Dao . six Months () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġap Dao . getBy This Year () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. subscribe On ( io ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠChart Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . set Ap Logs ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . isEmpty ()) Ġchart . post Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġchart . post Value ( data ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġfun Ġset G lu co se Chart Period ( period : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( period Ġ< Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġgl u co se Chart Period Ġ= Ġperiod ĊĊĠĠĠĠĠĠĠ Ġvar Ġmeasured Ġ= Ġgl u co se Chart Type ĊĠĠĠĠĠĠĠ Ġif Ġ( meas ured Ġ< Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmeasured Custom Id Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Resources . get G lu co se Measured List ()[ meas ured ]. id ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( meas ured Custom Id . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġgl u co se Dao . get Today ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġgl u co se Dao . getLast Week ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġgl u co se Dao . getLast Two Week s ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġgl u co se Dao . getLast Month ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġgl u co se Dao . getLast Three Months ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġgl u co se Dao . getLast Six Months ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġgl u co se Dao . getLast Year ( meas ured , Ġmeasured Custom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. subscribe On ( io ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠChart Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . set G lu co se Logs ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . isEmpty ()) Ġgl u co se Chart . post Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġgl u co se Chart . post Value ( data ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset G lu co se Chart Type ( type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgl u co se Chart Type Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġset G lu co se Chart Period ( glu co se Chart Period ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠ Ġ} Ċ }