package Ġbr . com . luc as cor de iro . kle ver . ui . home . balance Ċ Ċ import Ġandroidx . compose . animation . Cross fade Ċ import Ġandroidx . compose . animation . core . Fast Out Slow In E asing Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . foundation . Scroll State Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . horizontal Scroll Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Box With Constraints Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . offset Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Content Alpha Ċ import Ġandroidx . compose . material . Divider Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . rounded . Computer Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . collect As State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . remember Coroutine Scope Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . graphics . Brush Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . layout . on Glob ally Position ed Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . constraint layout . compose . Constraint Layout Ċ import Ġbr . com . luc as cor de iro . kle ver . components . Linear Chart Ċ import Ġbr . com . luc as cor de iro . kle ver . components . Switch Controller Ċ import Ġbr . com . luc as cor de iro . kle ver . components . Switch Defaults Ċ import Ġbr . com . luc as cor de iro . kle ver . components . helper . get ViewModel Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . model . bank account . Bank Account Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . model . bank account . transactions . Bank Account Transaction Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . model . bank account . transactions . Transaction Range Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . currency Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . formatted Day Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . get Day OfMonth Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . getMonth Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . get Week Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . round Ċ import Ġbr . com . luc as cor de iro . kle ver . domain . utils . to Label Ċ import Ġbr . com . luc as cor de iro . kle ver . theme . Font Light Ċ import Ġbr . com . luc as cor de iro . kle ver . theme . Pur ple Medium Ċ import Ġbr . com . luc as cor de iro . kle ver . utils . from Px Ċ import Ġbr . com . luc as cor de iro . kle ver . utils . to Px Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . math . round ToInt Ċ Ċ @ Composable Ċ fun ĠHome Balance ( ĊĠĠĠ Ġbank Account : ĠBank Account , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ ĠviewModel : ĠHome Balance ViewModel Ġ= Ġget ViewModel (), Ċ ) Ġ{ ĊĊĠĠĠ ĠLa unched Effect ( bank Account ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( bank Account . balance Ġ?: Ġ 0 . 0 ) Ġ> Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . collect Transactions ( bank Account . balance Ġ?: Ġ 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtransactions Ġby ĠviewModel . transactions . collect As State () ĊĠĠĠ Ġval Ġrange Ġby ĠviewModel . transaction Range . collect As State () ĊĊĠĠĠ Ġval Ġchart Scroll State Ġ= Ġremember Scroll State () ĊĊĠĠĠ ĠLa unched Effect ( chart Scroll State . max Value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchart Scroll State . animate Scroll To ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġchart Scroll State . max Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Millis Ġ= Ġ 5 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeasing Ġ= ĠFast Out Slow In E asing , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠColumn ( modifier ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBalance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbank Account , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠTransactions Chart ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Ġ= Ġbank Account . balance Ġ?: Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions Data Ġ= Ġtransactions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange Ġ= Ġrange , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchart Scroll State Ġ= Ġchart Scroll State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠDiv ider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠFont Light . copy ( alpha Ġ= ĠContent Alpha . medium ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĊĠĠĠĠĠĠĠ ĠSwitch Transaction Range ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Range Ġ= Ġrange , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate Range Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it != Ġrange ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchart Scroll State . scrollTo ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Transaction Range ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠBalance ( ĊĠĠĠ Ġbank Account : ĠBank Account , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ){ ĊĠĠĠ ĠBox ( modifier ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Overview ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . subtitle 1 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Background ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Rounded . Computer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠCross fade ( target State Ġ= Ġbank Account , ĠModifier . padding ( top Ġ= Ġ 2 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstraint Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( balance , Ġlabel ) Ġ= Ġcreate Refs () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit . balance . currency (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 4 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Medium , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Background ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . constr ain As ( balance ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Vert ically To ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( parent . start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Total Ġwe alth ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Normal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠFont Light , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . constr ain As ( label ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbaseline . link To ( balance . baseline ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( balance . end , Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Foundation Api :: class ) Ċ @ Composable Ċ private Ġfun ĠTransactions Chart ( ĊĠĠĠ Ġbalance : ĠDouble , ĊĠĠĠ Ġtransactions Data : ĠTrip le < List < Bank Account Transaction >, ĠDouble , ĠDouble >, ĊĠĠĠ Ġrange : ĠTransaction Range , ĊĠĠĠ Ġchart Scroll State : ĠScroll State , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġchart Data : ĠTrip le < List < Double >, ĠList < String >, ĠList < Pair < String , ĠDouble ? >>> Ġby Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable State Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠLa unched Effect ( balance , Ġtransactions Data , Ġrange ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( transactions Data . first . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchart Data Ġ= ĠTrip le ( emptyList (), Ġ Ġempty List (), Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransactions Ġ= Ġtransactions Data . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Amount Ġ= Ġtransactions Data . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmin Amount Ġ= Ġtransactions Data . third ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( balance Ġ> Ġmax Amount ) Ġmax Amount Ġ= Ġbalance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( balance Ġ< Ġmin Amount ) Ġmin Amount Ġ= Ġbalance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġmax Amount Ġ- Ġmin Amount ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlegend Bottom Ġ= Ġtransactions . as Re versed (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( range ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Range . Day Ġ-> Ġit . transfer Date ?. formatted Day () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Range . Week Ġ-> Ġit . transfer Date ?. get Week () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Range . Month Ġ-> Ġit . transfer Date ?. get Day OfMonth ()?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit . transfer Date ?. getMonth ()?. capitalize ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. filter NotNull (). to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlegend Bottom . remove Last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlegend Bottom . add (" Now ") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlegend End : ĠMutable List < Pair < String , ĠDouble ? >> Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlegend End . add ( Pair ( max Amount . round ToInt (). to Label (), Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlegend End . add ( Pair ( balance . round ToInt (). to Label (), Ġ( balance Ġ- Ġmin Amount ) Ġ/ Ġdiff )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlegend End . add ( Pair ( min Amount . round ToInt (). to Label (), Ġnull )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchart Data Ġ= ĠTrip le ( transactions . map Ġ{ Ġit . balance Percent ?: 0 . 0 Ġ}. as Re versed (), Ġlegend Bottom , Ġlegend End ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ ĊĊĠĠ ĠCross fade ( target State Ġ= Ġchart Data , Ġmodifier ) Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠ ĠBox With Constraints () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġchart Height Ġ= Ġremember Ġ{ Ġ 2 0 0 . dp Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Width Ġ= Ġremember ( this . constraints . maxWidth , Ġdata . first ) Ġ{ Ġ Ġif ( data . first . isNotEmpty () Ġ&& Ġconstraints . maxWidth Ġ>= Ġdata . first . size Ġ* Ġ 7 0 . dp . to Px ( context )) ĠmaxWidth . div ( data . first . size ) Ġelse Ġ 7 0 . dp Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠ ĠLinear Chart ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata . first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlegend Bottom Ġ= Ġdata . second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlegend End Ġ= Ġdata . third , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Width Ġ= Ġcolumn Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Vertical Lines Count Ġ= Ġdata . first . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. horizontal Scroll ( chart Scroll State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( column Width . times ( data . first . size )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( chart Height ) ĊĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠSwitch Transaction Range ( ĊĠĠĠ Ġcurrent Range : ĠTransaction Range , ĊĠĠĠ ĠonUpdate Range : Ġ( Transaction Range ) Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ){ ĊĠĠĠ ĠSwitch Controller ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcurrent Range . label , ĊĠĠĠĠĠĠĠ Ġoptions Ġ= ĠlistOf ( Transaction Range . Day . label , ĠTransaction Range . Week . label , ĠTransaction Range . Month . label , ĠTransaction Range . Year . label ), ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĠonUpdate Range ( when ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Range . Day . label Ġ-> ĠTransaction Range . Day ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Range . Week . label Ġ-> ĠTransaction Range . Week ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Range . Month . label Ġ-> ĠTransaction Range . Month ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTransaction Range . Year ĊĠĠĠĠĠĠĠ Ġ}) Ġ}, ĊĠĠĠĠĠĠĠ Ġcolors Ġ= ĠSwitch Defaults . switch Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccent Brush Ġ= ĠBr ush . linear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f Ġto ĠMaterial Theme . colors . secondary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 f Ġto ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠOffset ( 0 f , ĠFloat . POSITIVE _ INFINITY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠOffset ( Float . POSITIVE _ INFINITY , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= ĠMaterial Theme . colors . on Primary , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon BackgroundColor Ġ= ĠFont Light ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġaccept Null Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠ Ġ) Ċ } ĊĊ