在单个ObserveEvent中移除并插入UI元素
我正在构建一个带有3个selectizeinput框的仪表板。当用户在单个selectizinput框中选择一个选项时,其余未选择过滤器中的选项将得到更新。更新可能需要几秒钟的时间。对于给定的selectizeinput框,最多可以选择3个选项。选项的选择在observeEvent中处理。在real app中,有多个observeEvents来处理多个selectizeinput框中的选项选择 我希望只有在更新发生后,才会在selectizeinput框下方显示一个小操作按钮,上面写着“完成”。这适用于选定的第一个选项。当用户从同一个selectizeinput框中选择第二个选项时,我希望“完成”按钮消失,并仅在其他selectizeinput框更新时重新出现。为此,我尝试过使用removeUI和insertUI,但不起作用 我已经尝试过shinyjs库的hide()、show()和toggle()在更新过程中隐藏“Done”操作按钮,并且只在更新完成后才显示它。但它不起作用 用户界面在单个ObserveEvent中移除并插入UI元素,r,shiny,selectize.js,R,Shiny,Selectize.js,我正在构建一个带有3个selectizeinput框的仪表板。当用户在单个selectizinput框中选择一个选项时,其余未选择过滤器中的选项将得到更新。更新可能需要几秒钟的时间。对于给定的selectizeinput框,最多可以选择3个选项。选项的选择在observeEvent中处理。在real app中,有多个observeEvents来处理多个selectizeinput框中的选项选择 我希望只有在更新发生后,才会在selectizeinput框下方显示一个小操作按钮,上面写着“完成”。
侧栏您的代码不可复制。请提供srcC
,destT
等。您的代码不可复制。请提供srcC
,dest
等。
sidebar <- shinydashboard::dashboardSidebar(
sidebarMenu(
id = "sidebarmenu",
menuItem(h4("Sample"), tabName = "map"),
conditionalPanel("input.sidebarmenu === 'map'",
selectizeInput(
"srcLoc", label="Filter 1", choices=srcC, selected=NULL, multiple=TRUE, options=list(maxItems=nSrc, placeholder="")
)
,
selectizeInput(
"srcCity", label="Filter 2", choices=NULL, selected=NULL, multiple=TRUE, options=list(maxItems=nCity, placeholder="")
),
selectizeInput(
"destLoc", label="Filter 3", choices=destT, selected=NULL, multiple=TRUE, options=list(maxItems=nDest, placeholder="")
),
tags$div(id="placeholder")
)
)
)
body <- shinydashboard::dashboardBody(
tabItems(
tabItem(tabName="map"
)
)
)
dashboardPage(
dashboardHeader(title = "Trial"),
sidebar,
body
)
shinyServer<- function(input,output,session) {
observeEvent(input$srcLoc, {
removeUI("#done")
if (!is.null(input$srcLoc) & is.null(input$srcCity) & is.null(input$destLoc)) {
df <- getDf(locsAgg, srcc, destt, srcregg, destregg, regionCountryCity, input$srcLoc, input$srcCity, input$destLoc)
if (length(input$srcLoc)>1) {
locc <- paste(input$srcLoc, collapse=" -> ")
} else {
locc <- input$srcLoc
}
cities <- getCity4(df, locc, srcregg, srcc, regionCountryCity)
sc <- sort(cities[!cities %in% c(NA,"NA")])
if (length(sc) > 1) {
sc <- as.data.table(sort(cities[!cities %in% c(NA,"NA")]))
}
destChoice <- unique(getLocs2(df,"S"))
destChoice <- destChoice[!destChoice %in% c(NA,"NA")]
if (length(destChoice)>1) {
destChoice <- as.data.table(destChoice)
}
updateSelectizeInput(session, "destLoc",
choices=destChoice,
selected=input$destLoc,
options=list(placeholder="Select a Country",maxItems=nDest))
updateSelectizeInput(session, "srcCity",
choices=sc,
selected=input$srcCity,
options=list(placeholder="Select a City",maxItems=nCity))
insertUI("#placeholder",where="afterEnd",ui =
}
})
}