/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . example . m use um application . ui . m use ump anel . an alytic span el Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . example . m use um application . data . Artifact Ċ import Ġcom . example . m use um application . data . M use um Ċ import Ġcom . example . m use um application . data . Visit Ċ import Ġcom . example . m use um application . utils . m use ump anel . Statistics Utils Ċ import Ġcom . example . m use um application . utils . services . Cloud DB Manager ĊĊ Ċ class ĠP ager ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġm use um Ġ= ĠMutable LiveData < M use um >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġlist Ġinitial izations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġvisit List Ġ= ĠMutable LiveData < ArrayList < Visit >>() ĊĠĠĠ Ġvar Ġartifact List Ġ= Ġarray ListOf < Artifact >() ĊĊĠĠĠ Ġval Ġm use um Visit Count List Ġ= ĠMutable LiveData < Mutable List < Pair < String , ĠInt >> >() ĊĠĠĠ Ġval Ġm use um Visit Length List Ġ= ĠMutable LiveData < Mutable List < Pair < String , ĠInt >> >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġvariable Ġinitial izations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtotal Vis its Ġ= ĠMutable LiveData ( 0 ) ĊĠĠĠ Ġvar ĠprogressBar Visibility Ġ= ĠMutable LiveData ( View . VISIBLE ) ĊĠĠĠ Ġvar Ġaverage Visit Length Ġ= ĠMutable LiveData ( 0 ) ĊĠĠĠ Ġvar Ġtotal F avorites Ġ= ĠMutable LiveData ( 0 ) ĊĠĠĠ Ġvar Ġtotal Ex hib its Ġ= ĠMutable LiveData ( 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLe ast , ĠMost Ġvisited Ġand ĠL on gest , ĠShort est ĠVis ited ĠEx hib its ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmost Vis ited Artifact Name Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġvar Ġmost Vis ited Artifact Image Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġvar Ġleast Vis ited Artifact Name Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġvar Ġleast Vis ited Artifact Image Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġvar Ġlongest Visit Artifact Name Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġvar Ġlongest Visit Artifact Image Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġvar Ġshortest Visit Artifact Name Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġvar Ġshortest Visit Artifact Image Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġ// Statistics Ġutils ĊĠĠĠ Ġprivate Ġval Ġstatistics Utils Ġ= ĠStatistics Utils () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvisit List . value Ġ= ĠArrayList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstatistics Utils Ġ= ĠStatistics Utils () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠM use um ĠImage Ġload ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" load M use um Image ") ĊĠĠĠĠĠĠĠ Ġfun Ġload M use um Image ( view : ĠImageView , Ġm use um Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( view . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( m use um Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTop Ġex hib its Ġload Ġimages ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" load Image Ex hibit Most ") ĊĠĠĠĠĠĠĠ Ġfun Ġload Image Ex hibit Most ( view : ĠImageView , Ġartifact Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Bitmap ( statistics Utils . string To Bit Map ( artifact Image )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" load Image Ex hibit Least ") ĊĠĠĠĠĠĠĠ Ġfun Ġload Image Ex hibit Least ( view : ĠImageView , Ġartifact Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Bitmap ( statistics Utils . string To Bit Map ( artifact Image )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" load Image Ex hibit Lon gest ") ĊĠĠĠĠĠĠĠ Ġfun Ġload Image Ex hibit Lon gest ( view : ĠImageView , Ġartifact Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Bitmap ( statistics Utils . string To Bit Map ( artifact Image )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" load Image Ex hibit Short est ") ĊĠĠĠĠĠĠĠ Ġfun Ġload Image Ex hibit Short est ( view : ĠImageView , Ġartifact Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Bitmap ( statistics Utils . string To Bit Map ( artifact Image )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAverage Ġvisit Ġcalculation . ĊĠĠĠĠ Ġ* ĠAll Ġvisit Ġlengths Ġare Ġsum med ĊĠĠĠĠ Ġ* Ġthen Ġdivided Ġby Ġthe Ġsize Ġof Ġthe Ġvisit Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcalculate Average Visit () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( visit : ĠVisit Ġin Ġvisit List . value !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ+= Ġvisit . visit Time ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġaverage Visit Length . value Ġ= Ġ( temp Ġ/ Ġvisit List . value !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize () Ġ{ ĊĊĊĊ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCloud ĠDb Ġoperations Ġfor Ġgetting Ġartifact Ġand Ġm use um Ġinformation Ġfor Ġspecific Ġpartner Ġm use um ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCloud DB Manager . instance . getM use um Vis its ( m use um . value !!. m use um ID , Ġvisit List . value !! ) ĊĠĠĠĠĠĠĠ ĠCloud DB Manager . instance . get Artifacts Of M use um ( m use um . value !!. m use um ID , Ġartifact List ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġstatistics Ġcalculations ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġm use um Visit Count List . value Ġ= Ġstatistics Utils . getLast Week Vis its ( visit List . value !! ) ĊĠĠĠĠĠĠĠ Ġm use um Visit Length List . value Ġ= Ġstatistics Utils . getLast Week Visit Lengths ( visit List . value !! ) ĊĊĠĠĠĠĠĠĠ Ġtotal Vis its . value Ġ= Ġvisit List . value !!. size ĊĠĠĠĠĠĠĠ ĠprogressBar Visibility . value Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġcalculate Average Visit () ĊĠĠĠĠĠĠĠ Ġtotal F avorites . value Ġ= Ġm use um . value !!. total F avorites . toInt () ĊĠĠĠĠĠĠĠ Ġtotal Ex hib its . value Ġ= Ġm use um . value !!. ex hibit Count ĊĊĊĠĠĠĠĠĠĠ Ġartifact List . sort With Ġ{ Ġrhs , Ġlhs Ġ-> Ġlhs . favorite Count . compareTo ( rhs . favorite Count ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpair Visit Count Ġ= Ġstatistics Utils . find Most And Least Vis ited ( visit List . value !! , Ġartifact List ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmost Vis ited Ġ= Ġpair Visit Count . first ĊĠĠĠĠĠĠĠ Ġval Ġleast Vis ited Ġ= Ġpair Visit Count . second ĊĊĠĠĠĠĠĠĠ Ġmost Vis ited Artifact Name . value Ġ= Ġmost Vis ited . artifact Name ĊĠĠĠĠĠĠĠ Ġmost Vis ited Artifact Image . value Ġ= Ġmost Vis ited . artifact Image . toString () ĊĊĠĠĠĠĠĠĠ Ġleast Vis ited Artifact Name . value Ġ= Ġleast Vis ited . artifact Name ĊĠĠĠĠĠĠĠ Ġleast Vis ited Artifact Image . value Ġ= Ġleast Vis ited . artifact Image . toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġpair Visit Time Ġ= Ġstatistics Utils . find Lon gest And Short est Visit ( visit List . value !! , Ġartifact List ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlongest Visit Ġ= Ġpair Visit Time . first ĊĠĠĠĠĠĠĠ Ġval Ġshortest Visit Ġ= Ġpair Visit Time . second ĊĊĠĠĠĠĠĠĠ Ġlongest Visit Artifact Name . value Ġ= Ġlongest Visit . artifact Name ĊĠĠĠĠĠĠĠ Ġlongest Visit Artifact Image . value Ġ= Ġlongest Visit . artifact Image . toString () ĊĊĠĠĠĠĠĠĠ Ġshortest Visit Artifact Name . value Ġ= Ġshortest Visit . artifact Name ĊĠĠĠĠĠĠĠ Ġshortest Visit Artifact Image . value Ġ= Ġshortest Visit . artifact Image . toString () ĊĊĠĠĠ Ġ} ĊĊĊĊ Ċ }