我的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的方案时,它正在保存在数据库表中,但是当我刷新闪亮的应用程序的浏览器时,它并没有反映在可用方案中。 为了使其反映在可用方案中,我必须重新启动服务器。 有任何建议。
答案 0 :(得分:0)
R会话首次初始化时,位于ui和服务器之外的任何代码将仅运行一次。如果您刷新页面或让其他人去应用程序,则R会话已经存在,因此该代码不会再次运行。如果希望每次访问闪亮的应用程序URL时都运行此代码,则需要将此代码放在服务器函数中。在您的代码中,pool
和mychoices
是在ui和服务器外部定义的,因此您需要将它们(或至少mychoices
)移动到服务器函数内部,以便将它们每次新的闪亮会话开始时都会调用。