Valideer dat een gebruiker een selectie heeft gemaakt
Herinner je uit de video dat het vaak goed is om een standaardwaarde te kiezen voor je selectoringangen. Als je juist geen standaardwaarde wilt, kun je een aangepast foutbericht tonen zodat gebruikers begrijpen wat ze moeten doen om de app goed te laten draaien.
We zagen in de vorige oefening dat de plot simpelweg leeg blijft zonder standaardwaarde voor pickerInput(). In deze oefening laat je in plaats daarvan een aangepast foutbericht zien dat gebruikers vertelt dat ze de juiste selectie moeten maken om de app aan de praat te krijgen.
Deze oefening maakt deel uit van de cursus
Webapplicaties bouwen met Shiny in R
Oefeninstructies
- Voeg een aangepast foutbericht toe dat standaard wordt weergegeven en gebruikers laat weten dat ze een invoer moeten selecteren voor mentale versus fysieke gezondheid.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
ui <- fluidPage(
titlePanel("2014 Mental Health in Tech Survey"),
sidebarPanel(
sliderTextInput(
inputId = "work_interfere",
label = "If you have a mental health condition, do you feel that it interferes with your work?",
grid = TRUE,
force_edges = TRUE,
choices = c("Never", "Rarely", "Sometimes", "Often")
),
checkboxGroupInput(
inputId = "mental_health_consequence",
label = "Do you think that discussing a mental health issue with your employer would have negative consequences?",
choices = c("Maybe", "Yes", "No"),
selected = "Maybe"
),
pickerInput(
inputId = "mental_vs_physical",
label = "Do you feel that your employer takes mental health as seriously as physical health?",
choices = c("Don't Know", "No", "Yes"),
multiple = TRUE
)
),
mainPanel(
plotOutput("age")
)
)
server <- function(input, output, session) {
output$age <- renderPlot({
# MODIFY CODE BELOW: Add validation that user selected a 3rd input
mental_health_survey %>%
filter(
work_interfere == input$work_interfere,
mental_health_consequence %in% input$mental_health_consequence,
mental_vs_physical %in% input$mental_vs_physical
) %>%
ggplot(aes(Age)) +
geom_histogram()
})
}
shinyApp(ui, server)