Validera att användaren har gjort ett val
Som du såg i videon är det ofta bra praxis att ange ett standardvärde för dina väljarinmatningar. Om inget standardvärde ska användas kan du i stället visa ett anpassat felmeddelande som talar om för användarna vad de behöver göra för att appen ska fungera.
I förra övningen såg du att diagrammet helt enkelt var tomt när pickerInput() saknade ett standardvärde. I den här övningen ska du i stället visa ett anpassat felmeddelande som uppmanar användarna att göra det val som krävs för att appen ska fungera.
Den här övningen är en del av kursen
Bygg webbapplikationer med Shiny i R
Övningsinstruktioner
- Lägg till ett anpassat felmeddelande som visas som standard och informerar användarna om att de behöver välja ett alternativ för psykisk respektive fysisk hälsa.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)