package Ġcom . example . ped ro . feeds ense . modules . home Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . example . ped ro . feeds ense .* Ċ import Ġcom . example . ped ro . feeds ense . databinding . Fragment Line Chart Binding Ċ import Ġcom . example . ped ro . feeds ense . modules . hide Keyboard Ċ import Ġcom . github . mike phil . chart ing . charts . Chart Ċ import Ġcom . github . mike phil . chart ing . charts . Line Chart Ċ 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 . utils . Utils Ċ import Ġkotlinx . android . synt hetic . main . fragment _ line _ chart .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ line _ chart . view .* Ċ import Ġorg . k oin . android . architecture . ext . shared ViewModel Ċ Ċ class ĠLine Chart Fragment : ĠFragment (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġval ĠviewModel : ĠHome ViewModel Ġby Ġshared ViewModel () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠLine Chart Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLine Chart Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Fragment Line Chart Binding >( in flater , ĠR . layout . fragment _ line _ chart , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . set Lifecycle Owner ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ Ġview . plot _ chart _ with _ session _ button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġsetup Chart Empty State ( view . context , Ġview . line _ chart ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Chart Empty State ( context : ĠContext , Ġchart : ĠLine Chart ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchart . set No Data Text (" Es col ha Ġuma Ġsess Ã£o Ġac ima Ġpara Ġver Ġo Ġgr Ã¡f ico ") ĊĠĠĠĠĠĠĠ Ġval Ġtype face Ġ= ĠResources Compat . getFont ( context , ĠR . font . lat o _ light ) ĊĠĠĠĠĠĠĠ Ġchart . set No Data Text Type face ( type face ) ĊĠĠĠĠĠĠĠ Ġchart . get Paint ( Chart . PA INT _ INFO ). text Size Ġ= ĠUtils . convert Dp To Pixel ( 1 8 f ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġmarker Ċ // ĠĠĠĠĠĠĠ Ġval Ġmarker Ġ= ĠCustom Marker View ( context , ĠR . layout . line _ chart _ marker _ view ) Ċ // ĠĠĠĠĠĠĠ Ġchart . marker Ġ= Ġmarker ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . configure Line Chart . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġconfigure Line Chart ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . update Sessions Spinner . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġupdate Sessions Spinner ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( plot _ chart _ with _ session _ button . is Anim ating ) Ġplot _ chart _ with _ session _ button . revert Animation () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . line Chart Fragment Show Alert . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ( activity Ġas ? ĠHome Activity )?. show Simple Dialog ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( plot _ chart _ with _ session _ button . is Anim ating ) Ġplot _ chart _ with _ session _ button . revert Animation () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . plot _ chart _ with _ session _ button Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplot _ chart _ with _ session _ button . start Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= Ġplot _ chart _ with _ session _ field . selected Item . toString (). split (" Ġ- Ġ"). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . fetch Re actions ( sessionId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Line Chart ( data : ĠList < List < Entry >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġactivity !!. application Context ĊĠĠĠĠĠĠĠ Ġview ?. plot _ chart _ with _ session _ button ?. revert Animation () ĊĊĠĠĠĠĠĠĠ Ġval Ġgreen Ġ= ĠContext Compat . getColor ( context , ĠR . color . green ) ĊĠĠĠĠĠĠĠ Ġval Ġyellow Ġ= ĠContext Compat . getColor ( context , ĠR . color . yellow ) ĊĠĠĠĠĠĠĠ Ġval Ġred Ġ= ĠContext Compat . getColor ( context , ĠR . color . red ) ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSet Ġ= Ġdata [ 0 ]. parse To Line DataSet ( green ) ĊĠĠĠĠĠĠĠ Ġval ĠdataSet 1 Ġ= Ġdata [ 1 ]. parse To Line DataSet ( yellow ) ĊĠĠĠĠĠĠĠ Ġval ĠdataSet 2 Ġ= Ġdata [ 2 ]. parse To Line DataSet ( red ) ĊĊĠĠĠĠĠĠĠ Ġval Ġline Data Ġ= ĠLine Data ( data Set , ĠdataSet 1 , ĠdataSet 2 ) ĊĠĠĠĠĠĠĠ Ġline _ chart . data Ġ= Ġline Data ĊĠĠĠĠĠĠĠ Ġline _ chart . use Simple Style () ĊĠĠĠĠĠĠĠ Ġline _ chart . setTextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġline _ chart . animate X ( 3 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġline _ chart . invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Sessions Spinner ( sessions : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġactivity !!. application Context ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter < String >( context , ĠR . layout . spinner _ item , Ġsessions ) ĊĠĠĠĠĠĠĠ Ġadapter . set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġplot _ chart _ with _ session _ field . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} Ċ }