Я разрабатываю блестящее приложение, которое обращается к серверу MySQL при запуске и извлекает из него большой объем данных. Эти данные позже фильтруются во время использования приложения.
Из-за большого количества переданных данных первый запрос занимает много времени, поэтому я хотел бы создать диалоговое окно/всплывающее окно или что-то подобное, которое открывается при запуске приложения, и позволяет пользователю выбрать "Настройки для "предварительный фильтр", например, только данные с марта 2017 года.
Возможно ли это, и если да, то как это сделать? На данный момент я не нашел никакой информации об этом.
Вот один из способов добиться того, чего вы хотите. Вы можете показать всплывающее окно при запуске, просто сделав showModal(modalDialog())
в своей серверной функции. Благодаря этим знаниям достаточно просто получить observeEvent
результат, используя reactiveVal
observeEvent
и observeEvent
.
Надеюсь, это поможет!
library(shiny)
library(dplyr)
ui <- fluidPage(
dataTableOutput('my_table'),
actionButton('change','Change query')
)
server <- function(input,output,session)
{
# the modal dialog where the user can enter the query details.
query_modal <- modalDialog(
title = "Important message",
selectInput('input_query','Select # cyl:',unique(mtcars$cyl)),
easyClose = F,
footer = tagList(
actionButton("run", "Run query")
)
)
# Show the model on start up ...
showModal(query_modal)
# ... or when user wants to change query
observeEvent(input$change,
{
showModal(query_modal)
})
# reactiveVal to store the dataset
my_dataset <- reactiveVal()
observeEvent(input$run, {
removeModal()
# Your query here
my_data <- mtcars %>% filter(cyl %in% input$input_query)
my_dataset(my_data)
})
# render the output
output$my_table <- renderDataTable(my_dataset())
}
shinyApp(ui,server)