Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Package Dependencies to Reports #723

Closed
wants to merge 46 commits into from
Closed
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
a3e0801
Merge pull request #674 from pharmaR/dev
AARON-CLARK Oct 25, 2023
4f55be5
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Nov 13, 2023
d252333
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Nov 13, 2023
1e8f314
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Nov 14, 2023
1fd5a4c
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Nov 27, 2023
ed980ca
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 5, 2023
a63a561
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 5, 2023
775bdbb
add Package Dependencies to rpt_choices and update sysdata.rda
Robert-Krajcik Dec 6, 2023
f612c96
get package dependencies to display on BuildReport tab
Robert-Krajcik Dec 7, 2023
7d57f34
remove commented lines from app_server
Robert-Krajcik Dec 7, 2023
730c520
move loaded2_db to app_server and pass to reportPreview and packageDe…
Robert-Krajcik Dec 7, 2023
62c7f74
display package dependencies on html report
Robert-Krajcik Dec 7, 2023
c1aff2b
update test databases
Robert-Krajcik Dec 8, 2023
fee6bbc
update tests/testthat *.sqlite dbs
Robert-Krajcik Dec 8, 2023
d637a1e
update reportHtml.Rmd
Robert-Krajcik Dec 8, 2023
0bcf5d0
update expected value string for test-reportPreview.R
Robert-Krajcik Dec 8, 2023
f6644a9
update reportDocx.Rmd
Robert-Krajcik Dec 8, 2023
331cfe6
new json snaps for databaseView test
Robert-Krajcik Dec 8, 2023
8b9fafc
updates to database.sqlite and json files
Robert-Krajcik Dec 8, 2023
d6e8b37
skip test-downloadHanlder for now
Robert-Krajcik Dec 11, 2023
16fff49
html reports work on databaseView
Robert-Krajcik Dec 11, 2023
0537b00
adjust default margins for docx report
Robert-Krajcik Dec 12, 2023
a325bab
completed docx reports
Robert-Krajcik Dec 12, 2023
f4be510
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 12, 2023
362fed3
merge with dev; resolve conflict
Robert-Krajcik Dec 12, 2023
37e57c7
package dependencies added to pdf report
Robert-Krajcik Dec 13, 2023
b0d2685
Add NEWS.md entry
Robert-Krajcik Dec 13, 2023
adcd763
update test-apps downloadHandler-app
Robert-Krajcik Dec 13, 2023
3f93cb4
revert changes to test-downloadHandler and Handler-app/app.R
Robert-Krajcik Dec 13, 2023
6f22d15
update test-apps/downloadHandler-app/app.R
Robert-Krajcik Dec 14, 2023
cf2fbc8
drop name from dep_table
Robert-Krajcik Dec 14, 2023
04ec107
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 14, 2023
5cb651e
Merge branch 'dev' into rk-721-add_pkgdeps_report
Robert-Krajcik Dec 15, 2023
332a0df
merge tests/testthat/test-downloadHandler.R
Robert-Krajcik Dec 15, 2023
3240cbe
replace line break with soft paragraph break for dep cards
Robert-Krajcik Dec 15, 2023
17e2f93
update reportDocx.Rmd using kable_styling and column_spec
Robert-Krajcik Dec 15, 2023
61857d6
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 15, 2023
f602fa4
merge with dev, resolve NEWS.md conflict
Robert-Krajcik Dec 15, 2023
ca21599
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 15, 2023
2df7698
merge with dev; resolve conflict NEWS.md
Robert-Krajcik Dec 15, 2023
a6e0b71
restore two test dbs to current dev branch
Robert-Krajcik Dec 15, 2023
bac33d5
restore more dbs to current dev branch
Robert-Krajcik Dec 15, 2023
eac76e3
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 26, 2023
9d69537
Merge branch 'dev' into rk-721-add_pkgdeps_report
Robert-Krajcik Dec 26, 2023
d1921ed
minor updates to reportDocx.Rmd
Robert-Krajcik Dec 26, 2023
63061ec
update _snapes/dadtabaseView.Json files
Robert-Krajcik Dec 27, 2023
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
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* Added tests for the code and function explorers
* Added repo specification to configuration file (#701)
* Fix typo in Privileges table (#719)
* Added Package Dependencies to Reports (#721)

# riskassessment 3.0.0

Expand Down
50 changes: 43 additions & 7 deletions R/app_server.R
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ app_server <- function(input, output, session) {
# Load server of the database view module.
#parentSession <- .subset2(session, "parent")
databaseViewServer("databaseView", user, uploaded_pkgs,
metric_weights = metric_weights, changes, parent = session)
metric_weights = metric_weights, dep_metrics, loaded2_db, changes, parent = session)

# Gather maintenance metrics information.
maint_metrics <- reactive({
Expand All @@ -218,6 +218,38 @@ app_server <- function(input, output, session) {
get_comm_data(selected_pkg$name())
})

loaded2_db <- eventReactive(selected_pkg$name(), {
req(selected_pkg$name())
req(selected_pkg$name() != "-")

dbSelect("SELECT name, version, score FROM package")
})

# Get Package Dependency metrics.
dep_metrics <- reactiveVal()

pkgref <- eventReactive(selected_pkg$name(), {
req(selected_pkg$name())
req(selected_pkg$name() != "-")

get_assess_blob(selected_pkg$name())
})

observeEvent(pkgref(), {
req(pkgref())
tryCatch(
expr = {
dep_metrics(pkgref()$dependencies[[1]] %>% dplyr::as_tibble())
},
error = function(e) {
msg <- paste("Detailed dependency information is not available for package", selected_pkg$name())
rlang::warn(msg)
rlang::warn(paste("info:", e))
dep_metrics(dplyr::tibble(package = character(0), type = character(0), name = character(0)))
}
)
})

create_src_dir <- eventReactive(input$tabs, input$tabs == "Source Explorer")
pkgdir <- reactiveVal()
observe({
Expand Down Expand Up @@ -266,6 +298,13 @@ app_server <- function(input, output, session) {
community_usage_metrics,
user,
credential_config)

# Load server for the package dependencies tab.
dependencies_data <- packageDependenciesServer('packageDependencies',
selected_pkg,
loaded2_db,
user,
parent = session)

# Load server of the report preview tab.
reportPreviewServer(id = "reportPreview",
Expand All @@ -277,17 +316,14 @@ app_server <- function(input, output, session) {
cm_comments = community_data$comments,
# se_comments = src_explorer_data$comments, # not an arg
downloads_plot_data = community_data$downloads_plot_data,
dep_metrics = dep_metrics,
loaded2_db,
user = user,
credential_config,
app_version = golem::get_golem_options('app_version'),
metric_weights = metric_weights)

# Load server for the package dependencies tab.
dependencies_data <- packageDependenciesServer('packageDependencies',
selected_pkg,
user,
parent = session)


output$auth_output <- renderPrint({
reactiveValuesToList(res_auth)
})
Expand Down
7 changes: 5 additions & 2 deletions R/mod_databaseView.R
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ databaseViewUI <- function(id) {
#' @param user a user name
#' @param uploaded_pkgs a vector of uploaded package names
#' @param metric_weights a reactive data.frame holding metric weights
#' @param dep_metrics placeholder
#' @param loaded2_db placeholder
#' @param changes a reactive value integer count
#' @param parent the parent (calling module) session information
#'
Expand All @@ -112,7 +114,7 @@ databaseViewUI <- function(id) {
#' @importFrom formattable formattable as.datatable formatter style csscolor
#' icontext
#' @keywords internal
databaseViewServer <- function(id, user, uploaded_pkgs, metric_weights, changes, parent) {
databaseViewServer <- function(id, user, uploaded_pkgs, metric_weights, dep_metrics, loaded2_db, changes, parent) {
moduleServer(id, function(input, output, session) {

ns = session$ns
Expand Down Expand Up @@ -302,6 +304,7 @@ databaseViewServer <- function(id, user, uploaded_pkgs, metric_weights, changes,
# return vector of elements to include in the report
report_includes <- mod_downloadHandler_include_server("downloadHandler")

mod_downloadHandler_server("downloadHandler", pkgs, user, metric_weights)
mod_downloadHandler_server("downloadHandler", pkgs, user, metric_weights, dep_metrics, loaded2_db)

})
}
20 changes: 17 additions & 3 deletions R/mod_downloadHandler.R
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ mod_downloadHandler_include_server <- function(id) {
#' downloadHandler Server Functions
#'
#' @noRd
mod_downloadHandler_server <- function(id, pkgs, user, metric_weights){
mod_downloadHandler_server <- function(id, pkgs, user, metric_weights, dep_metrics, loaded2_db){
moduleServer( id, function(input, output, session){
ns <- session$ns

Expand Down Expand Up @@ -256,8 +256,20 @@ mod_downloadHandler_server <- function(id, pkgs, user, metric_weights){
comm_cards <- build_comm_cards(comm_data)
downloads_plot <- build_comm_plotly(comm_data)
metric_tbl <- dbSelect("select * from metric", db_name = golem::get_golem_options('assessment_db_name'))


dep_cards <- build_dep_cards(data = dep_metrics(), loaded = loaded2_db()$name, toggled = 0L)

pkginfo <- dep_metrics() %>%
mutate(package = stringr::str_replace(package, "\n", " ")) %>%
mutate(name = stringr::str_extract(package, "^((([[A-z]]|[.][._[A-z]])[._[A-z0-9]]*)|[.])"))

repo_pkgs <- as.data.frame(utils::available.packages()[,1:2])

dep_table <- purrr::map_df(pkginfo$name, ~get_versnScore(.x, loaded2_db(), repo_pkgs)) %>%
right_join(pkginfo, by = "name") %>%
select(package, type, name, version, score) %>%
arrange(name, type) %>%
distinct()

# Render the report, passing parameters to the rmd file.
rmarkdown::render(
input = Report,
Expand All @@ -280,6 +292,8 @@ mod_downloadHandler_server <- function(id, pkgs, user, metric_weights){
com_metrics = comm_cards,
com_metrics_raw = comm_data,
downloads_plot_data = downloads_plot,
dep_cards = dep_cards,
dep_table = dep_table,
metric_tbl = metric_tbl
)
)
Expand Down
7 changes: 2 additions & 5 deletions R/mod_packageDependencies.R
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ packageDependenciesUI <- function(id) {
#'
#' @param id a module id name
#' @param selected_pkg placeholder
#' @param loaded2_db placeholder
#' @param user placeholder
#' @param parent the parent (calling module) session information
#'
Expand All @@ -27,14 +28,10 @@ packageDependenciesUI <- function(id) {
#'
#' @keywords internal
#'
packageDependenciesServer <- function(id, selected_pkg, user, parent) {
packageDependenciesServer <- function(id, selected_pkg, loaded2_db, user, parent) {
moduleServer(id, function(input, output, session) {
ns <- session$ns

loaded2_db <- eventReactive(selected_pkg$name(), {
dbSelect("SELECT name, version, score FROM package")
})

tabready <- reactiveVal(value = NULL)
depends <- reactiveVal(value = NULL)
suggests <- reactiveVal(value = NULL)
Expand Down
61 changes: 56 additions & 5 deletions R/mod_reportPreview.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ reportPreviewUI <- function(id) {
#' @param mm_comments placeholder
#' @param cm_comments placeholder
#' @param downloads_plot_data placeholder
#' @param dep_metrics placeholder
#' @param loaded2_db placeholder
#' @param user placeholder
#' @param app_version placeholder
#' @param metric_weights placeholder
Expand All @@ -35,10 +37,10 @@ reportPreviewUI <- function(id) {
#' @importFrom shinyjs enable disable show hide disabled
#' @keywords internal
#'
reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,
reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,
com_metrics_raw, mm_comments, cm_comments, #se_comments,
downloads_plot_data, user, credentials, app_version,
metric_weights) {
downloads_plot_data, dep_metrics, loaded2_db, user, credentials,
app_version, metric_weights) {
if (missing(credentials))
credentials <- get_db_config("credentials")

Expand Down Expand Up @@ -172,6 +174,33 @@ reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,
)
} else "",

if('Package Dependencies' %in% report_includes()) {
tagList(
br(), br(),
hr(),
fluidRow(
column(width = 12,
h5("Package Dependencies",
style = "text-align: center; padding-bottom: 50px;"),
metricGridUI(session$ns('dep_metricGrid'))
)
),
br(), br(),
fluidRow(
column(width = 8,
DT::renderDataTable({
req(selected_pkg$name())

dep_table()

}, options = list(dom = "t", searching = FALSE, pageLength = -1, lengthChange = FALSE,
info = FALSE,
columnDefs = list(list(className = 'dt-center', targets = 2))
)
)
))
)
} else "",

if(any(c('Source Explorer Comments') %in% report_includes())) {
tagList(
Expand Down Expand Up @@ -402,6 +431,28 @@ reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,
# Community usage metrics cards.
metricGridServer("cm_metricGrid", metrics = com_metrics)

dep_cards <- eventReactive(dep_metrics(), {
req(dep_metrics())
build_dep_cards(data = dep_metrics(), loaded = loaded2_db()$name, toggled = 0L)
})

# Package Dependencies metrics cards.
metricGridServer("dep_metricGrid", metrics = dep_cards)

dep_table <- eventReactive(dep_metrics(), {
req(dep_metrics())
pkginfo <- dep_metrics() %>%
mutate(package = stringr::str_replace(package, "\n", " ")) %>%
mutate(name = stringr::str_extract(package, "^((([[A-z]]|[.][._[A-z]])[._[A-z0-9]]*)|[.])"))

repo_pkgs <- as.data.frame(utils::available.packages()[,1:2])
purrr::map_df(pkginfo$name, ~get_versnScore(.x, loaded2_db(), repo_pkgs)) %>%
right_join(pkginfo, by = "name") %>%
select(package, type, name, version, score) %>%
arrange(name, type) %>%
distinct()
})

output$communityMetrics_ui <- renderUI({
req(selected_pkg$name())

Expand Down Expand Up @@ -456,7 +507,7 @@ reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,

tagList(
h5(code('{riskmetric}'), 'Assessment Date:'), selected_pkg$date_added(),
if('Risk Score' %in% report_includes()) tagList(h5('Risk Score:'), selected_pkg$score()) else "",
if('Risk Score' %in% report_includes()) tagList(hr(), br(), h5('Risk Score:'), selected_pkg$score()) else "",
h5('Package Decision:'),ifelse(is.na(selected_pkg$decision()), 'Pending',selected_pkg$decision())
)
})
Expand Down Expand Up @@ -485,6 +536,6 @@ reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,
)

# Call download handler server
mod_downloadHandler_server("downloadHandler", selected_pkg$name, user, metric_weights)
mod_downloadHandler_server("downloadHandler", selected_pkg$name, user, metric_weights, dep_metrics, loaded2_db)
})
}
Binary file modified R/sysdata.rda
Binary file not shown.
2 changes: 1 addition & 1 deletion data-raw/internal-data.R
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ metric_lst <- c("1"='has_vignettes', "2"='has_news', "3"='news_current', "4"='ha

rpt_choices <- c("Report Author", "Report Date", "Risk Score", "Overall Comment", "Package Summary",
"Maintenance Metrics", "Maintenance Comments", "Community Usage Metrics", "Community Usage Comments",
"Source Explorer Comments", "Function Explorer Comments")
"Package Dependencies", "Source Explorer Comments", "Function Explorer Comments")

usethis::use_data(
# app_version,
Expand Down
Binary file modified inst/report_downloads/header.docx
Binary file not shown.
2 changes: 2 additions & 0 deletions inst/report_downloads/header.tex
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{unicode-math}
\usepackage{booktabs}
\usepackage{tabularx}
\fancypagestyle{plain}{\pagestyle{fancy}}
\fancyhf{}% Clear header/footer
\setlength{\headheight}{15pt}
Expand Down
Loading