Validar que o usuário fez uma seleção
Relembre do vídeo: embora geralmente seja uma boa prática definir um valor padrão para entradas de seleção, se um valor específico não deve ser pré-selecionado, você pode exibir uma mensagem de erro personalizada para orientar os usuários sobre o que precisam fazer para que o app funcione corretamente.
Vimos no exercício anterior que, sem um valor padrão para o pickerInput(), o gráfico fica simplesmente em branco. Em vez disso, neste exercício você vai mostrar aos usuários uma mensagem de erro personalizada dizendo que eles devem fazer a seleção correta necessária para o app funcionar.
Este exercício faz parte do curso
Construindo Aplicações Web com Shiny em R
Instruções do exercício
- Adicione uma mensagem de erro personalizada que será exibida por padrão avisando os usuários de que eles devem selecionar uma entrada para saúde mental versus física.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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)