package Ġcom . ru u vi . station . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . v 4 . content . Context Compat . startActivity Ċ import Ġandroid . support . v 4 . content . File Provider Ċ import Ġandroid . support . v 4 . content . res . Resources Compat Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . github . mike phil . chart ing . charts . Line Chart Ċ import Ġcom . github . mike phil . chart ing . components . Axis Base Ċ import Ġcom . github . mike phil . chart ing . components . X Axis Ċ import Ġcom . github . mike phil . chart ing . components . Y Axis Ċ import Ġcom . github . mike phil . chart ing . data . Entry Ċ import Ġcom . github . mike phil . chart ing . data . Line Data Ċ import Ġcom . github . mike phil . chart ing . data . Line DataSet Ċ import Ġcom . github . mike phil . chart ing . formatter . I Axis Value Formatter Ċ import Ġcom . ru u vi . station . R Ċ import Ġcom . ru u vi . station . model . R uu vi Tag Ċ import Ġcom . ru u vi . station . model . Tag Sensor Reading Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠGraph View Ġ( val Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġfrom : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġto : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġdraw Chart ( tag Id : ĠString , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġread ings Ġ= ĠTag Sensor Reading . get For Tag ( tag Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtemp Data : ĠMutable List < Entry > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġhum id Data : ĠMutable List < Entry > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġpressure Data : ĠMutable List < Entry > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġval Ġtemp Unit Ġ= ĠR uu vi Tag . get Temperature Unit ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġto Ġ= Ġcal . time . time ; ĊĠĠĠĠĠĠĠ Ġcal . add ( Calendar . HOUR , Ġ- 2 4 ) ĊĠĠĠĠĠĠĠ Ġfrom Ġ= Ġcal . time . time ĊĊĠĠĠĠĠĠĠ Ġif Ġ( read ings . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( from Ġ< Ġread ings [ 0 ]. createdAt . time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġread ings [ 0 ]. createdAt . time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrouped Ġ= Ġread ings . groupBy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( read ings . size Ġ> Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . createdAt . day . toString () Ġ+ Ġ":" Ġ+ Ġit . createdAt . hours . toString () Ġ+ Ġ":" Ġ+ ĠString . format ("% 0 2 d ", Ġit . createdAt . minutes )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( read ings . size Ġ> Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . createdAt . day . toString () Ġ+ Ġ":" Ġ+ Ġit . createdAt . hours . toString () Ġ+ Ġ":" Ġ+ Ġit . createdAt . minutes . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . createdAt . day . toString () Ġ+ Ġ":" Ġ+ Ġit . createdAt . hours . toString () Ġ+ Ġ":" Ġ+ Ġit . createdAt . minutes . toString () Ġ+ Ġ":" Ġ+ Ġit . createdAt . seconds . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreading Ġ= Ġit . value [ it . value . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= Ġ( reading . createdAt . time Ġ- Ġfrom ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Unit . equals (" C ")) Ġtemp Data . add ( Entry ( timestamp , Ġreading . temperature . toFloat ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġtemp Data . add ( Entry ( timestamp , ĠUtils . cel ci us To F ah ren heit ( reading . temperature ). toFloat ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhum id Data . add ( Entry ( timestamp , Ġreading . humidity . toFloat ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressure Data . add ( Entry ( timestamp , Ġreading . pressure . toFloat ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= Ġto . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Data . add ( Entry ( timestamp , ĠUtils . cel ci us To F ah ren heit ( 0 . 0 ). toFloat ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhum id Data . add ( Entry ( timestamp , Ġ 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpressure Data . add ( Entry ( timestamp , Ġ 0 f )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd DataTo Chart ( temp Data , Ġview . findViewById ( R . id . temp Chart ), Ġ" Temperature ") ĊĠĠĠĠĠĠĠ Ġadd DataTo Chart ( hum id Data , Ġview . findViewById ( R . id . hum id Chart ), Ġ" Hum idity ") ĊĠĠĠĠĠĠĠ Ġadd DataTo Chart ( pressure Data , Ġview . findViewById ( R . id . pressure Chart ), Ġ" Pressure ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd DataTo Chart ( data : ĠMutable List < Entry >, Ġchart : ĠLine Chart , Ġlabel : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠLine DataSet ( data , Ġlabel ) ĊĠĠĠĠĠĠĠ Ġset . set Draw Values ( false ) ĊĠĠĠĠĠĠĠ Ġset . set Draw Filled ( true ) ĊĠĠĠĠĠĠĠ Ġset . high Light Color Ġ= Ġcontext . resources . getColor ( R . color . main ) ĊĠĠĠĠĠĠĠ Ġset . circle Radius Ġ= Ġ( 2 ). toFloat () ĊĠĠĠĠĠĠĠ Ġchart . xAxis . axis Maximum Ġ= Ġ( to Ġ- Ġfrom ). toFloat () ĊĠĠĠĠĠĠĠ Ġchart . xAxis . axis Minimum Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġchart . xAxis . textColor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġchart . xAxis . position Ġ= ĠX Axis . X Axis Position . BOTTOM ĊĠĠĠĠĠĠĠ Ġchart . get Axis ( Y Axis . Axis Dependency . LEFT ). textColor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġchart . get Axis ( Y Axis . Axis Dependency . RIGHT ). set Draw Labels ( false ) ĊĠĠĠĠĠĠĠ Ġchart . description . text Ġ= Ġlabel ĊĠĠĠĠĠĠĠ Ġchart . description . textColor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġchart . description . text Size Ġ= Ġcontext . resources . get Dimension ( R . dim en . graph _ description _ size ) ĊĠĠĠĠĠĠĠ Ġchart . set No Data TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchart . description . type face Ġ= ĠResources Compat . getFont ( context , ĠR . font . mont serrat ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ġ/* ĠÂ ¯ \_ ( ãĥĦ )_ / Â ¯ Ġ*/ Ġ} ĊĠĠĠĠĠĠĠ Ġchart . legend . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġchart . data Ġ= ĠLine Data ( set ) ĊĠĠĠĠĠĠĠ Ġchart . data . is Highlight Enabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġchart . xAxis . value Formatter Ġ= Ġobject Ġ: ĠI Axis Value Formatter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Format Ġ= ĠSimpleDateFormat (" HH : mm ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Formatted Value ( value : ĠFloat , Ġaxis : ĠAxis Base ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Format . format ( Date ( value . to Long () Ġ+ Ġfrom )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġchart . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġchart . invalidate () ĊĠĠĠ Ġ} Ċ Ċ }