diff --git a/DESCRIPTION b/DESCRIPTION index d655465..68153c3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -19,6 +19,7 @@ Imports: dplyr (>= 1.1.4), gt (>= 0.11.1), haven (>= 2.5.4), + sass (>= 0.4.9), shiny (>= 1.9.1), shinybusy (>= 0.3.3), shinyWidgets (>= 0.8.7) diff --git a/NAMESPACE b/NAMESPACE index caa62e1..6e8f481 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -30,6 +30,7 @@ importFrom(DescTools,ZTest) importFrom(bsicons,bs_icon) importFrom(bslib,accordion) importFrom(bslib,accordion_panel) +importFrom(bslib,bs_add_rules) importFrom(bslib,bs_theme) importFrom(bslib,card) importFrom(bslib,card_body) @@ -101,6 +102,7 @@ importFrom(haven,as_factor) importFrom(haven,is.labelled) importFrom(haven,read_sav) importFrom(haven,write_sav) +importFrom(sass,as_sass) importFrom(shinyWidgets,colorPickr) importFrom(shinyWidgets,dropdownButton) importFrom(shinyWidgets,radioGroupButtons) diff --git a/NEWS.md b/NEWS.md index fa0a953..907d6f1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -20,6 +20,22 @@ editor_options: 6 - Models: linear model, logistic regression, Kmeans, Trees +## 2025.02.16-1 + +Highlights: New **Darkly** theme and new dependencie: **sass** package. + +### Improvements + +1 - **Correlation, Descriptive Stats, Normality Test, Sidebar, Spada UI, Z Test** modules: changes in visual parameters and elements (e.g. sidebar now has class) for usage of bs_theme + +2 - **Export File** module: now downloadButton has class and correct icon + +3 - **Filter Rows** module: new Number of Rows filter + +4 - **spada_themes.R**: new objects with themes and usage of sass package + +5 - **Spada Server**: now shiny.maxRequestSize = 1000 MB + ## 2025.02.13-1 Highlights: Use of selectizeInput with close and clear button for multiple selections diff --git a/R/correlation_module.R b/R/correlation_module.R index d92ab46..761ffde 100644 --- a/R/correlation_module.R +++ b/R/correlation_module.R @@ -6,15 +6,14 @@ correlation_ui <- function(id) { full_screen = T, card_header('Correlation Test', class = 'mini-header'), layout_sidebar( - bg = main_color, - sidebar = sidebar(uiOutput(ns('parameters')), bg = sidebar_color), + class = 'card-sidebar', + sidebar = sidebar(uiOutput(ns('parameters'))), navset_card_pill( nav_panel( 'Test', card( layout_sidebar( sidebar = sidebar( - bg = sidebar_color, width = 400, h5('Parameters', style = 'margin-bottom: -18px;'), radioButtons(ns('radio_method'), 'Method', diff --git a/R/descriptive_stats_module.R b/R/descriptive_stats_module.R index 87bfb1d..9b979f6 100644 --- a/R/descriptive_stats_module.R +++ b/R/descriptive_stats_module.R @@ -5,9 +5,9 @@ descriptive_stats_ui <- function(id) { card( full_screen = T, card_header('Descriptive Statistics', class = 'mini-header'), - layout_sidebar(bg = main_color, + layout_sidebar( + class = 'card-sidebar', sidebar = sidebar( - bg = sidebar_color, uiOutput(ns('parameters')), checkboxGroupInput( ns('xg_central_tendency'), diff --git a/R/exploratory_module.R b/R/exploratory_module.R index c1ae0c7..4b3cb79 100644 --- a/R/exploratory_module.R +++ b/R/exploratory_module.R @@ -6,8 +6,7 @@ exploratory_ui <- function(id) { card( full_screen = T, card_body( - style = 'background-color: #02517d;', - height = '800px', + class = 'big-card', layout_columns( col_widths = c(2, 7, 3), navset_card_pill( diff --git a/R/export_file_module.R b/R/export_file_module.R index 13a3b33..9bc9896 100644 --- a/R/export_file_module.R +++ b/R/export_file_module.R @@ -49,8 +49,12 @@ export_file_ui <- function(id) { ), ) ), - card_footer(downloadButton(ns('down_handler'), - 'Export Active dataset', icon('download'))) + card_footer(downloadButton( + ns('down_handler'), + 'Export Active dataset', + class = 'btn-task', + icon = icon('download') + )) ) ) } diff --git a/R/filter_rows_module.R b/R/filter_rows_module.R index 1b8caf0..92c42bb 100644 --- a/R/filter_rows_module.R +++ b/R/filter_rows_module.R @@ -28,9 +28,11 @@ filter_rows_ui <- function(id) { # panel for sample filter ----------------------------------------------- conditionalPanel( condition = sprintf("input['%s'] == 'sample'", ns('filter_type')), - sliderInput(ns('sample_size'), 'Sample Size (%)', 0, 100, 100), - checkboxInput(ns('x_sample_replace'), 'Replace') |> - ttip('Allow sample with replacement') + radioButtons( + ns('sample_type'), NULL, + c('Number of Rows' = 'rows', '% of Rows' = 'percent'), + inline = T), + uiOutput(ns('ui_sample')) ), ), card_footer( @@ -56,6 +58,8 @@ filter_rows_server <- function(id, input_df) { df$df_active <- input_df() }) + nrow_df_active <- reactive(nrow(df$df_active)) + # variable inputs --------------------------------------------------------- output$ui_one_var_sel <- renderUI( selectInput(ns('one_var_sel'), 'Variable', c('', df_names())) @@ -80,6 +84,26 @@ filter_rows_server <- function(id, input_df) { df$df_active[[input$two_var_sel1]] |> obj_type() }) + # render UI for sample type ----------------------------------------------- + output$ui_sample <- renderUI({ + req(input$sample_type) + tagList( + + if (input$sample_type == 'rows') { + numericInput( + ns('n_rows'), 'Number of Rows', + value = (nrow_df_active()/2) |> ceiling(), + min = 1, max = nrow_df_active() + ) + } else if (input$sample_type == 'percent') { + sliderInput(ns('sample_size'), 'Sample Size (%)', 1, 100, 50) + } + , + checkboxInput(ns('x_sample_replace'), 'Replace') |> + ttip('Allow sample with replacement') + ) + }) + # render UI for value input dynamically ----------------------------------- observe({ req(input$one_var_sel, input$one_var_operator, df$df_active) @@ -321,12 +345,28 @@ filter_rows_server <- function(id, input_df) { # filter events for sample ---------------------------------------------- } else if(input$filter_type == 'sample'){ - df$df_active <- df$df_active[ - sample(1:nrow(df$df_active), - input$sample_size/100 * nrow(df$df_active), - replace = input$x_sample_replace), ] + if(input$sample_type == 'rows'){ + + if(!isTruthy(input$n_rows) || + !between(input$n_rows, 1, nrow_df_active())){ + msg_error(paste('Number of rows must be between 1 and', nrow_df_active())) + } else { + df$df_active <- df$df_active[ + sample(1:nrow_df_active(), + input$n_rows, + replace = input$x_sample_replace), ] + + msg('Filter rows: OK') + } + + } else if(input$sample_type == 'percent'){ + df$df_active <- df$df_active[ + sample(1:nrow_df_active(), + input$sample_size/100 * nrow_df_active(), + replace = input$x_sample_replace), ] - msg('Filter rows: OK') + msg('Filter rows: OK') + } } }) |> bindEvent(input$btn_filter) diff --git a/R/normality_test_module.R b/R/normality_test_module.R index d869065..a0c41d9 100644 --- a/R/normality_test_module.R +++ b/R/normality_test_module.R @@ -5,8 +5,9 @@ normality_test_ui <- function(id) { card( full_screen = T, card_header('Normality Test', class = 'mini-header'), - layout_sidebar(bg = main_color, - sidebar = sidebar(uiOutput(ns('parameters')), bg = sidebar_color), + layout_sidebar( + class = 'card-sidebar', + sidebar = sidebar(uiOutput(ns('parameters'))), navset_card_pill( nav_panel( 'Histogram', diff --git a/R/page_config_module.R b/R/page_config_module.R index d6f8ef9..aa17f64 100644 --- a/R/page_config_module.R +++ b/R/page_config_module.R @@ -7,9 +7,9 @@ page_config_ui <- function(id) { title = 'Config', icon = bs_icon('sliders2'), card( - style = 'background-color: #02517d;', + class = 'big-card', layout_columns( - col_widths = c(9, 3), + col_widths = c(8, 4), card( card_body( h4('Colors'), @@ -28,25 +28,35 @@ page_config_ui <- function(id) { update = 'save' ), btn_task(ns('reset'), 'Reset', icon('rotate'), - style = 'margin-top: 20px !important;') + style = 'margin-top: 27px !important;') ), plotOutput(ns('sample_plot')) ) ), card( card_body( - h4('Size of input files'), - layout_columns( - col_widths = c(6, 6), - numericInput( - ns('input_file_size'), - 'Size in MB', - 500, - min = 0, - step = 100 - ), - btn_task(ns('btn_file_size'), 'Apply', icon('check'), - style = 'margin-top: 20px !important;') + fluidRow( + h4('Theme'), + layout_columns( + col_widths = c(7, 5), + selectInput(ns('theme_choice'), NULL, + choices = c('Spada' = 'spada', 'Darkly Spada' = 'dark')), + btn_task(ns('btn_theme'), 'Apply', icon('check')) + ) + ), + fluidRow( + h4('Size of input files (MB)'), + layout_columns( + col_widths = c(7, 5), + numericInput( + ns('input_file_size'), + NULL, + 1000, + min = 0, + step = 500 + ), + btn_task(ns('btn_file_size'), 'Apply', icon('check')) + ) ) ) ) @@ -97,6 +107,18 @@ page_config_server <- function(id) { }) |> bindEvent(input$reset) + # change theme + observe({ + session$setCurrentTheme( + + if(input$theme_choice == 'spada'){ + spada_theme + } else if(input$theme_choice == 'dark'){ + spada_dark_theme + } + ) + }) |> bindEvent(input$btn_theme) + return(list(palette = palette)) }) diff --git a/R/sidebar_module.R b/R/sidebar_module.R index 880ccae..4e13066 100644 --- a/R/sidebar_module.R +++ b/R/sidebar_module.R @@ -4,12 +4,11 @@ sidebar_ui <- function(id) { ns <- NS(id) sidebar( - bg = sidebar_color, open = F, accordion( open = T, accordion_panel( - style = 'background-color: #02517d; color: white;', + class = 'accordion-sidebar', 'Dataset Info', icon = bs_icon('file-binary', size = '1.75em'), uiOutput(ns('df_info')) diff --git a/R/spada.R b/R/spada.R index 4a05a9f..70609ba 100644 --- a/R/spada.R +++ b/R/spada.R @@ -13,7 +13,7 @@ #' #' @importFrom bsicons bs_icon #' -#' @importFrom bslib accordion accordion_panel bs_theme card card_body +#' @importFrom bslib accordion accordion_panel bs_add_rules bs_theme card card_body #' card_footer card_header layout_column_wrap layout_columns #' layout_sidebar nav_item nav_menu nav_panel nav_select nav_spacer #' navset_card_pill page_navbar popover sidebar tooltip value_box @@ -37,6 +37,8 @@ #' #' @importFrom haven as_factor is.labelled read_sav write_sav #' +#' @importFrom sass as_sass +#' #' @importFrom shinyWidgets colorPickr updateColorPickr show_toast dropdownButton #' radioGroupButtons statiCard #' diff --git a/R/spada_server.R b/R/spada_server.R index 406b6c4..36d6745 100644 --- a/R/spada_server.R +++ b/R/spada_server.R @@ -3,7 +3,7 @@ spada_server <- function(datasets){ function(input, output, session) { - options(shiny.maxRequestSize = 500 * 1024 ^ 2) + options(shiny.maxRequestSize = 1000 * 1024 ^ 2) # data -------------------------------------------------------------------- dt_react <- reactiveValues(data = lapply(datasets, setDT)) diff --git a/R/spada_themes.R b/R/spada_themes.R new file mode 100644 index 0000000..27fa943 --- /dev/null +++ b/R/spada_themes.R @@ -0,0 +1,186 @@ + +# app colors ------------------------------------------------------------------ +main_color <- '#02517d' +sidebar_color <- '#e3e3e4' +bg_color <- '#f9f9f9' +secondary <- '#0072B2' +sucess <- '#009E73' + +# palettes -------------------------------------------------------------------- +gray_palette <- c('#ffffff', '#585858', '#232323') +blue_palette <- c('#ffffff', '#096691', '#134359') +yl_palette <- c('#ffffff', '#ffc107', '#f7a305') +dg_palette <- c('#ffffff','#1c6561', '#284e4c') +lg_palette <- c('#ffffff', '#0cb0a8', '#09918b') +pk_palette <- c('#ffffff', '#bf007f', '#8f0360') +red_palette <- c('#ffffff', '#b60020', '#750217') + +# basic rules ----------------------------------------------------------------- + +theme_basic_rules <- as_sass( + list( + list(main_color = main_color, + secondary = secondary, + bg_color = bg_color, + sidebar_bg = sidebar_color, + grad1 = '#1f4e72', + grad2 = '#2a6485', + grad3 = '#3a7f9d', + grad4 = '#4b97b6', + grad5 = '#5fa3c2', + grad6 = '#4e96b6', + navbar_bg = '#007bb5', + stati_card_text = '#ffffff' + ), + " + .navbar { + background: $navbar_bg !important; + height: 45px !important; + padding-top: 4px !important; + padding-bottom: 4px !important; + } + + .main{ + padding-right: 16px !important; + padding-top: 16px !important; + padding-bottom: 8px !important; + } + + .nav-link { font-size: 18px; } + + body { font-size: 0.9rem; } + + .big-card{ + background-color: $main_color; + } + + .mini-header { + color: white; + background: linear-gradient(to right, $grad1, $grad2, $grad3, $grad4, $grad5, $grad6); + } + + .btn-task:hover { + background-color: $secondary; + border-color: $secondary; + color: white; + } + + .card, .well { + --bs-card-inner-border-radius: 0; + } + + .card-body {border-radius: 0rem;} + + .card-sidebar { + background-color: $main_color !important; + } + + .value-box-title { + font-size: 1rem !important; + } + + .value-box-value { + font-size: 1.5rem !important; + } + + .nav-pills .nav-link { + font-size: 14px !important; + padding-top: 6px !important; + padding-bottom: 6px !important; + } + ") +) + +# default theme --------------------------------------------------------------- + +spada_theme <- bs_theme( + version = 5, + bg = bg_color, + fg = '#000000', + primary = main_color, + secondary = secondary, + success = sucess, + font_size_base = '1rem', + 'nav-pills-border-radius' = '0rem', + 'nav-pills-link-active-color' = main_color, + 'nav-pills-link-active-bg' = sidebar_color +) |> bs_add_rules(theme_basic_rules) |> + bs_add_rules( + list( + " + .accordion-sidebar{ + background-color: $main_color !important; + color: #ffffff; + } + + .card { + border-radius: 0rem; + margin: -8px; + } + + .big-card-footer{ + background-color: $main_color; + margin-top: -12px !important; + padding-bottom: 6px !important; + height: 60px; + } + + .btn-task { + color: $secondary !important; + background-color: $bg_color !important; + border-color: $secondary !important; + padding-top: 6px !important; + padding-bottom: 6px !important; + } + + .control-label { + margin-bottom: 3px !important; + padding-top: 3px !important; + } + + .bslib-sidebar-layout>.sidebar { + background-color: $sidebar_bg !important; + color: black !important; + } + + .bslib-sidebar-layout>.collapse-toggle { + color: black !important; + background-color: unset; + } + + .nav-pills .nav-link:hover { + background-color: #f0f0f0 !important; + } + ") + ) + +# darkly spada theme ---------------------------------------------------------- +spada_dark_theme <- bs_theme(version = 5, bootswatch = 'darkly') |> + bs_add_rules(theme_basic_rules) |> + bs_add_rules( + list( + " + .card { + border-radius: 0rem; + margin: -4px; + } + + .big-card-footer{ + margin-top: -12px !important; + padding-bottom: 0px !important; + height: 60px; + } + + .btn-task { + color: $secondary; + background-color: $bg_color; + border-color: $secondary; + } + + .nav-pills .nav-link:hover { + background-color: #5a5a5a !important; + color: #ffffff !important; + } + + ") + ) diff --git a/R/spada_ui.R b/R/spada_ui.R index 97653d9..8cf57e7 100644 --- a/R/spada_ui.R +++ b/R/spada_ui.R @@ -21,22 +21,13 @@ spada_ui <- function(){ # close the app tag_js_exit, - # css style - tag_css, - page_navbar( id = 'navbar', - theme = bs_theme( - bg = bg_color, - fg = '#000000', - primary = main_color, - secondary = '#0072B2', - success = '#009E73', - font_size_base = '1rem' - ), + theme = spada_theme, title = 'Spada', bg = main_color, + underline = F, # page sidebar ---------------------------------------------------------- sidebar = sidebar_ui('sidebar'), @@ -48,8 +39,7 @@ spada_ui <- function(){ card(full_screen = T, card_body( - style = 'background-color: #02517d;', - height = '800px', + class = 'big-card', navset_card_pill( id = 'navset_card_pill_data', nav_panel('Highlights', data_highlights_ui('pD_highlights')), @@ -81,8 +71,7 @@ spada_ui <- function(){ card(full_screen = T, card_body( - style = 'background-color: #02517d;', - height = '800px', + class = 'big-card', layout_columns( navset_card_pill( nav_panel( @@ -111,7 +100,6 @@ spada_ui <- function(){ ) ), card_footer( - div(style = "margin-bottom: -12px !important;"), layout_column_wrap( btn_task('pE_btn_reset', 'Reset Dataset', icon('arrow-rotate-right')) |> ttip('Restore to previous state (before been set as the Active dataset)'), @@ -122,8 +110,7 @@ spada_ui <- function(){ btn_task('pE_btn_clear_bkp', 'Clear Backup', icon('trash-can')) |> ttip('Erase the backup'), ), - div(style = "margin-bottom: -16px !important;"), - style = 'background-color: #02517d;') + class = 'big-card-footer') ) ), diff --git a/R/utils.R b/R/utils.R index f5de1df..698edde 100644 --- a/R/utils.R +++ b/R/utils.R @@ -70,77 +70,6 @@ js_exit <- "Shiny.addCustomMessageHandler('closeWindow', function(m) {window.clo tag_js_exit <- tags$head(tags$script(HTML(js_exit))) -# css --------------------------------------------------------------------- - -tag_css <- tags$head(tags$style(HTML( - " - /* change color of navbar */ - .navbar { - /*background: linear-gradient(to right, #1d3f52, #033854, #02517d, #317aa3, #008080);*/ - /*background: linear-gradient(to right, #0277bd, #0277bd);*/ - background: #007bb5; - } - - /* change size of nav panel */ - .nav-link {font-size: 17px; } - - body { font-size: 0.9rem; } - - .card { - border-radius: 0rem; - margin: -8px; - } - - .mini-header { - color: white; - /*background: linear-gradient(to right, #1d3f52, #033854, #02517d, #317aa3, #20adc9, #008080);*/ - /*background: linear-gradient(to right, #1f4e72, #2a6485, #3a7f9d, #4b97b6, #63a9ca, #7bbfce);*/ - background: linear-gradient(to right, #1f4e72, #2a6485, #3a7f9d, #4b97b6, #5fa3c2, #4e96b6); - } - - .btn-task { - color: #0072B2; - background-color: #f9f9f9; - border-color: #0072B2; - } - - .btn-task:hover { - background-color: #0072B2; - border-color: #0072B2; - color: white; - } - - /* border rectangular */ - - .card, .well { - --bs-card-inner-border-radius: 0; - } - - .card-body {border-radius: 0rem;} - - .nav-pills { - --bs-nav-pills-border-radius: 0rem; - --bs-nav-pills-link-active-color: #02517d; - /*--bs-nav-pills-link-active-bg: #d5d6d7;*/ - --bs-nav-pills-link-active-bg: #e3e3e4; - } - - .value-box-title { - font-size: 1rem !important; - } - - .value-box-value { - font-size: 1.5rem !important; - } - - .control-label { - margin-bottom: 3px !important; - padding-top: 3px !important; - } - - ")) -) - # empty plot function --------------------------------------------------------- empty_plot <- function(msg = 'No plot', c = 2){ plot(1:10, 1:10, type = 'n', xlab = '', ylab = '') @@ -338,7 +267,6 @@ stati_card <- function(VALUE, SUBTITLE, ICON = NULL, LEFT = T, id = ID) } - # plot z test ------------------------------------------------------------- plot_z_test <- function(confidence = 0.95, test_type = 'two.sided', @@ -390,17 +318,3 @@ plot_z_test <- function(confidence = 0.95, test_type = 'two.sided', } } - -# app colors -------------------------------------------------------------- -main_color <- '#02517d' -sidebar_color <- '#e3e3e4' -bg_color <- '#f9f9f9' - -# palettes -------------------------------------------------------------------- -gray_palette <- c('#ffffff', '#585858', '#232323') -blue_palette <- c('#ffffff', '#096691', '#134359') -yl_palette <- c('#ffffff', '#ffc107', '#f7a305') -dg_palette <- c('#ffffff','#1c6561', '#284e4c') -lg_palette <- c('#ffffff', '#0cb0a8', '#09918b') -pk_palette <- c('#ffffff', '#bf007f', '#8f0360') -red_palette <- c('#ffffff', '#b60020', '#750217') diff --git a/R/z_test_module.R b/R/z_test_module.R index ee927a8..0dd87d5 100644 --- a/R/z_test_module.R +++ b/R/z_test_module.R @@ -6,15 +6,14 @@ z_test_ui <- function(id) { full_screen = T, card_header('Z Test', class = 'mini-header'), layout_sidebar( - bg = main_color, - sidebar = sidebar(uiOutput(ns('parameters')), bg = sidebar_color), + class = 'card-sidebar', + sidebar = sidebar(uiOutput(ns('parameters'))), navset_card_pill( nav_panel( 'Test', card( layout_sidebar( sidebar = sidebar( - bg = sidebar_color, width = 400, fluidRow( h5('Sampe Values'), diff --git a/docs/news/index.html b/docs/news/index.html index 15edf85..741a629 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -69,10 +69,22 @@
Highlights: New Darkly theme and new dependencie: sass package.
+1 - Correlation, Descriptive Stats, Normality Test, Sidebar, Spada UI, Z Test modules: changes in visual parameters and elements (e.g. sidebar now has class) for usage of bs_theme
+2 - Export File module: now downloadButton has class and correct icon
+3 - Filter Rows module: new Number of Rows filter
+4 - spada_themes.R: new objects with themes and usage of sass package
+5 - Spada Server: now shiny.maxRequestSize = 1000 MB
+Highlights: Use of selectizeInput with close and clear button for multiple selections
1 - Convert Cols, Descriptive Stats, Order Cols, Order Rows and Select Cols modules: now usage of selectizeInput with close and clear button for multiple selections
2 - utils.R: filter_rows function now with env = list(var1) in data.table instead of get(var)
3 - spada.R: now usage of importFrom for data.table package
@@ -82,7 +94,7 @@Highlights: New filter options in Filter Rows Module
1 - Filter Rows module: new options to filter: compare two variables and sample
2 - Config Page module: Inicial hex color now in caps
3 - utils.R: new function filter_rows_2vars for compare two variables and col_type
@@ -96,7 +108,7 @@1 - Descriptive Stats module: added geometric mean, harmonic mean, skewness and kurtosis from DescTools package.
2 - Normality test module: new test, Shapiro-Francia from DescTools package.
3 - Exploratory module: bug fix in scatter. (#18)
@@ -110,7 +122,7 @@1 - Import file module: now csv has a number of lines to read parameter and can read sav (SPSS) files
2 - Z Test module: now has a plot with test results
3 - utils.R: plot_z_test function
@@ -125,7 +137,7 @@1 - navbar_df_info and sidebar modules: now number of rows with 1 decimal value (function f_num) for better look (solve side effect after use of nsmall in previous release)
2 - New Rename Cols module: new module for rename variables of active dataset
Only visual and formatting changes.
1 - Convert Cols, Data Overview and Sidebar modules: background color receive object bg_color
2 - Correlation, Normality Test and Z Test modules: sidebars color now with bg_color object and stati_card with blue color
3 - Descriptive Stats module: gain digits input and f_num for format values
@@ -151,7 +163,7 @@1 - Correlation module: chane name of Alternatives and chance card header title to Correlation Test
2 - Export file module: now writes Sav (haven package) and uses checkbox to compress RDS
3 - Normality Test module: better names and better checks for Shapiro-Wilk Test (#15)
@@ -165,7 +177,7 @@1 - Correlation module: now check if Standard Deviation of any informed variable is zero, avoiding warning. Also fixed (#14).
2 - Exploratory module: now with req (for main variable and variable 2) in render_plot (output$gt_dist)
3 - Stats table module: align columns, use ‘-’ for sub_missing becasue the long dash is not an ASCII and could not be replicated in sub_values (devtools::check). Also fixed (#13)
@@ -193,7 +205,7 @@1 - Descriptive Stats module: now Mode returns NA (not as character) and only paste/collapse values if Mode exists. Inserted sub_missing() in gt_stats for better look and consistency with other views
2 - Stats table module: now Mode returns NA (not as character) and only paste/collapse values if Mode exists
3 - Exploratory module: now the Variable 2 can not be float in Boxplot by Groups, because does not seam reasonable to have an infinite number of groups. Related to (#11)
@@ -206,7 +218,7 @@1 - New dependencie: package DescTools
2 - Descriptive Stats module: now with Mode (DescTools package) for numeri, character and factor variables
3 - Filter Rows module: refactored to check operators and values. New operators: Outlier (and Not Outlier) and Logical (TRUE and FALSE)
@@ -217,7 +229,7 @@1 - Correlation module: parameters in card sidebar for better use of space
2 - df_info function: new test file and now returns empty data.frame (accepted by gt_info) in case of no columns in the entry data.frame
3 - Normality test module: now Ks and Shapiro-wilk tests have gt table, save button and statiCards
@@ -227,7 +239,7 @@1 - Correlation module: new layout, new table with test results, help button (help documentation), save table button and statiCards (shnywidgets) with Correlation and p value.
2 - Descriptive Stats module: now with variable selected by default
3 - Normality test module: new Help button in Ks test and Shapiro-Wilk test
@@ -238,7 +250,7 @@1 - Startup page: now with startup page with shinybusy package (new dependencie)
2 - radioGroupButtons: change some radioButtons (shiny) for radioGroupButtons (shinyWidgets) in data_overview_module and exploratory_module for better look
3 - Page config module: colorPickr now with ‘save’ mode for better reset of values and other visual changes fo better look
@@ -251,7 +263,7 @@1 - New module: Filter Rows
2 - Convert module: always align right the preview table
3 - Descriptive Stats module: now all options inicially as TRUE
@@ -266,7 +278,7 @@1 - New module: Normality test
2 - Module Correlation > Scatter Plot now has a button to render plot
3 - Module Descriptive Stats now has a button to render table
@@ -280,7 +292,7 @@1 - testthat: create structure to run tests (test-fina.R as initial test)
2 - New modules: Order Rows, Convert Cols and Exploratory
3 - Correlation module: insert req in scatter plot
@@ -295,7 +307,7 @@1 - New modules: Sidebar and Navbar Df Info
2 - New function filter_rows in utils.R
3 - New reactives: df_active_ncol, df_active_resume_data and df$df_trigger (to use for updates)
@@ -321,7 +333,7 @@1 - Stats table now is a module
2 - new module Correlation
3 - new module Descriptive Stats
@@ -339,7 +351,7 @@1 - utils functions
2 - page_config_module: correction of a typo
3 - spada function
@@ -355,7 +367,7 @@1 - export_file_module: separator order now semicolon as default
2 - new import_file_module: allows input csv and RDS files
3 - page_config_module: new visual and size of input file as parameter
@@ -379,7 +391,7 @@1 - utils functions
df_info now uses suna instead of length, this change fix errors and provide gain in speed.
deletion of format_color_bar and main_value_box functions given that they are now in use anymore
1 - General
Created zzz.R and inserted utils::globalVariables for global variables (check note)
Value boxes: resized to give more space for other elements
1 - utils functions
1 - New functionality: copy dataset (Data page)
2 - Config page now is a module
3 - New Some reactives now with bindCache
@@ -452,7 +464,7 @@1 - utils functions
change color in value boxes (to gray) for better looking
number of rows (value box) now with decimals
1 - utils functions
df_info: improvement in performance (something like half the time in big datasets - 1e6 rows)
new function: gt_info to generate metadata with gt package