From 9fed4b572a1795bb040331b76b42c4607da51d9d Mon Sep 17 00:00:00 2001 From: Becca Krouse Date: Tue, 3 Feb 2026 14:20:06 -0500 Subject: [PATCH 1/5] reduce imports --- DESCRIPTION | 3 +- NAMESPACE | 33 ++----------- NEWS.md | 3 ++ R/mod_big_n.R | 2 +- R/mod_big_n_edit.R | 4 +- R/mod_body_plan.R | 6 +-- R/mod_body_plan_edit.R | 2 +- R/mod_body_plan_edit_frmts.R | 6 +-- R/mod_col_plan_simple.R | 6 +-- R/mod_col_style_plan.R | 6 +-- R/mod_col_style_plan_edit.R | 6 +-- R/mod_datamapping.R | 10 ++-- R/mod_datamapping_inputs.R | 18 ++++---- R/mod_export_table.R | 8 ++-- R/mod_filters.R | 26 +++++------ R/mod_footnote_plan.R | 6 +-- R/mod_load.R | 22 ++++----- R/mod_page_plan.R | 12 ++--- R/mod_row_grp_plan.R | 6 +-- R/mod_row_grp_plan_edit.R | 4 +- R/mod_table_inner.R | 16 +++---- R/tfrmtbuilder_server.R | 4 +- R/tfrmtbuilder_ui.R | 20 +++++--- R/utils_app.R | 46 +++++++++---------- R/utils_tfrmt.R | 20 ++++---- R/zzz.R | 18 +------- .../module_examples/mod_body_plan/app.R | 2 +- .../module_examples/mod_datamapping/app.R | 2 +- .../mod_datamapping_inputs/app.R | 2 +- .../test-mod_datamapping-shinytest2.R | 6 +-- .../test-mod_datamapping_inputs-shinytest2.R | 14 +++--- 31 files changed, 152 insertions(+), 187 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b75699c..ca27a2d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -29,13 +29,12 @@ Description: Provides an interactive interface to the 'tfrmt' package. Users License: Apache License (>= 2) Encoding: UTF-8 Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.2 +RoxygenNote: 7.3.3 Imports: tfrmt (>= 0.1.0), shiny, shinyjs, dplyr, - forcats, stringr, purrr, DT, diff --git a/NAMESPACE b/NAMESPACE index b14c0f2..6b6df3e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -3,38 +3,13 @@ export(tfrmtbuilder) import(bslib) import(dplyr) -import(forcats) -import(gt) -import(purrr) import(shiny) -import(shinyAce) -import(shinyWidgets) -import(sortable) -import(stringr) import(tfrmt) import(webshot2) -importFrom(DT,DTOutput) -importFrom(DT,datatable) -importFrom(DT,renderDT) -importFrom(fontawesome,fa_i) -importFrom(rio,import) importFrom(rlang,`!!`) importFrom(rlang,`:=`) +importFrom(rlang,as_label) +importFrom(rlang,is_empty) +importFrom(rlang,quo) importFrom(rlang,quo_is_missing) -importFrom(shinyFeedback,feedbackDanger) -importFrom(shinyFeedback,useShinyFeedback) -importFrom(shinycssloaders,withSpinner) -importFrom(shinyjs,addClass) -importFrom(shinyjs,disable) -importFrom(shinyjs,enable) -importFrom(shinyjs,hide) -importFrom(shinyjs,onclick) -importFrom(shinyjs,removeClass) -importFrom(shinyjs,show) -importFrom(shinyjs,toggle) -importFrom(shinyjs,toggleClass) -importFrom(shinyjs,toggleState) -importFrom(shinyjs,useShinyjs) -importFrom(stats,setNames) -importFrom(utils,getFromNamespace) -importFrom(utils,zip) +importFrom(rlang,sym) diff --git a/NEWS.md b/NEWS.md index a0aa6ba..1d68a50 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,9 @@ * New features: - Add ability to specify `tfrmt`, `data`, and/or `mockmode` in the `tfrmtbuilder()` function call, as an alternative to manually uploading/specifying these within the app. +* Bug fixes: + - Fix namespace conflict between bslib and shinyWidgets + # tfrmtbuilder 0.0.6 * New features: diff --git a/R/mod_big_n.R b/R/mod_big_n.R index c0b7446..09e600d 100644 --- a/R/mod_big_n.R +++ b/R/mod_big_n.R @@ -82,7 +82,7 @@ big_n_server <- function(id, data, tfrmt_app, mode_load){ }) # when any are selected, switch to edit mode - onclick("items", expr = { + shinyjs::onclick("items", expr = { if (!is_empty(struct())){ mode("edit") diff --git a/R/mod_big_n_edit.R b/R/mod_big_n_edit.R index 36d9d2a..b3f6e27 100644 --- a/R/mod_big_n_edit.R +++ b/R/mod_big_n_edit.R @@ -13,7 +13,7 @@ big_n_edit_ui <- function(id){ fluidRow( div(style = " width: 50%;", div(id = ns("frmt_outer"), - aceEditor(ns("frmt"), mode = "r", fontSize = 16, value = "frmt(\"\\nN = xx\")", + shinyAce::aceEditor(ns("frmt"), mode = "r", fontSize = 16, value = "frmt(\"\\nN = xx\")", wordWrap = TRUE, minLines = 2, maxLines = 2, @@ -60,7 +60,7 @@ big_n_edit_server <- function(id, data, tfrmt_app, selected, mode_load){ } - updateAceEditor(session, + shinyAce::updateAceEditor(session, editorId = "frmt", value = existing_frmt) }) diff --git a/R/mod_body_plan.R b/R/mod_body_plan.R index 9a23fc1..c109bf2 100644 --- a/R/mod_body_plan.R +++ b/R/mod_body_plan.R @@ -79,7 +79,7 @@ body_plan_server <- function(id, data, tfrmt_app, mode_load){ req(length(struct_list())>0) - struct_list_txt <- map(struct_list(), + struct_list_txt <- purrr::map(struct_list(), ~.x %>% format_frmt_struct() %>% {paste0(., collapse = "
")}) create_struct_list_sortable(ns, struct_list_txt, mode()) @@ -104,9 +104,9 @@ body_plan_server <- function(id, data, tfrmt_app, mode_load){ # when any are selected, switch to edit mode - onclick("items", expr = { + shinyjs::onclick("items", expr = { - last_struct <- pluck(struct_list(), length(struct_list())) + last_struct <- purrr::pluck(struct_list(), length(struct_list())) if(!is_empty(last_struct)){ mode("edit") } diff --git a/R/mod_body_plan_edit.R b/R/mod_body_plan_edit.R index c847977..7eec8b8 100644 --- a/R/mod_body_plan_edit.R +++ b/R/mod_body_plan_edit.R @@ -50,7 +50,7 @@ body_plan_edit_server <- function(id, data, tfrmt_app, selected){ if (!all(collected_filters()$param_val==".default") && length(collected_filters()$param_val)==1){ - frmt_out_ready <- setNames(frmt_out_ready, collected_filters()$param_val) + frmt_out_ready <- purrr::set_names(frmt_out_ready, collected_filters()$param_val) } do.call("frmt_structure", args = c(list(group_val = collected_filters()$group_val, diff --git a/R/mod_body_plan_edit_frmts.R b/R/mod_body_plan_edit_frmts.R index 51361eb..f7c4553 100644 --- a/R/mod_body_plan_edit_frmts.R +++ b/R/mod_body_plan_edit_frmts.R @@ -17,7 +17,7 @@ body_plan_edit_frmts_ui <- function(id){ fluidRow( div(style = "margin-top:20px; width: 75%", div(id = ns("frmt_outer"), - aceEditor(ns("frmt"), mode = "r", fontSize = 16, value = "frmt('XXX.X')", + shinyAce::aceEditor(ns("frmt"), mode = "r", fontSize = 16, value = "frmt('XXX.X')", wordWrap = TRUE, minLines = 5, maxLines = 8, @@ -60,7 +60,7 @@ body_plan_edit_frmts_server <- function(id, selected){ } - updateAceEditor(session, + shinyAce::updateAceEditor(session, editorId = "frmt", value = existing_frmt) }) @@ -73,7 +73,7 @@ body_plan_edit_frmts_server <- function(id, selected){ observeEvent(input[[paste0("pst_", x)]],{ dummy_fun <- get(paste0("dummy_", x), envir = asNamespace("tfrmtbuilder")) - updateAceEditor(session, + shinyAce::updateAceEditor(session, editorId = "frmt", value = paste0(input$frmt, dummy_fun())) }) diff --git a/R/mod_col_plan_simple.R b/R/mod_col_plan_simple.R index 19e5403..3a2340c 100644 --- a/R/mod_col_plan_simple.R +++ b/R/mod_col_plan_simple.R @@ -75,7 +75,7 @@ col_plan_simple_server <- function(id, data, tfrmt_app, mode_load){ # group/label order for tfrmt grp_lbl_ord <- eventReactive(tfrmt_app(),{ - c(tfrmt_app()$group %>% map_chr(as_label), + c(tfrmt_app()$group %>% purrr::map_chr(as_label), tfrmt_app()$label %>% as_label()) }) @@ -143,7 +143,7 @@ col_plan_simple_server <- function(id, data, tfrmt_app, mode_load){ selected <- reactiveVal(NULL) selected_num <- reactiveVal(NULL) - onclick("items", expr = { + shinyjs::onclick("items", expr = { mode("edit") item_num <- as.numeric(input$`button-item`) @@ -196,7 +196,7 @@ col_plan_simple_server <- function(id, data, tfrmt_app, mode_load){ eventReactive(cols_dat_out(),{ new_name_col <- paste0("__tfrmt_new_name__", col_name()) - col <- tfrmt_app()$column %>% map_chr(as_label) + col <- tfrmt_app()$column %>% purrr::map_chr(as_label) cols_to_keep <- cols_dat_out() %>% filter(!.data$`__col_plan_dropped__`) diff --git a/R/mod_col_style_plan.R b/R/mod_col_style_plan.R index 317b3b4..ab1b4b1 100644 --- a/R/mod_col_style_plan.R +++ b/R/mod_col_style_plan.R @@ -79,7 +79,7 @@ col_style_plan_server <- function(id, data, tfrmt_app){ req(length(struct_list())>0) - struct_list_txt <- map(struct_list(), + struct_list_txt <- purrr::map(struct_list(), ~.x %>% format_col_style_struct() %>% {paste0(., collapse = "
")}) create_struct_list_sortable(ns, struct_list_txt, mode()) @@ -104,9 +104,9 @@ col_style_plan_server <- function(id, data, tfrmt_app){ # when any are selected, switch to edit mode - onclick("items", expr = { + shinyjs::onclick("items", expr = { - last_struct <- pluck(struct_list(), length(struct_list())) + last_struct <- purrr::pluck(struct_list(), length(struct_list())) if(!is_empty(last_struct)){ mode("edit") } diff --git a/R/mod_col_style_plan_edit.R b/R/mod_col_style_plan_edit.R index f3a3f88..72bb082 100644 --- a/R/mod_col_style_plan_edit.R +++ b/R/mod_col_style_plan_edit.R @@ -12,7 +12,7 @@ col_style_plan_edit_ui <- function(id){ fluidRow( column(6, h3("Align"), - awesomeRadio(ns("align_opts"), label = NULL, + shinyWidgets::awesomeRadio(ns("align_opts"), label = NULL, choices = list("left", "right", "custom"), inline = TRUE, selected = "left"), @@ -61,14 +61,14 @@ col_style_plan_edit_server <- function(id, data, tfrmt_app, selected){ } if (existing_align[[1]] %in% c("left","right")){ - updateAwesomeRadio(session, inputId = "align_opts", selected = existing_align) + shinyWidgets::updateAwesomeRadio(session, inputId = "align_opts", selected = existing_align) } else { existing_align_txt <- paste0("\"", existing_align, "\"") if (length(existing_align_txt)>1){ existing_align_txt <- paste0("c(", paste(existing_align_txt, collapse = ", "), ")") } - updateAwesomeRadio(session, inputId = "align_opts", selected = "custom") + shinyWidgets::updateAwesomeRadio(session, inputId = "align_opts", selected = "custom") updateTextInput(session, inputId = "align_custom", value = existing_align_txt) } diff --git a/R/mod_datamapping.R b/R/mod_datamapping.R index a328583..5f78aa0 100644 --- a/R/mod_datamapping.R +++ b/R/mod_datamapping.R @@ -44,16 +44,16 @@ datamapping_server <- function(id, data, tfrmt_orig, mode){ nms <- c("group","label","param","value","column","sorting_cols") tfrmt_orig()[nms] %>% - map(function(x){ + purrr::map(function(x){ if (is.null(x)){ NULL } else if (is.list(x)){ - map_chr(x, as_label) + purrr::map_chr(x, as_label) } else { as_label(x) } }) %>% - setNames(nms) + purrr::set_names(nms) }) @@ -221,10 +221,10 @@ datamapping_server <- function(id, data, tfrmt_orig, mode){ tf <- isolate(tfrmt_orig()) - tfrmt_new <- do.call(tfrmt, settings_collected() %>% discard(is.null)) + tfrmt_new <- do.call(tfrmt, settings_collected() %>% purrr::discard(is.null)) # update groups if needed - old_grps <- tf$group %>% map_chr(as_label) + old_grps <- tf$group %>% purrr::map_chr(as_label) new_grps <- settings_collected()$group[1:length(old_grps)] grps_to_update <- which(!old_grps==new_grps) diff --git a/R/mod_datamapping_inputs.R b/R/mod_datamapping_inputs.R index 9cb5b55..15b6e2b 100644 --- a/R/mod_datamapping_inputs.R +++ b/R/mod_datamapping_inputs.R @@ -14,8 +14,8 @@ datamapping_inputs_ui <- function(id, setting_name){ div( id = ns("item_div"), span(id = ns("multiples"), - div(circleButton(ns("addinput"), icon = icon("plus"), size = "xs"), class = "btn-circle"), - div(circleButton(ns("dropinput"), icon = icon("minus"), size = "xs"), class = "btn-circle"), + div(shinyWidgets::circleButton(ns("addinput"), icon = icon("plus"), size = "xs"), class = "btn-circle"), + div(shinyWidgets::circleButton(ns("dropinput"), icon = icon("minus"), size = "xs"), class = "btn-circle"), style = "display: flex; gap: 5px;") ) ) @@ -37,7 +37,7 @@ datamapping_inputs_server <- function(id, data, settings_in, reset, multiple, re # hide add/drop inputs if multiple = FALSE observe({ - toggle("multiples", condition = multiple==TRUE) + shinyjs::toggle("multiples", condition = multiple==TRUE) }) # starts at zero, 1 for initial state, then increments for each edit @@ -62,7 +62,7 @@ datamapping_inputs_server <- function(id, data, settings_in, reset, multiple, re removeUI(paste0("#", ns("item_div_inputs"))) - existing_inputs <- names(input)[str_detect(names(input), "^item-")] + existing_inputs <- names(input)[stringr::str_detect(names(input), "^item-")] for (i in existing_inputs){ remove_shiny_inputs(ns, i, input) } @@ -139,7 +139,7 @@ datamapping_inputs_server <- function(id, data, settings_in, reset, multiple, re vals <- lapply(expected_inputs, function(ind){ input[[ind]] - }) %>% set_names(expected_inputs) + }) %>% purrr::set_names(expected_inputs) selected_items(vals) @@ -182,15 +182,15 @@ datamapping_inputs_server <- function(id, data, settings_in, reset, multiple, re expected_inputs <- paste0("item-", active_items()) req(all(expected_inputs %in% names(selected_items()))) - imap(selected_items(), function(value, name){ + purrr::imap(selected_items(), function(value, name){ show <- is.null(value) - feedbackDanger(inputId = name, color = "red", icon = NULL, text = NULL, show = show) + shinyFeedback::feedbackDanger(inputId = name, color = "red", icon = NULL, text = NULL, show = show) }) - if (any(map_lgl(selected_items(), is.null))){ + if (any(purrr::map_lgl(selected_items(), is.null))){ settings_complete(FALSE) } else { settings_complete(TRUE) @@ -201,7 +201,7 @@ datamapping_inputs_server <- function(id, data, settings_in, reset, multiple, re # selected items out settings <- reactive({ if (!is.null(selected_items())){ - keep(selected_items(), function(x)!is.null(x)) %>% unlist() %>% unname() + purrr::keep(selected_items(), function(x)!is.null(x)) %>% unlist() %>% unname() } else { NULL } diff --git a/R/mod_export_table.R b/R/mod_export_table.R index 3815f34..35a425c 100644 --- a/R/mod_export_table.R +++ b/R/mod_export_table.R @@ -32,11 +32,11 @@ mod_export_table_server <- function(id, tbl, ext){ dir.create(temp_dir) n_tbls <- nrow(tbl()$gt_tbls) - walk(1:n_tbls, function(x){ - tbl() %>% grp_pull(x) %>% gtsave(filename = paste0("tfrmt_",x,".", tolower(ext)), path = temp_dir) + purrr::walk(1:n_tbls, function(x){ + tbl() %>% gt::grp_pull(x) %>% gt::gtsave(filename = paste0("tfrmt_",x,".", tolower(ext)), path = temp_dir) }) - zip( + utils::zip( zipfile = con, files = file.path(temp_dir, paste0("tfrmt_", seq_along(tbl()), ".", tolower(ext))), flags = "-r9Xj" @@ -45,7 +45,7 @@ mod_export_table_server <- function(id, tbl, ext){ } else{ gtobj <- tbl() - gtsave(gtobj, con) + gt::gtsave(gtobj, con) } } diff --git a/R/mod_filters.R b/R/mod_filters.R index cf159b8..0659200 100644 --- a/R/mod_filters.R +++ b/R/mod_filters.R @@ -39,15 +39,15 @@ filters_server <- function(id, data, tfrmt_app, selected, var_shell <- reactive({ req(tfrmt_app()) - include %>% map(function(x){ + include %>% purrr::map(function(x){ ind <- tfrmt_app()[[x]] if (is.list(ind)){ - map_chr(ind, as_label) + purrr::map_chr(ind, as_label) } else { as_label(ind) } }) %>% - setNames(include) + purrr::set_names(include) }) @@ -62,18 +62,18 @@ filters_server <- function(id, data, tfrmt_app, selected, i <- which(var==names(var_shell())) - if (getFromNamespace("is_col_style_structure","tfrmt")(selected())){ + if (utils::getFromNamespace("is_col_style_structure","tfrmt")(selected())){ - selected_vars_nms <- selected()$cols %>% map_chr(as_label) %>% + selected_vars_nms <- selected()$cols %>% purrr::map_chr(as_label) %>% list() %>% - set_names(var_shell()[[var]]) + purrr::set_names(var_shell()[[var]]) selected_vars <- list(column_val = selected_vars_nms) } else{ selected_vars <- selected() %>% - keep_at(paste0(var, "_val")) + purrr::keep_at(paste0(var, "_val")) } all_vars <- var_shell()[[var]] @@ -84,7 +84,7 @@ filters_server <- function(id, data, tfrmt_app, selected, } - arrange_ui_grid(list_flatten(ui_list), el_width = 4) + arrange_ui_grid(purrr::list_flatten(ui_list), el_width = 4) }) @@ -105,8 +105,8 @@ filters_server <- function(id, data, tfrmt_app, selected, } val }) %>% - setNames(all_vars) %>% - discard(is.null) + purrr::set_names(all_vars) %>% + purrr::discard(is.null) # convert back to tfrmt input parameter level (group_val = list(group1 = val1, group2 = val2)) vars_list <- list() @@ -114,14 +114,14 @@ filters_server <- function(id, data, tfrmt_app, selected, for (var in names(var_shell)){ i <- which(var==names(var_shell)) - selected_vars <- keep_at(input_list, var_shell[[var]]) + selected_vars <- purrr::keep_at(input_list, var_shell[[var]]) ## unlist if not a list to begin with if (! is.list(isolate(tfrmt_app()[[var]]))){ selected_vars <- selected_vars %>% unlist() %>% unname() } else { # if a list and all .default, then condense - if (length(selected_vars)>0 && all(map_lgl(selected_vars, ~all(.x ==".default")))){ + if (length(selected_vars)>0 && all(purrr::map_lgl(selected_vars, ~all(.x ==".default")))){ selected_vars <- ".default" } } @@ -130,7 +130,7 @@ filters_server <- function(id, data, tfrmt_app, selected, } vars_list %>% - map(function(x){if(length(x)==0) NULL else x}) + purrr::map(function(x){if(length(x)==0) NULL else x}) }) diff --git a/R/mod_footnote_plan.R b/R/mod_footnote_plan.R index be8fdea..fe98759 100644 --- a/R/mod_footnote_plan.R +++ b/R/mod_footnote_plan.R @@ -90,7 +90,7 @@ footnote_plan_server <- function(id, data, tfrmt_app){ req(length(struct_list())>0) - struct_list_txt <- map(struct_list(), + struct_list_txt <- purrr::map(struct_list(), ~.x %>% format_footnote_struct() %>% {paste0(., collapse = "
")}) create_struct_list_sortable(ns, struct_list_txt, mode()) @@ -115,9 +115,9 @@ footnote_plan_server <- function(id, data, tfrmt_app){ # when any are selected, switch to edit mode - onclick("items", expr = { + shinyjs::onclick("items", expr = { - last_struct <- pluck(struct_list(), length(struct_list())) + last_struct <- purrr::pluck(struct_list(), length(struct_list())) if(!is_empty(last_struct)){ mode("edit") } diff --git a/R/mod_load.R b/R/mod_load.R index 2341c5b..d79552d 100644 --- a/R/mod_load.R +++ b/R/mod_load.R @@ -15,14 +15,14 @@ load_ui <- function(id){ shinyjs::hidden( div( id = ns("tfrmt_opts"), - radioGroupButtons(ns("tfrmt_source"), label = NULL, choices = c("None", "Upload", "Example")), + shinyWidgets::radioGroupButtons(ns("tfrmt_source"), label = NULL, choices = c("None", "Upload", "Example")), fluidRow( column(12, shinyjs::hidden(fileInput(ns("tfrmt_load"), buttonLabel = "Load JSON", label = NULL, accept = c(".json"))) ) ), fluidRow( - shinyjs::hidden(radioGroupButtons(ns("tfrmt_ex"), + shinyjs::hidden(shinyWidgets::radioGroupButtons(ns("tfrmt_ex"), label = NULL, choices = c("demog","ae","efficacy"))) ) @@ -46,7 +46,7 @@ load_ui <- function(id){ shinyjs::hidden( div( id = ns("data_opts"), - radioGroupButtons(ns("data_source"), label = NULL, + shinyWidgets::radioGroupButtons(ns("data_source"), label = NULL, choices = c("Auto", "Upload", "Example"), selected = "Auto"), fluidRow( conditionalPanel("input.data_source=='Upload'", @@ -55,7 +55,7 @@ load_ui <- function(id){ ), fluidRow( conditionalPanel("input.data_source=='Example'", - radioGroupButtons(ns("data_ex"), label = NULL, choices = c("demog","ae","labs","efficacy")), + shinyWidgets::radioGroupButtons(ns("data_ex"), label = NULL, choices = c("demog","ae","labs","efficacy")), ns = ns) ) ) @@ -65,7 +65,7 @@ load_ui <- function(id){ shinycssloaders::withSpinner( color = getOption("spinner.color", default = "#254988"), type = 4, - DTOutput(ns("data_view"), height = "500px") + DT::DTOutput(ns("data_view"), height = "500px") ) ) ) @@ -98,11 +98,11 @@ load_server <- function(id, tfrmt_in = reactive(NULL), data_in = reactive(NULL), observe({ if (mockmode()){ - updateRadioGroupButtons(session, "data_source", disabledChoices = NULL) + shinyWidgets::updateRadioGroupButtons(session, "data_source", disabledChoices = NULL) } else { cur_selected <- input$data_source selected <- ifelse(cur_selected=="Auto", "Upload", cur_selected) - updateRadioGroupButtons(session, "data_source", disabledChoices = "Auto", selected = selected) + shinyWidgets::updateRadioGroupButtons(session, "data_source", disabledChoices = "Auto", selected = selected) } }) @@ -155,8 +155,8 @@ load_server <- function(id, tfrmt_in = reactive(NULL), data_in = reactive(NULL), observeEvent(c(input$tfrmt_ex, input$tfrmt_source), { req(input$tfrmt_source=="Example") req(!input$data_source=="Upload") - updateRadioGroupButtons(session, "data_source", selected = "Example") - updateRadioGroupButtons(session, "data_ex", selected = input$tfrmt_ex) + shinyWidgets::updateRadioGroupButtons(session, "data_source", selected = "Example") + shinyWidgets::updateRadioGroupButtons(session, "data_ex", selected = input$tfrmt_ex) }) # keep track of mode for downstream functionality @@ -187,14 +187,14 @@ load_server <- function(id, tfrmt_in = reactive(NULL), data_in = reactive(NULL), }) # data preview - output$data_view <- renderDT({ + output$data_view <- DT::renderDT({ if (is.null(data_out())){ data_tbl <- make_mock_data(tfrmt_out()) } else { data_tbl <- data_out() } - datatable(data_tbl, + DT::datatable(data_tbl, rownames = FALSE, fillContainer = TRUE, options = list(paging = FALSE, diff --git a/R/mod_page_plan.R b/R/mod_page_plan.R index 74afb63..e5864d9 100644 --- a/R/mod_page_plan.R +++ b/R/mod_page_plan.R @@ -7,7 +7,6 @@ page_plan_ui <- function(id){ ns <- NS(id) tagList( - # fluidRow( h3("Page Plan", class = "heading_style", actionButton(ns("reset"), "Reset", icon = icon("undo")), class = "btn-reset"), h4("Note location"), @@ -17,7 +16,7 @@ page_plan_ui <- function(id){ selected = character(0) ), h4("Max rows"), - prettySwitch(ns("max_set"), "Set", value = FALSE), + shinyWidgets::prettySwitch(ns("max_set"), "Set", value = FALSE), numericInput(ns("max_rows"), label = NULL, value = 10, min = 1, max = NA, step = 5, width = "25%") , h4("Page Structures"), @@ -35,7 +34,6 @@ page_plan_ui <- function(id){ column(3, div(actionButton(ns("add"), "New", icon = icon("plus")), class = "btn-new")), column(3, offset = 1, div(shinyjs::disabled(actionButton(ns("delete"), "Delete", icon = icon("trash")))), class = "btn-delete") ), - # ), br(), shinyjs::hidden( div(id = ns("customize"), @@ -125,7 +123,7 @@ page_plan_server <- function(id, data, tfrmt_app, mode_load){ req(length(struct_list())>0) - struct_list_txt <- map(struct_list(), + struct_list_txt <- purrr::map(struct_list(), ~.x %>% format_page_struct() %>% {paste0(., collapse = "
")}) create_struct_list_sortable(ns, struct_list_txt, mode()) @@ -150,10 +148,10 @@ page_plan_server <- function(id, data, tfrmt_app, mode_load){ # when any are selected, switch to edit mode - onclick("items", expr = { + shinyjs::onclick("items", expr = { - last_struct <- pluck(struct_list(), length(struct_list())) - if(!is_empty(last_struct)){ + last_struct <- purrr::pluck(struct_list(), length(struct_list())) + if(!rlang::is_empty(last_struct)){ mode("edit") } }) diff --git a/R/mod_row_grp_plan.R b/R/mod_row_grp_plan.R index af742a2..0be2604 100644 --- a/R/mod_row_grp_plan.R +++ b/R/mod_row_grp_plan.R @@ -99,7 +99,7 @@ row_grp_plan_server <- function(id, data, tfrmt_app, mode_load){ req(length(struct_list())>0) - struct_list_txt <- map(struct_list(), + struct_list_txt <- purrr::map(struct_list(), ~.x %>% format_row_grp_struct() %>% {paste0(., collapse = "
")}) create_struct_list_sortable(ns, struct_list_txt, mode()) @@ -124,9 +124,9 @@ row_grp_plan_server <- function(id, data, tfrmt_app, mode_load){ # when any are selected, switch to edit mode - onclick("items", expr = { + shinyjs::onclick("items", expr = { - last_struct <- pluck(struct_list(), length(struct_list())) + last_struct <- purrr::pluck(struct_list(), length(struct_list())) if(!is_empty(last_struct)){ mode("edit") } diff --git a/R/mod_row_grp_plan_edit.R b/R/mod_row_grp_plan_edit.R index d534f37..786caf6 100644 --- a/R/mod_row_grp_plan_edit.R +++ b/R/mod_row_grp_plan_edit.R @@ -12,7 +12,7 @@ row_grp_plan_edit_ui <- function(id){ h3("Post Space"), fluidRow( div(style = "width: 50%;", - aceEditor(ns("post_space"), value = "\" \"", mode = "r", debounce = 0, + shinyAce::aceEditor(ns("post_space"), value = "\" \"", mode = "r", debounce = 0, fontSize = 16, wordWrap = TRUE, minLines = 2, @@ -51,7 +51,7 @@ row_grp_plan_edit_server <- function(id, data, tfrmt_app, selected){ existing_post_space <- " " } - updateAceEditor(session, + shinyAce::updateAceEditor(session, editorId = "post_space", value = paste0("\"", existing_post_space, "\"")) }) diff --git a/R/mod_table_inner.R b/R/mod_table_inner.R index f1f0b3d..e93de49 100644 --- a/R/mod_table_inner.R +++ b/R/mod_table_inner.R @@ -65,14 +65,14 @@ table_inner_server <- function(id, data, tfrmt_app_out, mode, tbl_auto_refresh){ data <- isolate(data()) if (mode=="reporting"){ - tfrmt_app_out %>% safely(print_to_gt)(.data = data) + tfrmt_app_out %>% purrr::safely(print_to_gt)(.data = data) } else if (mode=="mock_no_data"){ - tfrmt_app_out %>% safely(print_mock_gt)() + tfrmt_app_out %>% purrr::safely(print_mock_gt)() } else { - tfrmt_app_out %>% safely(print_mock_gt)(.data = data) + tfrmt_app_out %>% purrr::safely(print_mock_gt)(.data = data) } }) @@ -86,7 +86,7 @@ table_inner_server <- function(id, data, tfrmt_app_out, mode, tbl_auto_refresh){ req(!is.null(tab()$result)) if (inherits(tab()$result, "gt_group")){ - tab()$result %>% grp_pull(page_info$page_cur()) + tab()$result %>% gt::grp_pull(page_info$page_cur()) } else{ tab()$result } @@ -97,11 +97,11 @@ table_inner_server <- function(id, data, tfrmt_app_out, mode, tbl_auto_refresh){ req(tab_sub()) - as_raw_html( + gt::as_raw_html( tab_sub() %>% - tab_style(style = cell_text(whitespace = "pre"), - locations = list(cells_stub(), cells_body(), cells_row_groups())) %>% - tab_options( + gt::tab_style(style = gt::cell_text(whitespace = "pre"), + locations = list(gt::cells_stub(), gt::cells_body(), gt::cells_row_groups())) %>% + gt::tab_options( table.align = "left" ) , inline_css = FALSE) diff --git a/R/tfrmtbuilder_server.R b/R/tfrmtbuilder_server.R index fec24ed..aeebc31 100644 --- a/R/tfrmtbuilder_server.R +++ b/R/tfrmtbuilder_server.R @@ -98,9 +98,9 @@ tfrmtbuilder_server <- function(id, tfrmt, data) { cur_tab = reactive(input$all_tabs=="Export")) # view data - output$data_view <- renderDT({ + output$data_view <- DT::renderDT({ - datatable(data_out(), + DT::datatable(data_out(), rownames = FALSE, fillContainer = TRUE, options = list(paging = FALSE, diff --git a/R/tfrmtbuilder_ui.R b/R/tfrmtbuilder_ui.R index 1634ab4..bd4e82d 100644 --- a/R/tfrmtbuilder_ui.R +++ b/R/tfrmtbuilder_ui.R @@ -9,14 +9,20 @@ tfrmtbuilder_ui <- function(id, mockmode){ fluidPage( titlePanel(""), includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), - html_dependency_pretty(), - useShinyjs(), - useShinyFeedback(), + shinyWidgets::html_dependency_pretty(), + shinyjs::useShinyjs(), + shinyFeedback::useShinyFeedback(), navbarPage( windowTitle = "tfrmt Builder", - title = span(tagList(fa_i("person-digging"), "tfrmt Builder"), class = "navheader_padding"), - theme = bs_theme(bootswatch = "flatly", - base_font = font_collection(font_google("Lato", local = FALSE), "sans-serif"), + title = span( + tagList( + fontawesome::fa_i("person-digging"), "tfrmt Builder" + ), + class = "navheader_padding"), + theme = bslib::bs_theme(bootswatch = "flatly", + base_font = bslib::font_collection( + bslib::font_google("Lato", local = FALSE), + "sans-serif"), primary = "#254988", bg = "#ffffff", fg = "#000000" @@ -75,7 +81,7 @@ tfrmtbuilder_ui <- function(id, mockmode){ nav_panel(title = "Table", br(), table_outer_ui(ns("tbl_view"))), nav_panel(title = "Data", - DTOutput(ns("data_view"))) + DT::DTOutput(ns("data_view"))) ), position = "right", width = "40%" diff --git a/R/utils_app.R b/R/utils_app.R index 7a7504e..fa1466d 100644 --- a/R/utils_app.R +++ b/R/utils_app.R @@ -15,37 +15,37 @@ create_filter_select <- function(ns, type, data, existing_filters, var_vec, # get the incoming settings for the given filter type (group_val, etc) existing_vars <- existing_filters %>% - keep_at(type) %>% - pluck(type) + purrr::keep_at(type) %>% + purrr::pluck(type) # create a named list # - if already a named list (e.g. list(group = "val1")) then return # - if not (e.g. ".default") then make it a named list (e.g. list(group=".default")) - existing_vars <- map(existing_vars, function(x){ + existing_vars <- purrr::map(existing_vars, function(x){ if (is.list(x)){ x } else if (all(x==".default")){ - rep(".default", length(var_vec)) %>% as.list() %>% setNames(var_vec) + rep(".default", length(var_vec)) %>% as.list() %>% purrr::set_names(var_vec) } else { - list(x) %>% setNames(var_vec) + list(x) %>% purrr::set_names(var_vec) } }) %>% - list_flatten(name_spec = "{inner}") + purrr::list_flatten(name_spec = "{inner}") # remove any default values if all null are to be set to .default # (placeholder text will say ".default" when non selected) if (null_to_default || (!null_to_default && !add_default_opt)){ existing_vars <- existing_vars %>% - discard(~all(.x==".default")) + purrr::discard(~all(.x==".default")) } # create a select input for each variable to be represented lapply(var_vec, function(v){ # pull anything pre-selected for this variable - filter_keep <-existing_vars %>% keep_at(v) + filter_keep <-existing_vars %>% purrr::keep_at(v) # define pre-selections, if any if (length(filter_keep)>0){ @@ -216,10 +216,10 @@ create_struct_list_sortable <- function(ns, struct_list_txt, mode){ "" )) }) %>% - setNames(as.character(ind)) + purrr::set_names(as.character(ind)) # rank list for sortable - rank_list(text = "", + sortable::rank_list(text = "", labels = divs, css_id = ns("items"), input_id = ns("item_list")) @@ -261,20 +261,20 @@ create_col_plan_sortable_simple <- function(ns, col_levs, col_levs_orig, col_stu "" )) }) %>% - setNames(as.character(ind)) + purrr::set_names(as.character(ind)) which_keep <- divs[! col_dropped] which_drop <- divs[col_dropped] - bucket_list( + sortable::bucket_list( header = NULL, - add_rank_list( + sortable::add_rank_list( text = "Order Columns", labels = which_keep, css_id = ns("items"), input_id = ns("item_list"), - options = sortable_options(filter = ".no-move")), - add_rank_list( + options = sortable::sortable_options(filter = ".no-move")), + sortable::add_rank_list( text ="Drop Columns", labels = which_drop, input_id = ns("drop_list") @@ -300,14 +300,14 @@ create_col_plan_sortable <- function(ns, col_num, col_name, col_levs, col_confir div(class = "itemlist", id = css_id_drop, contents_drop)), - sortable_js(css_id = css_id_drop, - options = sortable_options( + sortable::sortable_js(css_id = css_id_drop, + options = sortable::sortable_options( group = list( group = col_name, put = TRUE, pull = TRUE ), - onSort = sortable_js_capture_input(input_id = ns(paste0("drop_", col_num))) + onSort = sortable::sortable_js_capture_input(input_id = ns(paste0("drop_", col_num))) ))) # UI elements for the "keep" levels @@ -328,16 +328,16 @@ create_col_plan_sortable <- function(ns, col_num, col_name, col_levs, col_confir div(class = "itemlist", id = css_id, contents_keep)), - sortable_js(css_id = css_id, - options = sortable_options( + sortable::sortable_js(css_id = css_id, + options = sortable::sortable_options( swap = TRUE, group = list( group = col_name, put = TRUE, pull = TRUE ), - onLoad = sortable_js_capture_input(input_id = ns(paste0("keep_", col_num, "_", lev_num))), - onSort = sortable_js_capture_input(input_id = ns(paste0("keep_", col_num, "_", lev_num))) + onLoad = sortable::sortable_js_capture_input(input_id = ns(paste0("keep_", col_num, "_", lev_num))), + onSort = sortable::sortable_js_capture_input(input_id = ns(paste0("keep_", col_num, "_", lev_num))) ))) }) @@ -362,7 +362,7 @@ arrange_ui_grid <- function(el_list, el_width = 6){ num_rows <- ceiling(length(el_list)/num_cols) # for each element, determine the col row # and arrange - row_num <- map_dbl(seq_along(el_list), function(i){ ceiling(i/num_cols)}) + row_num <- purrr::map_dbl(seq_along(el_list), function(i){ ceiling(i/num_cols)}) el_list_cols <- lapply(el_list, function(el){ column(width = el_width, el) diff --git a/R/utils_tfrmt.R b/R/utils_tfrmt.R index f2db6b1..a00fecb 100644 --- a/R/utils_tfrmt.R +++ b/R/utils_tfrmt.R @@ -43,7 +43,7 @@ create_format_txt <- function(x){ if(is.null(x)){ vals <- character(0) }else if (is.list(x)){ - vals <- x %>% map(unique) + vals <- x %>% purrr::map(unique) } else { vals <- unique(x) } @@ -144,7 +144,7 @@ format_col_style_struct <- function(x){ return(c("Column Values:", "Align:", "Width:")) } - col_string <- map_chr(x$cols, as_label) + col_string <- purrr::map_chr(x$cols, as_label) col_string <- paste(paste0("\"", col_string, "\""), collapse = ", ") align <- x$align @@ -238,9 +238,9 @@ string_to_tfrmtobj <- function(obj){ cols_to_dat <- function(data, tfrmt, mock){ label <- tfrmt$label %>% as_label - groups <- tfrmt$group %>% map_chr(as_label) + groups <- tfrmt$group %>% purrr::map_chr(as_label) groups_lowest <- groups %>% last() - columns <- tfrmt$column %>% map_chr(as_label) + columns <- tfrmt$column %>% purrr::map_chr(as_label) columns_lowest <- columns %>% last() %>% sym() value <- tfrmt$value %>% as_label @@ -250,20 +250,20 @@ cols_to_dat <- function(data, tfrmt, mock){ data <- data %>% mutate(!!value := "xx") } - data_wide <- getFromNamespace("pivot_wider_tfrmt", "tfrmt")(data, tfrmt, mock) - col_plan_vars <- getFromNamespace("create_col_order", "tfrmt")(names(data_wide), cp = tfrmt$col_plan, columns = tfrmt$column) + data_wide <- utils::getFromNamespace("pivot_wider_tfrmt", "tfrmt")(data, tfrmt, mock) + col_plan_vars <- utils::getFromNamespace("create_col_order", "tfrmt")(names(data_wide), cp = tfrmt$col_plan, columns = tfrmt$column) - allcols <- col_plan_vars %>% map_chr(as_label) - allcols <- getFromNamespace("split_data_names_to_df","tfrmt")(data_names= c(), + allcols <- col_plan_vars %>% purrr::map_chr(as_label) + allcols <- utils::getFromNamespace("split_data_names_to_df","tfrmt")(data_names= c(), preselected_cols = allcols, column_names = columns) num_fix_ord <- c(groups, label) %>% length() allcols %>% - mutate(`__col_plan_fixed__` = .data[[columns_lowest]] %in% label, #c(groups_lowest, label), + mutate(`__col_plan_fixed__` = .data[[columns_lowest]] %in% label, `__col_plan_fixed_ord__` = .data[[columns_lowest]] %in% c(groups, label), `__col_plan_fixed_ord__` = ifelse(.data$`__col_plan_fixed_ord__`, rev(seq_len(num_fix_ord)), 0)) %>% rename(`__col_plan_dropped__` = "subtraction_status") %>% - mutate(across(.data[[paste0("__tfrmt_new_name__", columns_lowest)]], function(x)str_remove(x, '^-'))) + mutate(across(.data[[paste0("__tfrmt_new_name__", columns_lowest)]], function(x) stringr::str_remove(x, '^-'))) } diff --git a/R/zzz.R b/R/zzz.R index 72999d7..f0bca74 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -1,25 +1,9 @@ #' @import shiny #' @import tfrmt -#' @importFrom shinyjs useShinyjs enable disable addClass removeClass toggleState show hide toggle onclick toggleClass #' @import dplyr -#' @import stringr -#' @import purrr -#' @importFrom DT datatable DTOutput renderDT -#' @import gt -#' @import sortable -#' @importFrom rlang quo_is_missing +#' @importFrom rlang quo sym quo_is_missing `:=` `!!` as_label is_empty #' @import bslib -#' @import shinyWidgets -#' @import forcats -#' @importFrom rio import -#' @importFrom shinycssloaders withSpinner #' @import webshot2 -#' @import shinyAce -#' @importFrom stats setNames -#' @importFrom rlang `:=` `!!` -#' @importFrom shinyFeedback useShinyFeedback feedbackDanger -#' @importFrom fontawesome fa_i -#' @importFrom utils getFromNamespace zip NULL globalVariables(".") diff --git a/tests/testthat/module_examples/mod_body_plan/app.R b/tests/testthat/module_examples/mod_body_plan/app.R index 2024b22..8e42d1f 100644 --- a/tests/testthat/module_examples/mod_body_plan/app.R +++ b/tests/testthat/module_examples/mod_body_plan/app.R @@ -19,7 +19,7 @@ shinyApp( includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), html_dependency_pretty(), useShinyjs(), - useShinyFeedback(), + shinyFeedback::useShinyFeedback(), body_plan_ui("bp") ), function(input,output,session){ diff --git a/tests/testthat/module_examples/mod_datamapping/app.R b/tests/testthat/module_examples/mod_datamapping/app.R index bc498b9..7b54dda 100644 --- a/tests/testthat/module_examples/mod_datamapping/app.R +++ b/tests/testthat/module_examples/mod_datamapping/app.R @@ -18,7 +18,7 @@ shinyApp( includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), html_dependency_pretty(), useShinyjs(), - useShinyFeedback(), + shinyFeedback::useShinyFeedback(), datamapping_ui("mappings") ), function(input,output,session){ diff --git a/tests/testthat/module_examples/mod_datamapping_inputs/app.R b/tests/testthat/module_examples/mod_datamapping_inputs/app.R index a91529a..df7473f 100644 --- a/tests/testthat/module_examples/mod_datamapping_inputs/app.R +++ b/tests/testthat/module_examples/mod_datamapping_inputs/app.R @@ -11,7 +11,7 @@ shinyApp( includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), html_dependency_pretty(), useShinyjs(), - useShinyFeedback(), + shinyFeedback::useShinyFeedback(), datamapping_inputs_ui("mapping", setting_name = setting_name) ), function(input,output,session){ diff --git a/tests/testthat/test-mod_datamapping-shinytest2.R b/tests/testthat/test-mod_datamapping-shinytest2.R index b0d3ab2..00441e0 100644 --- a/tests/testthat/test-mod_datamapping-shinytest2.R +++ b/tests/testthat/test-mod_datamapping-shinytest2.R @@ -64,13 +64,13 @@ test_that("Mock w/ data mode",{ app$click("mappings-sorting_cols-addinput") app$click("mappings-sorting_cols-addinput") - input_ids <- app$get_values()$input %>% names() %>% .[str_detect(., "^mappings-sorting_cols-item")] + input_ids <- app$get_values()$input %>% names() %>% .[stringr::str_detect(., "^mappings-sorting_cols-item")] input_ids <- setdiff(input_ids, "mappings-sorting_cols-item-0") - new_val <- setNames("ord1", input_ids[1]) + new_val <- purrr::set_names("ord1", input_ids[1]) app$set_inputs(!!input_ids[1] := "ord1") - new_val <- setNames("ord2", input_ids[2]) + new_val <- purrr::set_names("ord2", input_ids[2]) app$set_inputs(!!input_ids[2] := "ord2") expect_equal(app$get_value(input=!!input_ids[1]), "ord1") diff --git a/tests/testthat/test-mod_datamapping_inputs-shinytest2.R b/tests/testthat/test-mod_datamapping_inputs-shinytest2.R index f6caa93..56bd7c8 100644 --- a/tests/testthat/test-mod_datamapping_inputs-shinytest2.R +++ b/tests/testthat/test-mod_datamapping_inputs-shinytest2.R @@ -53,17 +53,17 @@ test_that("Data-driven dropdowns can be added/removed",{ app <- shinytest2::AppDriver$new(app_dir) # get input IDs - input_ids <- app$get_values()$input %>% names() %>% .[str_detect(., "^mapping-item")] + input_ids <- app$get_values()$input %>% names() %>% .[stringr::str_detect(., "^mapping-item")] # Add a new input --------------------------------------------------------- app$click("mapping-addinput") - input_ids_new <- app$get_values()$input %>% names() %>% .[str_detect(., "^mapping-item")] + input_ids_new <- app$get_values()$input %>% names() %>% .[stringr::str_detect(., "^mapping-item")] input_id_new <- setdiff(input_ids_new, input_ids) input_ids <- input_ids_new - new_val <- setNames("rowlbl2", input_id_new) + new_val <- purrr::set_names("rowlbl2", input_id_new) app$set_inputs(!!input_id_new := "rowlbl2") expect_equal(app$get_value(input=!!input_id_new), "rowlbl2") @@ -76,11 +76,11 @@ test_that("Data-driven dropdowns can be added/removed",{ # Add another input ------------------------------------------------------- app$click("mapping-addinput") - input_ids_new <- app$get_values()$input %>% names() %>% .[str_detect(., "^mapping-item")] + input_ids_new <- app$get_values()$input %>% names() %>% .[stringr::str_detect(., "^mapping-item")] input_id_new <- setdiff(input_ids_new, input_ids) input_ids <- input_ids_new - new_val <- setNames("rowlbl1", input_id_new) + new_val <- purrr::set_names("rowlbl1", input_id_new) app$set_inputs(!!input_id_new := "rowlbl1") expect_equal(app$get_value(input=!!input_id_new), "rowlbl1") @@ -111,13 +111,13 @@ test_that("Data-driven dropdowns can be added/removed",{ # Add input again after the removal --------------------------------------- app$click("mapping-addinput") - input_ids_new <- app$get_values()$input %>% names() %>% .[str_detect(., "^mapping-item")] + input_ids_new <- app$get_values()$input %>% names() %>% .[stringr::str_detect(., "^mapping-item")] input_id_new <- setdiff(input_ids_new, input_ids) input_ids <- input_ids_new expect_equal(app$get_value(input=!!input_id_new), NULL) - new_val <- setNames("rowlbl1", input_id_new) + new_val <- purrr::set_names("rowlbl1", input_id_new) app$set_inputs(!!input_id_new := "rowlbl1") expect_equal(app$get_value(input=!!input_id_new), "rowlbl1") From 392a8e52372604075f75e20bd6916b0a225bfb40 Mon Sep 17 00:00:00 2001 From: Becca Krouse Date: Tue, 3 Feb 2026 14:43:58 -0500 Subject: [PATCH 2/5] update workflows --- .github/workflows/R-CMD-check.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index d9fced2..ee08ae4 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -23,17 +23,12 @@ jobs: matrix: config: - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: 'release'} - # use 4.1 to check with rtools40's older compiler - - {os: windows-latest, r: '4.1'} - - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - {os: ubuntu-latest, r: 'release'} - {os: ubuntu-latest, r: 'oldrel-1'} - {os: ubuntu-latest, r: 'oldrel-2'} - {os: ubuntu-latest, r: 'oldrel-3'} - - {os: ubuntu-latest, r: 'oldrel-4'} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} From 2cbf01b8a0af1c5f2473728194a6d28bdb5db0cc Mon Sep 17 00:00:00 2001 From: Becca Krouse Date: Wed, 11 Feb 2026 12:53:14 -0500 Subject: [PATCH 3/5] add deps --- .../module_examples/mod_body_plan/app.R | 4 ++-- .../module_examples/mod_datamapping/app.R | 4 ++-- .../mod_datamapping_inputs/app.R | 4 ++-- .../testthat/test-mod_body_plan-shinytest2.R | 24 +++++++++---------- .../test-mod_datamapping-shinytest2.R | 23 ++++++++++-------- tests/testthat/test-mod_load.R | 4 ++-- 6 files changed, 33 insertions(+), 30 deletions(-) diff --git a/tests/testthat/module_examples/mod_body_plan/app.R b/tests/testthat/module_examples/mod_body_plan/app.R index 8e42d1f..a8ec7a6 100644 --- a/tests/testthat/module_examples/mod_body_plan/app.R +++ b/tests/testthat/module_examples/mod_body_plan/app.R @@ -17,8 +17,8 @@ mode <- "mock_with_data" shinyApp( fluidPage( includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), - html_dependency_pretty(), - useShinyjs(), + shinyWidgets::html_dependency_pretty(), + shinyjs::useShinyjs(), shinyFeedback::useShinyFeedback(), body_plan_ui("bp") ), diff --git a/tests/testthat/module_examples/mod_datamapping/app.R b/tests/testthat/module_examples/mod_datamapping/app.R index 7b54dda..aca3604 100644 --- a/tests/testthat/module_examples/mod_datamapping/app.R +++ b/tests/testthat/module_examples/mod_datamapping/app.R @@ -16,8 +16,8 @@ mode <- "mock_with_data" shinyApp( fluidPage( includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), - html_dependency_pretty(), - useShinyjs(), + shinyWidgets::html_dependency_pretty(), + shinyjs::useShinyjs(), shinyFeedback::useShinyFeedback(), datamapping_ui("mappings") ), diff --git a/tests/testthat/module_examples/mod_datamapping_inputs/app.R b/tests/testthat/module_examples/mod_datamapping_inputs/app.R index df7473f..4f27be1 100644 --- a/tests/testthat/module_examples/mod_datamapping_inputs/app.R +++ b/tests/testthat/module_examples/mod_datamapping_inputs/app.R @@ -9,8 +9,8 @@ multiple <- TRUE shinyApp( fluidPage( includeCSS(system.file("www","styles.css", package = "tfrmtbuilder")), - html_dependency_pretty(), - useShinyjs(), + shinyWidgets::html_dependency_pretty(), + shinyjs::useShinyjs(), shinyFeedback::useShinyFeedback(), datamapping_inputs_ui("mapping", setting_name = setting_name) ), diff --git a/tests/testthat/test-mod_body_plan-shinytest2.R b/tests/testthat/test-mod_body_plan-shinytest2.R index 914c6a7..5169202 100644 --- a/tests/testthat/test-mod_body_plan-shinytest2.R +++ b/tests/testthat/test-mod_body_plan-shinytest2.R @@ -11,9 +11,9 @@ test_that("Body plan as expected with no user changes",{ body_plan_out <- app$get_values()$export$vals expect_equal(body_plan_out, - body_plan( - frmt_structure(group_val = ".default", label_val = ".default", frmt("xx.x")), - frmt_structure(group_val = ".default", label_val = "n", frmt("xx")) + tfrmt::body_plan( + tfrmt::frmt_structure(group_val = ".default", label_val = ".default", tfrmt::frmt("xx.x")), + tfrmt::frmt_structure(group_val = ".default", label_val = "n", tfrmt::frmt("xx")) )) @@ -23,9 +23,9 @@ test_that("Body plan as expected with no user changes",{ allow_no_input_binding_ = TRUE ) body_plan_actual <- app$get_values()$export$vals - body_plan_expected <- body_plan( - frmt_structure(group_val = ".default", label_val = "n", frmt("xx")), - frmt_structure(group_val = ".default", label_val = ".default", frmt("xx.x")) + body_plan_expected <- tfrmt::body_plan( + tfrmt::frmt_structure(group_val = ".default", label_val = "n", tfrmt::frmt("xx")), + tfrmt::frmt_structure(group_val = ".default", label_val = ".default", tfrmt::frmt("xx.x")) ) expect_equal(body_plan_actual, body_plan_expected) @@ -62,10 +62,10 @@ test_that("body plan add/delete rows",{ app$click("bp-save") body_plan_actual <- app$get_values()$export$vals - body_plan_expected <- body_plan( - frmt_structure(group_val = ".default", label_val = ".default", frmt("xx.x")), - frmt_structure(group_val = ".default", label_val = "n", frmt("xx")), - frmt_structure(group_val = list(rowlbl1 = "Baseline BMI", grp = ".default"), label_val = ".default", frmt("xx.x")) + body_plan_expected <- tfrmt::body_plan( + tfrmt::frmt_structure(group_val = ".default", label_val = ".default", tfrmt::frmt("xx.x")), + tfrmt::frmt_structure(group_val = ".default", label_val = "n", tfrmt::frmt("xx")), + tfrmt::frmt_structure(group_val = list(rowlbl1 = "Baseline BMI", grp = ".default"), label_val = ".default", tfrmt::frmt("xx.x")) ) expect_equal(body_plan_actual, body_plan_expected) @@ -84,8 +84,8 @@ test_that("body plan add/delete rows",{ app$click("bp-delete") body_plan_actual <- app$get_values()$export$vals - body_plan_expected <- body_plan( - frmt_structure(group_val = ".default", label_val = ".default", frmt("xx.x")) + body_plan_expected <- tfrmt::body_plan( + tfrmt::frmt_structure(group_val = ".default", label_val = ".default", tfrmt::frmt("xx.x")) ) expect_equal(body_plan_actual, body_plan_expected, ignore_attr = TRUE) diff --git a/tests/testthat/test-mod_datamapping-shinytest2.R b/tests/testthat/test-mod_datamapping-shinytest2.R index 00441e0..566400d 100644 --- a/tests/testthat/test-mod_datamapping-shinytest2.R +++ b/tests/testthat/test-mod_datamapping-shinytest2.R @@ -12,19 +12,19 @@ test_that("Mock w/ data mode",{ # No changes from user ---------------------------------------------------- values <- app$get_values()$export$vals - ex_tfrmt <- tfrmt( + ex_tfrmt <- tfrmt::tfrmt( group = c("rowlbl1", "rowlbl2"), label = "grp", value = "value", param = "param", column = "column", - body_plan = body_plan( - frmt_structure(group_val = ".default", label_val = ".default", frmt("xx.x")) + body_plan = tfrmt::body_plan( + tfrmt::frmt_structure(group_val = ".default", label_val = ".default", tfrmt::frmt("xx.x")) ) ) expect_equal(values$tfrmt, ex_tfrmt, ignore_attr = TRUE) - expect_equal(values$data, tfrmt::data_demog %>% select(-value)) + expect_equal(values$data, tfrmt::data_demog %>% dplyr::select(-value)) expect_equal(values$mode, "mock_with_data") expect_equal(values$original, TRUE) @@ -42,19 +42,19 @@ test_that("Mock w/ data mode",{ app$click("mappings-save") values <- app$get_values()$export$vals - ex_tfrmt <- tfrmt( + ex_tfrmt <- tfrmt::tfrmt( group = c("rowlbl2", "rowlbl1"), label = "grp", value = "value", param = "param", column = "column", - body_plan = body_plan( - frmt_structure(group_val = ".default", label_val = ".default", frmt("xx.x")) + body_plan = tfrmt::body_plan( + tfrmt::frmt_structure(group_val = ".default", label_val = ".default", tfrmt::frmt("xx.x")) ) ) expect_equal(values$tfrmt, ex_tfrmt, ignore_attr = TRUE) - expect_equal(values$data, tfrmt::data_demog %>% select(-value)) + expect_equal(values$data, tfrmt::data_demog %>% dplyr::select(-value)) expect_equal(values$mode, "mock_with_data") expect_equal(values$original, FALSE) @@ -84,11 +84,14 @@ test_that("Mock w/ data mode",{ app$click("mappings-save") values <- app$get_values()$export$vals - expect_equal(values$tfrmt, ex_tfrmt %>% layer_tfrmt(tfrmt(sorting_cols = c("ord1","ord2"))), ignore_attr = TRUE) - expect_equal(values$data, tfrmt::data_demog %>% select(-value)) + expect_equal(values$tfrmt, ex_tfrmt %>% tfrmt::layer_tfrmt( + tfrmt::tfrmt(sorting_cols = c("ord1","ord2")) + ), ignore_attr = TRUE) + expect_equal(values$data, tfrmt::data_demog %>% dplyr::select(-value)) expect_equal(values$mode, "mock_with_data") expect_equal(values$original, FALSE) app$stop() }) + diff --git a/tests/testthat/test-mod_load.R b/tests/testthat/test-mod_load.R index 5b5cae7..5bf519c 100644 --- a/tests/testthat/test-mod_load.R +++ b/tests/testthat/test-mod_load.R @@ -52,7 +52,7 @@ test_that("Upload tfrmt", { skip_on_cran() # save a json - tfrmt_n_pct() %>% tfrmt_to_json("test.json") + tfrmt_n_pct() %>% tfrmt::tfrmt_to_json("test.json") json_example_path <- "test.json" ard_json <- tfrmt::json_to_tfrmt(path = json_example_path) @@ -82,7 +82,7 @@ test_that("Upload data", { skip_on_cran() # save a csv - tfrmt::data_demog %>% filter(rowlbl1 %in% c("Age (y)","Sex")) %>% + tfrmt::data_demog %>% dplyr::filter(rowlbl1 %in% c("Age (y)","Sex")) %>% write.csv("ard_demog.csv", row.names = FALSE) ard_example_path <- "ard_demog.csv" From 451ed0e57bfc3687b429ee76031dd08a54231c3e Mon Sep 17 00:00:00 2001 From: Becca Krouse Date: Wed, 11 Feb 2026 12:54:42 -0500 Subject: [PATCH 4/5] upversion --- DESCRIPTION | 2 +- NEWS.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ca27a2d..ab9fa69 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: tfrmtbuilder Title: 'shiny' App Companion to the 'tfrmt' Package -Version: 0.0.6.9000 +Version: 0.1.0 Authors@R: c(person(given = "Becca", family = "Krouse", diff --git a/NEWS.md b/NEWS.md index 1d68a50..9abc497 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,10 +1,11 @@ -# tfrmtbuilder development version +# tfrmtbuilder 0.1.0 * New features: - Add ability to specify `tfrmt`, `data`, and/or `mockmode` in the `tfrmtbuilder()` function call, as an alternative to manually uploading/specifying these within the app. * Bug fixes: - Fix namespace conflict between bslib and shinyWidgets + - Fixed namespace conflict between bslib and shinyWidgets # tfrmtbuilder 0.0.6 From 45ef36108d8e7eed6820034f1da93d435d519f35 Mon Sep 17 00:00:00 2001 From: Becca Krouse Date: Wed, 11 Feb 2026 13:03:38 -0500 Subject: [PATCH 5/5] version --- DESCRIPTION | 2 +- NEWS.md | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ab9fa69..effc54b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: tfrmtbuilder Title: 'shiny' App Companion to the 'tfrmt' Package -Version: 0.1.0 +Version: 0.1.1 Authors@R: c(person(given = "Becca", family = "Krouse", diff --git a/NEWS.md b/NEWS.md index 9abc497..a23f7c3 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,12 +1,13 @@ +# tfrmtbuilder 0.1.1 + +* Bug fixes: + - Fix namespace conflict between bslib and shinyWidgets + # tfrmtbuilder 0.1.0 * New features: - Add ability to specify `tfrmt`, `data`, and/or `mockmode` in the `tfrmtbuilder()` function call, as an alternative to manually uploading/specifying these within the app. -* Bug fixes: - - Fix namespace conflict between bslib and shinyWidgets - - Fixed namespace conflict between bslib and shinyWidgets - # tfrmtbuilder 0.0.6 * New features: