Skip to content

Commit c103083

Browse files
authored
Merge pull request #49 from angelina-momin/create-page-list-venues
Create page list venues
2 parents c172c32 + 6fd5aff commit c103083

20 files changed

+432
-79
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package: codecheck
22
Title: Helper Functions for CODECHECK Project
3-
Version: 0.3.0
3+
Version: 0.5.0
44
Authors@R:
55
c(person(given = "Stephen",
66
family = "Eglen",

R/register.R

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ CONFIG$MD_COLUMNS_WIDTHS <- "|:-------|:--------------------------------|:------
99
CONFIG$REGISTER_COLUMNS <- list("Certificate", "Repository", "Type", "Issue", "Report", "Check date")
1010
CONFIG$DICT_ORCID_ID_NAME <- list()
1111
CONFIG$DIR_TEMP_REGISTER_CODECHECKER <- "docs/temp_register_codechecker.csv"
12+
CONFIG$DICT_VENUE_NAMES <- list(
13+
"journal (GigaScience)" = "GigaScience",
14+
"journal (J Geogr Syst)" = "Journal of Geographical Systems",
15+
"journal (J Archaeol Sci)" = "Journal of Archaeological Science",
16+
"journal (GigaByte)" = "GigaByte",
17+
"conference (AGILEGIS)" = "AGILEGIS",
18+
"community (codecheck)" = "Codecheck",
19+
"community (codecheck NL)" = "Codecheck NL",
20+
"community (in press)" = "In press",
21+
"community (preprint)" = "Preprint"
22+
)
23+
1224

1325
#' Function for rendering the register into different view
1426
#'
@@ -33,8 +45,9 @@ CONFIG$DIR_TEMP_REGISTER_CODECHECKER <- "docs/temp_register_codechecker.csv"
3345
register_render <- function(register = read.csv("register.csv", as.is = TRUE),
3446
filter_by = c("venues", "codecheckers"),
3547
outputs = c("html", "md", "json")) {
36-
CONFIG$MD_TEMPLATE <- system.file("extdata", "templates/template_register.md", package = "codecheck")
37-
48+
CONFIG$MD_REG_TEMPLATE <- system.file("extdata", "templates/template_register.md", package = "codecheck")
49+
CONFIG$MD_NON_REG_TEMPLATE <- system.file("extdata", "templates/template_non_register.md", package = "codecheck")
50+
3851
register_table <- preprocess_register(register, filter_by)
3952

4053
# Creating list of of register tables with indices being the filter types
@@ -52,9 +65,21 @@ register_render <- function(register = read.csv("register.csv", as.is = TRUE),
5265
}
5366

5467
# Rendering files
55-
if ("md" %in% outputs) render_register_mds(list_register_tables)
56-
if ("html" %in% outputs) render_register_htmls(list_register_tables)
57-
if ("json" %in% outputs) render_register_jsons(list_register_tables)
68+
# if ("md" %in% outputs) render_register_mds(list_register_tables)
69+
if ("html" %in% outputs) {
70+
render_register_htmls(list_register_tables)
71+
72+
for (filter in filter_by){
73+
render_non_register_htmls(list_register_tables[[filter]], page_type = filter)
74+
}
75+
}
76+
if ("json" %in% outputs) {
77+
# render_register_jsons(list_register_tables)
78+
for (filter in filter_by){
79+
render_non_register_jsons(list_register_tables[[filter]], page_type = filter)
80+
}
81+
82+
}
5883

5984
return(register_table)
6085
}

R/utils_create_filtered_register_csvs.R

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,7 @@ get_output_dir <- function(filter, column_value) {
9595
}
9696

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

102101
else if (filter=="codecheckers"){
@@ -125,3 +124,13 @@ determine_venue_category <- function(venue_name){
125124
warning(paste("Register venue", venue_name, "does not fall into any of the following venue categories:", toString(list_venue_categories)))
126125
return(NULL)
127126
}
127+
128+
determine_venue_name <- function(unfiltered_venue_name, venue_category){
129+
if (is.null(venue_category)){
130+
return(NULL)
131+
}
132+
133+
venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", unfiltered_venue_name, ignore.case = TRUE)))
134+
venue_name <- gsub(" ", "_", venue_name)
135+
return(venue_name)
136+
}

R/utils_render_register_mds.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ render_register_md <- function(filter, register_table, register_table_name, for_
9090
register_table <- add_repository_links_md(register_table)
9191
}
9292
# Fill in the content
93-
md_table <- load_md_template(CONFIG$MD_TEMPLATE)
93+
md_table <- load_md_template(CONFIG$MD_REG_TEMPLATE)
9494

9595
markdown_content <- capture.output(kable(register_table, format = "markdown"))
9696
md_table <- add_markdown_title(filter, md_table, register_table_name)

R/utils_render_reigster_html.r

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ add_repository_links_html <- function(register_table) {
3232
#' Dynamically generates a html_document.yml with the full paths to the index header, prefix
3333
#' and postfix.html files.
3434
#'
35-
#' @param filter The filter name
36-
#' @param register_table_name The register table name
37-
generate_html_document_yml <- function(filter, register_table_name) {
38-
dir <- paste0(getwd(), "/", get_output_dir(filter, register_table_name))
35+
#' @param output_dir The output directory where the html_document needs to be saved.
36+
generate_html_document_yml <- function(output_dir) {
37+
output_dir <- paste0(getwd(), "/", output_dir)
3938

4039
yaml_content <- sprintf(
4140
"# DO NOT EDIT THIS FILE MANUALLY
@@ -48,54 +47,62 @@ generate_html_document_yml <- function(filter, register_table_name) {
4847
highlight: null
4948
self_contained: false
5049
lib_dir: libs",
51-
dir, dir, dir
50+
output_dir, output_dir, output_dir
5251
)
53-
writeLines(yaml_content, paste0(dir, "html_document.yml"))
52+
writeLines(yaml_content, paste0(output_dir, "html_document.yml"))
5453
}
5554

5655
#' Dynamically generates the index_postfix.html from a template file
5756
#'
57+
#' @param output_dir The output directory
5858
#' @param filter The filter name
59-
#' @param register_table_name The register table name
59+
#' @param register_table_name The register table name. If this is NULL we are generating list of venues/ codecheckers
6060
#'
6161
#' @importFrom whisker whisker.render
62-
create_index_postfix_html <- function(filter, register_table_name){
63-
hrefs <- generate_html_postfix_hrefs(filter, register_table_name)
62+
create_index_postfix_html <- function(output_dir, filter, register_table_name = NULL){
63+
# When we have a reg table name, we adjusting the hrefs of the postfix
64+
if (!is.null(register_table_name)){
65+
postfix_template <- readLines(paste0(getwd(), "/docs/templates/reg_tables/index_postfix_template.html"), warn = FALSE)
66+
# Render the template with the correct hrefs
67+
hrefs <- generate_html_postfix_hrefs_reg(filter, register_table_name)
68+
}
69+
70+
# Generating the postfix for non-register table pages (e.g. list of venues and codecheckers)
71+
else{
72+
postfix_template <- readLines(paste0(getwd(), "/docs/templates/codecheckers_venues_list/index_postfix_template.html"), warn = FALSE)
73+
hrefs <- list(
74+
json_href = paste0("https://codecheck.org.uk/register/", filter, "/index.json")
75+
)
76+
}
6477

65-
# Using the index_postfix_template
66-
postfix_template <- readLines(paste0(getwd(), "/docs/index_postfix_template.html"), warn = FALSE)
67-
# Render the template with the correct hrefs
6878
output <- whisker.render(postfix_template, hrefs)
69-
writeLines(output, paste0(get_output_dir(filter, register_table_name), "index_postfix.html"))
79+
writeLines(output, paste0(output_dir, "index_postfix.html"))
7080
}
7181

7282
#' Dynamically generates the index_prefix.html from a template file
7383
#'
74-
#' @param filter The filter name
75-
#' @param register_table_name The register table name
76-
create_index_prefix_html <- function(filter, register_table_name){
84+
#' @param output_dir The output directory
85+
create_index_prefix_html <- function(output_dir){
7786
# Using the index_prefix_template
78-
prefix_template <- readLines(paste0(getwd(), "/docs/index_prefix_template.html"), warn = FALSE)
79-
80-
writeLines(prefix_template, paste0(get_output_dir(filter, register_table_name), "index_prefix.html"))
87+
prefix_template <- readLines(paste0(getwd(), "/docs/templates/general/index_prefix_template.html"), warn = FALSE)
88+
writeLines(prefix_template, paste0(output_dir, "index_prefix.html"))
8189
}
8290

8391
#' Dynamically generates the index_header.html from a template file
8492
#'
85-
#' @param filter The filter name
86-
#' @param register_table_name The register table name
87-
create_index_header_html <- function(filter, register_table_name){
93+
#' @param output_dir The output directory
94+
create_index_header_html <- function(output_dir){
8895
# Using the index_header_template
89-
header_template <- readLines(paste0(getwd(), "/docs/index_header_template.html"), warn = FALSE)
96+
header_template <- readLines(paste0(getwd(), "/docs/templates/general/index_header_template.html"), warn = FALSE)
9097

91-
writeLines(header_template, paste0(get_output_dir(filter, register_table_name), "index_header.html"))
98+
writeLines(header_template, paste0(output_dir, "index_header.html"))
9299
}
93100

94-
#' Generates the hrefs to set in the postfix.html file.
101+
#' Generates the hrefs to set in the postfix.html file for the rendering of register tables.
95102
#'
96103
#' @param filter The filter name
97104
#' @param register_table_name The register table name
98-
generate_html_postfix_hrefs <- function(filter, register_table_name) {
105+
generate_html_postfix_hrefs_reg <- function(filter, register_table_name) {
99106
hrefs <- list(
100107
csv_source_href = generate_href(filter, register_table_name, "csv_source"),
101108
searchable_csv_href = generate_href(filter, register_table_name, "searchable_csv"),
@@ -155,14 +162,15 @@ generate_href <- function(filter, register_table_name, href_type) {
155162
}
156163
}
157164

158-
#' Creates html files for each index section- the index postfix, prefix and the header
165+
#' Creates index postfix, prefix and the header
159166
#'
167+
#' @param output_dir The output directory of the section files
160168
#' @param filter The filter name
161169
#' @param register_table_name The register table name
162-
create_index_section_files <- function(filter, register_table_name) {
163-
create_index_postfix_html(filter, register_table_name)
164-
create_index_prefix_html(filter, register_table_name)
165-
create_index_header_html(filter, register_table_name)
170+
create_index_section_files <- function(output_dir, filter, register_table_name = NULL) {
171+
create_index_postfix_html(output_dir, filter, register_table_name)
172+
create_index_prefix_html(output_dir)
173+
create_index_header_html(output_dir)
166174
}
167175

168176
#' Renders register html for a single register_table
@@ -171,14 +179,14 @@ create_index_section_files <- function(filter, register_table_name) {
171179
#' @param register_table The register table
172180
#' @param register_table_name The register table name
173181
render_register_html <- function(filter, register_table, register_table_name){
174-
# Add icons to the Repository column for HTML output, use a copy of the register.md
182+
183+
output_dir <- get_output_dir(filter, register_table_name)
175184
register_table <- add_repository_links_html(register_table)
176185

177186
# Dynamically create the index header, prefix and postfix files
178-
create_index_section_files(filter, register_table_name)
179-
generate_html_document_yml(filter, register_table_name)
187+
create_index_section_files(output_dir, filter, register_table_name)
188+
generate_html_document_yml(output_dir)
180189

181-
output_dir <- get_output_dir(filter, register_table_name)
182190
# Capture the HTML output from a markdown file
183191
# Note that the temp md file must be created even if a md exists because the register table
184192
# now has different icons under "Repository" column
@@ -214,8 +222,10 @@ render_register_html <- function(filter, register_table, register_table_name){
214222
render_register_htmls <- function(list_register_tables) {
215223
# Loop over each register table
216224
for (filter in names(list_register_tables)){
217-
for (register_table_name in names(list_register_tables[[filter]])) {
218-
register_table <- list_register_tables[[filter]][[register_table_name]]
225+
list_filtered_reg_tables <- list_register_tables[[filter]]
226+
227+
for (register_table_name in names(list_filtered_reg_tables)) {
228+
register_table <- list_filtered_reg_tables[[register_table_name]]
219229
render_register_html(filter, register_table, register_table_name)
220230
}
221231
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#' Renders codecheckers table in JSON format.
2+
#'
3+
#' @param list_codechecker_reg_tables The list of codechecker register tables. The indices are the ORCID IDs.
4+
render_table_codecheckers_json <- function(list_codechecker_reg_tables){
5+
list_orcid_ids <- names(list_codechecker_reg_tables)
6+
# Check.names arg is set to FALSE so that column "ORCID ID" has the space
7+
table_codecheckers <- data.frame(`ORCID ID`= list_orcid_ids, stringsAsFactors = FALSE, check.names = FALSE)
8+
9+
# Column- codechecker names
10+
table_codecheckers$`Codechecker name` <- sapply(
11+
X = table_codecheckers$`ORCID ID`,
12+
FUN = function(orcid_id) {
13+
paste0(CONFIG$DICT_ORCID_ID_NAME[orcid_id])
14+
}
15+
)
16+
17+
# Column- No. of codechecks
18+
table_codecheckers$`No. of codechecks` <- sapply(
19+
X = table_codecheckers$`ORCID ID`,
20+
FUN = function(orcid_id) {
21+
paste0(nrow(list_codechecker_reg_tables[[orcid_id]]))
22+
}
23+
)
24+
25+
# Arranging the column names
26+
table_codecheckers <- table_codecheckers[, c("Codechecker name", "ORCID ID", "No. of codechecks")]
27+
28+
return(table_codecheckers)
29+
}
30+
31+
#' Renders codecheckers table in HTML format.
32+
#' Each codechecker name links to the register table for that specific
33+
#' codechecker. The ORCID IDs link to their ORCID pages.
34+
#'
35+
#' @param list_codechecker_reg_tables The list of codechecker register tables. The indices are the ORCID IDs.
36+
render_table_codecheckers_html <- function(list_codechecker_reg_tables){
37+
38+
list_orcid_ids <- names(list_codechecker_reg_tables)
39+
table_codecheckers <- data.frame(ORCID_ID = list_orcid_ids, stringsAsFactors = FALSE)
40+
41+
# Column- codechecker names
42+
# Each codechecker name will be a hyperlink to the register table
43+
# with all their codechecks
44+
table_codecheckers$`Codechecker name` <- sapply(
45+
X = table_codecheckers$ORCID_ID,
46+
FUN = function(orcid_id) {
47+
codechecker_name <- CONFIG$DICT_ORCID_ID_NAME[orcid_id]
48+
paste0("[", codechecker_name, "](https://codecheck.org.uk/register/codecheckers/",
49+
orcid_id, "/)")
50+
}
51+
)
52+
53+
# Column- ORCID ID link
54+
table_codecheckers$ORCID_ID_Link <- sapply(
55+
X = table_codecheckers$ORCID_ID,
56+
FUN = function(orcid_id) {
57+
paste0("[", orcid_id, "](https://orcid.org/", orcid_id, ")")
58+
}
59+
)
60+
# Column- No. of codechecks
61+
# Shown as "no_codechecks (sell all checks)" where "see all checks" links to the checks by
62+
# the codechecker
63+
table_codecheckers$`No. of codechecks` <- sapply(
64+
X = table_codecheckers$ORCID_ID,
65+
FUN = function(orcid_id) {
66+
no_codechecks <- nrow(list_codechecker_reg_tables[[orcid_id]])
67+
paste0(nrow(list_codechecker_reg_tables[[orcid_id]])," [(see all checks)](https://codecheck.org.uk/register/codecheckers/",
68+
orcid_id, "/)")
69+
}
70+
)
71+
72+
# Drop the original ORCID_ID column and rename ORCID_ID_Link to ORCID_ID
73+
table_codecheckers <- table_codecheckers[, c("Codechecker name", "ORCID_ID_Link", "No. of codechecks")]
74+
names(table_codecheckers)[names(table_codecheckers) == "ORCID_ID_Link"] <- "ORCID ID"
75+
76+
table_codecheckers <- kable(table_codecheckers)
77+
return(table_codecheckers)
78+
}
79+

0 commit comments

Comments
 (0)