@@ -235,9 +235,6 @@ ui_a_pca <- function(id, ...) {
235235 uiOutput(ns(" all_plots" ))
236236 ),
237237 encoding = tags $ div(
238- # ## Reporter
239- teal.reporter :: simple_reporter_ui(ns(" simple_reporter" )),
240- # ##
241238 tags $ label(" Encodings" , class = " text-primary" ),
242239 teal.transform :: datanames_input(args [" dat" ]),
243240 teal.transform :: data_extract_ui(
@@ -478,7 +475,7 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
478475 })
479476
480477 # computation ----
481- computation <- reactive({
478+ computation_model <- reactive({
482479 validation()
483480
484481 # inputs
@@ -504,24 +501,26 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
504501 )
505502 }
506503
507- qenv <- teal.code :: eval_code(
504+ teal.code :: eval_code(
508505 qenv ,
509506 substitute(
510507 expr = pca <- summary(stats :: prcomp(ANL [keep_columns ], center = center , scale. = scale , retx = TRUE )),
511508 env = list (center = center , scale = scale )
512509 )
513510 )
514-
515- qenv <- teal.code :: eval_code(
516- qenv ,
511+ })
512+ computation_tbl_imp <- reactive({
513+ teal.code :: eval_code(
514+ computation_model(),
517515 quote({
518516 tbl_importance <- dplyr :: as_tibble(pca $ importance , rownames = " Metric" )
519517 tbl_importance
520518 })
521519 )
522-
520+ })
521+ computation <- reactive({
523522 teal.code :: eval_code(
524- qenv ,
523+ computation_tbl_imp() ,
525524 quote({
526525 tbl_eigenvector <- dplyr :: as_tibble(pca $ rotation , rownames = " Variable" )
527526 tbl_eigenvector
@@ -1124,6 +1123,50 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
11241123 })
11251124
11261125 # Render R code.
1126+ subset_code <- function (code , data ) {
1127+ gsub(code , " " , teal.data :: get_code(data ), fixed = TRUE )
1128+ }
1129+ setup_code_r <- reactive(teal.data :: get_code(qenv ))
1130+ data_prep_code_r <-
1131+ reactive(
1132+ subset_code(
1133+ setup_code_r(),
1134+ req(anl_merged_q())
1135+ )
1136+ )
1137+
1138+ computation_model_code_r <-
1139+ reactive(
1140+ subset_code(
1141+ paste0(setup_code_r(), data_prep_code_r()),
1142+ req(computation_model())
1143+ )
1144+ )
1145+
1146+ computation_tbl_imp_code_r <-
1147+ reactive(
1148+ subset_code(
1149+ paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r()),
1150+ req(computation_tbl_imp())
1151+ )
1152+ )
1153+
1154+ computation_tbl_eig_code_r <-
1155+ reactive(
1156+ subset_code(
1157+ paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation_tbl_imp_code_r()),
1158+ req(computation())
1159+ )
1160+ )
1161+
1162+ plot_code_r <-
1163+ reactive(
1164+ subset_code(
1165+ paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation_tbl_imp_code_r(), computation_tbl_eig_code_r()),
1166+ req(decorated_output_q())
1167+ )
1168+ )
1169+
11271170 source_code_r <- reactive(teal.code :: get_code(req(decorated_output_q())))
11281171
11291172 teal.widgets :: verbatim_popup_srv(
@@ -1132,30 +1175,40 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
11321175 title = " R Code for PCA"
11331176 )
11341177
1135- # ## REPORTER
1136- if (with_reporter ) {
1137- card_fun <- function (comment , label ) {
1138- card <- teal :: report_card_template(
1139- title = " Principal Component Analysis Plot" ,
1140- label = label ,
1141- with_filter = with_filter ,
1142- filter_panel_api = filter_panel_api
1143- )
1144- card $ append_text(" Principal Components Table" , " header3" )
1145- card $ append_table(computation()[[" tbl_importance" ]])
1146- card $ append_text(" Eigenvectors Table" , " header3" )
1147- card $ append_table(computation()[[" tbl_eigenvector" ]])
1148- card $ append_text(" Plot" , " header3" )
1149- card $ append_plot(plot_r(), dim = pws $ dim())
1150- if (! comment == " " ) {
1151- card $ append_text(" Comment" , " header3" )
1152- card $ append_text(comment )
1153- }
1154- card $ append_src(source_code_r())
1155- card
1156- }
1157- teal.reporter :: simple_reporter_srv(" simple_reporter" , reporter = reporter , card_fun = card_fun )
1158- }
1178+ card_fun <- reactive({
1179+ req(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation(),
1180+ computation_tbl_imp_code_r(), computation_tbl_eig_code_r(), plot_code_r(), plot_r())
1181+
1182+ teal.reporter :: report_document(
1183+
1184+ " ## Setup" ,
1185+ teal.reporter :: code_chunk(setup_code_r()),
1186+
1187+ " ## Data Preparations" ,
1188+ teal.reporter :: code_chunk(data_prep_code_r()),
1189+
1190+ " ## PCA Model" ,
1191+ teal.reporter :: code_chunk(computation_model_code_r()),
1192+
1193+ " ### Principal Components Table" ,
1194+ teal.reporter :: code_chunk(computation_tbl_imp_code_r()) | >
1195+ teal.reporter :: link_output(computation()[[" tbl_importance" ]]),
1196+
1197+ " ### Eigenvectors Table" ,
1198+ teal.reporter :: code_chunk(computation_tbl_eig_code_r()) | >
1199+ teal.reporter :: link_output(computation()[[" tbl_eigenvector" ]]),
1200+
1201+ " ### Plot" ,
1202+ teal.reporter :: code_chunk(
1203+ plot_code_r() | > styler :: style_text() | > paste(collapse = " \n " )
1204+ ) | >
1205+ teal.reporter :: link_output(plot_r())
1206+ )
1207+ })
1208+
11591209 # ##
1210+ list (
1211+ report_card = card_fun
1212+ )
11601213 })
11611214}
0 commit comments