package Ġcom . example . att end anc etime . screen . classes Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . example . att end anc etime . Common Value Ċ import Ġcom . example . att end anc etime . databinding . Fragment Subject Classes Binding Ċ import Ġcom . github . mike phil . chart ing . components . Legend Ċ import Ġcom . github . mike phil . chart ing . data . Pie Data Ċ import Ġcom . github . mike phil . chart ing . data . Pie DataSet Ċ import Ġcom . github . mike phil . chart ing . data . Pie Entry Ċ import Ġcom . github . mike phil . chart ing . formatter . Percent Formatter Ċ Ċ class ĠSubject Classes Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Subject Classes Binding ĊĠĠĠ Ġprivate Ġvar Ġy Data Ġ= Ġarray ListOf ( 5 0 f , Ġ 5 0 f ) ĊĠĠĠ Ġprivate Ġval Ġx Data Ġ= Ġarray ListOf (" Present ", Ġ" Absent ") ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Subject Classes Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Common Value . attendance List . value ?. isEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty Warning . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Value . attendance List . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Average Attendance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetUp Pie Chart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd DataSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . chart . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Pie Chart () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . chart . is Draw Hole Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbinding . chart . set Use Percent Values ( true ) ĊĠĠĠĠĠĠĠ Ġbinding . chart . set Entry Label Text Size ( 1 2 f ) ĊĠĠĠĠĠĠĠ Ġbinding . chart . set Entry Label Color ( Color . BLACK ) ĊĠĠĠĠĠĠĠ Ġbinding . chart . center Text Ġ= Ġ" Attendance ĠStats " ĊĠĠĠĠĠĠĠ Ġbinding . chart . set Center Text Size ( 1 2 f ) ĊĠĠĠĠĠĠĠ Ġbinding . chart . description . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġlegend Ġ= Ġbinding . chart . legend ĊĠĠĠĠĠĠĠ Ġlegend . vertical Alignment Ġ= ĠLegend . Legend Vertical Alignment . TOP ĊĠĠĠĠĠĠĠ Ġlegend . horizontal Alignment Ġ= ĠLegend . Legend Horizontal Alignment . RIGHT ĊĠĠĠĠĠĠĠ Ġlegend . orientation Ġ= ĠLegend . Legend Orientation . VERTICAL ĊĠĠĠĠĠĠĠ Ġlegend . set Draw Inside ( false ) ĊĠĠĠĠĠĠĠ Ġlegend . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Average Attendance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġatt endance List Ġ= ĠCommon Value . attendance List . value !! ĊĠĠĠĠĠĠĠ Ġval Ġtotal Student : ĠFloat Ġ= ĠCommon Value . student List . value ?. size ?. times ( attendance List . size )?. toFloat () Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Present Student Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Absent Student Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġatt endance List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġi . attendance . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i . attendance [ j ] Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Present Student ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtotal Absent Student Ġ= Ġtotal Student Ġ- Ġtotal Present Student ĊĊĠĠĠĠĠĠĠ Ġval Ġavg Present Ġ= Ġ( total Present Student Ġ/ Ġtotal Student ) Ġ* Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġavg Absent Ġ= Ġ( total Absent Student Ġ/ Ġtotal Student ) Ġ* Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġy Data Ġ= Ġarray ListOf ( avg Present , Ġavg Absent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd DataSet () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpie Entry Ġ= Ġarray ListOf < Pie Entry >() ĊĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġy Data . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpie Entry . add ( Pie Entry ( y Data [ i ], Ġx Data [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpie DataSet Ġ= ĠP ie DataSet ( pie Entry , Ġ"") ĊĠĠĠĠĠĠĠ Ġpie DataSet . slice Space Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠ Ġpie DataSet . value Text Size Ġ= Ġ 1 2 f ĊĊĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= Ġarray ListOf ( Color . LT GRAY , ĠColor . RED ) ĊĠĠĠĠĠĠĠ Ġpie DataSet . colors Ġ= Ġcolors ĊĊĠĠĠĠĠĠĠ Ġval Ġpie Data Ġ= ĠP ie Data ( pie DataSet ) ĊĠĠĠĠĠĠĠ Ġpie Data . set Draw Values ( true ) ĊĠĠĠĠĠĠĠ Ġpie Data . setValue Formatter ( Percent Formatter ( binding . chart )) ĊĠĠĠĠĠĠĠ Ġbinding . chart . data Ġ= Ġpie Data ĊĠĠĠĠĠĠĠ Ġbinding . chart . invalidate () ĊĠĠĠ Ġ} Ċ }