inst/shinyApp/modalGSVAModule.R
ca2b622a
 modalGSVAUI <- function(id){
   ns <- NS(id)
   showModal(
     modalDialog(
       size="l",
       title = "GSVA calculations",
       div(id="install.text", "Calculating, please wait... "),
       div(p("\n")),
       verbatimTextOutput(ns("text")),
       footer = actionButton(ns("cancel"), "Cancel"))
   )
 }
 
359519f7
 modalGSVAServer <- function(id, console.text, gsva.cancel, rout){
ca2b622a
   moduleServer(
     id,
     function(input, output, session){
359519f7
 
ca2b622a
       output$text <- renderText({
         req(console.text())
         max <- length(console.text())
         if(max>1){
           paste(console.text()[1], console.text()[max], sep= "\n")
         } else {
           console.text()
         }
       })
       
       observeEvent(input$cancel, {
         removeModal()
         gsva.cancel(TRUE)
359519f7
         write("", file=rout)
         # changing plan() is the only and recommended way to safely 'interrupt' a future process:
         # https://github.com/HenrikBengtsson/future/issues/93
         plan(sequential)
         plan(multisession)
ca2b622a
       })
     }
   )
 }