У меня есть проблема, которая обсуждалась здесь по-разному, но, видимо, не для удовлетворения моих довольно простых потребностей.
У меня есть простое приложение, которое выполняет вызов базы данных SQL.Я использую кнопку для запуска запроса.Мне просто нужно текст с надписью "нажмите на кнопку", чтобы загрузить в самом начале.Как только пользователь нажмет на кнопку, мне понадобится этот текст для вывода: «Загрузка данных, пожалуйста, подождите».
Как только запрос будет завершен и данные будут полностью получены, мне потребуется выходной текстчтобы показать «Данные успешно загружены».
Я видел некоторые решения , основанные на индикаторе выполнения, но я не могу использовать его, так как я не прохожу через data.frame.Я запрашиваю базу данных и не знаю, сколько времени это может занять.Я видел других решений , основанных на реактивных значениях, но вывод текста в этом случае должен реагировать на размер кадра данных (0 строк и нажатие кнопки -> загрузка данных по-прежнему;> 0 строк и кнопка)нажал "данные успешно загружены").
Следовательно, я застрял здесь.Это мой простой код, но в идеале он делает то, что мне нужно.
ui <- fluidPage(
fluidRow(actionButton("download_btn", "Download Data")),
fluidRow(textOutput(outputId = "load_data_status")),
fluidRow(dataTableOutput("output_table"))
)
server <- function(input, output) {
cat("\n output$output_table = \n", output$output_table)
data <- eventReactive(input$download_btn,{
output$load_data_status <- renderText({ "Downloading data from Server. Please wait..." })
# here I actually download the data from a database and this could take several seconds
df <- data.frame(mtcars)
output$load_data_status <- renderText({ "Data downloaded succesfully." })
df
})
output$output_table <- renderDataTable({
data()
})
}
shinyApp(ui, server)