I am stumped on why my selectInput
doesn't work.
After including a conditionalPanel
, suddenly switching out names from John Doe to Joe Blow in the selectInput
no longer works -- the dates don't update and the map goes grey.
I don't understand why this is happening. The only way it does work is if I click on no_date
then go back and change the name. Then things fire. But I can't figure out why/how this is broken.
Initially, things are fine:
But when I select Joe Blow:
Notice the date doesn't change.
There is something strange going on with the conditionalPanel
but for the life of me I'm stuck. Thanks for reading this.
UI.R
library(shiny)
library(ggplot2)
library(dplyr)
library(leaflet)
DF <- data.frame(lon=c(-120.6596156, -87.27751, -119.7725868, -124.2026, -117.1858759),
lat=c(35.2827524, 33.83122, 36.7468422, 41.75575, 34.5008311),
date=c('2014-03-14', '2014-01-11', '2013-11-22', '2012-08-23', '2013-08-23'),
city=c('San Luis Obispo', 'Jasper', 'Fresno', 'Crescent City', 'Apple Valley'),
P1_name=c('John Doe', 'John Doe', 'John Doe', 'John Doe', 'Joe Blow'))
DF[, c('date', 'city', 'P1_name')] <- sapply(DF[, c('date', 'city', 'P1_name')], as.character)
server <- function(input, output, session) {
output$fdate<-renderUI({
selectInput('dates', 'Select date', choices=DF[which(DF$P1_name == input$person), ]$date, selectize = FALSE)
})
output$map<-renderLeaflet({
DF <- filter(DF, P1_name==input$person, date==input$dates)
output$city <-renderText({c("Location:", DF$city)})
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
setView(lng=DF$lon, lat=DF$lat, zoom=5) %>%
addMarkers(lng=DF$lon, lat=DF$lat, popup=DF$city)
})
}
ui <- fluidPage(
titlePanel("Testing Shiny"),
sidebarLayout (
sidebarPanel(
selectInput('person', 'Select person', choices=unique(DF$P1_name), selectize = FALSE),
radioButtons('radio', 'Select method', choices=c('show_date', 'no_date'), selected = NULL, inline = TRUE),
conditionalPanel(
condition = "input.radio == 'show_date'",
uiOutput('fdate')
),
textOutput("city")
),
mainPanel(
leafletOutput('map')
)
))
shinyApp(ui = ui, server = server)