From 291ba05a0db13ed4965eaf0c4419043a2ca29370 Mon Sep 17 00:00:00 2001 From: najahn Date: Mon, 13 Mar 2023 19:29:26 +0100 Subject: [PATCH] Implement some minor fixes --- .gitignore | 1 + 404.qmd | 8 + R/country_league.R | 1 + R/country_publisher_league.R | 22 +- R/cr_upw.R | 6 +- R/journal_tbl.R | 2 +- R/pub_scatter.R | 7 +- R/publisher_league.R | 4 +- _quarto.yml | 38 +- _template_index.qmd | 267 +++++++------ _template_oam.qmd | 39 +- _template_overview.qmd | 18 +- about.qmd | 77 +++- create_qmd.R | 82 ++-- dfg_logo.jpg | Bin 0 -> 76589 bytes funding_note.md | 4 + index.qmd | 755 ++++++++++++++++++++++++++++++++++- license.qmd | 23 -- privacy.qmd | 22 + styles.scss | 2 +- sub_logo.svg | 1 + 21 files changed, 1113 insertions(+), 266 deletions(-) create mode 100644 404.qmd create mode 100644 dfg_logo.jpg create mode 100644 funding_note.md delete mode 100644 license.qmd create mode 100644 privacy.qmd create mode 100644 sub_logo.svg diff --git a/.gitignore b/.gitignore index 4a659130..04c82e1d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ jct/ oam/ /.quarto/ /_freeze/ +index_files/ diff --git a/404.qmd b/404.qmd new file mode 100644 index 00000000..ba3473ae --- /dev/null +++ b/404.qmd @@ -0,0 +1,8 @@ +--- +title: 404 error +subtitle: The page you're looking for doesn't exist. 😕 +format: html +--- + +Check the sidebar navigation and search to find your publisher-specific dashboard. + diff --git a/R/country_league.R b/R/country_league.R index 5b258715..79c103cf 100644 --- a/R/country_league.R +++ b/R/country_league.R @@ -27,6 +27,7 @@ country_pub_df <- shared_oa_country_df <- SharedData$new(country_pub_df) +# From https://connorrothschild.github.io/v2/post/economist-table-replication-using-reactable/ react_table_oa_country <- reactable::reactable( shared_oa_country_df, style = list(), diff --git a/R/country_publisher_league.R b/R/country_publisher_league.R index d8a699a4..5c832069 100644 --- a/R/country_publisher_league.R +++ b/R/country_publisher_league.R @@ -1,5 +1,9 @@ +if(exists("oam")) { + esac_df <- oam +} else { esac_df <- hoaddata::jct_hybrid_jns |> - distinct(issn_l, esac_publisher) + distinct(issn_l, esac_publisher) +} country_total <- jn_aff_df |> distinct(issn_l, cr_year, country_code, articles_total) |> @@ -20,11 +24,21 @@ country_df_by_publisher <- left_join(country_total, country_cc, by = c("cr_year" mutate_if(is.numeric, ~replace(., is.na(.), 0)) |> filter(!is.na(country_code)) |> mutate( - country_name = countrycode::countrycode(country_code, origin = "iso2c", destination = "country.name")) + country_name = + countrycode::countrycode( + country_code, origin = "iso2c", destination = "country.name" + ) + ) |> + mutate(country_name = gsub("&", "and", country_name)) |> + mutate(esac_publisher = forcats::fct_relevel( + forcats::as_factor(esac_publisher), publ_league) + ) + country_pub_league <- country_df |> mutate(esac_publisher = "All") |> - bind_rows(country_df_by_publisher) + bind_rows(country_df_by_publisher) |> + mutate(esac_publisher = forcats::fct_relevel(forcats::as_factor(esac_publisher), c("All", publ_league))) # Max values to define width of bar charts bar_max_width <- country_pub_league |> @@ -124,7 +138,7 @@ react_table_oa_country <- reactable::reactable( } ), prop = colDef( - name = "% of total", + name = "% OA", format = colFormat(percent = TRUE, digits = 1), style = list(fontWeight = "bold"), class = "number", diff --git a/R/cr_upw.R b/R/cr_upw.R index c7673ce2..4ae4e4cd 100644 --- a/R/cr_upw.R +++ b/R/cr_upw.R @@ -102,8 +102,10 @@ upw_col_ <- function() { list( minWidth = 100 ), perc_diff = colDef( - name = "% Difference", - format = colFormat(percent = TRUE, digits = 1), + name = "Difference", + cell = function(value) { + value <- paste0(format(round(value * 100, 1), nsmall = 1), "pp") + }, class = "number", align = "right", width = 120, diff --git a/R/journal_tbl.R b/R/journal_tbl.R index 287c2095..0c0ac1ed 100644 --- a/R/journal_tbl.R +++ b/R/journal_tbl.R @@ -7,7 +7,7 @@ venues_df <- venues |> !is.na(homepage_url) ~ glue::glue('{display_name}'), is.na(homepage_url) ~ display_name) ) |> - mutate(issn_link = glue::glue('ISSN-L: {issn_l} | OpenAlex: {gsub("https://openalex.org/", "", id)}')) |> + mutate(issn_link = glue::glue('ISSN-L: {issn_l}')) |> mutate(journal_display = glue::glue('
{journal_name}
{issn_link}
')) # Sparkline diff --git a/R/pub_scatter.R b/R/pub_scatter.R index dd3e70f9..e518db85 100644 --- a/R/pub_scatter.R +++ b/R/pub_scatter.R @@ -45,7 +45,7 @@ scatter_pub <- function(my_df = my_df) { linetype = "dashed", size = 1 ) + - theme_minimal(base_family = "Atkinson Hyperlegible", base_size = 16) + + theme_minimal(base_family = "Atkinson Hyperlegible", base_size = 15) + labs(x = "Articles (log scale)", y = "OA") + theme(panel.grid.minor.x = element_blank(), panel.grid.minor.y = element_blank(), @@ -61,11 +61,12 @@ plot_scatterplot <- scatter_pub() plotly::ggplotly(plot_all, tooltip = c("text")) |> style(hoverlabel = list(bgcolor = "white", font = list( - family = "Source Sans Pro", + family = "Atkinson Hyperlegible", size = 18))) |> animation_slider( currentvalue = list(prefix = "Publication year: "), - pad = list(t = "50") + redraw = FALSE, + pad = list(t = 50, r = 50) ) |> animation_button(visible = TRUE) |> config(displayModeBar = FALSE) diff --git a/R/publisher_league.R b/R/publisher_league.R index f3351d6f..0c11e20b 100644 --- a/R/publisher_league.R +++ b/R/publisher_league.R @@ -21,7 +21,9 @@ jn_league_df <- left_join(journals_per_publisher, journals_with_oa_per_publisher pub_league <- summarize_pubs(var_summary = c(cr_year, esac_publisher)) |> right_join(jn_league_df, by = c("cr_year", "esac_publisher", "collection")) |> mutate_if(is.numeric, ~ replace(., is.na(.), 0)) |> - mutate(oa_prop = oa_articles / articles) + mutate(oa_prop = oa_articles / articles) |> + mutate(esac_publisher = forcats::fct_relevel(forcats::as_factor(esac_publisher), publ_league)) + # Prepare bar width relative to Crosstalk selection bar_max_width <- pub_league |> diff --git a/_quarto.yml b/_quarto.yml index 6b1c0ed8..d13aa8d6 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -6,14 +6,14 @@ project: website: title: "HOAD" + twitter-card: true + open-graph: true page-footer: - left: | - Developed at the Göttingen State and University Library + left: + - text: "This website is licensed under CC0." center: - - text: "About" - href: about.qmd - - text: "License" - href: license.qmd + - text: "Privacy" + href: privacy.qmd - text: "Imprint" href: https://www.sub.uni-goettingen.de/impressum/ right: @@ -29,20 +29,21 @@ website: tools: - icon: github href: https://github.com/subugoe/hoaddash - text: "GitHub Repo" - - icon: bar-chart + text: "GitHub Dashboard Repo" + - icon: "file-bar-graph" href: https://github.com/subugoe/hoaddata - text: "Data Repo" - - icon: person-fill - text: "mailto:najko.jahn@sub.uni-goettingen.de" + text: "GitHub Data Repo" + - icon: "bug" + text: "Report a Bug" + href: https://github.com/subugoe/hoaddash/issues style: "docked" search: true collapse-level: 1 contents: - - text: Overview - href: jct/index.qmd - section: "Publishers" contents: + - text: Overview + href: index.qmd - href: jct/elsevier/index.qmd text: "Elsevier" - href: jct/springernature/index.qmd @@ -84,6 +85,7 @@ website: - section: "Agreements with German consortia" contents: - text: "Overview" + href: oam/index.qmd - section: "Consortia" contents: - section: "DEAL" @@ -121,7 +123,7 @@ website: - text: "AIP" href: oam/aiptib/index.qmd - text: "ESC" - href: oam/esctib/index.qmd + href: oam/ecstib/index.qmd - text: "IOP" href: oam/ioptib/index.qmd - text: "Portland Press" @@ -134,11 +136,9 @@ website: contents: - text: "Taylor and Francis" href: oam/taylorfranciszbw - - section: "About" - contents: - - text: "How it works" - - text: "Contribute" - + - text: "About" + href: "about.qmd" + footer: funding_note.md format: html: theme: diff --git a/_template_index.qmd b/_template_index.qmd index a15a0594..ffeb087b 100644 --- a/_template_index.qmd +++ b/_template_index.qmd @@ -18,9 +18,10 @@ sidebar: true #| echo: false #| message: false source("R/setup.R") -if(params$collection == "oam") - oam <- hoaddata::oam_hybrid_jns |> - dplyr::distinct(issn_l, esac_publisher = vertrag) +if (params$collection == "oam") { + oam <- hoaddata::oam_hybrid_jns |> + dplyr::distinct(issn_l, esac_publisher = vertrag) +} ``` @@ -29,38 +30,49 @@ if(params$collection == "oam") #| echo: false #| message: false jn_ind_df <- hoaddata::jn_ind |> -dplyr::mutate(cr_year = as.character(cr_year)) |> - dplyr::mutate(cc = factor( - cc, - # Order by permissiveness - levels = c( - "CC BY", - "CC BY-SA", - "CC BY-NC", - "CC BY-NC-SA", - "CC BY-ND", - "CC BY-NC-ND" - ))) |> - # Journal selection - filter(issn_l %in% params$issn_l) + dplyr::mutate(cr_year = as.character(cr_year)) |> + dplyr::mutate(cc = factor( + cc, + # Order by permissiveness + levels = c( + "CC BY", + "CC BY-SA", + "CC BY-NC", + "CC BY-NC-SA", + "CC BY-ND", + "CC BY-NC-ND" + ) + )) |> + # Journal selection + filter(issn_l %in% params$issn_l) jn_aff_df <- hoaddata::jn_aff |> -dplyr::mutate(cr_year = as.character(cr_year)) |> - dplyr::mutate(cc = factor( - cc, - # Order by permissiveness - levels = c( - "CC BY", - "CC BY-SA", - "CC BY-NC", - "CC BY-NC-SA", - "CC BY-ND", - "CC BY-NC-ND" - ))) |> - # Journal selection - filter(issn_l %in% params$issn_l) + dplyr::mutate(cr_year = as.character(cr_year)) |> + dplyr::mutate(cc = factor( + cc, + # Order by permissiveness + levels = c( + "CC BY", + "CC BY-SA", + "CC BY-NC", + "CC BY-NC-SA", + "CC BY-ND", + "CC BY-NC-ND" + ) + )) |> + # Journal selection + filter(issn_l %in% params$issn_l) ``` +```{r ta_text} +#| echo: false +#| message: false +if (params$collection == "oam") { + ta_text <- paste0("hybrid journals included in the German consortial transformative agreement **", params$publisher, "**") +} else { + ta_text <- paste0("**", params$publisher, "**", " hybrid journals included in transformative agreements") +} +``` @@ -82,7 +94,7 @@ basic_stat(jn_ind_df = jn_ind_df, jn_aff_df = jn_aff_df) ## Creative Commons licenses over time -Percentage of Open Access in **`r params$publisher`** hybrid journals included in transformative agreements by Creative Commons license types as provided by Crossref. +Percentage of Open Access in `r ta_text` by Creative Commons license types as provided by Crossref. ```{r} #| echo: false @@ -100,13 +112,15 @@ source("R/cc_over_year.R") cc_global_plot <- plot_cc_variants_by_year(cc_ind_global(jn_ind_df = jn_ind_df)) # Return SVG girafe( - ggobj = cc_global_plot, - width_svg = 9, - height_svg = 6 * 0.618, - options = list(opts_tooltip( - css="background-color:white; + ggobj = cc_global_plot, + width_svg = 9, + height_svg = 6 * 0.618, + options = list(opts_tooltip( + css = "background-color:white; ;font-size:1.15em;padding:10px;border-radius:5px;box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5)", - opacity = .95))) + opacity = .95 + )) +) ``` @@ -118,13 +132,15 @@ girafe( cc_de_plot <- plot_cc_variants_by_year(cc_ind_de(jn_aff_df = jn_aff_df)) # Return SVG girafe( - ggobj = cc_de_plot, - width_svg = 9, - height_svg = 6 * 0.618, - options = list(opts_tooltip( - css="background-color:white; + ggobj = cc_de_plot, + width_svg = 9, + height_svg = 6 * 0.618, + options = list(opts_tooltip( + css = "background-color:white; ;font-size:1.15em;padding:10px;border-radius:5px;box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5)", - opacity = .95))) + opacity = .95 + )) +) ``` *Journal articles from lead authors based in Germany. Country affiliation data derived from OpenAlex. @@ -143,18 +159,18 @@ Hybrid journal portfolio analysis, showing publishing market shares in terms of #| message: false #| warning: false # Data prep -if(params$collection == "oam") { - oam <- hoaddata::oam_hybrid_jns |> - dplyr::distinct(issn_l, esac_publisher = vertrag) - source("R/oam_data_prep.R") +if (params$collection == "oam") { + oam <- hoaddata::oam_hybrid_jns |> + dplyr::distinct(issn_l, esac_publisher = vertrag) + source("R/oam_data_prep.R") } else { - source("R/data_prep.R") + source("R/data_prep.R") } my_df <- summarize_pubs(var_summary = c(cr_year, esac_publisher)) |> - tidyr::complete(cr_year, esac_publisher, collection) |> - mutate_if(is.numeric, ~ replace(., is.na(.), 0)) |> - mutate(pub_col = ifelse(esac_publisher %in% params$publisher, "#0093C7", "#999999")) + tidyr::complete(cr_year, esac_publisher, collection) |> + mutate_if(is.numeric, ~ replace(., is.na(.), 0)) |> + mutate(pub_col = ifelse(esac_publisher %in% params$publisher, "#0093C7", "#999999")) ``` ::: {.panel-tabset} @@ -192,11 +208,11 @@ plot_scatterplot(my_df, collection = "de") ## Country view -This section shows how hybrid open access has been adopted in different parts of the world. The analysis is based on country-affiliations of lead authors. Lead authors are the first named authors of scholarly articles who have usually undertaken most of the research presented in the article, although author roles can vary across discipline. We used OpenAlex as data source to determine lead author affiliation. +This section shows how hybrid open access has been adopted in different parts of the world. The analysis is based on the country affiliation of lead authors. Lead authors are the first named authors of scholarly articles, who have typically conducted most of the research presented in the article, although the role of lead authors can vary across disciplines. We used OpenAlex as a data source to determine the affiliation of lead authors. ### Open Access in hybrid journals by country -Percentage of Open Access Articles with a Creative Commons license per country. Showing the Top 20 most productive countries in terms of articles published in **`r params$publisher`** hybrid journals included in transformative agreements between 2017 and 2022. The analysis is based on country-affiliations of lead authors. +Percentage of Open Access Articles with a Creative Commons license per country. Showing the Top 20 most productive countries in terms of articles published in `r ta_text` between 2017 and 2022. The analysis is based on the country affiliation of the lead authors. ::: column-body-outset ```{r} @@ -206,20 +222,22 @@ Percentage of Open Access Articles with a Creative Commons license per country. source("R/country_top_20.R") ggiraph::girafe( - ggobj = country_multiple_plot, - width_svg = 9, - height_svg = 7 * 0.618, - options = list(opts_tooltip( - css="background-color:white; + ggobj = country_multiple_plot, + width_svg = 9, + height_svg = 7 * 0.618, + options = list(opts_tooltip( + css = "background-color:white; ;font-size:1.15em;padding:10px;border-radius:5px;box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5)", - opacity = .95))) + opacity = .95 + )) +) ``` ::: ### Country league -Publication volume in **`r params$publisher`** hybrid journals included in transformative agreements and Open Access share per country. You can search for specific countries, and filter by publisher and publication year. The analysis is based on country-affiliations of lead authors. +Publication volume and Open Access share per country in `r ta_text`. You can search for specific countries, and filter by publisher and publication year. The analysis is based on country-affiliations of lead authors. ```{r} @@ -231,33 +249,33 @@ source("R/country_league.R") ```{r} htmltools::div( - class = "agreement-tbl", - htmltools::div( - class = "filters", + class = "agreement-tbl", htmltools::div( - class = "filter-input", - filter_select( - "filter_country", - "Countries", - shared_oa_country_df, - ~ country_name, - multiple = TRUE - ) + class = "filters", + htmltools::div( + class = "filter-input", + filter_select( + "filter_country", + "Countries", + shared_oa_country_df, + ~country_name, + multiple = TRUE + ) + ), + htmltools::div( + class = "filter-input", + filter_select( + "filter_country_year", + "Publication Year", + shared_oa_country_df, + ~cr_year, + multiple = FALSE + ) + ) ), - htmltools::div( - class = "filter-input", - filter_select( - "filter_country_year", - "Publication Year", - shared_oa_country_df, - ~ cr_year, - multiple = FALSE - ) - ) - ), - react_table_oa_country, - htmltools::div(class = "agreement-footer", " - Data sources: Journal Checker Tool, Crossref, OpenAlex") + react_table_oa_country, + htmltools::div(class = "agreement-footer", " + Data sources: Crossref, OpenAlex.") ) ``` @@ -271,11 +289,11 @@ $(document).ready(function() { ## Open metadata -Open and comprehensive metadata is a key requirement in many transformative agreements. The following tables illustrate potential gaps in Crossref metadata relative to Open Access articles in hybrid journals included in transformative agreements. +Open and comprehensive metadata is a key requirement of many transformative agreements. The following tables illustrate potential gaps in Crossref metadata for Open Access articles in hybrid journals included in transformative agreements. ### License metadata gaps -Comparision of license metadata as provided by **`r params$publisher`** to Crossref with Unpaywall per year. You can compare global metrics with metrics only for articles by lead authors based in Germany. In addition to Crossref licence information, Unpaywall also analyses publishers' websites to determine whether an article has been published under an open content license. A positive gap indicates a licensing delay by Unpaywall, while a negative gap indicates that the publisher has not provided licensing metadata for all Open Access articles to Crossref. +**`r params$publisher`**: Comparison of open licence metadata in Crossref with Unpaywall per year. You can compare global metrics with metrics only for articles by lead authors based in Germany. In addition to Crossref licence information, Unpaywall also analyses publisher websites to determine whether an article has been published under an open content licence. More Open Access articles derived from Crossref may indicate an offset between metadata changes and Unpaywall-indexing, while more Open Access articles identified by Unpaywall suggest that publishers have not deposited licensing metadata in Crossref for all articles. ::: {.panel-tabset} @@ -305,7 +323,7 @@ cr_upw_plot(cr_upw_data = hoaddata::cr_upw, params$issn_l, my_cat = "Germany") ### Crossref metadata coverage -This interactive table shows the the proportion of Crossref metadata that is publicly available for Open Access articles in **`r params$publisher`** hybrid journals included in transformative agreements. Publishers can use Crossref to share links to full-texts for text-mining purposes, persistent links to authors (ORCID) and funder information. They can also open up [abstracts](https://i4oa.org/) and [reference lists](https://i4oc.org/) through Crossref. +This interactive table shows the the proportion of Crossref metadata that is publicly available for Open Access articles in `r ta_text`. Publishers can use Crossref to share links to full-texts for text-mining purposes, persistent links to authors (ORCID) and funder information. They can also open up [abstracts](https://i4oa.org/) and [reference lists](https://i4oc.org/) through Crossref. ```{r} @@ -313,42 +331,42 @@ This interactive table shows the the proportion of Crossref metadata that is pub #| message: false #| warning: false source("R/open_md.R") -# Should be done in hoaddata -md_tmp <- hoaddata::cr_md |> - tidyr::complete(cr_year, issn_l, cat) |> - mutate_all(~ifelse(is.na(.), 0, .)) +# Should be done in hoaddata +md_tmp <- hoaddata::cr_md |> + tidyr::complete(cr_year, issn_l, cat) |> + mutate_all(~ ifelse(is.na(.), 0, .)) my_df <- shared_open_md_df(.data = md_tmp, issn_l = params$issn_l, publisher = params$publisher) htmltools::div( - class = "agreement-tbl", - # filters, - htmltools::div( - class = "filters", + class = "agreement-tbl", + # filters, htmltools::div( - class = "filter-input", - filter_select( - "filter_open_md_cat_input", - "Global / Germany", - my_df, - ~ cat, - multiple = FALSE - ) + class = "filters", + htmltools::div( + class = "filter-input", + filter_select( + "filter_open_md_cat_input", + "Global / Germany", + my_df, + ~cat, + multiple = FALSE + ) + ), ), - ), - # table - open_md_react( - my_df + # table + open_md_react( + my_df ), - # footer - htmltools::div( - class = "agreement-footer", - paste( - "Data sources: Journal Checker Tool, Crossref, OpenAlex. Last updated:", - Sys.Date(), - "." + # footer + htmltools::div( + class = "agreement-footer", + paste0( + "Data sources: Crossref, OpenAlex. Last updated: ", + Sys.Date(), + "." + ) ) - ) ) ``` @@ -361,7 +379,7 @@ $(document).ready(function() { ## Journal table -This table presents the publication volume and Open Access share by **`r params$publisher`** hybrid journal between 2017 and 2022, comparing global metrics with metrics only for articles by lead authors based in Germany. Charts show the yearly Open Access share. You can search for journals or select a table header to sort by journal name or a metric. +**`r params$publisher`**: This table presents the publication volume and Open Access share by hybrid journal between 2017 and 2022, comparing global metrics with metrics only for articles by lead authors based in Germany. Charts show the yearly Open Access share. You can search for journals or select a table header to sort by journal name or a metric. ::: column-body-outset @@ -371,9 +389,9 @@ This table presents the publication volume and Open Access share by **`r params$ #| message: false #| warning: false my_df <- summarize_pubs(var_summary = c(cr_year, issn_l)) |> - filter(issn_l %in% params$issn_l) |> - tidyr::complete(cr_year, issn_l, collection) |> - mutate_if(is.numeric, ~ replace(., is.na(.), 0)) + filter(issn_l %in% params$issn_l) |> + tidyr::complete(cr_year, issn_l, collection) |> + mutate_if(is.numeric, ~ replace(., is.na(.), 0)) ``` ```{r} @@ -382,12 +400,15 @@ my_df <- summarize_pubs(var_summary = c(cr_year, issn_l)) |> #| warning: false source("R/journal_tbl.R") htmltools::div( - class = "agreement-tbl", - journal_listing) + class = "agreement-tbl", + journal_listing +) ``` ::: +Dashboard last compiled on `r format(Sys.time(), '%d %B, %Y')` + ```{css} .my-tbl { margin: 0 auto; diff --git a/_template_oam.qmd b/_template_oam.qmd index 3e97b2c4..0b81d298 100644 --- a/_template_oam.qmd +++ b/_template_oam.qmd @@ -130,7 +130,7 @@ girafe( ### Creative Commons licenses over time by publisher -Percentage of Open Access in hybrid journals included in consortial transformative agreements in Germany by Creative Commons license types as provided by Crossref. Top 13 publishers in terms of total articles published between 2017 and 2022 are shown. +Percentage of Open Access in hybrid journals included in transformative agreements by Creative Commons license types and Top 13 publishers in terms of total Open Access articles published in these journals between 2017 and 2022. ```{r} #| echo: false @@ -278,7 +278,7 @@ girafe( ### Publisher league: Hybrid Open Access output -This interactive table highlights the hybrid Open Access publisher output by year, sorted by yearly total publication volume. It shows the number and proportion of Open Access articles provided under a Creative Commons license in hybrid journals included in consortial transformative agreements in Germany. The table also illustrates the number of hybrid journals per portfolio, which published articles in the year, and the corresponding percentage of hybrid journals with at least one Open Access article. You can filter by publisher, publication year, and between a global and a country-specific view relative to lead author publications from Germany. +This interactive table highlights the output of hybrid Open Access publishers by year, sorted by total annual publication volume. It shows the number and proportion of Open Access articles made available under a Creative Commons licence in hybrid journals included in transformative agreements. The table also shows the number of hybrid journals per portfolio and the corresponding percentage of hybrid journals with at least one OA article. You can filter by publisher, publication year and between a global and a country-specific view with respect to lead author publications from Germany. ::: column-body-outset @@ -288,7 +288,7 @@ This interactive table highlights the hybrid Open Access publisher output by yea source("R/publisher_league.R") # Prepare data table_df <- publisher_league_data_prep() |> -mutate(agreement_ = strsplit(esac_publisher, " \\(")) |> + mutate(agreement_ = strsplit(as.character(esac_publisher), " \\(")) |> mutate(agreement = map_chr(agreement_, 1)) |> mutate(lead = map_chr(agreement_, 2)) |> mutate(lead = gsub(")", "", lead)) |> @@ -351,8 +351,8 @@ htmltools::div( # footer htmltools::div( class = "agreement-footer", - paste( - "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated:", + paste0( + "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated: ", Sys.Date(), "." ) @@ -374,11 +374,11 @@ $(document).ready(function() { ## Country view -This section shows how hybrid open access has been adopted in different parts of the world. The analysis is based on country-affiliations of lead authors. Lead authors are the first named authors of scholarly articles who have usually undertaken most of the research presented in the article, although author roles can vary across discipline. We used OpenAlex as data source to determine lead author affiliation. +This section shows how hybrid open access has been adopted in different parts of the world. The analysis is based on the country affiliation of lead authors. Lead authors are the first named authors of scholarly articles, who have typically conducted most of the research presented in the article, although the role of lead authors can vary across disciplines. We used OpenAlex as a data source to determine the affiliation of lead authors. ### Open Access in hybrid journals by country -Percentage of Open Access Articles with a Creative Commons license per country. Showing the Top 20 most productive countries in terms of articles published in hybrid journals included in consortial transformative agreements in Germany between 2017 and 2022. The analysis is based on country-affiliations of lead authors. +Percentage of Open Access articles with a Creative Commons license per country. Shown are the Top 20 most productive countries in terms of articles published in hybrid journals included in transformative agreements between 2017 and 2022. The analysis is based on the country affiliation of the lead authors. ::: column-body-outset ```{r} @@ -452,8 +452,8 @@ htmltools::div( # footer htmltools::div( class = "agreement-footer", - paste( - "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated:", + paste0( + "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated: ", Sys.Date(), "." ) @@ -472,11 +472,11 @@ $(document).ready(function() { ## Open metadata -Open and comprehensive metadata is a key requirement in many transformative agreements. The following tables illustrate potential gaps in Crossref metadata relative to Open Access articles in hybrid journals included in consortial transformative agreements in Germany. +Open and comprehensive metadata is a key requirement of many transformative agreements. The following tables illustrate potential gaps in Crossref metadata for Open Access articles in hybrid journals included in transformative agreements. ### License metadata gaps -Comparison of open licence metadata in Crossref with Unpaywall per year. You can compare global metrics with metrics only for articles by lead authors based in Germany. In addition to Crossref licence information, Unpaywall also analyses publishers' websites to determine whether an article has been published under an open content licence. More Open Access articles derived from Crossref suggests a gap in Unpaywall-indexing, while more Open Access articles identified by Unpaywall suggests that publishers have not deposited licensing metadata in Crossref for all articles. +Comparison of open licence metadata in Crossref with Unpaywall per year. You can compare global metrics with metrics only for articles by lead authors based in Germany. In addition to Crossref licence information, Unpaywall also analyses publisher websites to determine whether an article has been published under an open content licence. More Open Access articles derived from Crossref may indicate an offset between metadata changes and Unpaywall-indexing, while more Open Access articles identified by Unpaywall suggest that publishers have not deposited licensing metadata in Crossref for all articles. ```{r upw_cr_license_gaps_data_prep} @@ -485,7 +485,7 @@ Comparison of open licence metadata in Crossref with Unpaywall per year. You can #| warning: false upw_cr_diff_year <- hoaddata::cr_upw |> dplyr::inner_join(oam, by = "issn_l") |> - mutate(agreement_ = strsplit(esac_publisher, " \\(")) |> + mutate(agreement_ = strsplit(as.character(esac_publisher), " \\(")) |> mutate(agreement = map_chr(agreement_, 1)) |> mutate(lead = map_chr(agreement_, 2)) |> mutate(lead = gsub(")", "", lead)) |> @@ -564,11 +564,10 @@ htmltools::div( # table upw_cr_react_tbl, # footer - # footer htmltools::div( class = "agreement-footer", - paste( - "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated:", + paste0( + "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated: ", Sys.Date(), "." ) @@ -647,8 +646,8 @@ htmltools::div( # footer htmltools::div( class = "agreement-footer", - paste( - "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated:", + paste0( + "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated: ", Sys.Date(), "." ) @@ -690,8 +689,8 @@ htmltools::div( # footer htmltools::div( class = "agreement-footer", - paste( - "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated:", + paste0( + "Data sources: Open Access Monitor (transformative agreement data), Crossref (article-level data including Open Access), OpenAlex (lead author country-affiliation). Last updated: ", Sys.Date(), "." ) @@ -701,6 +700,8 @@ htmltools::div( ::: +Dashboard last compiled on `r format(Sys.time(), '%d %B, %Y')` + ```{css} .my-tbl { margin: 0 auto; diff --git a/_template_overview.qmd b/_template_overview.qmd index b5afb9a3..3a852446 100644 --- a/_template_overview.qmd +++ b/_template_overview.qmd @@ -63,7 +63,7 @@ dplyr::mutate(cr_year = as.character(cr_year)) |> -The share of Open Access articles with a Creative Commons license in `r format(length(unique(jn_ind_df$issn_l)), big.mark = ",")` hybrid journals exposed by the [cOAlition S Journal Checker Tool](https://journalcheckertool.org/) is as follows: +The share of Open Access articles with a Creative Commons license in `r format(length(unique(jn_ind_df$issn_l)), big.mark = ",")` hybrid journals derived from [cOAlition S Transformative Agreement Public Data](https://journalcheckertool.org/transformative-agreements/) is as follows: ```{r teaser} @@ -79,7 +79,7 @@ basic_stat(jn_ind_df = jn_ind_df, jn_aff_df = jn_aff_df) -### Creative Commons licenses over time +## Creative Commons licenses over time Percentage of Open Access in hybrid journals included in transformative agreements by Creative Commons license types as provided by Crossref. @@ -130,7 +130,7 @@ girafe( ### Creative Commons licenses over time by publisher -Percentage of Open Access in hybrid journals included in transformative agreements by Creative Commons license types and Top 13 publishers in terms of total articles published between 2017 and 2022. +Percentage of Open Access in hybrid journals included in transformative agreements by Creative Commons license types and Top 13 publishers in terms of total Open Access articles published in these journals between 2017 and 2022. ```{r} #| echo: false @@ -278,7 +278,7 @@ girafe( ### Publisher league: Hybrid Open Access output -This interactive table highlights the hybrid Open Access publisher output by year, sorted . It shows the number and proportion of Open Access articles provided under a Creative Commons license in hybrid journals included in transformative agreements. The table also illustrates the number of hybrid journals per portfolio, which published articles in the year, and the corresponding percentage of hybrid journals with at least one Open Access article. You can filter by publisher, publication year, and between a global and a country-specific view relative to lead author publications from Germany. +This interactive table highlights the output of hybrid Open Access publishers by year, sorted by total annual publication volume. It shows the number and proportion of Open Access articles made available under a Creative Commons licence in hybrid journals included in transformative agreements. The table also shows the number of hybrid journals per portfolio and the corresponding percentage of hybrid journals with at least one OA article. You can filter by publisher, publication year and between a global and a country-specific view with respect to lead author publications from Germany. ::: column-body-outset @@ -358,11 +358,11 @@ $(document).ready(function() { ## Country view -This section shows how hybrid open access has been adopted in different parts of the world. The analysis is based on country-affiliations of lead authors. Lead authors are the first named authors of scholarly articles who have usually undertaken most of the research presented in the article, although author roles can vary across discipline. We used OpenAlex as data source to determine lead author affiliation. +This section shows how hybrid open access has been adopted in different parts of the world. The analysis is based on the country affiliation of lead authors. Lead authors are the first named authors of scholarly articles, who have typically conducted most of the research presented in the article, although the role of lead authors can vary across disciplines. We used OpenAlex as a data source to determine the affiliation of lead authors. ### Open Access in hybrid journals by country -Percentage of Open Access Articles with a Creative Commons license per country. Showing the Top 20 most productive countries in terms of articles published in hybrid journals included in transformative agreements between 2017 and 2022. The analysis is based on country-affiliations of lead authors. +Percentage of Open Access articles with a Creative Commons license per country. Shown are the Top 20 most productive countries in terms of articles published in hybrid journals included in transformative agreements between 2017 and 2022. The analysis is based on the country affiliation of the lead authors. ::: column-body-outset ```{r} @@ -447,11 +447,11 @@ $(document).ready(function() { ## Open metadata -Open and comprehensive metadata is a key requirement in many transformative agreements. The following tables illustrate potential gaps in Crossref metadata relative to Open Access articles in hybrid journals included in transformative agreements. +Open and comprehensive metadata is a key requirement of many transformative agreements. The following tables illustrate potential gaps in Crossref metadata for Open Access articles in hybrid journals included in transformative agreements. ### License metadata gaps -Comparison of open licence metadata in Crossref with Unpaywall per year. You can compare global metrics with metrics only for articles by lead authors based in Germany. In addition to Crossref licence information, Unpaywall also analyses publishers' websites to determine whether an article has been published under an open content licence. A positive gap indicates a licensing delay by Unpaywall, while a negative gap indicates that the publisher has not provided licensing metadata to Crossref. +Comparison of open licence metadata in Crossref with Unpaywall per year. You can compare global metrics with metrics only for articles by lead authors based in Germany. In addition to Crossref licence information, Unpaywall also analyses publisher websites to determine whether an article has been published under an open content licence. More Open Access articles derived from Crossref may indicate an offset between metadata changes and Unpaywall-indexing, while more Open Access articles identified by Unpaywall suggest that publishers have not deposited licensing metadata in Crossref for all articles. ```{r upw_cr_license_gaps_data_prep} @@ -648,6 +648,8 @@ htmltools::div( ::: +Dashboard last compiled on `r format(Sys.time(), '%d %B, %Y')` + ```{css} .my-tbl { margin: 0 auto; diff --git a/about.qmd b/about.qmd index 1fbb6a72..abc4da0d 100644 --- a/about.qmd +++ b/about.qmd @@ -1,41 +1,86 @@ --- -title: "About" +title: "About Hybrid Open Access Dashboards (HOAD)" +subtitle: "Open source data analytics to measure hybrid open access through transformative agreements" + format: html: theme: default toc: true --- -:::{.callout-warning} +## Aim + +As library consortia increasingly negotiate [transformative agreements](https://esac-initiative.org/about/transformative-agreements/), the goal of HOAD is to highlight the extent to which hybrid journals that are part of these agreements have transitioned to full open access. + +Our resources can help libraries and consortia to [model +for a fully open access future](https://esac-initiative.org/about/transformative-agreements/reference-guide/) and derive key insights such as: + +- How much content in hybrid journals is already published openly under a Creative Commons license? +- What is the distribution of Germany’s output in hybrid journals compared to that of other countries? +- Do publishers make metadata openly available and if not, where are the gaps? + +HOAD is open source and licensed under CC0. We believe that in order to overcome cost barriers and the [growing ownership of data analytics by academic publishers](https://www.science.org/doi/10.1126/science.aba3763), Open Access monitoring needs to be as open and reproducible as possible. + + +## Data and methods + +To engage with everyone, our open source dashboards combine open data from multiple sources as follows: + +- Journals included in transformative agreements are obtained from the [cOAlition S Transformative Agreements Public Data](https://journalcheckertool.org/transformative-agreements/) (July 2021 and July 2022 snapshots) and [Germany's Open Access Monitor](https://doi.org/10.26165/JUELICH-DATA/VTQXLM) (March 2022). We have enriched both journal data sources with ISSN-L, a linking identifier for ISSN variants. Then, we excluded fully open access journals from the cOAlition S Transformative Agreements Public Data by cross-checking with several datasets of fully open access journals: the [Directory of Open Access Journals (DOAJ)](https://doaj.org/), [Bielefeld GOLD OA](https://doi.org/10.4119/unibi/2961544) and [Unpaywall](https://unpaywall.org/). +- [Crossref](https://www.crossref.org/) is our main data source for determining the publication volume in hybrid journals including the uptake of Open Access through Creative Commons licenses. The [ESAC guidelines](https://esac-initiative.org/about/transformative-agreements/reference-guide/), a community recommendation for negotiating transformative agreements, require publishers to make key metadata elements publicly available through Crossref, such as Creative Commons licensing information for Open Access articles. As a [Crossref Metadata Plus subscriber](https://www.crossref.org/services/metadata-retrieval/metadata-plus/), we used monthly Crossref snapshots to derive publication data. +- [OpenAlex](https://openalex.org/) is our data source for determining the country affiliation of lead authors. A [lead author](https://en.wikipedia.org/wiki/Lead_author) is the first named author of a scholarly article who has usually carried out most of the research presented in the article, although author roles can vary across disciplines. We used OpenAlex monthly snaphots as a data source to determine lead author affiliations. +- To highlight potential gaps between Crossref open licensing metadata and information provided via journal webpages, we used [Unpaywall](https://unpaywall.org/) via OpenAlex as a complementary data source for Open Access articles in hybrid journals. -Under construction. We will add more details with the official launch end of 2022. +This compiled data is openly available through an R package, [hoaddata](https://subugoe.github.io/hoaddata/). hoaddata contains not only datasets about hybrid open access. It also includes code (mostly SQL) used to compile the data by connecting to [our cloud-based Google Big Query data warehouse](https://subugoe.github.io/scholcomm_analytics/data.html), where we store big scholarly data from Crossref, OpenAlex and Unpaywall. hoaddata is automatically built and updated per month using GitHub Actions, a continuous integration service. -::: +## Dashboard implementation -This open source dashboard is currently developed at the Göttingen State and University Library, Germany, supported by the German Research Foundation on grant [416115939](https://gepris.dfg.de/gepris/projekt/416115939?context=projekt&task=showDetail&id=416115939&). +HOAD is made with [Quarto](https://quarto.org/), an open source tool for scientific and technical publishing. Quarto documents contain text and analytical source code, in our case R, and are rendered as HTML. More specifically, we created parameterised reports from which Quarto generates publisher-specific views. The resulting website is published on GitHub pages. -## Data and Methods +As statistical tools, we used a bunch of [tidyverse](https://www.tidyverse.org/) packages. Visualisations were made interactive through [ggiraph](https://davidgohel.github.io/ggiraph/) and [plotly](https://plotly.com/r/). Interactive tables were implemented using [reactable](https://glin.github.io/reactable/). These packages have great documentation with lots of examples that has helped us to build HOAD 😀. -To engage with everyone, our open source data analysis combines open data from [Crossref](https://www.crossref.org/), [OpenAlex](https://openalex.org/) and [Unpaywall](https://unpaywall.org/) as follows: +## Limitations -- Crossref is our main data source to determine the hybrid open access uptake, because the ESAC guidelines and many transformative agreements require that publisher make key metadata elements publicly available through Crossref like Creative Commons licensing information for open access articles. -- To highlight potential gaps between Crossref and other open content license information provided by publishers, we used Unpaywall as an complementary data source for open access articles in hybrid journals -- OpenAlex is our data source to determine country affiliations from lead authors. A lead author is the first named author of a scholarly article who has usually undertaken most of the research presented in the article, although author roles can vary across discipline. We used OpenAlex as data source to determine lead author affiliation. +Our work should be used in a responsible way. Limitations include: -For more details, see our [blog post](https://subugoe.github.io/scholcomm_analytics/posts/oam_hybrid/). +- Journal-level data associated with publishers and transformative agreements are highly dynamic and are subject of change. +- Although we were able to exclude most full open access journals from our data, there are a few subscription-only journals in our dataset that do not offer open access publishing options. +- Crossref metadata does not distinguish between article types. We used an extended version of the Unpwaywall paratext recognition approach to exclude non-scientific content from our data. However, the annual publication volume of some journals may be inflated by proceedings supplements. +- OpenAlex, from which we obtained our affiliation data, is a relatively new scholarly data source. There is ongoing activity to improve the parsing, normalisation, and disambiguation of institutions (see [here](https://doi.org/10.48550/arXiv.2205.01833)). We used [pattern matching to increase the recall of country affiliations](https://github.com/subugoe/hoaddata/blob/main/inst/sql/cr_openalex_inst_full.sql). -## Implementation +To better understand the strengths and limitations of our data work, we commissioned a study from the [Deutsche Zentrum fĂŒr Hochschul- und Wissenschaftsforschung](https://www.dzhw.eu/forschung/projekt?pr_id=484). The aim is to compare our open data with information contained in the proprietary bibliometrics database Scopus in relation to hybrid open access. Key findings will be made available. -tba +## Funding + +HOAD is a scholarly communications analytics project funded by the [German Research Foundation (DFG)](https://gepris.dfg.de/gepris/projekt/416115939) to [support the implementation of consortial transformative agreements in Germany](https://doi.org/10.5282/o-bib/2017H2S87-95). The work is carried out at the [Göttingen State and University Library (SUB Göttingen)](https://www.sub.uni-goettingen.de/sub-aktuell/). ## Contribute This dashboard has been developed in the open using open tools. There are a number of ways you can help make the dashboard better: -If you don’t understand something, please let me know and submit an [issue](https://github.com/subugoe/hoaddash/issues). +- If you don’t understand something or find a bug, please let us know and submit an [issue](https://github.com/subugoe/hoaddash/issues). +- Do you have an idea of what meaningful data analysis is missing? Please let everyone know and submit an [issue](https://github.com/subugoe/hoaddash/issues). +- Want to provide more context about your agreement? [Please email us](mailto:najko.jahn@sub.uni-goettingen.de)! +- Let us know if we can help you to provide a detailed view of your consortial transformative agreements. We are not limited to Germany and can extend our dashboards to other countries and consortia. [Please email us](mailto:najko.jahn@sub.uni-goettingen.de)! + +## Contributors + +SUB Göttingen Team: Dr. Inke Achterberg, Nick Haupka, Dr. Anne Hobert, Najko Jahn. + +## License + +This work is license under [CC0](https://creativecommons.org/publicdomain/zero/1.0/legalcode). + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute these materials in any form, for any purpose, commercial or non-commercial, and by any means. + +HOAD reflects our current understanding and is likely to change. We work hard to keep the dashboards and the underlying data up to date and accurate, but we do not accept any liability in relation to any errors or omissions. + +This work re-used the following dataset: + +Pollack, Philipp; Lindstrot, Barbara; Barbers, Irene, Stanzel, Franziska, 2022, "Open Access Monitor: Zeitschriftenlisten (V2)", -Feel free to add new features or fix bugs by sending a pull request. +published under CC BY 4.0. ## Contact -Feel free to contact Najko Jahn \ No newline at end of file +Feel free to contact Najko Jahn . \ No newline at end of file diff --git a/create_qmd.R b/create_qmd.R index 9f8b653e..c88ccce3 100644 --- a/create_qmd.R +++ b/create_qmd.R @@ -4,15 +4,15 @@ library(purrr) library(hoaddata) library(ymlthis) library(readr) +library(fs) # Load agreements my_ta <- readr::read_csv("config.csv") # Get ISSNs get_ta_jns <- function(publisher = NULL, collection = c("jct", "oam")) { - match.arg(collection) - - if(collection == "jct") { + + if (collection == "jct") { issn_l <- hoaddata::jct_hybrid_jns |> dplyr::filter(esac_publisher == publisher) |> distinct(issn_l) |> @@ -25,45 +25,61 @@ get_ta_jns <- function(publisher = NULL, collection = c("jct", "oam")) { } tibble::tibble(issn_l = issn_l, publisher = publisher, collection = collection) |> # Create directory paths - mutate(dir_name = paste0(collection, - "/", - tolower(gsub(" |[()]", "", publisher)))) + mutate(dir_name = paste0( + collection, + "/", + tolower(gsub(" |[()]", "", publisher)) + )) } -ta_jns <- purrr::pmap_df(list(publisher = my_ta$publisher, collection = my_ta$collection), get_ta_jns) +ta_jns <- purrr::pmap_df(list(publisher = my_ta$publisher, collection = my_ta$collection), get_ta_jns) # Create directories ta_dir_create <- function(ta_dirs = NULL) { lapply(ta_dirs, fs::dir_create) } +# Copy funder logo +funding_cp <- function(ta_dirs = NULL) { + lapply(ta_dirs, function(x) { + fs::file_copy(c("funding_note.md", "dfg_logo.jpg", "sub_logo.svg"), x, overwrite = TRUE) + } + ) +} + # Create templates ta_template_create <- function(.publisher = NULL, .collection = NULL) { - my_df <- ta_jns |> + my_df <- ta_jns |> dplyr::filter(publisher %in% .publisher) - # Title - if (unique(my_df$collection) == "jct") { - my_title <- paste0(unique(my_df$publisher), - ": Hybrid Journals in Transformative Agreements") - my_subtitle <- paste0("This open source dashboard highlights the Open Access uptake in ", unique(my_df$publisher), " hybrid journals in its transformative agreements as listed by the cOAlition S Journal Checker Tool. You can analyse progress made over time by open license, publisher and country. You can also monitor the availability of publisher-provided metadata in Crossref.") - } else { - my_title <- unique(my_df$publisher) - my_subtitle <- paste0("How open are hybrid journals included in the consortial transformative agreement ", unique(my_df$publisher), " ? This open source dashboard highlights the Open Access uptake in hybrid journals included in the German consortial transformative agreement ", unique(my_df$publisher), " as listed by the Open Access Monitor. You can analyse progress made over time by open license, publisher and country. You can also monitor the availability of publisher-provided metadata in Crossref.") - } - # Template - ymlthis::yml() |> - ymlthis::yml_title(my_title) |> - ymlthis::yml_subtitle(my_subtitle) |> - ymlthis::yml_params(issn_l = my_df$issn_l, - publisher = unique(my_df$publisher), - collection = unique(my_df$collection)) |> - ymlthis::yml_discard(c("author", "date")) |> - ymlthis::use_rmarkdown(path = paste0(unique(my_df$dir_name), "/index.qmd"), - template = "_template_index.qmd", - include_yaml = TRUE, - open_doc = FALSE, - overwrite = TRUE) + # Title + if (unique(my_df$collection) == "jct") { + my_title <- paste0( + unique(my_df$publisher), + ": Hybrid Journals in Transformative Agreements" + ) + my_subtitle <- paste0("This open source dashboard highlights the Open Access uptake in ", unique(my_df$publisher), " hybrid journals in its transformative agreements as listed by the cOAlition S Journal Checker Tool. You can analyse progress made over time by open license, publisher and country. You can also monitor the availability of publisher-provided metadata in Crossref.") + } else { + my_title <- unique(my_df$publisher) + my_subtitle <- paste0("How open are hybrid journals included in the German consortial transformative agreement ", unique(my_df$publisher), "? You can analyse progress made over time by open license, publisher and country. You can also monitor the availability of publisher-provided metadata in Crossref.") + } + # Template + ymlthis::yml() |> + ymlthis::yml_title(my_title) |> + ymlthis::yml_subtitle(my_subtitle) |> + ymlthis::yml_params( + issn_l = my_df$issn_l, + publisher = unique(my_df$publisher), + collection = unique(my_df$collection) + ) |> + ymlthis::yml_discard(c("author", "date")) |> + ymlthis::use_rmarkdown( + path = paste0(unique(my_df$dir_name), "/index.qmd"), + template = "_template_index.qmd", + include_yaml = TRUE, + open_doc = FALSE, + overwrite = TRUE + ) } # Worklfow @@ -72,11 +88,14 @@ ta_template_create <- function(.publisher = NULL, .collection = NULL) { my_ta <- readr::read_csv("config.csv") # Get journals specific to TA collection -ta_jns <- purrr::pmap_df(list(publisher = my_ta$publisher, collection = my_ta$collection), get_ta_jns) +ta_jns <- purrr::pmap_df(list(publisher = my_ta$publisher, collection = my_ta$collection), get_ta_jns) # Create directories ta_dir_create(unique(ta_jns$dir_name)) +# Copy funding note +funding_cp(unique(ta_jns$dir_name)) + # Create templates purrr::pmap(list(.publisher = my_ta$publisher, .collection = my_ta$collection), ta_template_create) @@ -86,3 +105,4 @@ fs::file_copy("_template_overview.qmd", "index.qmd", overwrite = TRUE) # OAM overview fs::file_copy("_template_oam.qmd", "oam/index.qmd", overwrite = TRUE) +funding_cp("oam/") diff --git a/dfg_logo.jpg b/dfg_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..42c516f1f80dfb3168c31e1d4ab419bac7ebad86 GIT binary patch literal 76589 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