R Shiny -点击操作按钮前显示旋转器

qhhrdooz  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(112)

我希望在单击actionbutton之后和显示datatable值之前显示微调器。

library(DT)
library(shiny)
library(shinycssloaders)

ui <- fluidPage(
  navbarPage("Query Tool",
             navbarMenu("Structures",
                        tabPanel("Structure Properties", fluid = TRUE,
                                 sidebarLayout(
                                   sidebarPanel(
                                     textInput("structure_id_properties", strong("Structure:"), value = ''),
                                     actionButton("run_properties", "Run Analysis", icon = icon("play"))),
                                   mainPanel(
                                     tabsetPanel(type = "tabs",
                                                 tabPanel("Data Table",br(), withSpinner(DTOutput("table_properties")))
                                     ))
                                 )))))

server <- function(input, output) {
  observeEvent(input$run_properties, {
    structure_id_properties <- "test"    
    output$table_properties <- renderDT ({data_output(sql_data)})
    output$query_properties <- renderText({properties_sql}) 
  })
}

我已经尝试了几个选项(renderUIoutput$table_properties <- renderDT({NULL}) ...)都是徒劳的。

ylamdve6

ylamdve61#

output$table_properties <- renderDT({NULL})将不起作用,因为withSpinner将准确显示renderDT何时不提供可呈现为数据表的n输出。
这里有一种方法,在这种情况下,表的数据不是在renderDT内部生成的,而是使用一个响应值来允许从服务器内部的任何地方访问数据。

library(DT)
library(shiny)
library(shinycssloaders)

ui <- fluidPage(
  navbarPage("Query Tool",
             navbarMenu("Structures",
                        tabPanel("Structure Properties", fluid = TRUE,
                                 sidebarLayout(
                                   sidebarPanel(
                                     textInput("structure_id_properties", strong("Structure:"), value = ''),
                                     actionButton("run_properties", "Run Analysis", icon = icon("play"))),
                                   mainPanel(
                                     tabsetPanel(type = "tabs",
                                                 tabPanel("Data Table",
                                                          br(), 
                                                          withSpinner(DTOutput("table_properties")))
                                     ))
                                 )))))

server <- function(input, output) {
  data_output <- reactiveValues(sql_data = data.frame(test1 = character(), test2 = character(), test3 = integer()))
  
  observeEvent(input$run_properties, {
    data_output$sql_data <- NULL
    Sys.sleep(2.5) # for demo purposes
    data_output$sql_data <- data.frame(test1 = letters[1:5], test2 = LETTERS[1:5], test3 = 1:5)
  })
  output$table_properties <- renderDT ({req(data_output$sql_data)})
  
  output$query_properties <- renderText({properties_sql}) 
  
}

shinyApp(ui, server)

相关问题