package Ġd his 2 . org . analytics . charts . map pers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġcom . ev ren co sk un . table view . TableView Ċ import Ġd his 2 . org . R Ċ import Ġd his 2 . org . analytics . charts . data . Chart Type Ċ import Ġd his 2 . org . analytics . charts . data . Graph Ċ import Ġd his 2 . org . analytics . charts . data . Ser ie Data Ċ import Ġd his 2 . org . analytics . charts . table . Graph Table Adapter Ċ import Ġorg . h isp . dh is . android . core . arch . helpers . Date Utils Ċ Ċ class ĠGraph ToTable Ġ{ ĊĠĠĠ Ġfun Ġmap ( context : ĠContext , Ġgraph : ĠGraph ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( graph . series . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTextView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . no _ data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtable View Ġ= ĠTable View ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġtable Adapter Ġ= ĠGraph Table Adapter ( context ) ĊĠĠĠĠĠĠĠ Ġtable View . adapter Ġ= Ġtable Adapter ĊĠĠĠĠĠĠĠ Ġtable View . header Count Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġseries Ġ= Ġif Ġ( graph . chart Type Ġ== ĠChart Type . N UT R ITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( graph . series . last ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . series ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġheaders ( graph , Ġseries ) ĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġrows ( series ) ĊĠĠĠĠĠĠĠ Ġval Ġcells Ġ= Ġcells ( graph , Ġseries , Ġheaders ) ĊĊĠĠĠĠĠĠĠ Ġtable Adapter . set All Items ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrows , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcells , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtable View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġheaders ( graph : ĠGraph , Ġseries : ĠList < Ser ie Data >): ĠList < String ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( graph . categories . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseries . map Ġ{ Ġit . coordinates Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatten () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct By Ġ{ Ġit . event Date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . event Date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( graph . chart Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . PI E _ CH ART Ġ-> Ġit . legend ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDate Utils . SIMPLE _ DATE _ FORMAT . format ( it . event Date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . categories ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrows ( series : ĠList < Ser ie Data >): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġseries . map Ġ{ Ġit . fieldName Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcells ( ĊĠĠĠĠĠĠĠ Ġgraph : ĠGraph , ĊĠĠĠĠĠĠĠ Ġseries : ĠList < Ser ie Data >, ĊĠĠĠĠĠĠĠ Ġheaders : ĠList < String ?> ĊĠĠĠ Ġ): ĠList < List < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( graph . categories . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseries . map Ġ{ Ġser ie Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable ListOf < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . forEach Ġ{ Ġheader Label Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġser ie . coordinates . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( graph . chart Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Type . PI E _ CH ART Ġ-> Ġit . legend Ġ== Ġheader Label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Utils . SIMPLE _ DATE _ FORMAT . format ( it . event Date ) Ġ== ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. field Value ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseries . map Ġ{ Ġit . coordinates . map Ġ{ Ġpoint Ġ-> Ġpoint . field Value . toString () Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ