Skip to content

Commit

Permalink
Merge pull request #53 from angelina-momin/create-page-venues
Browse files Browse the repository at this point in the history
Create page venues
  • Loading branch information
angelina-momin authored Aug 20, 2024
2 parents 95bf093 + 1f70fdf commit e3d40ed
Show file tree
Hide file tree
Showing 8 changed files with 159 additions and 11 deletions.
1 change: 1 addition & 0 deletions .github/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.html
.DS_Store
2 changes: 1 addition & 1 deletion .github/workflows/R-CMD-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
matrix:
config:
- {os: windows-latest, r: 'release'}
- {os: macOS-latest, r: 'release'}
# - {os: macOS-latest, r: 'release'}
- {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}
- {os: ubuntu-20.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}

Expand Down
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: codecheck
Title: Helper Functions for CODECHECK Project
Version: 0.4.0
Version: 0.5.0
Authors@R:
c(person(given = "Stephen",
family = "Eglen",
Expand Down
13 changes: 11 additions & 2 deletions R/utils_create_filtered_register_csvs.R
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@ get_output_dir <- function(filter, column_value) {
}

# Removing the venue category to obtain the venue name and replace the brackets
venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", column_value)))
venue_name <- gsub(" ", "_", venue_name)
venue_name <- determine_venue_name(column_value, venue_category)
return(paste0("docs/", filter, "/", venue_category, "/", venue_name, "/")) }

else if (filter=="codecheckers"){
Expand Down Expand Up @@ -125,3 +124,13 @@ determine_venue_category <- function(venue_name){
warning(paste("Register venue", venue_name, "does not fall into any of the following venue categories:", toString(list_venue_categories)))
return(NULL)
}

determine_venue_name <- function(unfiltered_venue_name, venue_category){
if (is.null(venue_category)){
return(NULL)
}

venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", unfiltered_venue_name, ignore.case = TRUE)))
venue_name <- gsub(" ", "_", venue_name)
return(venue_name)
}
2 changes: 1 addition & 1 deletion R/utils_render_table_codecheckers.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ render_table_codecheckers_json <- function(list_codechecker_reg_tables){
list_orcid_ids <- names(list_codechecker_reg_tables)
table_codecheckers <- data.frame(matrix(ncol=0, nrow = length(list_orcid_ids)), stringsAsFactors = FALSE)

col_names <- CONFIG$CODECHECKER_TABLE_COL_NAMES[["codechecker_table"]]
col_names <- CONFIG$NON_REG_TABLE_COL_NAMES[["codechecker_table"]]

# Column- codechecker names
table_codecheckers[[col_names[["codechecker"]]]] <- sapply(
Expand Down
18 changes: 12 additions & 6 deletions R/utils_render_table_non_registers.R
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
#' @param list_reg_tables The list of register tables to link to in this html page
render_non_register_htmls <- function(list_reg_tables, page_type){
output_dir <- paste0("docs/", page_type, "/")
extra_text <- ""

if (page_type == "codecheckers"){
table <- render_table_codecheckers_html(list_reg_tables)
table <- kable(table)
# Counting number of codecheckers based of number of codechecker reg tables
# The table is a kable table and hence we cannot count rows
no_codecheckers <- length(list_reg_tables)
Expand All @@ -19,10 +19,15 @@ render_non_register_htmls <- function(list_reg_tables, page_type){
This is because some codechecks involved more than one codechecker.</i>"
}

else{
return()
else if (page_type == "venues") {
table <- render_table_venues_html(list_reg_tables)

no_venues <- length(list_reg_tables)
subtext <- paste("In total,", CONFIG$NO_CODECHECKS, "codechecks were completed for", no_venues, "venues")
}

# Creating and adjusting the markdown table
table <- kable(table)
md_table <- load_md_template(CONFIG$TEMPLATE_DIR[["non_reg"]][["md_template"]])
title <- paste0("CODECHECK List of ", page_type)
md_table <- gsub("\\$title\\$", title, md_table)
Expand Down Expand Up @@ -65,13 +70,14 @@ render_non_register_htmls <- function(list_reg_tables, page_type){
render_non_register_jsons <- function(list_reg_tables, page_type){
output_dir <- paste0("docs/", page_type, "/")

if (page_type == "codeheckers"){
if (page_type == "codecheckers"){
table <- render_table_codecheckers_json(list_reg_tables)
}

else{
return()
else if (page_type == "venues"){
table <- render_table_venues_json(list_reg_tables)
}

jsonlite::write_json(
table,
path = paste0(output_dir, "index.json"),
Expand Down
112 changes: 112 additions & 0 deletions R/utils_render_table_venues.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#' Renders venues table in JSON format.
#'
#' @param list_venue_reg_tables The list of venue register tables. The indices are the venue names.
render_table_venues_json <- function(list_venue_reg_tables){
col_names <- CONFIG$NON_REG_TABLE_COL_NAMES[["venues_table"]]
list_venue_names <- names(list_venue_reg_tables)

# Create initial data frame
table_venues <- data.frame(
matrix(ncol=0, nrow = length(list_venue_names)),
stringsAsFactors = FALSE,
check.names = FALSE
)

table_venues[[col_names[["venue_name"]]]] <- list_venue_names

# Column- No. of codechecks
table_venues[[col_names[["no_codechecks"]]]] <- sapply(
X = list_venue_names,
FUN = function(venue_name) {
paste0(nrow(list_venue_reg_tables[[venue_name]]))
}
)

# Column- Venue type
table_venues[[col_names[["venue_type"]]]] <- sapply(
X = table_venues[[col_names[["venue_name"]]]],
FUN = function(venue_name){
venue_type <- determine_venue_category(venue_name)
stringr::str_to_title(venue_type)
}
)

# Column- venue names
# Using the full names of the venues
table_venues[[col_names[["venue_name"]]]] <- sapply(
X = table_venues[[col_names[["venue_name"]]]],
FUN = function(venue_name){
CONFIG$DICT_VENUE_NAMES[[venue_name]]
}
)

# Reordering the table
desired_order_cols <- unlist(col_names)
table_venues <- table_venues[, desired_order_cols]

return(table_venues)
}

#' Renders venues table in HTML format.
#' Each venue name links to the register table for that specific
#' venue. The ORCID IDs link to their ORCID pages.
#'
#' @param list_venue_reg_tables The list of venue register tables. The indices are the ORCID IDs.
render_table_venues_html <- function(list_venue_reg_tables){
col_names <- CONFIG$NON_REG_TABLE_COL_NAMES[["venues_table"]]

list_venue_names <- names(list_venue_reg_tables)
# Create initial data frame
table_venues <- data.frame(
matrix(ncol=0, nrow = length(list_venue_names)),
stringsAsFactors = FALSE,
check.names = FALSE
)

table_venues[[col_names[["venue_name"]]]] <- list_venue_names

# Column- Venue type
table_venues[[col_names[["venue_type"]]]] <- sapply(
X = list_venue_names,
FUN = function(venue_name){
venue_type <- determine_venue_category(venue_name)
stringr::str_to_title(venue_type)
}
)

# Column- No. of codechecks
table_venues[[col_names[["no_codechecks"]]]] <- mapply(
FUN = function(venue_name, venue_type) {
no_codechecks <- nrow(list_venue_reg_tables[[venue_name]])
formatted_venue_type <- stringr::str_to_lower(venue_type)
formatted_venue_name <- determine_venue_name(venue_name, venue_type)
paste0(no_codechecks," [(see all checks)](https://codecheck.org.uk/register/venues/",
formatted_venue_type, "/", formatted_venue_name, "/)")
},
venue_name = table_venues[[col_names[["venue_name"]]]],
venue_type = table_venues[[col_names[["venue_type"]]]]
)

# Column- venue names
# Each venue name will be a hyperlink to the register table
# with all their codechecks
table_venues[[col_names[["venue_name"]]]] <- mapply(
FUN = function(venue_name, venue_type){
if (is.null(CONFIG$DICT_VENUE_NAMES[[venue_name]])) {
return(venue_name) # Handle cases where venue_name is not in CONFIG$DICT_VENUE_NAMES
}
formatted_venue_type <- stringr::str_to_lower(venue_type)
formatted_venue_name <- determine_venue_name(venue_name, venue_type)
paste0("[", CONFIG$DICT_VENUE_NAMES[[venue_name]], "](https://codecheck.org.uk/register/venues/",
formatted_venue_type, "/", formatted_venue_name, "/)")
},
venue_name = table_venues[[col_names[["venue_name"]]]],
venue_type = table_venues[[col_names[["venue_type"]]]]
)

# Reordering the table
desired_order_cols <- unlist(col_names)
table_venues <- table_venues[, desired_order_cols]

return(table_venues)
}
20 changes: 20 additions & 0 deletions inst/extdata/config.R
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,18 @@ CONFIG$REGISTER_COLUMNS <- list("Certificate", "Repository", "Type", "Issue", "R
CONFIG$DIR_TEMP_REGISTER_CODECHECKER <- "docs/temp_register_codechecker.csv"

# NON-REGISTER_TABLE
# Note that the order of the names in the list will be the order of table columns in html and json
CONFIG$NON_REG_TABLE_COL_NAMES <- list(
"codechecker_table" = list(
"codechecker" = "Codechecker name",
"orcid" = "ORCID ID",
"no_codechecks" = "No. of codechecks"
),

"venues_table" = list(
"venue_type" = "Venue type",
"venue_name" = "Venue name",
"no_codechecks" = "No. of codechecks"
)
)

Expand Down Expand Up @@ -38,3 +45,16 @@ CONFIG$TEMPLATE_DIR<- list(
"md_template" = system.file("extdata", "templates/reg_tables/template.md", package = "codecheck")
)
)

# DICT OF VENUE NAMES
CONFIG$DICT_VENUE_NAMES <- list(
"journal (GigaScience)" = "GigaScience",
"journal (J Geogr Syst)" = "Journal of Geographical Systems",
"journal (J Archaeol Sci)" = "Journal of Archaeological Science",
"journal (GigaByte)" = "GigaByte",
"conference (AGILEGIS)" = "AGILEGIS",
"community (codecheck)" = "Codecheck",
"community (codecheck NL)" = "Codecheck NL",
"community (in press)" = "In press",
"community (preprint)" = "Preprint"
)

0 comments on commit e3d40ed

Please sign in to comment.