From 88c2c7612712d7eec834fe12f5561d5becc5195a Mon Sep 17 00:00:00 2001 From: Julien DIOT Date: Tue, 24 Sep 2024 17:34:57 +0900 Subject: [PATCH] feat(data-viz): add validator for input `categ_variables` --- src/fun/func_data-viz.R | 1 + src/server/server_data_viz.R | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/fun/func_data-viz.R b/src/fun/func_data-viz.R index 1e3d62b..177aef9 100644 --- a/src/fun/func_data-viz.R +++ b/src/fun/func_data-viz.R @@ -371,6 +371,7 @@ plot_warning <- function(data, x_var, y_var, col_var) { warnings_messages <- c(warnings_messages, "Categorical variable with a large amount of levels is detected, plot may not render correctly." ) + break() } } } diff --git a/src/server/server_data_viz.R b/src/server/server_data_viz.R index 6a2fe5f..9064df7 100644 --- a/src/server/server_data_viz.R +++ b/src/server/server_data_viz.R @@ -46,6 +46,25 @@ output$data_viz_UI <- renderUI({ }) +data_viz_file_validator <- InputValidator$new() +data_viz_file_validator$add_rule("categ_variables", function(x) { + data <- raw_data_from_file() + must_be_categorical_var <- colnames(data)[sapply(colnames(data), function(var) { + numeric_values <- as.numeric(data[, var]) + any(is.na(numeric_values)) + })] + if (!all(must_be_categorical_var %in% x)) { + missing_var <- must_be_categorical_var[!must_be_categorical_var %in% x] + return(paste0( + "`", paste0(missing_var, collapse = "`, `"), + "`, must be categorical" + ) + ) + } + return(NULL) +}) +data_viz_file_validator$enable() + raw_data_from_file <- reactive({ if (is.null(input$file_data_viz)) { return(NULL)