Xác nhận rằng người dùng đã chọn một tuỳ chọn
Hãy nhớ từ video rằng dù thường nên đặt giá trị mặc định cho các input dạng chọn, nếu cần loại bỏ mặc định, bạn có thể đưa ra thông báo lỗi tuỳ chỉnh để nhắc người dùng biết họ cần làm gì để ứng dụng chạy được.
Ở bài tập trước, chúng ta thấy rằng nếu pickerInput() không có giá trị mặc định, biểu đồ sẽ chỉ trống không. Thay vì biểu đồ trống, trong bài này bạn sẽ hiển thị một thông báo lỗi tuỳ chỉnh, yêu cầu người dùng thực hiện lựa chọn đúng để ứng dụng hoạt động.
Bài tập này là một phần của khóa học
Xây dựng ứng dụng web với Shiny trong R
Hướng dẫn bài tập
- Thêm một thông báo lỗi tuỳ chỉnh sẽ hiển thị theo mặc định, cho người dùng biết họ cần chọn đầu vào cho so sánh sức khỏe tinh thần với sức khỏe thể chất.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)