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, Part I #734

Merged
merged 61 commits into from
Jan 17, 2024
Merged
Show file tree
Hide file tree
Changes from 58 commits
Commits
Show all changes
61 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
f4be510
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 12, 2023
04ec107
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 14, 2023
61857d6
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 15, 2023
ca21599
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 15, 2023
eac76e3
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Dec 26, 2023
e4eacec
update report options
Robert-Krajcik Dec 27, 2023
99a1a46
update R modules
Robert-Krajcik Dec 27, 2023
87b700d
update man/*.Rd files
Robert-Krajcik Dec 27, 2023
675182b
update report docx, html, pdf Rmd files
Robert-Krajcik Dec 27, 2023
7de9ef7
update NEWS.md
Robert-Krajcik Dec 27, 2023
5888f6d
update header.docx, header.tex files
Robert-Krajcik Dec 27, 2023
b686305
update str_expect string in test-reportPreview
Robert-Krajcik Dec 27, 2023
45923e7
update /_snaps/databaseView/003.json
Robert-Krajcik Dec 27, 2023
0617f6b
skip test-downloadHandler for now
Robert-Krajcik Dec 27, 2023
1647050
update downloadHandler-app/app.R and remove skip_on_ci()
Robert-Krajcik Jan 2, 2024
1278f98
fix downloadHandler-app/app.R
Robert-Krajcik Jan 2, 2024
a135230
loaded2_db triggered when changes to the database occur
Robert-Krajcik Jan 4, 2024
49b96cc
update reportDocx.Rmd -- add back asterisk to footnote
Robert-Krajcik Jan 4, 2024
4872268
set column width to 12 in reportPreview
Robert-Krajcik Jan 4, 2024
4effc2c
update reportPdf.Rmd -- add back asterisk to footnote
Robert-Krajcik Jan 4, 2024
10f82cc
Update inst/report_downloads/reportDocx.Rmd
Robert-Krajcik Jan 4, 2024
8908268
replace loaded2_db parameter with session
Robert-Krajcik Jan 4, 2024
0ebd075
update downloadHandler-app/app.R
Robert-Krajcik Jan 4, 2024
b122f42
Merge branch 'rk-721-pkgdeps_report' of https://github.com/pharmaR/ri…
Robert-Krajcik Jan 4, 2024
f05681b
move dep_metrics from app_server and create function
Robert-Krajcik Jan 5, 2024
e11b10e
remove hr(), br() from risk score in report
Robert-Krajcik Jan 5, 2024
70ddf69
move dep_metrics from databaseView
Robert-Krajcik Jan 5, 2024
146c36e
update test-apps/downloadHandler app.R
Robert-Krajcik Jan 5, 2024
0566f0c
fix downloadHandler-app app.R
Robert-Krajcik Jan 5, 2024
95417d9
Update R/mod_downloadHandler.R
Robert-Krajcik Jan 9, 2024
52aa3e1
Update R/mod_downloadHandler.R
Robert-Krajcik Jan 9, 2024
d7dcd37
Update R/mod_downloadHandler.R
Robert-Krajcik Jan 9, 2024
be106b0
use session userData repo_pkgs in reportPreview, same as downloadHanlder
Robert-Krajcik Jan 9, 2024
dc2b8db
use eventReactive for dep_metrics
Robert-Krajcik Jan 9, 2024
d805e3e
use eventReactive for dep_metrics downloadHandler
Robert-Krajcik Jan 9, 2024
467a249
tweak column_specs for maint metrics pdf report
Robert-Krajcik Jan 10, 2024
7cf7fa9
use flextable to produce rmarkdown .docx outputs
Robert-Krajcik Jan 10, 2024
dc0d074
add reactiveVal to app, remove observe() in mod_downloadHandler
Robert-Krajcik Jan 11, 2024
149b897
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Jan 11, 2024
8e594d2
merge with dev; resolve conflict NEWS.md
Robert-Krajcik Jan 11, 2024
5371b44
rename columns when using test_pkg_refs
Robert-Krajcik Jan 11, 2024
bc7874b
just use available.packages() for repo_pkgs regardless of test mode
Robert-Krajcik Jan 11, 2024
45c9a3f
skip tests for downloadHandler and reportPreview for now
Robert-Krajcik Jan 11, 2024
f078574
remove browser() left in downloadHandler
Robert-Krajcik Jan 12, 2024
ff9c289
Merge branch 'dev' of https://github.com/pharmaR/riskassessment into dev
Robert-Krajcik Jan 12, 2024
84eb326
merge with dev; update NEWS.md
Robert-Krajcik Jan 12, 2024
324c836
remove skip_on_ci for test-downloadHandler.R
Robert-Krajcik Jan 12, 2024
ba31a2c
remove skip_on_ci for test-reportPreview, add pkg_deps cards to str_e…
Robert-Krajcik Jan 12, 2024
b851fbe
Add `flextable` to package...
Jeff-Thompson12 Jan 12, 2024
4bff880
Repair `repo_pkgs()`
Jeff-Thompson12 Jan 12, 2024
43c7933
Fix issue in `get_versnScore` when running in test mode
Jeff-Thompson12 Jan 12, 2024
6bd20c5
copy _snaps/databaseView/003.json from dev
Robert-Krajcik Jan 15, 2024
efc8aea
Merge branch 'rk-721-pkgdeps_report' of https://github.com/pharmaR/ri…
Robert-Krajcik Jan 15, 2024
87c0ba4
Repair internal data object for test
Jeff-Thompson12 Jan 16, 2024
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 DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ Imports:
desc,
dplyr,
DT,
flextable,
formattable,
glue,
golem (>= 0.3.2),
Expand Down
3 changes: 3 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ importFrom(desc,desc_fields)
importFrom(desc,desc_get_field)
importFrom(desc,desc_get_list)
importFrom(dplyr,case_when)
importFrom(flextable,colformat_char)
importFrom(flextable,flextable)
importFrom(flextable,set_table_properties)
importFrom(formattable,as.datatable)
importFrom(formattable,csscolor)
importFrom(formattable,formattable)
Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* Only run configuration checkers when configuring the database
* Added dependencies/reverse dependencies card hyperlink (#597)
* Added non-shinymanager deployment option (#700)
* Added Package Dependencies to Reports (#721)

# riskassessment 3.0.0

Expand Down
17 changes: 11 additions & 6 deletions R/app_server.R
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,10 @@ app_server <- function(input, output, session) {
get_comm_data(selected_pkg$name())
})

session$userData$loaded2_db <- eventReactive({uploaded_pkgs(); changes()}, {
dbSelect("SELECT name, version, score FROM package")
})

create_src_dir <- eventReactive(input$tabs, input$tabs == "Source Explorer")
pkgdir <- reactiveVal()
observe({
Expand Down Expand Up @@ -288,6 +292,12 @@ 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,
user,
parent = session)

# Load server of the report preview tab.
reportPreviewServer(id = "reportPreview",
Expand All @@ -304,12 +314,7 @@ app_server <- function(input, output, session) {
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
3 changes: 2 additions & 1 deletion R/mod_databaseView.R
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,8 @@ 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)

})
}
25 changes: 24 additions & 1 deletion R/mod_downloadHandler.R
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ mod_downloadHandler_include_server <- function(id) {
}

#' downloadHandler Server Functions
#'
#' @importFrom flextable flextable set_table_properties colformat_char
#'
#' @noRd
mod_downloadHandler_server <- function(id, pkgs, user, metric_weights){
Expand Down Expand Up @@ -130,6 +132,14 @@ mod_downloadHandler_server <- function(id, pkgs, user, metric_weights){

req(n_pkgs > 0)

if (!isTruthy(session$userData$repo_pkgs())) {
if (isTRUE(getOption("shiny.testmode"))) {
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x, col.names = c("Package", "Version", "Source"))))
} else {
session$userData$repo_pkgs(as.data.frame(utils::available.packages()[,1:2]))
}
}

shiny::withProgress(
message = glue::glue('Downloading {ifelse(n_pkgs > 1, paste0(n_pkgs, " "), "")}Report{ifelse(n_pkgs > 1, "s", paste0(": ", pkgs()))}'),
value = 0,
Expand Down Expand Up @@ -257,7 +267,18 @@ mod_downloadHandler_server <- function(id, pkgs, user, metric_weights){
downloads_plot <- build_comm_plotly(comm_data)
metric_tbl <- dbSelect("select * from metric", db_name = golem::get_golem_options('assessment_db_name'))


dep_metrics <- eventReactive(this_pkg, {
get_depends_data(this_pkg, db_name = golem::get_golem_options("assessment_db_name"))
})

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

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

# Render the report, passing parameters to the rmd file.
rmarkdown::render(
input = Report,
Expand All @@ -280,6 +301,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
24 changes: 10 additions & 14 deletions R/mod_packageDependencies.R
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ packageDependenciesServer <- function(id, selected_pkg, 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 Expand Up @@ -94,9 +90,9 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {
revdeps(pkgref()$reverse_dependencies[[1]] %>% as.vector())
# send either depends() or both to build_dep_cards(), depending on toggled()
if (toggled() == 0L) {
cards(build_dep_cards(data = depends(), loaded = loaded2_db()$name, toggled = 0L))
cards(build_dep_cards(data = depends(), loaded = session$userData$loaded2_db()$name, toggled = 0L))
} else {
cards(build_dep_cards(data = dplyr::bind_rows(depends(), suggests()), loaded = loaded2_db()$name, toggled = 1L))
cards(build_dep_cards(data = dplyr::bind_rows(depends(), suggests()), loaded = session$userData$loaded2_db()$name, toggled = 1L))
}
})

Expand Down Expand Up @@ -132,13 +128,13 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {

if (!isTruthy(session$userData$repo_pkgs())) {
if (isTRUE(getOption("shiny.testmode"))) {
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x)))
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x, col.names = c("Package", "Version", "Source"))))
} else {
session$userData$repo_pkgs(as.data.frame(utils::available.packages()[,1:2]))
}
}
purrr::map_df(pkginfo$name, ~get_versnScore(.x, loaded2_db(), session$userData$repo_pkgs())) %>%

purrr::map_df(pkginfo$name, ~get_versnScore(.x, session$userData$loaded2_db(), session$userData$repo_pkgs())) %>%
right_join(pkginfo, by = "name") %>%
select(package, type, name, version, score) %>%
arrange(name, type) %>%
Expand All @@ -162,7 +158,7 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {
) %>% # remove action button if there is nothing to review
mutate(Actions = if_else(identical(package, character(0)) | name %in% c(rownames(installed.packages(priority = "base"))), "", Actions)) %>%
# if package name not yet loaded, switch the actionbutton to fa-upload
mutate(Actions = if_else(!name %in% loaded2_db()$name, gsub("fas fa-arrow-right fa-regular", "fas fa-upload fa-solid", Actions), Actions))
mutate(Actions = if_else(!name %in% session$userData$loaded2_db()$name, gsub("fas fa-arrow-right fa-regular", "fas fa-upload fa-solid", Actions), Actions))
})

# Create metric grid card.
Expand Down Expand Up @@ -300,7 +296,7 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {
pkg_name <- pkg_df()[selectedRow, 3] %>% pull()
pkgname("-")

if (!pkg_name %in% loaded2_db()$name) {
if (!pkg_name %in% session$userData$loaded2_db()$name) {
pkgname(pkg_name)
shiny::showModal(modalDialog(
size = "l",
Expand All @@ -325,7 +321,7 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {
updateSelectizeInput(
session = parent,
inputId = "sidebar-select_pkg",
choices = c("-", loaded2_db()$name),
choices = c("-", session$userData$loaded2_db()$name),
selected = pkg_name
)
}
Expand Down Expand Up @@ -378,7 +374,7 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {
})

observeEvent(input$update_all_packages, {
req(pkg_df(), loaded2_db(), pkg_updates)
req(pkg_df(), session$userData$loaded2_db(), pkg_updates)
rev_pkg(0L)

pkgname(pkg_updates$pkgs_update$name)
Expand All @@ -397,7 +393,7 @@ packageDependenciesServer <- function(id, selected_pkg, user, parent) {
})

observeEvent(input$incl_suggests, {
req(pkg_df(), loaded2_db())
req(pkg_df(), session$userData$loaded2_db())
if(input$incl_suggests == TRUE | toggled() == 1L) toggled(1L - isolate(toggled()))
})

Expand Down
65 changes: 62 additions & 3 deletions R/mod_reportPreview.R
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,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, user, credentials,
app_version, metric_weights) {
if (missing(credentials))
credentials <- get_credential_config()

Expand Down Expand Up @@ -172,6 +172,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 = 12,
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 +429,38 @@ reportPreviewServer <- function(id, selected_pkg, maint_metrics, com_metrics,
# Community usage metrics cards.
metricGridServer("cm_metricGrid", metrics = com_metrics)

observe({
if (!isTruthy(session$userData$repo_pkgs())) {
if (isTRUE(getOption("shiny.testmode"))) {
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x, col.names = c("Package", "Version", "Source"))))
} else {
session$userData$repo_pkgs(as.data.frame(utils::available.packages()[,1:2]))
}
}
})

dep_metrics <- eventReactive(selected_pkg$name(), {
get_depends_data(selected_pkg$name())
})

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

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

dep_table <- eventReactive(dep_metrics(), {
req(dep_metrics())

purrr::map_df(dep_metrics()$name, ~get_versnScore(.x, session$userData$loaded2_db(), session$userData$repo_pkgs())) %>%
right_join(dep_metrics(), by = "name") %>%
select(package, type, version, score) %>%
arrange(package, type) %>%
distinct()
})

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

Expand Down
4 changes: 2 additions & 2 deletions R/mod_uploadPackage.R
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ uploadPackageServer <- function(id, user, auto_list, credentials, parent) {
observeEvent(input$load_repo_pkgs, {
if (!isTruthy(session$userData$repo_pkgs())) {
if (isTRUE(getOption("shiny.testmode"))) {
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x)))
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x, col.names = c("Package", "Version", "Source"))))
} else {
session$userData$repo_pkgs(as.data.frame(utils::available.packages()[,1:2]))
}
Expand Down Expand Up @@ -349,7 +349,7 @@ uploadPackageServer <- function(id, user, auto_list, credentials, parent) {

if (!isTruthy(session$userData$repo_pkgs())) {
if (isTRUE(getOption("shiny.testmode"))) {
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x)))
session$userData$repo_pkgs(purrr::map_dfr(test_pkg_refs, ~ as.data.frame(.x, col.names = c("Package", "Version", "Source"))))
} else {
session$userData$repo_pkgs(as.data.frame(utils::available.packages()[,1:2]))
}
Expand Down
Binary file modified R/sysdata.rda
Binary file not shown.
2 changes: 0 additions & 2 deletions R/utils_build_cards.R
Original file line number Diff line number Diff line change
Expand Up @@ -242,8 +242,6 @@ build_dep_cards <- function(data, loaded, toggled){
)

deps <- data %>%
mutate(package = stringr::str_replace(package, "\n", "")) %>%
mutate(name = stringr::str_extract(package, "^((([[A-z]]|[.][._[A-z]])[._[A-z0-9]]*)|[.])")) %>%
mutate(base = if_else(name %in% c(rownames(installed.packages(priority = "base"))), "Base", "Tidyverse")) %>%
mutate(base = factor(base, levels = c("Base", "Tidyverse"), labels = c("Base", "Tidyverse"))) %>%
mutate(upld = if_else(name %in% loaded, 1, 0))
Expand Down
25 changes: 25 additions & 0 deletions R/utils_get_db.R
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,31 @@ get_metric_data <- function(pkg_name, metric_class = 'maintenance', db_name = go
)
}

#' The 'Get Dependencies Metrics Data' function
#'
#' Pull the depenencies data for a specific package id, and create
#' necessary columns for Cards UI
#'
#' @param pkg_name character name of package
#' @param db_name character name (and file path) of the database
#'
#' @import dplyr
#' @importFrom stringr str_replace
#'
#' @returns a data frame with package, type, and name
#' @noRd
get_depends_data <- function(pkg_name, db_name = golem::get_golem_options('assessment_db_name')){

pkgref <- get_assess_blob(pkg_name, db_name)

if(suppressWarnings(is.null(pkgref$dependencies[[1]]))) {
dplyr::tibble(package = character(0), type = character(0), name = character(0))
} else {
pkgref$dependencies[[1]] %>% dplyr::as_tibble() %>%
mutate(package = stringr::str_replace(package, "\n", " ")) %>%
mutate(name = stringr::str_extract(package, "^((([[A-z]]|[.][._[A-z]])[._[A-z0-9]]*)|[.])"))
}
}

#' The 'Get Community Data' function
#'
Expand Down
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
Loading