package Ġru . hs Helper . android App . ui . marks Ċ Ċ import Ġru . hs Helper . android App . data . Button Data Ċ import Ġru . hs Helper . android App . data . Path Ċ import Ġru . hs Helper . android App . rest . codegen . models . User Work Ċ Ċ object ĠContent Builder Ġ{ ĊĠĠĠ Ġfun Ġgroup Table ( group Works : ĠList < User Work >): ĠMark s Table Content . Group Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse Rows Ġ= Ġgroup Works ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . work . course Part . course . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: course Row ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMark s Table Content . Group ( course Rows ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcourse Table ( course Works : ĠList < User Work >): ĠMark s Table Content . Course Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse Part Rows Ġ= Ġcourse Works ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . work . course Part . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: course Part Row ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMark s Table Content . Course ( course Part Rows ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcourse Part Table ( course Part Works : ĠList < User Work >): ĠMark s Table Content . Course Part Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwork Rows Ġ= Ġcourse Part Works . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . work . deadline Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: work Row ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġreturn ĠMark s Table Content . Course Part ( work Rows ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwork Row ( user Work : ĠUser Work ): ĠMark s Row Content . Work Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMark s Row Content . Work ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Work . work . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Work . work . deadline , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Data (" Assignment ") Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Work . send Time , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Data (" Solution ") Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Work . mark , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Work . work . weight ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcourse Part Row ( user Works : ĠList < User Work >): ĠMark s Row Content . Course Part Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse Part Ġ= Ġuser Works [ 0 ]. work . course Part ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcourse Part . name ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPath . Course Part ( course Part . id ) ĊĠĠĠĠĠĠĠ Ġval Ġlauncher Ġ= ĠButton Data ( name , ĠMark s Activity . launcher ( name , Ġpath )) ĊĠĠĠĠĠĠĠ Ġval Ġweight Ġ= Ġcourse Part . weight ĊĠĠĠĠĠĠĠ Ġval Ġmark Ġ= Ġcourse Part Mark ( user Works ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMark s Row Content . Course Part ( launcher , Ġmark , Ġweight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcourse Row ( user Works : ĠList < User Work >): ĠMark s Row Content . Course Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse Ġ= Ġuser Works [ 0 ]. work . course Part . course ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcourse . name ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPath . Course ( course . id ) ĊĠĠĠĠĠĠĠ Ġval Ġlauncher Ġ= ĠButton Data ( name , ĠMark s Activity . launcher ( name , Ġpath )) ĊĠĠĠĠĠĠĠ Ġval Ġmark Ġ= Ġcourse Mark ( user Works ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMark s Row Content . Course ( launcher , Ġmark ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwe ig hed User Work Mark ( work : ĠUser Work ): ĠMark Interval Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmark Ġ= Ġwork . mark ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( mark Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMark Interval ( 1 0 . 0 , Ġ 1 0 . 0 , Ġ 0 . 0 ) Ġ* Ġwork . work . weight ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMark Interval ( mark Ġ* Ġwork . work . weight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcourse Part Mark ( works : ĠList < User Work >): ĠMark Interval Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( works . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMark Interval ( 1 0 . 0 , Ġ 1 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġworks . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: we ig hed User Work Mark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce ( Mark Interval :: plus ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwe ig hed Course Part Mark ( works : ĠList < User Work >): ĠMark Interval Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcourse Part Mark ( works ) Ġ* Ġworks [ 0 ]. work . course Part . weight ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcourse Mark ( works : ĠList < User Work >): ĠMark Interval Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( works . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMark Interval ( 1 0 . 0 , Ġ 1 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġworks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . work . course Part . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: we ig hed Course Part Mark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce ( Mark Interval :: plus ) ĊĠĠĠ Ġ} Ċ }