在浏览器中按“刷新”按钮时刷新AWS服务器中的闪亮应用程序

时间:2019-06-09 06:40:59

标签: r amazon-web-services shiny

我的AWS服务器上有我闪亮的应用程序

 library("shiny")
 library("shinydashboard")
 library("pool")
 library(DBI)
 pool <- dbPool(drv = RMySQL::MySQL(),dbname = "demo",host =     "db.cr7lk1jwjdht.us-east-2.rds.amazonaws.com",username = "kartik",password =     "12345678", port = 3306)

 mychoices = dbGetQuery(pool,"select available_scenario  from   scenario_name;")
  ui <- fluidPage(


  sidebarLayout(
     sidebarPanel(

  actionButton("create_scenario", "Create Scenario"),
    actionButton("load_scenario","load scenario"),
   selectInput('n', "available scenarios", choices = mychoices, multiple =   TRUE),
    verbatimTextOutput("selected")

  ),
  mainPanel(
 uiOutput('tabs'),
 uiOutput("input"),
 uiOutput("inputs"),
 uiOutput("inputss")
     )
   )

   )

  server <- function(input, output,session) {

  observeEvent(input$create_scenario,{

    output$input <- renderUI({
     mainPanel(     
    textInput("txtInput","Enter scenario name"),
    textOutput("sname"),
                  actionButton("save","save_scenario")
   )

})


output$sname <- renderText({
  input$txtInput
})



  observeEvent(input$save,{
  #  conn <- poolCheckout(pool)
  #  dbSendQuery(conn,"insert into scenario (name) values (", output$sname   <- renderText({
     #  input$txtInput
  #}),");")
    dd <- data.frame(x = input$txtInput,row.names = FALSE)
 print(dd)
 dbWriteTable(pool,"available_scenario",dd,append = TRUE)
# values$dd <- rbind(values$dd,data.frame(Enter = input$txtInput))
  })

})

  output$tabs = renderUI({
if(!is.null(input$n)){
  Tabs <- lapply(paste("tab name:", input$n, sep=" "), tabPanel)
  do.call(tabsetPanel, Tabs)}

   })

   observeEvent(input$load_scenario,{

  output$inputs <- renderUI({
  dashboardPage(
    dashboardHeader(title = "Basic dashboard"),
    dashboardSidebar(),
    dashboardBody(
      # Boxes need to be put in a row (or column)
      fluidRow(
        box(plotOutput("plot1", height = 250)),

        box(
          title = "Controls",
          sliderInput("slider", "Number of observations:", 1, 100, 50)
        ))))


} )
histdata <- rnorm(500)
output$plot1 <- renderPlot({
  data <- histdata[seq_len(input$slider)]
  hist(data)
})


 })
   }
     shinyApp(ui, server)

我有一个数据库表,用于存储方案名称的数据。 当我在服务器中创建一个名为Scenario-2的方案时,它正在保存在数据库表中,但是当我刷新闪亮的应用程序的浏览器时,它并没有反映在可用方案中。 为了使其反映在可用方案中,我必须重新启动服务器。 有任何建议。

1 个答案:

答案 0 :(得分:0)

R会话首次初始化时,位于ui和服务器之外的任何代码将仅运行一次。如果您刷新页面或让其他人去应用程序,则R会话已经存在,因此该代码不会再次运行。如果希望每次访问闪亮的应用程序URL时都运行此代码,则需要将此代码放在服务器函数中。在您的代码中,poolmychoices是在ui和服务器外部定义的,因此您需要将它们(或至少mychoices)移动到服务器函数内部,以便将它们每次新的闪亮会话开始时都会调用。