package Ġcom . h awesome . ble connector . view . device Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . graphics . alpha Ċ import Ġcom . github . mike phil . chart ing . charts . Bar Chart Ċ import Ġcom . github . mike phil . chart ing . components . Limit Line Ċ import Ġcom . github . mike phil . chart ing . components . X Axis Ċ import Ġcom . github . mike phil . chart ing . data . Bar Data Ċ import Ġcom . github . mike phil . chart ing . data . Bar DataSet Ċ import Ġcom . github . mike phil . chart ing . data . Bar Entry Ċ import Ġcom . github . mike phil . chart ing . formatter . Value Formatter Ċ import Ġcom . h awesome . ble connector . R Ċ import Ġcom . h awesome . ble connector . ext . to Res Color Ċ import Ġcom . h awesome . ble connector . ext . to Res String Ċ import Ġcom . h awesome . ble connector . ext . trim Ċ import Ġcom . h awesome . ble connector . kit . Tag Kit Ċ import Ġcom . h awesome . ble connector . kit . Tag Value Converter Ċ import Ġcom . h awesome . ble connector . model . Device Model Ċ import Ġcom . h awesome . ble connector . model . Device Page Item Ċ import Ġcom . h awesome . ble connector . model . Tag Ċ Ċ class ĠBar Display ( context : ĠContext , Ġval Ġpage Item : ĠDevice Page Item , Ġattrs : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĊĠĠĠ ĠBar Chart ( context , Ġattrs ), ĠOn Tag Listener Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġcontext . resources . get Dimension ( R . dim en . large _ height ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , Ġheight ) ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĊĠĠĠĠĠĠĠ Ġinit Chart () ĊĠĠĠĠĠĠĠ Ġobserve Tag Update ( context , Ġpage Item , Ġ:: update Views ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġ åĿĲæłĩ + åıĤèĢĥ çº¿ ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Chart () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdescription . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġlegend . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġx Axis . position Ġ= ĠX Axis . X Axis Position . BOTTOM ĊĠĠĠĠĠĠĠ Ġx Axis . set Draw Grid Lines ( false ) ĊĠĠĠĠĠĠĠ Ġaxis Right . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset Draw Value Above Bar ( false ) ĊĠĠĠĠĠĠĠ Ġset Scale Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset Touch Enabled ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġx Items Ġ= Ġpage Item . tags ĊĠĠĠĠĠĠĠ Ġif Ġ( x Items . isNull OrEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġx Axis . value Formatter Ġ= ĠItem Value Formatter ( x Items ) ĊĠĠĠĠĠĠĠ Ġx Axis . label Count Ġ= Ġx Items !!. size ĊĠĠĠĠĠĠĠ Ġaxis Left . set Draw Limit Lines Be hind Data ( true ) ĊĊĠĠĠĠĠĠĠ Ġupdate Views ( Tag Kit . get Tags ( page Item . tags Ġ?: ĠlistOf ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Y Axis () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġy Items Ġ= Ġpage Item . items ĊĠĠĠĠĠĠĠ Ġ// items : [" 0 "," 0 . 0 1 * Ul * Un / yellow "," Un / green "," 0 . 0 1 * Uo * Un / red "," 1 . 3 * Un "] ĊĠĠĠĠĠĠĠ Ġaxis Left . axis Minimum Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġif Ġ( y Items . isNull OrEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( y Items . size Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Left . removeAll Limit Lines () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Left . axis Minimum Ġ= ĠTag Value Converter . get Unit Factor ( y Items . first ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Left . axis Maximum Ġ= ĠTag Value Converter . get Unit Factor ( y Items . last ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 1 Ġuntil Ġy Items . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfos Ġ= Ġy Items [ index ]. split ( Device Model . ITEM _ INFO _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( infos . size Ġ!= Ġ 2 ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠTag Value Converter . get Unit Factor ( infos [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠLimit Line ( value . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit . lineWidth Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit . line Color Ġ= Ġinfos [ 1 ]. to Res Color () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit . enable D ashed Line ( 2 0 f , Ġ 2 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Left . limit Lines . add ( limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( page Item . unit Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunit Tag Ġ= ĠTag Kit . get Tags ( listOf ( page Item . unit )). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Left . axis Maximum Ġ= Ġ( unit Tag ?. value Ġ?: Ġ 0 ). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Views ( tags : ĠList < Tag >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġupdate Y Axis () ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġtags . map Ġ{ Ġit . value Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . map Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĠBar Entry ( index . toFloat (), Ġvalue . toFloat ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ// é»ĺè®¤ åĢ¼ æĺ¾ç¤º åľ¨ æŁ ± çĬ¶ åĽ¾ éĩĮéĿ¢ ï¼Į å½ĵ åĢ¼ å°ı æŁ ± çĬ¶ åĽ¾ å¤ª çŁ ® æĹ¶ æĺ¾ç¤º åľ¨ ä¸Ĭ æĸ¹ ĊĠĠĠĠĠĠĠ Ġval Ġabove Ġ= Ġ( values . min OrNull () Ġ?: Ġ 0 ). toFloat () Ġ<= Ġaxis Left . axis Maximum Ġ* Ġ 0 . 1 5 ĊĠĠĠĠĠĠĠ Ġset Draw Value Above Bar ( above ) ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠBar DataSet ( entries , Ġ"") ĊĠĠĠĠĠĠĠ Ġset . color Ġ= Ġcontext . getColor ( R . color . blue _ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġbar Data Ġ= ĠBar Data ( set ) ĊĠĠĠĠĠĠĠ Ġbar Data . set Draw Values ( true ) ĊĠĠĠĠĠĠĠ Ġval ĠtextColor ID Ġ= Ġif Ġ( above ) ĠR . color . primary _ text Ġelse ĠR . color . white ĊĠĠĠĠĠĠĠ Ġbar Data . setValue TextColor ( context . getColor ( textColor ID )) ĊĠĠĠĠĠĠĠ Ġbar Data . setValue Text Size ( 2 0 f ) ĊĠĠĠĠĠĠĠ Ġbar Data . setValue Formatter ( Y Value Formatter ()) ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġbar Data ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* ĠX åĢ¼ æł¼å¼ı ï¼ļ 1 . 0 , 2 . 0 , 3 . 0 âĨĴ A çĽ¸ ï¼Į B çĽ¸ ï¼Į C çĽ¸ ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠItem Value Formatter ( val Ġitems : ĠList < String >) Ġ: ĠValue Formatter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Formatted Value ( value : ĠFloat ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġvalue . toInt () Ġ% Ġitems . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems [ index ]. to Res String () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* ĠY åĢ¼ æł¼å¼ı ï¼ļ æ¸ħ ç©º å¤ļ ä½Ļ çļĦ å°¾ æķ° 0 ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠY Value Formatter Ġ: ĠValue Formatter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Formatted Value ( value : ĠFloat ) Ġ= Ġvalue . trim () ĊĠĠĠ Ġ} Ċ }