Skip to content
Closed
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
99a39ee
feat: use bslib tooltip instead of custom css class
vedhav Oct 3, 2024
c675cad
Merge branch 'main' into test@bslib@main
vedhav Dec 11, 2024
6ff4b35
Merge branch 'main' into test@bslib@main
vedhav Feb 13, 2025
f1403d6
specify dependencies branches
m7pr Feb 24, 2025
d44a257
initial test for tm_a_regression
m7pr Feb 24, 2025
3538a2c
update branch name
m7pr Feb 24, 2025
88e6ee4
[skip style] [skip vbump] Restyle files
github-actions[bot] Feb 24, 2025
d735da6
Merge branch 'main' into test@bslib@main
vedhav Feb 25, 2025
f5d3f32
bring back reporter parameter for now
m7pr Feb 25, 2025
ee7b205
Merge branch 'report_redesign_poc@main' of https://github.com/insight…
m7pr Feb 25, 2025
e2216ee
remove function from card_fun in regression
m7pr Feb 26, 2025
928e898
Merge branch 'main' into report_redesign_poc@main
m7pr Feb 26, 2025
809654f
update Remotes
m7pr Feb 26, 2025
5988d34
Merge branch 'report_redesign_poc@main' of https://github.com/insight…
m7pr Feb 26, 2025
a8fec54
return plot and the source code through card_fun
m7pr Feb 26, 2025
3646524
specify dev versions + add Remotes for teal.widgets
m7pr Feb 26, 2025
51d71b5
return elements as rmarkdown
m7pr Mar 3, 2025
1f68993
leave just R objects, let markdown formating be done in teal
m7pr Mar 4, 2025
d0865d1
merge
m7pr Mar 6, 2025
0b0f650
fix: update variable browser based on the new UI changes
vedhav Mar 6, 2025
b25eaee
Merge branch 'main' into test@bslib@main
vedhav Mar 6, 2025
0a3a8d1
merge
m7pr Mar 6, 2025
a4ee004
feat: ui changes
vedhav Mar 6, 2025
439bbc8
fix ci
vedhav Mar 6, 2025
2423239
fix: replace deprecated function calls with bslib calls
vedhav Mar 7, 2025
a61d664
test: fix e2e tests
vedhav Mar 7, 2025
21e6477
chore: remove explicit return
vedhav Mar 7, 2025
71feb58
Merge branch 'test@bslib@main' into report_redesign_poc@main
m7pr Mar 9, 2025
e804ca5
use teal.reporter::code_chunk
m7pr Mar 9, 2025
c62e0bb
Merge branch 'report_redesign_poc@main' of https://github.com/insight…
m7pr Mar 9, 2025
82d5811
Merge branch 'main' into report_redesign_poc@main
m7pr Mar 13, 2025
9c16a21
divide the code into sections, related to the process flow
m7pr Mar 14, 2025
ea33026
link objects in tmg
m7pr Mar 17, 2025
a508a36
reshape pca to report_document
m7pr Mar 17, 2025
11804a2
add rtables for testing to tmg
m7pr Mar 17, 2025
3d94b0b
add libraries code and the code to create objects
m7pr Mar 24, 2025
c1abab4
divide the code using labels
m7pr Mar 27, 2025
77cc108
example with keep_in_report()
m7pr Mar 28, 2025
16a5715
example on how to remove things from report but keep in output
m7pr Mar 28, 2025
307baa1
pull_code function
m7pr Mar 31, 2025
d9cfc2d
typo
m7pr Mar 31, 2025
37b096d
cleanup tm_a_regression code extraction
m7pr Apr 2, 2025
f7f597d
use code labeling and pull_code in pca module
m7pr Apr 2, 2025
da18867
cleanup
m7pr Apr 2, 2025
93567de
adjust tm_g_scatterplot module
m7pr Apr 2, 2025
2f25906
remove reporter argument from new modules
m7pr Apr 25, 2025
2aaadcb
remove pull_code
m7pr Apr 25, 2025
7c6ce30
Merge branch 'main' into report_redesign_poc@main
m7pr Apr 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ VignetteBuilder:
knitr,
rmarkdown
Remotes:
insightsengineering/teal.reporter@main,
insightsengineering/teal.reporter@redesign@main,
insightsengineering/teal.widgets@main,
insightsengineering/teal@main
insightsengineering/teal@redesign@main
Config/Needs/verdepcheck: haleyjeppson/ggmosaic, tidyverse/ggplot2,
rstudio/shiny, insightsengineering/teal,
insightsengineering/teal.slice, insightsengineering/teal.transform,
Expand Down
132 changes: 98 additions & 34 deletions R/tm_a_pca.R
Original file line number Diff line number Diff line change
Expand Up @@ -235,9 +235,6 @@ ui_a_pca <- function(id, ...) {
uiOutput(ns("all_plots"))
),
encoding = tags$div(
### Reporter
teal.reporter::simple_reporter_ui(ns("simple_reporter")),
###
tags$label("Encodings", class = "text-primary"),
teal.transform::datanames_input(args["dat"]),
teal.transform::data_extract_ui(
Expand Down Expand Up @@ -478,7 +475,7 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
})

# computation ----
computation <- reactive({
computation_model <- reactive({
validation()

# inputs
Expand All @@ -504,24 +501,26 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
)
}

qenv <- teal.code::eval_code(
teal.code::eval_code(
qenv,
substitute(
expr = pca <- summary(stats::prcomp(ANL[keep_columns], center = center, scale. = scale, retx = TRUE)),
env = list(center = center, scale = scale)
)
)

qenv <- teal.code::eval_code(
qenv,
})
computation_tbl_imp <- reactive({
teal.code::eval_code(
computation_model(),
quote({
tbl_importance <- dplyr::as_tibble(pca$importance, rownames = "Metric")
tbl_importance
})
)

})
computation <- reactive({
teal.code::eval_code(
qenv,
computation_tbl_imp(),
quote({
tbl_eigenvector <- dplyr::as_tibble(pca$rotation, rownames = "Variable")
tbl_eigenvector
Expand Down Expand Up @@ -1124,6 +1123,58 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
})

# Render R code.
subset_code <- function(code, data) {
gsub(code, "", teal.data::get_code(data), fixed = TRUE)
}
setup_code_r <- reactive(teal.data::get_code(req(data())))
libraries_code_r <-
reactive(
subset_code(
setup_code_r(),
qenv
)
)

data_prep_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), libraries_code_r()),
req(anl_merged_q())
)
)

computation_model_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), data_prep_code_r()),
req(computation_model())
)
)

computation_tbl_imp_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r()),
req(computation_tbl_imp())
)
)

computation_tbl_eig_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation_tbl_imp_code_r()),
req(computation())
)
)

plot_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation_tbl_imp_code_r(), computation_tbl_eig_code_r()),
req(decorated_output_q())
)
)

source_code_r <- reactive(teal.code::get_code(req(decorated_output_q())))

teal.widgets::verbatim_popup_srv(
Expand All @@ -1132,30 +1183,43 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
title = "R Code for PCA"
)

### REPORTER
if (with_reporter) {
card_fun <- function(comment, label) {
card <- teal::report_card_template(
title = "Principal Component Analysis Plot",
label = label,
with_filter = with_filter,
filter_panel_api = filter_panel_api
)
card$append_text("Principal Components Table", "header3")
card$append_table(computation()[["tbl_importance"]])
card$append_text("Eigenvectors Table", "header3")
card$append_table(computation()[["tbl_eigenvector"]])
card$append_text("Plot", "header3")
card$append_plot(plot_r(), dim = pws$dim())
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
}
card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
}
card_fun <- reactive({
req(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation(),
computation_tbl_imp_code_r(), computation_tbl_eig_code_r(), plot_code_r(), plot_r())

teal.reporter::report_document(

"## Setup",
teal.reporter::code_chunk(setup_code_r()),

"## Libraries",
teal.reporter::code_chunk(libraries_code_r(), eval = TRUE),

"## Data Preparations",
teal.reporter::code_chunk(data_prep_code_r()),

"## PCA Model",
teal.reporter::code_chunk(computation_model_code_r()),

"### Principal Components Table",
teal.reporter::code_chunk(computation_tbl_imp_code_r()),
computation()[["tbl_importance"]],

"### Eigenvectors Table",
teal.reporter::code_chunk(computation_tbl_eig_code_r()),
computation()[["tbl_eigenvector"]],

"### Plot",
teal.reporter::code_chunk(
plot_code_r() |> styler::style_text() |> paste(collapse = "\n")
),
plot_r()
)
})

###
list(
report_card = card_fun
)
})
}
111 changes: 87 additions & 24 deletions R/tm_a_regression.R
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,6 @@ ui_a_regression <- function(id, ...) {
tags$div(verbatimTextOutput(ns("text")))
)),
encoding = tags$div(
### Reporter
teal.reporter::simple_reporter_ui(ns("simple_reporter")),
###
tags$label("Encodings", class = "text-primary"), tags$br(),
teal.transform::datanames_input(args[c("response", "regressor")]),
teal.transform::data_extract_ui(
Expand Down Expand Up @@ -386,16 +383,15 @@ ui_a_regression <- function(id, ...) {
# Server function for the regression module
srv_a_regression <- function(id,
data,
reporter,
filter_panel_api,
response,
regressor,
reporter,
plot_height,
plot_width,
ggplot2_args,
default_outlier_label,
decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
checkmate::assert_class(isolate(data()), "teal_data")
Expand Down Expand Up @@ -473,6 +469,7 @@ srv_a_regression <- function(id,
teal.code::eval_code(as.expression(anl_merged_input()$expr))
})


# sets qenv object and populates it with data merge call and fit expression
fit_r <- reactive({
ANL <- anl_merged_q()[["ANL"]]
Expand Down Expand Up @@ -1027,6 +1024,39 @@ srv_a_regression <- function(id,
})

# Render R code.
subset_code <- function(code, data) {
gsub(code, "", teal.data::get_code(data), fixed = TRUE)
}
setup_code_r <- reactive(teal.data::get_code(req(data())))
libraries_code_r <-
reactive(
subset_code(
setup_code_r(),
qenv
)
)
data_prep_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), libraries_code_r()),
req(anl_merged_q())
)
)
fit_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), libraries_code_r(), data_prep_code_r()),
req(fit_r())
)
)
plot_code_r <-
reactive(
subset_code(
paste0(setup_code_r(), libraries_code_r(), data_prep_code_r(), fit_code_r()),
req(decorated_output_q())
)
)

source_code_r <- reactive(teal.code::get_code(req(decorated_output_q())))

teal.widgets::verbatim_popup_srv(
Expand All @@ -1036,25 +1066,58 @@ srv_a_regression <- function(id,
)

### REPORTER
if (with_reporter) {
card_fun <- function(comment, label) {
card <- teal::report_card_template(
title = "Linear Regression Plot",
label = label,
with_filter = with_filter,
filter_panel_api = filter_panel_api
)
card$append_text("Plot", "header3")
card$append_plot(plot_r(), dim = pws$dim())
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
}
card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
}
card_fun <- reactive({
req(plot_r(), plot_code_r(), setup_code_r(), data_prep_code_r(), fit_code_r(), fitted())
teal.reporter::report_document(

"## Setup",
teal.reporter::code_chunk(setup_code_r()),

"## Libraries",
teal.reporter::code_chunk(libraries_code_r(), eval = TRUE),

"## Data Preparations",
teal.reporter::code_chunk(data_prep_code_r()),

"## Model",
teal.reporter::code_chunk(fit_code_r()),
teal.reporter::code_output(
paste(utils::capture.output(summary(teal.code::dev_suppress(fitted())))[-1],
collapse = "\n"
)
),

"## Plot",
teal.reporter::code_chunk(
plot_code_r() |> styler::style_text() |> paste(collapse = "\n")
),
plot_r(),

"## rtables for testing",
teal.reporter::code_chunk(
"rtables::rtable(
header = LETTERS[1:3],
rtables::rrow('one to three', 1, 2, 3),
rtables::rrow('more stuff', rtables::rcell(pi, format = 'xx.xx'), 'test', 'and more')
)"
),
rtables::rtable(
header = LETTERS[1:3],
rtables::rrow("one to three", 1, 2, 3),
rtables::rrow("more stuff", rtables::rcell(pi, format = "xx.xx"), "test", "and more")
),

"## Table for testing",
teal.reporter::code_chunk(
"head(iris)"
),
head(iris)
)
})
###

list(
report_card = card_fun
)
})
}