Я строю приборную панель с 3 ящиками для выбора. Когда пользователь выбирает параметр в одном окне выбора, параметры оставшихся невыбранных фильтров будут обновлены. Обновление может занять несколько секунд. Для заданного поля ввода selectizeinput можно выбрать до 3 вариантов. Выбор опции обрабатывается в наблюдаемом событии. В реальном приложении есть несколько наблюдаемых событий для обработки выбора параметров в нескольких полях выбора ввода.
Я хочу, чтобы маленькая кнопка с надписью «Готово» появлялась под полями selectizeinput только после обновления. Это работает для первого варианта, который выбран. Когда пользователь выбирает вторую опцию из того же поля selectizeinput, я хочу, чтобы кнопка «Готово» исчезала и появлялась снова только тогда, когда обновляются другие поля selectizeinput. Я попытался использовать removeUI и insertUI для этой цели, но он не работает.
Я уже пробовал использовать hide (), show () и toggle () библиотеки блестящей библиотеки, чтобы скрыть кнопку действия «Готово» во время обновления и показывать ее только после завершения обновления. Но это не сработало.
ui.R
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
)
server.R
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 =
}
})
}
Есть ли способ заставить эту работу? Спасибо!