簡體   English   中英

R Shiny SweetAlert - 根據用戶輸入顯示警報

[英]R Shiny SweetAlert - Display alert depending on user input

我想根據正確的密碼輸入和文件上傳向應用用戶發送 SweetAlert。

我的應用程序要求用戶使用fileInput小部件上傳受密碼保護的 Excel 文件,並使用passwordInput小部件接受密碼:

  # file select
  output$file_select <- renderUI({
    fileInput("file_select","Import File:",buttonLabel = "Select",
              multiple = FALSE, accept = ".xlsx",placeholder = "No file selected")
  })
  # password input
  output$pword_input <-renderUI({
    passwordInput("pword_input","Password:", "", placeholder = "Enter Excel password")
  })

Excel 表的讀取由excel.link處理,並創建一個名為raw.data()的反應性 object :

  raw.data <- reactive({
    # Read Excel file
    data_file <- input$file_select
    df <- xl.read.file(data_file$datapath,
                       password =  input$pword_input)
   return(df)
})

sendSweetAlert的文檔似乎只提供了在按下操作按鈕時發送警報的示例。 但是,我希望observeEvent尋找正確的密碼輸入。

我無法將密碼存儲在應用程序中,因此我當前設置了觸發observeEvent的 observeEvent 以查找反應式 object raw.data()的創建,作為輸入正確密碼的指示:

  observeEvent(raw.data(), {
    sendSweetAlert(
      session = session,
      title = "Password Accepted",
      type = "success"
    )
  })

這在一定程度上起作用。 如果輸入了正確的密碼,那么一旦根據需要創建了反應式 object,就會顯示 SweetAlert。 但是,輸入錯誤的密碼會使應用程序崩潰。

我希望有人可以幫助以正確的方式進行設置。 我想我的錯誤是在使用observeEvent? 但是,如果不存儲密碼,我不確定如何實現我的目標。

提前致謝

如果密碼不正確, xl.read.file會引發錯誤。 所以你可以嘗試這樣的事情(未經測試):

raw.data <- reactive({
    # Read Excel file
    data_file <- input$file_select
    df <- try(xl.read.file(data_file$datapath,
                           password = input$pword_input))
   return(df)
})

observeEvent(raw.data(), {
  if(inherits(raw.data(), "try-error")) {
    sendSweetAlert(
      session = session,
      title = "Wrong password",
      type = "error"
    )
  } else {
    sendSweetAlert(
      session = session,
      title = "Password Accepted",
      type = "success"
    )
  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM