2017-06-15 3 views
0

こんにちは私は、光沢のあるアプリを書いています。ユーザーがボタンをクリックすると、関数が呼び出されています。私が持っている問題は、この機能が実行するのに約10〜25分かかっており、ユーザーはこの期間中にボタンを何回かクリックするかもしれないということです。関数の実行が終了すると、ファイルがダウンロードされた出力パスをユーザーに表示し、アプリケーションを閉じます。機能の実行中に画面を読み込むように、ユーザーがボタンを何回もクリックしないようにするにはどうすればよいですか?このように、余分なmodalDialogを追加することによりサーバー側から関数を呼び出す際に光沢のある画面を読み込む

observeEvent(input$runprocess, { 
    rundownload() 
    showModal(modalDialog(title ="Output folder: XYZ path", 
         actionButton("close", "Exit"),footer = NULL, 
         size = c("m"), easyClose = FALSE)) 
}) 

observeEvent(input$close, { 
    js$closeWindow() 
    stopApp() 
}) 
+0

'rundownload()'を呼び出す前にmodalDialogを追加しますか? –

+0

@JorisMeysユーザーは、ダウンロードが完了したことをどのようにして知りますか? – Jain

+0

ダウンロードが終了した後は、終了したことを示す2番目のmodalDialogがあるためです。私は「他のものを削除する」と言っていませんでした;-) –

答えて

0

observeEvent(input$runprocess, { 
    showModal(modalDialog(p("Start downloading. This might take a while"), 
         title = "download started", 
       #etc etc 
      )) 
    rundownload() 
    showModal(modalDialog(title ="Output folder: XYZ path", 
         actionButton("close", "Exit"),footer = NULL, 
         size = c("m"), easyClose = FALSE)) 
}) 

observeEvent(input$close, { 
    js$closeWindow() 
    stopApp() 
}) 

して実行]ボタンを複数回クリックしてからユーザーを防ぐために、あなたはそれがクリックされた後、それを隠すためにshinyjsを使用することができます。例:Hide shiny output

関連する問題