将数据导出到 SQL DB 时闪亮禁用操作按钮 x 秒

Posted

技术标签:

【中文标题】将数据导出到 SQL DB 时闪亮禁用操作按钮 x 秒【英文标题】:Shiny disabling the actionbutton for x seconds while exporting data to SQL DB 【发布时间】:2018-06-07 13:31:24 【问题描述】:

我有一个包含动态数据的handsontable,我正在使用带有闪亮提交按钮的 sqlSave 代码将它上传到 MSSQL DB。

但是,我可以通过 bot 找到任何会禁用操作按钮的功能,比如说 10 秒。我尝试了 shinyjs::disable 和 withProgress, incProgress 的东西,但它们都不起作用。

谢谢,

dbhandle <- odbcDriverConnect('driver=SQL Server;server=....;database=...;trusted_connection=true')

 withProgress( 
 sqlSave(dbhandle, dat = some data), 
      tablename = "Budget_Tool", 
      rownames = F, append = T, verbose = T, fast = F, colnames = F, safer = 
      T), value = 1, 
      style = "notification", message = "Submitting, please wait..")

    --------------------
       actionButton("submit", "Submit", class = "btn-primary",
                    style="color: #fff; background-color: #337ab7; border-
      color: #2e6da4; font-size: 20px;"),

【问题讨论】:

【参考方案1】:

当您在操作功能之前和之后集成禁用和启用时,它或多或少是直截了当的。

这里是一个示例 sn-p:

library(shiny)
library(shinyjs)

ui <- shinyUI(
  shiny::fluidPage(
    useShinyjs(),  # Set up shinyjs
    actionButton(inputId = "start", label = "start")
  )
)

server <- shinyServer(function(input, output)
  actionFunction = function()
    shinyjs::disable("start")

    # Replace actual code instead
    withProgress(message = 'Calculation in progress',
                 detail = 'This may take a while...', value = 0, 
                   for (i in 1:15) 
                     incProgress(1/15)
                     Sys.sleep(0.25)
                   
                 )

    shinyjs::enable("start")
  

  # Run action function on button click  
  onclick("start", actionFunction())
)

shinyApp(ui,server)

【讨论】:

【参考方案2】:

我通过使用隐藏和显示来修复它;

 observeEvent(input$submit, 
  hide('submit', animType = "fade", time = 5)
asd <- as.data.frame(cbind(Department = rv$data[,2], Cost_Summary_Key = 
  rv$data[,1], Calculated_Budget = rowSums(rv$data[,3:14]))) %>% 
  left_join(CSK_Budget, c("Department", "Cost_Summary_Key"))

   asd <- asd %>% mutate(Deviation = (as.numeric(Budget_2017) - rowSums(rv$data[,3:14])))

   x <- c()

   for (i in 1:nrow(asd)) 

  if(asd[i,5] >= -0.05)
  x[i] <- TRUE else x[i] <- FALSE



moment <- substr(Sys.time(), 1, 10)
moment2 <- substr(Sys.time(), 12, 19)
personel <- input$userName


if( all(x))



  dbhandle <- odbcDriverConnect('driver=SQL Server;server=...;database=...._SQL;trusted_connection=true')

  withProgress( 
    sqlSave(dbhandle, dat = (cbind(melt(rv$data, na.rm = F, varnames = c(Department, Cost_Summary_Key), as.is = F), Year = "2017", 
                                   Time_Stamp1 = moment, Time_Stamp2 = moment2, User = personel)), 
            tablename = ".....", 
            rownames = F, append = T, verbose = T, fast = F, colnames = F, safer = T), value = 1, 
    style = "notification", message = "Submitting, please wait..")


  js_string <- 'alert("Succes!!");'
  session$sendCustomMessage(type='jsCode', list(value = js_string))
  showNotification("Thanks, your response was submitted successfully!", duration = 5, type = "warning")

else showNotification("Check Your Budget Items !!", duration = 3, type = "warning")

odbcCloseAll()   
show('submit', animType = "slide", time = 1)
  )

【讨论】:

以上是关于将数据导出到 SQL DB 时闪亮禁用操作按钮 x 秒的主要内容,如果未能解决你的问题,请参考以下文章

在绘图加载时禁用闪亮按钮

闪亮的应用程序:禁用下载按钮

sql server怎么导出查询结果为脚本

如何将SQL server 2008 里的查询结果导出到 Excel 表内?

当我在gridview中过滤行没有找到记录时如何禁用导出按钮

单击相应复选框时如何启用禁用的锚按钮