import Ġkotlinx . browser . document Ċ import Ġkotlinx . browser . window Ċ import Ġkotlinx . html .* Ċ import Ġkotlinx . html . dom .* Ċ import Ġorg . w 3 c . xhr . XML HttpRequest Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . json .* Ċ import Ġorg . w 3 c . dom .* Ċ import Ġorg . w 3 c . files . get Ċ import Ġorg . w 3 c . xhr . FormData Ċ Ċ @ Serializable Ċ data Ġclass ĠParse Post ( ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġinstrument : ĠString , ĊĠĠĠ Ġval Ġdifficulty : ĠString , ĊĠĠĠ Ġval Ġcomment : ĠString Ċ ) Ċ Ċ fun Ġload Content () Ġ{ ĊĊĠĠĠ Ġval Ġhttp Ġ= ĠXMLHttpRequest () ĊĊĠĠĠ Ġhttp . open (" GET ", Ġ"/ content ") ĊĊĠĠĠ Ġhttp . onload Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( http . status Ġin Ġ 2 0 0 .. 3 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Json Ġ= ĠJson . decode FromString < List < Parse Post >>( http . responseText ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġparsed Json ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . getElementById (" main ") !!. prepend Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSheet Post ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġpost . id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġpost . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstrument Ġ= Ġpost . instrument , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdifficulty Ġ= Ġpost . difficulty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġpost . comment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). run Ġ{ Ġrender () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġhttp . send () Ċ } Ċ Ċ fun Ġbutton Upload Add EventListener ( id : ĠString ) Ġ{ ĊĠĠĠ Ġ( document . getElementById ( id ) Ġas ĠHTML Button Element ). addEventListener (" click ", Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Name Ġ= Ġ( document . getElementById (" input - name ") Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠ Ġval Ġselect Instrument Ġ= Ġ( document . getElementById (" select - instrument ") Ġas ĠHTML Select Element ). value ĊĠĠĠĠĠĠĠ Ġval Ġselect Difficulty Ġ= Ġ( document . getElementById (" select - difficulty ") Ġas ĠHTML Select Element ). value ĊĠĠĠĠĠĠĠ Ġval Ġinput Comment Ġ= Ġ( document . getElementById (" input - comment ") Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġ( document . getElementById (" input - file ") Ġas ĠHTML InputElement ). files ?. get ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( input Name . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġselect Instrument . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġselect Difficulty . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġfile Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . alert (" Incorrect Ġinput Ġ' Sheet Ġname ' Ġor Ġ' Instrument ' /' Difficulty ' Ġnot Ġselected Ġor ĠFile Ġnot Ġchosen ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ addEventListener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠFormData () ĊĠĠĠĠĠĠĠ Ġdata . append ( file . name , Ġfile ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhttp Ġ= ĠXMLHttpRequest () ĊĠĠĠĠĠĠĠ Ġhttp . open ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" POST ", Ġ"/ upload " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"? name =${ input Name }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"& instrument =${ select Instrument }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"& difficulty =${ select Difficulty }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"& comment =${ input Comment }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġhttp . onload Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( http . status Ġin Ġ 2 0 0 .. 3 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . location . reload () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhttp . send ( data ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġwindow . onload Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġload Content () ĊĠĠĠĠĠĠĠ Ġbutton Upload Add EventListener (" button - upload ") ĊĠĠĠ Ġ} Ċ } Ċ