package Ġcom . rar ms . stocks . performance . ui . charts . performance Ċ Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . selection . selectable Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . rar ms . stocks . performance . model . Performance By Ċ import Ġcom . rar ms . stocks . performance . ui . charts . Chart Body Ċ Ċ @ Composable Ċ fun ĠPerformance Screen ( performance ViewModel : ĠPerformance ViewModel ) Ġ{ ĊĠĠĠ Ġval Ġview State Ġby Ġperformance ViewModel . state . collect As State () ĊĠĠĠ Ġval Ġperformance By Ġ= Ġperformance ViewModel . selected Performance By . collect As State () ĊĠĠĠ ĠChart Body ( ĊĠĠĠĠĠĠĠ Ġstock s Ġ= Ġview State . stocks , ĊĠĠĠĠĠĠĠ Ġtime frame Ġ= Ġview State . time frame , ĊĠĠĠĠĠĠĠ Ġrefresh ing Ġ= Ġview State . refresh ing , ĊĠĠĠĠĠĠĠ Ġon Time frame Selected Ġ= Ġperformance ViewModel :: on Time frame Selected , ĊĠĠĠĠĠĠĠ Ġon Refresh Click Ġ= Ġperformance ViewModel :: update Data For Selected Time frame , ĊĠĠĠĠĠĠĠ Ġerror Ġ= Ġview State . error , ĊĠĠĠĠĠĠĠ Ġsettings Composable Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Window ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchosen Performance Ġ= Ġperformance By . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperformance ViewModel :: on Performance Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġchart Body Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPerformance Chart Body ( view State . stocks , Ġview State . time frame , Ġperformance By . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ @ Composable Ċ fun ĠSettings Window ( ĊĠĠĠ Ġchosen Performance : ĠPerformance By , ĊĠĠĠ Ġon Performance Selected : Ġ( Performance By ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġradio Options Ġ= ĠPerformance By . values (). map Ġ{ Ġit . name Ġ}. toList () ĊĠĠĠ Ġval Ġ( selected Option , Ġon Option Selected ) Ġ= Ġremember Ġ{ Ġmutable State Of ( chosen Performance . name ) Ġ} ĊĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( 8 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier . padding ( 8 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Calculate Ġperformance Ġby ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġradio Options . forEach Ġ{ Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. selectable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġ( text Ġ== Ġselected Option ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Option Selected ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Performance Selected ( Performance By . valueOf ( text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 1 6 . dp , Ġvertical Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRadio Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġ( text Ġ== Ġselected Option ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Option Selected ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 . merge (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ