/** Ċ Ġ* ĠA Ġview Ġwith Ġproject Ġdetails Ċ Ġ*/ Ċ Ċ @ file : Suppress (" Wildcard Import ", Ġ" FILE _ W IL DC ARD _ IMPORT S ", Ġ" Large Class ") Ċ Ċ package Ġorg . cq fn . save . frontend . components . views Ċ Ċ import Ġorg . cq fn . save . domain .* Ċ import Ġorg . cq fn . save . entities .* Ċ import Ġorg . cq fn . save . execution . Execution Dto Ċ import Ġorg . cq fn . save . frontend . components . basic . Testing Type Ċ import Ġorg . cq fn . save . frontend . components . basic . card Component Ċ import Ġorg . cq fn . save . frontend . components . basic . file Uploader Ċ import Ġorg . cq fn . save . frontend . components . basic . privacy Span Ċ import Ġorg . cq fn . save . frontend . components . basic . project Info Ċ import Ġorg . cq fn . save . frontend . components . basic . project Settings Menu Ċ import Ġorg . cq fn . save . frontend . components . basic . project Statistic Menu Ċ import Ġorg . cq fn . save . frontend . components . basic . sdk Selection Ċ import Ġorg . cq fn . save . frontend . components . basic . test Resources Selection Ċ import Ġorg . cq fn . save . frontend . components . error Status Context Ċ import Ġorg . cq fn . save . frontend . external s . fontawesome . fa Calendar Alt Ċ import Ġorg . cq fn . save . frontend . external s . fontawesome . fa Edit Ċ import Ġorg . cq fn . save . frontend . external s . fontawesome . fa History Ċ import Ġorg . cq fn . save . frontend . external s . fontawesome . font Awesome Icon Ċ import Ġorg . cq fn . save . frontend . external s . modal . modal Ċ import Ġorg . cq fn . save . frontend . http . getProject Ċ import Ġorg . cq fn . save . frontend . utils . Project MenuBar Ċ import Ġorg . cq fn . save . frontend . utils . api Url Ċ import Ġorg . cq fn . save . frontend . utils . append Json Ċ import Ġorg . cq fn . save . frontend . utils . decode FromJson String Ċ import Ġorg . cq fn . save . frontend . utils . get Ċ import Ġorg . cq fn . save . frontend . utils . noop Response Handler Ċ import Ġorg . cq fn . save . frontend . utils . post Ċ import Ġorg . cq fn . save . frontend . utils . run Confirm Window Modal Ċ import Ġorg . cq fn . save . frontend . utils . run Error Modal Ċ import Ġorg . cq fn . save . frontend . utils . unsafe Map Ċ import Ġorg . cq fn . save . info . UserInfo Ċ import Ġorg . cq fn . save . tests uite . TestSuite Dto Ċ Ċ import Ġorg . w 3 c . dom . HTML Button Element Ċ import Ġorg . w 3 c . dom . HTML InputElement Ċ import Ġorg . w 3 c . dom . asList Ċ import Ġorg . w 3 c . fetch . Headers Ċ import Ġorg . w 3 c . fetch . Response Ċ import Ġorg . w 3 c . xhr . FormData Ċ import Ġreact . Context Ċ import Ġreact . Props With Children Ċ import Ġreact . R Builder Ċ import Ġreact . R Statics Ċ import Ġreact . State Ċ import Ġreact . State Setter Ċ import Ġreact . dom . a Ċ import Ġreact . dom . button Ċ import Ġreact . dom . div Ċ import Ġreact . dom . h 1 Ċ import Ġreact . dom . li Ċ import Ġreact . dom . nav Ċ import Ġreact . dom . p Ċ import Ġreact . dom . span Ċ import Ġreact . setState Ċ Ċ import Ġkotlinx . browser . document Ċ import Ġkotlinx . browser . window Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . datetime . LocalDateTime Ċ import Ġkotlinx . datetime . Month Ċ import Ġkotlinx . html . Button Type Ċ import Ġkotlinx . html . classes Ċ import Ġkotlinx . html . js . onClick Function Ċ import Ġkotlinx . html . role Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ Ċ /** Ċ Ġ* Ġ` Props ` Ġretrieved Ġfrom Ġrouter Ċ Ġ*/ Ċ @ Suppress (" MISSING _ K DOC _ CLASS _ ELEMENT S ") Ċ external Ġinterface ĠProject Execution Route Props Ġ: ĠProps With Children Ġ{ ĊĠĠĠ Ġvar Ġowner : ĠString ĊĠĠĠ Ġvar Ġname : ĠString ĊĠĠĠ Ġvar Ġcurrent UserInfo : ĠUserInfo ? Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ State ] Ġof Ġproject Ġview Ġcomponent Ċ Ġ*/ Ċ external Ġinterface ĠProject ViewState Ġ: ĠState Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCurrently Ġloaded Ġfor Ġdisplay ĠProject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġproject : ĠProject ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFiles Ġrequired Ġfor Ġtests Ġexecution Ġfor Ġthis Ġproject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġfiles : ĠMutable List < FileInfo > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFiles Ġthat Ġare Ġavailable Ġon Ġserver Ġside ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġavailable Files : ĠMutable List < FileInfo > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMessage Ġof Ġerror ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar ĠerrorMessage : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġto Ġhandle Ġerror ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Error Open : ĠBoolean ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠError Ġlabel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġerror Label : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMessage Ġof Ġwarning ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġconfirm Message : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġto Ġhandle Ġconfirm ĠWindow ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Confirm Window Open : ĠBoolean ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLabel Ġof Ġconfirm ĠWindow ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġconfirm Label : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġto Ġhandle Ġloading ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar ĠisLoading : ĠBoolean ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġsdk ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġselected Sdk : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġversion ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġselected Sdk Version : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġto Ġhandle Ġupload Ġtype Ġproject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtesting Type : ĠTesting Type ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSubmit Ġbutton Ġwas Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Submit Button Pressed : ĠBoolean ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠState Ġfor Ġthe Ġcreation Ġof Ġunified Ġconfirmation Ġlogic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġconfirmation Type : ĠConfirm ation Type ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUrl Ġto Ġthe Ġcustom Ġtests ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġgit Url From Input Field : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBranch Ġof Ġcommit Ġin Ġcurrent Ġrepo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġgit Branch Or Commit From Input Field : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExecution Ġcommand Ġfor Ġstandard Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexec Cmd : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBatch Ġsize Ġfor Ġstatic Ġanalyzer Ġtool Ġin Ġstandard Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġbatch Size For Analyzer : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDirectory Ġin Ġthe Ġrepository Ġwhere Ġtests Ġare Ġplaced ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtest RootPath : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġlanguages Ġin Ġthe Ġlist Ġof Ġstandard Ġtests ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġselected Language For Standard Tests : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGeneral Ġsize Ġof Ġtest Ġsuite Ġin Ġbytes ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsuite Byte Size : ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBytes Ġreceived Ġby Ġserver ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġbytes Received : ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġto Ġhandle Ġuploading Ġa Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Up loading : ĠBoolean ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġediting Ġof Ġproject Ġinfo Ġis Ġdisabled ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Edit Disabled : ĠBoolean ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġproject Ġselected Ġmenu ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġselected Menu : ĠProject MenuBar ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġlatest Ġexecution Ġid Ġfor Ġthis Ġproject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġlatest Execution Id : ĠLong ? Ċ } Ċ Ċ /** Ċ Ġ* Ġenum Ġthat Ġstores Ġtypes Ġof Ġconfirmation Ġwindows Ġfor Ġdifferent Ġsituations Ċ Ġ*/ Ċ enum Ġclass ĠConfirm ation Type Ġ{ ĊĠĠĠ ĠDELETE _ CONFIRM , ĊĠĠĠ ĠNO _ BINARY _ CONFIRM , ĊĠĠĠ ĠNO _ CONFIRM , ĊĠĠĠ Ġ; Ċ } Ċ Ċ /** Ċ Ġ* ĠA ĠComponent Ġfor Ġproject Ġview Ċ Ġ* ĠEach Ġmodal Ġopening Ġcall Ġcauses Ġre - render Ġof Ġthe Ġwhole Ġpage , Ġthat 's Ġwhy Ġwe Ġneed Ġto Ġuse Ġstate Ġfor Ġall Ġfields Ċ Ġ*/ Ċ @ Js Export Ċ @ Opt In ( Experimental Js Export :: class ) Ċ @ Suppress (" MAGIC _ NUMBER ") Ċ class ĠProject View Ġ: ĠAbstract View < Project Execution Route Props , ĠProject ViewState >( false ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġstandard Test Su ites : ĠList < TestSuite Dto > Ġ= Ġempty List () ĊĠĠĠ Ġprivate Ġval Ġselected Standard Su ites : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġgit Dto : ĠGit Dto ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġdate Ġ= ĠLocalDateTime ( 1 9 7 0 , ĠMonth . J AN U ARY , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 ) ĊĠĠĠ Ġprivate Ġval Ġtest Resources Selection Ġ= Ġtest Resources Selection ( ĊĠĠĠĠĠĠĠ Ġupdate Git Url From Input Field Ġ= Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . preventDefault () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Url From Input Field Ġ= Ġ( event . target Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġupdate Git Branch Or Commit Input Field Ġ= Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Branch Or Commit From Input Field Ġ= Ġ( event . target Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġupdate Test RootPath Ġ= Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest RootPath Ġ= Ġ( event . target Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġset Test RootPath From History Ġ= Ġ{ Ġtest RootPath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . test RootPath Ġ= Ġtest RootPath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġset Exec Cmd Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Cmd Ġ= Ġ( it . target Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġset Batch Size Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch Size For Analyzer Ġ= Ġ( it . target Ġas ĠHTML InputElement ). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠsetSelected Language For Standard Tests Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Language For Standard Tests Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġproject Info Ġ= Ġproject Info ( ĊĠĠĠĠĠĠĠ Ġturn Edit Mode Ġ= Ġ:: turn Edit Mode , ĊĠĠĠĠĠĠĠ Ġon Project Save Ġ= Ġ{ Ġdraft Project , Ġset Draft Project Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( draft Project Ġ!= Ġstate . project ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġupdate Project ( draft Project !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġdraft Project ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Failed Ġto Ġsave Ġproject Ġinfo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Failed Ġto Ġsave Ġproject Ġinfo : Ġ${ response . status } Ġ${ response . status Text }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrollback Ġform Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Draft Project ( state . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Suppress (" TOO _ MAN Y _ LINES _ IN _ L AMBDA ") ĊĠĠĠ Ġprivate Ġval Ġproject Settings Menu Ġ= Ġproject Settings Menu ( ĊĠĠĠĠĠĠĠ Ġdelete Project Callback Ġ= Ġ:: delete Project , ĊĠĠĠĠĠĠĠ Ġupdate Project Settings Ġ= Ġ{ Ġproject Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġupdate Project ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . project Ġ= Ġproject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Failed Ġto Ġsave Ġproject Ġsettings " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Failed Ġto Ġsave Ġproject Ġsettings : Ġ${ response . status } Ġ${ response . status Text }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġupdate ErrorMessage Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Failed Ġto Ġsave Ġproject Ġinfo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Failed Ġto Ġsave Ġproject Ġinfo : Ġ${ it . status } Ġ${ it . status Text }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġproject Statistic Menu Ġ= Ġproject Statistic Menu () ĊĠĠĠ Ġprivate Ġval Ġproject Info Card Ġ= Ġcard Component ( is Border ed Ġ= Ġtrue , Ġhas Bg Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild ( project Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġstate . project ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Edit Disabled Ġ= Ġstate . is Edit Disabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdiv (" ml - 3 Ġmt - 2 Ġalign - items - left Ġjustify - content - between ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Awesome Icon ( icon Ġ= Ġfa History ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( classes Ġ= Ġ" btn Ġbtn - link Ġtext - left ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Latest ĠExecution " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch To Latest Execution ( state . latest Execution Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . disabled Ġ= Ġstate . latest Execution Id Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv (" ml - 3 Ġalign - items - left ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Awesome Icon ( icon Ġ= Ġfa Calendar Alt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhref Ġ= Ġ"# /${ state . project . organization . name }/${ state . project . name }/ history ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġ" btn Ġbtn - link Ġtext - left " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Execution ĠHistory " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġtype Selection Ġ= Ġcard Component Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv (" text - left ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtesting Type Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTesting Type . CUSTOM _ TESTS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Evaluate Ġyour Ġtool Ġwith Ġyour Ġown Ġtests Ġfrom Ġgit ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mr - 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtesting Type Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTesting Type . STANDARD _ BENCH MARK S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Evaluate Ġyour Ġtool Ġwith Ġstandard Ġtest Ġsu ites ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mt - 3 Ġmr - 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtesting Type Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTesting Type . CON TEST _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Part icip ate Ġin ĠSAVE Ġcont ests Ġwith Ġyour Ġtool ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mt - 3 Ġmr - 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġfile Uploader Ġ= Ġfile Uploader ( ĊĠĠĠĠĠĠĠ Ġon File Select Ġ= Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavailable File Ġ= Ġavailable Files . first Ġ{ Ġit . name Ġ== Ġelement . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . add ( available File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Received Ġ+= Ġavailable File . size Bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuite Byte Size Ġ+= Ġavailable File . size Bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Files . remove ( available File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon File Remove Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . remove ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Received Ġ-= Ġit . size Bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuite Byte Size Ġ-= Ġit . size Bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Files . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon File Input Ġ= Ġ{ Ġpost FileUpload ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġon Executable Change Ġ= Ġ{ Ġselected File , Ġchecked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles [ files . indexOf ( selected File )] Ġ= Ġselected File . copy ( is Executable Ġ= Ġchecked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġsdk Selection Ġ= Ġsdk Selection ({ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Sdk Ġ= Ġit . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Sdk Version Ġ= Ġselected Sdk . get Sdk Versions (). first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ Ġselected Sdk Version Ġ= Ġit . value Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresponse From Delete Project : ĠResponse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . project Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" N / A ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" N / A ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" N / A ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject Status . CREATED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorganization Ġ= ĠOrganization (" stub ", ĠOrganization Status . CREATED , Ġnull , Ġdate ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstate . git Url From Input Field Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . git Branch Or Commit From Input Field Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . exec Cmd Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . batch Size For Analyzer Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . test RootPath Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . confirmation Type Ġ= ĠConfirm ation Type . NO _ CONFIRM ĊĠĠĠĠĠĠĠ Ġstate . testing Type Ġ= ĠTesting Type . CUSTOM _ TESTS ĊĠĠĠĠĠĠĠ Ġstate . isError Open Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġstate . is Submit Button Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġstate . errorMessage Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . error Label Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . isLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġstate . files Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġstate . available Files Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġstate . selected Sdk Ġ= ĠS dk . Default . name ĊĠĠĠĠĠĠĠ Ġstate . selected Sdk Version Ġ= ĠS dk . Default . version ĊĠĠĠĠĠĠĠ Ġstate . selected Language For Standard Tests Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġstate . suite Byte Size Ġ= Ġstate . files . sum Of Ġ{ Ġit . size Bytes Ġ} ĊĠĠĠĠĠĠĠ Ġstate . bytes Received Ġ= Ġstate . available Files . sum Of Ġ{ Ġit . size Bytes Ġ} ĊĠĠĠĠĠĠĠ Ġstate . is Up loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġstate . is Edit Disabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġstate . selected Menu Ġ= ĠProject MenuBar . RUN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠcomponentDidMount () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . component Did Mount () ĊĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġget Project ( props . name , Ġprops . owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġif Ġ( result . is Failure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĠisLoading Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . project Ġ= Ġproject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Project Ġ= ĠJson . encode ToString ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHeaders (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset (" Accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit Dto Ġ= Ġpost ("$ api Url / projects / git ", Ġheaders , Ġjson Project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decode FromJson String < Git Dto >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstandard Test Su ites Ġ= Ġget ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ api Url / all Standard Test Su ites ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Handler Ġ= Ġ:: noop Response Handler , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decode FromJson String () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavailable Files Ġ= Ġget Files List () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . available Files . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . available Files . addAll ( available Files ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Latest Execution Id () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Complex Method ", Ġ" TOO _ LONG _ FUNCTION ") ĊĠĠĠ Ġprivate Ġfun Ġsubmit Execution Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state . testing Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTesting Type . CUSTOM _ TESTS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl With Tests Ġ= Ġstate . git Url From Input Field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbranch Or Commit Ġ= Ġstate . git Branch Or Commit From Input Field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠURL Ġis Ġrequired Ġin Ġall Ġcases , Ġthe Ġprocessing Ġshould Ġnot Ġbe Ġdone Ġwithout Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url With Tests . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġprovided Ġvalue Ġcontains Ġ` origin ` Ġthen Ġit 's Ġa Ġbranch , Ġotherwise Ġa Ġcommit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( new Branch , Ġnew Commit ) Ġ= Ġif Ġ( branch Or Commit . contains (" origin / ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Or Commit Ġto Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġto Ġbranch Or Commit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Git Dto Ġ= Ġgit Dto ?. copy ( url Ġ= Ġurl With Tests , Ġbranch Ġ= Ġnew Branch , Ġhash Ġ= Ġnew Commit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠGit Dto ( url Ġ= Ġurl With Tests , Ġbranch Ġ= Ġnew Branch , Ġhash Ġ= Ġnew Commit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Execution Request With Custom Tests ( new Git Dto ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Standard Su ites . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Both Ġtype Ġof Ġproject " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Please Ġchoose Ġat Ġleast Ġone Ġtest Ġsuite " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Execution Request With Standard Tests () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Unsafe Call On Nullable Type ") ĊĠĠĠ Ġprivate Ġfun Ġsubmit Execution Request With Standard Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHeaders () ĊĠĠĠĠĠĠĠ Ġval ĠformData Ġ= ĠFormData () ĊĠĠĠĠĠĠĠ Ġval Ġselected Sdk Ġ= Ġ"${ state . selected Sdk }:${ state . selected Sdk Version }". to Sdk () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠExecution Request For Standard Su ites ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . project , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Standard Su ites , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Sdk , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . exec Cmd , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . batch Size For Analyzer ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠformData . append Json (" execution ", Ġrequest ) ĊĠĠĠĠĠĠĠ Ġstate . files . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠformData . append Json (" file ", Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsubmit Request ("/ execution Request Standard Tests ", Ġheaders , ĠformData ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubmit Execution Request With Custom Tests ( correct Git Dto : ĠGit Dto ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Sdk Ġ= Ġ"${ state . selected Sdk }:${ state . selected Sdk Version }". to Sdk () ĊĠĠĠĠĠĠĠ Ġval ĠformData Ġ= ĠFormData () ĊĠĠĠĠĠĠĠ Ġval Ġtest RootPath Ġ= Ġstate . test RootPath . if Blank Ġ{ Ġ"." Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexecution Request Ġ= ĠExecution Request ( state . project , Ġcorrect Git Dto , Ġtest RootPath , Ġselected Sdk , Ġnull ) ĊĠĠĠĠĠĠĠ ĠformData . append Json (" execution Request ", Ġexecution Request ) ĊĠĠĠĠĠĠĠ Ġstate . files . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠformData . append Json (" file ", Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsubmit Request ("/ submit Execution Request ", ĠHeaders (), ĠformData ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubmit Request ( url : ĠString , Ġheaders : ĠHeaders , Ġbody : Ġdynamic ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġpost ( api Url Ġ+ Ġurl , Ġheaders , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . text (). then Ġ{ Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Error Ġfrom Ġbackend " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Request Ġfailed : Ġ[ ${ response . status Text }] Ġ$ text " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . location . href Ġ= Ġ"${ window . location }/ history " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" TOO _ LONG _ FUNCTION ", Ġ" Long Method ", Ġ" Complex Method ") ĊĠĠĠ Ġoverride Ġfun ĠR Builder . render () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmodal Ġwindows Ġare Ġinitially Ġhidden ĊĠĠĠĠĠĠĠ Ġrun Error Modal ( state . isError Open , Ġstate . error Label , Ġstate . errorMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ Ġis Error Open Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Confirm Window Modal ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . is Confirm Window Open , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . confirm Label , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . confirm Message , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠsetState Ġ{ Ġis Confirm Window Open Ġ= Ġfalse Ġ} Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state . confirmation Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Type . NO _ BINARY _ CONFIRM , ĠConfirm ation Type . NO _ CONFIRM Ġ-> Ġsubmit Execution Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Type . DELETE _ CONFIRM Ġ-> Ġdelete Project Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġa Ġgenerated Ġelse Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ Ġis Confirm Window Open Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Loading Modal () ĊĠĠĠĠĠĠĠ Ġ// ĠPage ĠHeading ĊĠĠĠĠĠĠĠ Ġdiv (" d - sm - flex Ġalign - items - center Ġjustify - content - center Ġmb - 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh 1 (" h 3 Ġmb - 0 Ġtext - gray - 8 0 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" ĠProject Ġ${ state . project . name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivacy Span ( state . project ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdiv (" row Ġalign - items - center Ġjustify - content - center ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav (" nav Ġnav - tabs Ġmb - 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject MenuBar . values (). forEach Indexed Ġ{ Ġi , Ġproject Menu Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli (" nav - item ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Val Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( i Ġ== Ġ 0 Ġ&& Ġstate . selected Menu Ġ== Ġnull ) Ġ|| Ġstate . selected Menu Ġ== Ġproject Menu ) Ġ" Ġactive Ġfont - weight - bold " Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp (" nav - link Ġ$ class Val Ġtext - gray - 8 0 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . selected Menu Ġ!= Ġproject Menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Menu Ġ= Ġproject Menu ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ project Menu . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( state . selected Menu !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject MenuBar . RUN Ġ-> Ġrender Run () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject MenuBar . STAT ISTICS Ġ-> Ġrender Statistics () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject MenuBar . SETTINGS Ġ-> Ġrender Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġa Ġgenerated Ġelse Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" TOO _ LONG _ FUNCTION ", Ġ" Long Method ") ĊĠĠĠ Ġprivate Ġfun ĠR Builder . render Run () Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv (" row Ġjustify - content - center Ġml - 5 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ================= ==== ĠLEFT ĠCOLUMN Ġ================================================================= ====== ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" col - 2 Ġmr - 3 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" text - xs Ġtext - center Ġfont - weight - bold Ġtext - primary Ġtext - uppercase Ġmb - 3 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Testing Ġtypes " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( type Selection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ================= ==== ĠM ID DLE ĠCOLUMN Ġ================================================================= ==== ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" col - 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" text - xs Ġtext - center Ġfont - weight - bold Ġtext - primary Ġtext - uppercase Ġmb - 3 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Test Ġconfiguration " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ======== Ġfile Ġselector Ġ========= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( file Uploader ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . is Submit Button Pressed Ġ= Ġstate . is Submit Button Pressed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . files Ġ= Ġstate . files ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . available Files Ġ= Ġstate . available Files ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . confirmation Type Ġ= Ġstate . confirmation Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . suite Byte Size Ġ= Ġstate . suite Byte Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . bytes Received Ġ= Ġstate . bytes Received ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . is Up loading Ġ= Ġstate . is Up loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ======== Ġsdk Ġselection Ġ========= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( sdk Selection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . selected Sdk Ġ= Ġstate . selected Sdk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . selected Sdk Version Ġ= Ġstate . selected Sdk Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ======== Ġtest Ġresources Ġselection Ġ========= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( test Resources Selection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . testing Type Ġ= Ġstate . testing Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . is Submit Button Pressed Ġ= Ġstate . is Submit Button Pressed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . git Dto Ġ= Ġgit Dto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġproperties Ġfor ĠCUSTOM _ TESTS Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . test RootPath Ġ= Ġstate . test RootPath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . git Url From Input Field Ġ= Ġstate . git Url From Input Field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . git Branch Or Commit From Input Field Ġ= Ġstate . git Branch Or Commit From Input Field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġproperties Ġfor ĠST AND ARD _ BENCH MARK S Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . selected Standard Su ites Ġ= Ġselected Standard Su ites ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . standard Test Su ites Ġ= Ġstandard Test Su ites ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . selected Language For Standard Tests Ġ= Ġstate . selected Language For Standard Tests ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . exec Cmd Ġ= Ġstate . exec Cmd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . batch Size For Analyzer Ġ= Ġstate . batch Size For Analyzer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" d - sm - flex Ġalign - items - center Ġjustify - content - center ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( type Ġ= ĠButton Type . button , Ġclasses Ġ= Ġ" btn Ġbtn - primary ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Function Ġ= Ġ{ Ġsubmit With Validation () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Test Ġthe Ġtool Ġnow " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ================= ==== ĠRIGHT ĠCOLUMN Ġ================================================================= ===== ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" col - 3 Ġml - 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" text - xs Ġtext - center Ġfont - weight - bold Ġtext - primary Ġtext - uppercase Ġmb - 3 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Information " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( classes Ġ= Ġ" btn Ġbtn - link Ġtext - xs Ġtext - muted Ġtext - left Ġp - 1 Ġml - 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Edit Ġ Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont Awesome Icon ( icon Ġ= Ġfa Edit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġturn Edit Mode ( is Off Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( project Info Card ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . render Statistics () Ġ{ ĊĠĠĠĠĠĠĠ Ġchild ( project Statistic Menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . execution Id Ġ= Ġstate . latest Execution Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . render Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġchild ( project Settings Menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . project Ġ= Ġstate . project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . self Role Ġ= ĠRole . VIEW ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . current UserInfo Ġ= Ġprops . current UserInfo Ġ?: ĠUserInfo (" Unknown ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost FileUpload ( element : ĠHTML InputElement ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Up loading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . files !!. asList (). forEach Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuite Byte Size Ġ+= Ġfile . size . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . files !!. asList (). forEach Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : ĠFileInfo Ġ= Ġpost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ api Url / files / upload ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHeaders (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormData (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" file ", Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decode FromJson String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġonly Ġto Ġselected Ġfiles Ġso Ġthat Ġthis Ġentry Ġisn 't Ġduplicated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . add ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Received Ġ+= Ġresponse . size Bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Up loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġturn Edit Mode ( is Off : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Edit Disabled Ġ= Ġis Off ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( document . getElementById (" Save Ġnew Ġproject Ġinfo ") Ġas ĠHTML Button Element ). hidden Ġ= Ġis Off ĊĠĠĠĠĠĠĠ Ġ( document . getElementById (" Cancel ") Ġas ĠHTML Button Element ). hidden Ġ= Ġis Off ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . run Loading Modal () Ġ= Ġmodal Ġ{ ĊĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisOpen Ġ= Ġstate . isLoading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Label Ġ= Ġ" Loading " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv (" d - flex Ġjustify - content - center Ġmt - 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" spinner - border Ġtext - primary Ġspinner - border - lg ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . role Ġ= Ġ" status " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan (" sr - only ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Loading ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . testing Type Button ( selected Testing Type : ĠTesting Type , Ġtext : ĠString , Ġdiv Class : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv ( div Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( type Ġ= ĠButton Type . button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . classes Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . testing Type Ġ== Ġselected Testing Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of (" btn ", Ġ" btn - primary ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" btn ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" btn - outline - primary " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtesting Type Ġ= Ġselected Testing Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn Ġsome Ġcases Ġscripts Ġand Ġbinaries Ġcan Ġbe Ġuploaded Ġto Ġa Ġgit Ġrepository , Ġso Ġusers Ġwon 't Ġbe Ġproviding Ġor Ġuploading ĊĠĠĠĠ Ġ* Ġbinaries . ĠFor Ġthis Ġcase Ġwe Ġshould Ġopen Ġa Ġwindow , Ġso Ġuser Ġwill Ġneed Ġto Ġclick Ġa Ġcheckbox , Ġso Ġhe Ġwill Ġconfirm Ġthat ĊĠĠĠĠ Ġ* Ġhe Ġunderstand Ġwhat Ġhe Ġis Ġdoing . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsubmit With Validation () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Submit Button Pressed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġurl Ġwas Ġnot Ġprovided ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . git Url From Input Field . isBlank () Ġ&& Ġstate . testing Type Ġ== ĠTesting Type . CUSTOM _ TESTS Ġ-> ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Git ĠUrl Ġwith Ġtest Ġsu ites Ġin Ġsave Ġformat Ġwas Ġnot Ġprovided , but Ġit Ġis Ġrequired Ġfor Ġthe Ġtesting Ġprocess ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠSAVE Ġis Ġnot Ġable Ġto Ġrun Ġyour Ġtests Ġwithout Ġan Ġinformation Ġof Ġwhere Ġto Ġdownload Ġthem Ġfrom ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Git ĠUrl " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġbinaries Ġwere Ġprovided ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . files . isEmpty () Ġ-> ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmation Type Ġ= ĠConfirm ation Type . NO _ BINARY _ CONFIRM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Confirm Window Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Label Ġ= Ġ" Single Ġbinary Ġconfirmation " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Message Ġ= Ġ" You Ġhave Ġnot Ġprovided Ġany Ġfiles Ġrelated Ġto Ġyour Ġtested Ġtool ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠIf Ġthese Ġfiles Ġwere Ġuploaded Ġto Ġyour Ġrepository Ġ- Ġpress ĠOK , Ġotherwise Ġ- Ġplease Ġupload Ġthese Ġfiles Ġusing Ġ' Upload Ġfiles ' Ġbutton ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġeverything Ġis Ġin Ġplace , Ġcan Ġproceed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsubmit Execution Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Project () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Project Ġ= Ġstate . project . copy ( status Ġ= ĠProject Status . DELETED ) ĊĊĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġnew Project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmation Type Ġ= ĠConfirm ation Type . DELETE _ CONFIRM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Confirm Window Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Label Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Message Ġ= Ġ" Are Ġyou Ġsure Ġyou Ġwant Ġto Ġdelete Ġthis Ġproject ?" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" COMMENT ED _ OUT _ CODE ") ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupdate Project ( draft Project : ĠProject ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHeaders (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set (" Accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpost ("$ api Url / projects / update ", Ġheaders , ĠJson . encode ToString ( draft Project )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Project Builder () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHeaders (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set (" Accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse From Delete Project Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("$ api Url / projects / update ", Ġheaders , ĠJson . encode ToString ( state . project )) ĊĠĠĠĠĠĠĠ Ġ}. invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response From Delete Project . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . location . href Ġ= Ġ"${ window . location . origin }/ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse From Delete Project . text (). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Failed Ġto Ġdelete Ġproject " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġfetch Latest Execution Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHeaders (). apply Ġ{ Ġset (" Accept ", Ġ" application / json ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġget ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ api Url / latest Execution ? name =${ state . project . name }& organization Id =${ state . project . organization . id }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Handler Ġ= Ġ:: noop Response Handler ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! response . ok Ġ-> ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Label Ġ= Ġ" Failed Ġto Ġfetch Ġlatest Ġexecution " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġfetch Ġlatest Ġexecution : Ġ[ ${ response . status }] Ġ${ response . status Text }, Ġplease Ġrefresh Ġthe Ġpage Ġand Ġtry Ġagain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Execution Id Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status Ġ== Ġ 2 0 4 . to Short () Ġ-> ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Execution Id Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlatest Execution Id New Ġ= Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decode FromJson String < Execution Dto >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Execution Id Ġ= Ġlatest Execution Id New ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch To Latest Execution ( latest Execution Id : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlatest Execution Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . location . href Ġ= Ġ"${ window . location }/ history / execution /$ latest Execution Id " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Files List () Ġ= Ġget ("$ api Url / files / list ", ĠHeaders ()) ĊĠĠĠĠĠĠĠ Ġ. unsafe Map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . decode FromJson String < List < FileInfo >>() ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĊĠĠĠĠĠĠĠ ĠR Statics < Project Execution Route Props , ĠProject ViewState , ĠProject View , ĠContext < State Setter < Response ? >> >( Project View :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTEST _ ROOT _ DIR _ HINT Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThe Ġpath Ġyou Ġare Ġproviding Ġshould Ġbe Ġrelative Ġto Ġthe Ġroot Ġdirectory Ġof Ġyour Ġrepository . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThis Ġdirectory Ġshould Ġcontain Ġ< a Ġhref Ġ= Ġ" https :// github . com / analysis - dev / save # how - to - configure "> Ġsave . properties Ġ</ a > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor Ġ< a Ġhref Ġ= Ġ" https :// github . com / analysis - dev / save #- sav et om l - configuration - file "> save . toml </ a > Ġfiles . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFor Ġexample , Ġif Ġthe ĠURL Ġto Ġyour Ġrepo Ġwith Ġtests Ġis : ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< a Ġhref Ġ=" https :// github . com / analysis - dev / save /"> https :// github . com / analysis - dev / save </ a >, Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyou Ġneed Ġto Ġspecify Ġthe Ġfollowing Ġdirectory Ġwith Ġ' save . toml ': ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< a Ġhref Ġ=" https :// github . com / analysis - dev / save / tree / main / examples / kotlin - di kt at "> examples / kotlin - di kt at /</ a >. ĊĠ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlease Ġnote , Ġthat Ġthe Ġtested Ġtool Ġand Ġit 's Ġresources Ġwill Ġbe Ġcopied Ġto Ġthis Ġdirectory Ġbefore Ġthe Ġrun . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTEST _ SUITE _ ROW Ġ= Ġ 4 ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Type Ġ= Ġerror Status Context ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ