package Ġworld . ph ant asm al . web . h unt Optimizer . controllers Ċ Ċ import Ġworld . ph ant asm al . observable . cell . cell Ċ import Ġworld . ph ant asm al . observable . cell . list . List Cell Ċ import Ġworld . ph ant asm al . observable . cell . list . map ToList Ċ import Ġworld . ph ant asm al . web . h unt Optimizer . models . Opt imal Method Model Ċ import Ġworld . ph ant asm al . web . h unt Optimizer . stores . H unt Optimizer Store Ċ import Ġworld . ph ant asm al . we bui . controllers . Column Ċ import Ġworld . ph ant asm al . we bui . controllers . Table Controller Ċ import Ġworld . ph ant asm al . we bui . to Rounded String Ċ import Ġkotlin . time . Duration Ċ import Ġkotlin . time . Duration Unit . HOUR S Ċ Ċ class ĠOptimization Result Controller ( ĊĠĠĠ Ġh unt Optimizer Store : ĠH unt Optimizer Store , Ċ ) Ġ: ĠTable Controller < Opt imal Method Model >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġfixed Columns Ġ= Ġ 4 ĊĠĠĠ Ġoverride Ġval Ġhas Footer Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġval Ġvalues : ĠList Cell < Opt imal Method Model > Ġ= ĊĠĠĠĠĠĠĠ Ġh unt Optimizer Store . optimization Result . map ToList Ġ{ Ġit . optimal Methods Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcolumns : ĠList Cell < Column < Opt imal Method Model >> Ġ= ĊĠĠĠĠĠĠĠ Ġh unt Optimizer Store . optimization Result . map ToList Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Runs Ġ= Ġ. 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Time Ġ= ĠDuration . ZERO ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( optimal Method Ġin Ġresult . optimal Methods ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Runs Ġ+= Ġoptimal Method . runs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Time Ġ+= Ġoptimal Method . total Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠDIFF _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Difficulty ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Ġ= Ġcell (" Totals :" ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠMETHOD _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Method ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 2 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠE PI SO DE _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Ep .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠSECTION _ ID _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Section ĠID ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 9 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠTIME _ PER _ RUN _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Time / Run ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 9 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= Ġ" center ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠRUN S _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Runs ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 6 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= Ġ" right ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip Ġ= Ġ{ Ġit . runs . toString () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Ġ= Ġcell ( total Runs . to Rounded String ( 1 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Tooltip Ġ= Ġcell ( total Runs . toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠTOT AL _ TIME _ COL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Total ĠH ours ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 6 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= Ġ" right ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip Ġ= Ġ{ Ġit . total Time . toDouble ( HOUR S ). toString () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Ġ= Ġcell ( total Time . toDouble ( HOUR S ). to Rounded String ( 1 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Tooltip Ġ= Ġcell ( total Time . toDouble ( HOUR S ). toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Array ( result . wanted Items . size ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwanted Ġ= Ġresult . wanted Items [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Count Ġ= Ġresult . optimal Methods . sum Of Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . item TypeId To Count [ wanted . id ] Ġ?: Ġ. 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġwanted . id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġwanted . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= Ġ" right ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip Ġ= Ġ{ Ġit . item TypeId To Count [ wanted . id ]?. toString () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Ġ= Ġcell ( total Count . to Rounded String ( 2 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Tooltip Ġ= Ġcell ( total Count . toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDIFF _ COL Ġ= Ġ" diff " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMETHOD _ COL Ġ= Ġ" method " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠE PI SO DE _ COL Ġ= Ġ" episode " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSECTION _ ID _ COL Ġ= Ġ" section _ id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTIME _ PER _ RUN _ COL Ġ= Ġ" time _ per _ run " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRUN S _ COL Ġ= Ġ" runs " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTOT AL _ TIME _ COL Ġ= Ġ" total _ time " ĊĠĠĠ Ġ} Ċ } Ċ