diff --git a/R/dashboard_panels.R b/R/dashboard_panels.R index dda6aa3..385625a 100644 --- a/R/dashboard_panels.R +++ b/R/dashboard_panels.R @@ -5,7 +5,7 @@ homepage_panel <- function() { gov_row( column( 12, - h1("16 to 18 time series attainment and single year entry dashboard"), + h1("16 to 18 time series attainment and single year entry dashboard"), br(), br() ), @@ -40,8 +40,15 @@ homepage_panel <- function() { p("The line charts display the yearly trend and grades for all students and by gender, while the female - male gender gap shows the difference in average point score. To view and explore trend select up to four institution types from the drop-down menu at the top of the page."), tags$div( - title = "(A level subject entries and result by all", + title = "(A level students entering maths and science by gender", + h3(actionLink("link_to_alevelMathsScience_tab", "A level students entering maths and science by gender")), + p("The line chart shows the yearly trend in the proportion of A level students entering maths and science from 2009/10 to 2022/23 (end of 16-18 study). + Select one subject or combination from the dropdown menu at the top of the page, followed by the start year to view changes over time (end year is fixed at the latest year available).") + ), + tags$div( + title = "(A level subject entry and grade: comparison by subject", h3(actionLink("link_to_alevelAllSubject_tab", "A level subject entry and grade: Comparison by subject")), + p("The line charts for subject entries and cumulative percentage grades display the yearly trend from 1995/96 to 2022/23. Drop-down menus at the top of the page allows for the selection and comparison of up to four subjects and cumulative grades. @@ -49,9 +56,11 @@ homepage_panel <- function() { p("The data refers to all entries by 16-18 year olds in the year stated (where 2023 means 2022/23 academic year).") ), tags$div( - title = "(A level subject entry and result by gender", + title = "A level subject entry and result: comparison by gender", + h3(actionLink("link_to_alevelFmSubject_tab", "A level subject entry and result: Comparison by gender")), p("The line charts for subject entries and cumulative percentage grades display the yearly trend for female and male from 1995/96 to 2022/23. + Select one subject from the dropdown menu at the top of the page, followed by the start year to view changes over time (end year is fixed at the latest year available)."), p(""), br(), br(), @@ -133,7 +142,7 @@ homepage_panel <- function() { dashboard_panel_aps <- function() { tabPanel( value = "dashboard", - "Attainment: APS per entry and average result", + "Attainment: APS per entry & average result (end of 16-18 study)", # Define UI for application that draws a histogram @@ -200,7 +209,7 @@ dashboard_panel_aps <- function() { inputId = "ees_1", label = "Visit Explore Education Statistics", icon = icon("table-cells"), - onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2021-22', '_blank')", + onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2022-23', '_blank')", style = "width:100%;white-space:normal;" ) ), @@ -369,7 +378,9 @@ dashboard_panel_aps <- function() { dashboard_panel_sub_all <- function() { tabPanel( value = "dashboard_alse", - "A level subject entry and grade: comparison by subject", + + "A level subject entry & grade: comparison by subject (single academic year)", + # Define UI for application that draws a histogram @@ -442,7 +453,7 @@ dashboard_panel_sub_all <- function() { inputId = "ees_2a", label = "Visit Explore Education Statistics", icon = icon("table-cells"), - onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2021-22', '_blank')", + onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2022-23', '_blank')", style = "width:100%;white-space:normal;" ) ), @@ -567,7 +578,9 @@ dashboard_panel_sub_all <- function() { dashboard_panel_sub_fm <- function() { tabPanel( value = "dashboard_fm", - "A level subject entry and grade: comparison by gender", + + "A level entry & result: comparison by gender (single academic year)", + # Define UI for application that draws a histogram @@ -629,7 +642,7 @@ dashboard_panel_sub_fm <- function() { inputId = "ees_2b", label = "Visit Explore Education Statistics", icon = icon("table-cells"), - onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2021-22', '_blank')", + onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2022-23', '_blank')", style = "width:100%;white-space:normal;" ) ), @@ -742,3 +755,152 @@ dashboard_panel_sub_fm <- function() { ) ) } + + + +############## Maths and science ################# + +dashboard_panel_ms <- function() { + tabPanel( + value = "dashboard_ms", + "A level maths & science: comparison by gender (end of 16-18 study)", + + # Define UI for application that draws a histogram + + # Sidebar with a slider input for number of bins + gov_main_layout( + gov_row( + column( + width = 12, + h2("A level maths and science entry (end of 16 to 18 study): comparison by gender, England from 2009/10 to 2022/23") + ), + column( + width = 12, + div( + class = "well", + style = "min-height: 100%; height: 100%; overflow-y: visible", + gov_row( + column( + width = 6, + + selectizeInput("subjectMs", "Select one subject or combination", + choices = list( + `Single subject` = list( + "Biology", "Chemistry", "Computer science", "Further maths", "Maths", + "Physics" + ), + + `Combination` = list("One maths/science subject", "Two maths/science subjects", + "Three maths/science subjects", "Four maths/science subjects", "Zero maths/science subjects")), selected = c("Maths") + + ) + ), + column( + width = 3, + selectInput( + inputId = "year_start_ms", + label = "Select start year", + choices = seq(2010, latest_year, 1), + selected = 2010 + ) + ), + column( + width = 3, + selectInput( + inputId = "year_end_ms", + label = " End year", + choices = latest_year, + # choices = seq(1996, latest_year, 1), + selected = latest_year + ) + ), + column( + width = 4, + p(strong("Download full dataset")), + downloadButton( + outputId = "downloadDataSubjectMs", + label = "Download data", + icon = shiny::icon("download"), + class = "downloadButton" + ) + ), + column( + width = 4, + p(strong("For more tables and metadata")), + actionButton( + inputId = "ees_3", + label = "Visit Explore Education Statistics", + icon = icon("table-cells"), + onclick = "window.open('https://explore-education-statistics.service.gov.uk/find-statistics/a-level-and-other-16-to-18-results/2022-23', '_blank')", + style = "width:100%;white-space:normal;" + ) + ), + column( + width = 4, + p(strong("Reset chart selection")), + align = "right", + actionButton(inputId = "resetSubMs", label = "Reset selections", icon = icon("fas fa-arrows-rotate")) + ) + + ) + ) + ) + + + ), + column( + width = 12, + tabsetPanel( + id = "tabsetpanel3", + tabPanel( + value = "alevelMsSubject", + "Maths and Science", + fluidRow( + column( + width = 12, + h3("A level maths and science: Comparison by gender"), + textOutput("textSubMs"), br() + # column( + # width = 6, + # paste("Download chart data:"), br(), + # downloadButton( + # outputId = "downloadSubMs", + # label = "Download data", + # icon = shiny::icon("download"), + # class = "downloadButton" + # ) + # ) + ), + # valueBoxOutput("", width = 3), + # valueBoxOutput("boxapsGrade", width = 6), + box( + width = 12, + plotlyOutput("plotSubjectMs") %>% spinner() + + + ) + ), + + column( + width = 12, + # div( + # class = "well", + # style = "min-height: 100%; height: 100%; overflow-y: visible", + fluidRow( + column(width = 12), + p("Note: The number of students from 2009/10 to 2017/18 has been calculated from rounded data, so less precise than the number of students from + 2018/19 to 2022/23") + + ) + ), + + dataTableOutput("tabMs"), + + + ) + ) + ) + ) + ) +} + \ No newline at end of file diff --git a/R/plotting.R b/R/plotting.R index 9a3212a..e499507 100644 --- a/R/plotting.R +++ b/R/plotting.R @@ -5,39 +5,6 @@ -# createTimeSeriesHeadline <- function(dfAps, allAps){ -# -# fig<-ggplot( -# -# dfAps, aes(x=year, y=aps, group=cert_type)) + -# geom_col(aes(fill=cert_type), width=0.9, position=position_dodge())+ -# -# geom_text(aes(label=aps_grade, group=cert_type), position=position_dodge(0.9), vjust=.5, hjust ="top", size=5, color="white", show.legend=F, angle=90)+ -# -# ggtitle(paste0("\n Average point score and grade: \n ", allAps))+ -# # coord_cartesian(ylim=c(10,60)) + -# scale_x_continuous(breaks=seq(2016,2023,1)) + -# scale_fill_manual(values =c('#12436D','#28A197','#801650'))+ -# labs(x="", y="")+ -# -# theme_classic() + -# theme (legend.position = c(.55, 1), -# legend.direction="horizontal", -# text = element_text(size = 12), -# # axis.text.x = element_text(angle = 300), -# axis.text=element_text(size=12), -# axis.title=element_text(size=12), -# # plot.margin=margin(rep(15,4)), -# legend.text=element_text(size=12), legend.title=element_blank()) + -# expand_limits(x=2016, y=0) -# -# return(fig) -# -# -# } - - - createTimeSeriesHeadline <- function(dfAps, allAps) { fig <- dfAps %>% rename(Year = "year", APS = "aps", Qualification = "cert_type") @@ -60,7 +27,7 @@ createTimeSeriesHeadline <- function(dfAps, allAps) { axis.text.x = element_text(angle = 300), axis.title.x = element_text(size = 10), axis.title.y = element_text(margin = margin(r = 12)), - axis.line = element_line(size = 1.0) + axis.line = element_line(linewidth =1.0) ) + expand_limits(x = 2016, y = 0) + ggtitle(paste0("\n Average point score: ", allAps)) @@ -84,14 +51,13 @@ createTimeSeriesHeadline <- function(dfAps, allAps) { - # Joint plot function for Alevel Aps from 2013 createApsTimeSeries <- function(dfAps, instGroup, instType, allGender) { validate(need(dfAps$school_type, message = "To view charts select type of students and up to 4 institution types from the drop-down menus at the top page")) - - fig2 <- dfAps %>% - filter(year >= 2016) + + fig2<-dfAps%>% + filter(year>=2016) fig1 <- ggplot(dfAps, aes(x = year_2013_2015, y = aps_2013_2015, color = school_type)) + @@ -121,7 +87,8 @@ createApsTimeSeries <- function(dfAps, instGroup, instType, allGender) { axis.line = element_line(size = 1.0) ) - fig2 <- ggplot(fig2, aes(x = year_2016_2023, y = aps_2016_2023, color = school_type)) + + + fig2 <- ggplot(fig2, aes(x = year, y = aps_2016_2023, color = school_type)) + geom_line(stat = "identity", linewidth = 1.5) + geom_curve(aes(x = 2016.5, y = 48, xend = 2016, yend = 45), curvature = .3, @@ -139,7 +106,9 @@ createApsTimeSeries <- function(dfAps, instGroup, instType, allGender) { color = "black", size = .05, angle = 90 ) + geom_label(aes(label = aps_grade_2016_2023, y = aps_2016_2023), show.legend = F) + + ggtitle(paste0("\n APS & grade 2015/16 to 2022/23: ", allGender)) + + coord_cartesian(ylim = c(10, 60)) + scale_y_continuous(limits = c(10, 60)) + scale_x_continuous(breaks = seq(2016, 2023, 1)) + @@ -162,7 +131,7 @@ createApsTimeSeries <- function(dfAps, instGroup, instType, allGender) { axis.title = element_text(size = 12), legend.text = element_text(size = 12), axis.text.x = element_text(angle = 300), - axis.line = element_line(size = 1.0) + axis.line = element_line(linewidth = 1.0) ) finalFig <- (fig1 + fig2 + plot_layout(widths = c(0.7, 2)) & @@ -194,7 +163,9 @@ createApsFmTimeSeries <- function(dfApsFm, instGroup, instType, fmGender) { color = "black", size = .05, angle = 90 ) + geom_label(aes(label = aps_grade_2016_2023, y = aps_2016_2023), show.legend = F) + + ggtitle(paste0("Average point score and grade: ", fmGender)) + + coord_cartesian(ylim = c(10, 60)) + scale_x_continuous(breaks = seq(2016, 2023, 1)) + scale_colour_manual( @@ -216,7 +187,7 @@ createApsFmTimeSeries <- function(dfApsFm, instGroup, instType, fmGender) { axis.title = element_text(size = 12), legend.text = element_text(size = 12), axis.text.x = element_text(angle = 300), - axis.line = element_line(size = 1.0) + + axis.line = element_line(linewidth = 1.0) + expand_limits(x = 0, y = 0) ) fmFig @@ -254,7 +225,7 @@ createGenderGap <- function(dfApsGap, instGroup, instType) { axis.text.x = element_text(angle = 300), axis.title.x = element_blank(), axis.title.y = element_text(margin = margin(r = 10)), - axis.line = element_line(size = 1.0) + axis.line = element_line(linewidth = 1.0) ) ggplotly(fig, tooltip = c("x", "y", "colour")) %>% config( @@ -306,7 +277,7 @@ createTimeSeriesSubject <- function(dfSubjectA, subAll, subName) { axis.text.x = element_text(angle = 300), axis.title.x = element_blank(), axis.title.y = element_text(margin = margin(r = 10)), - axis.line = element_line(size = 1.0) + axis.line = element_line(linewidth = 1.0) ) + expand_limits(x = 0, y = 0) + ggtitle(paste0("\nA level entry count: ", subAll)) @@ -357,7 +328,7 @@ createTimeSeriesResult <- function(dfSubjectA, subAll, resAll, subName) { axis.text.x = element_text(angle = 300), axis.title.x = element_blank(), axis.title.y = element_text(margin = margin(r = 10)), - axis.line = element_line(size = 1.0) + axis.line = element_line(linewidth = 1.0) ) + expand_limits(x = 0, y = 0) + ggtitle(paste0("\nA level cumulative percentage: ", resAll, "\n", subAll)) @@ -412,7 +383,7 @@ createTimeSeriesSubjectFm <- function(dfSubjectG, subByFm) { axis.text.x = element_text(angle = 300), axis.title.x = element_text(size = 10), axis.title.y = element_text(margin = margin(r = 12)), - axis.line = element_line(size = 1.0) + axis.line = element_line(linewidth = 1.0) ) + expand_limits(x = 0, y = 0) + ggtitle(paste0(" \n A level entry count: ", subByFm)) @@ -472,3 +443,58 @@ createTimeSeriesResultFm <- function(dfSubjectG, subByFm, resByFm) { hovermode = "x" ) } + + +############################ Plot maths and science ############################################### + +createTimeSeriesSubjectMs <- function(dfSubjectMs, subByMs) { + validate(need(dfSubjectMs$subject, message = "To view chart select one subject and a start year from the drop-down menus at the top of the page.")) + + + fig <- dfSubjectMs %>% + rename(Year = "year", Percent = "percent_entered", Subject = "subject", Gender = "characteristic_gender") + fig <- ggplot( + fig, aes( + x = Year, y = Percent, + color = Gender + ) + ) + + geom_line(stat = "identity", linewidth = 1) + + # geom_point(size=1.5)+ + scale_x_log10(breaks = seq(2010, 2023, 1)) + + scale_y_continuous(labels = scales::comma) + + scale_color_manual( + # breaks = (dfSubjectG$charateristic_gender), + values = c("#3D3D3D", "#F46A25", "#12436D") + ) + + labs(x = "", y = "", color = "") + + theme_classic() + + theme( + legend.position = "", + text = element_text(size = 12), + legend.title = element_blank(), + plot.title = element_text(size = 10), + axis.text.x = element_text(angle = 300), + axis.title.x = element_text(size = 10), + axis.title.y = element_text(margin = margin(r = 12)), + axis.line = element_line(linewidth = 1.0) + ) + + expand_limits(x = 0, y = 0) + + ggtitle(paste0(" \n A level percent entry: " , subByMs)) + + ggplotly(fig, tooltip = c("x", "y", "colour")) %>% + config( + modeBarButtonsToRemove = c( + "zoom2d", "zoomIn2d", "zoomOut2d", "pan2d", "autoScale2d", + "resetScale2d", "hoverCompareCartesian", "drawrect", "select2d", "lasso2d", + "hoverClosestCartesian", "toggleSpikelines" + ), displaylogo = FALSE, + toImageButtonOptions = list(format = "svg", filename = "subjectMs_image") + ) %>% + layout( + xaxis = list(fixedrange = TRUE), yaxis = list(fixedrange = TRUE), + legend = list(orientation = "h", x = .2, y = -.3), + hovermode = "x" + ) +} + diff --git a/datafiles_log.csv b/datafiles_log.csv index 706c3dc..d550802 100644 --- a/datafiles_log.csv +++ b/datafiles_log.csv @@ -1,15 +1,9 @@ filename,status -data/la_maintained_schools_revenue_reserve_final.csv,published -data/date_format.csv,published -data/date_format.meta.csv,published -data/some_unpublished_data.csv,unpublished -data/alevel_attainmentV1.csv,published -data/all_attainmentV1.csv,published -data/all_level_timeseries_data_1996_to_2022V1.csv,published -data/aps_gender_gapV2.csv,unpublished -data/all_level_timeseries_data_1996_to_2022V2.csv,unpublished -data/all_attainmentV2.csv,unpublished -data/alevel_attainmentV2.csv,unpublished +alevel_attainment_with_rev2023.csv,unpublished +all_attainment_with_rev2023.csv,unpublished +all_alevel_timeseries_data_1996_to_2023rev.csv,unpublished +aps_gender_gap_with_rev2023.csv,unpublished +maths_science_2010_2023rev.csv,unpublished data/alevel_attainment_with_prov2023.csv,published data/all_alevel_timeseries_data_1996_to_2023.csv,published data/all_attainment_with_prov2023.csv,published diff --git a/global.R b/global.R index 5f98ceb..c5b4cac 100644 --- a/global.R +++ b/global.R @@ -13,7 +13,7 @@ shhh <- suppressPackageStartupMessages # It's a library, so shhh! shhh(library(shiny)) # shhh(library(shinya11y)) shhh(library(shinyjs)) -shhh(library(tools)) +#shhh(library(tools)) shhh(library(testthat)) shhh(library(shinytest)) shhh(library(shinydashboard)) @@ -33,7 +33,7 @@ shhh(library(hrbrthemes)) shhh(library(forcats)) shhh(library(patchwork)) shhh(library(readr)) -shhh(library(dfeshiny)) +#shhh(library(dfeshiny)) # Functions --------------------------------------------------------------------------------- @@ -169,6 +169,7 @@ homeEconomics <- dfAlevelSubject %>% # Read in A level aggregate APS and grade by institution type + data <- read_alevel_aps_data() dfAlevelAps <- data %>% rename( @@ -177,11 +178,11 @@ dfAlevelAps <- data %>% ) %>% select( time_period, year, school_type, school_type_group, number_of_students, aps_2016_2023, aps_2013_2015, aps_grade_2016_2023, aps_grade_2013_2015, - characteristic_gender, time_period, year_2016_2023, year_2013_2015, version - ) %>% + + characteristic_gender, time_period, year, year_2013_2015, version) %>% + mutate( - year_2016_2023 = year, - aps_grade_2016_2023 = as.factor(aps_grade_2016_2023), + aps_grade_2016_2023 = as.factor(aps_grade_2016_2023), aps_grade_2013_2015 = as.factor(aps_grade_2013_2015), aps_2016_2023 = round(as.numeric(aps_2016_2023), 2), aps_2013_2015 = round(as.numeric(aps_2013_2015), 2), @@ -190,8 +191,8 @@ dfAlevelAps <- data %>% school_type_group = as.factor(school_type_group), version = as.factor(version), school_type = as.factor(recode(school_type, - "All schools and FE sector colleges" = "All Institutions", - "All state-funded schools and colleges" = "All state-funded" + "All schools and FE sector colleges" = "All Institutions", + "All state-funded schools and colleges" = "All state-funded" )) ) @@ -210,8 +211,8 @@ fmDiff <- dfApsGenderGap %>% mutate( gender_gap = round(as.numeric(gender_gap), 1), school_type = as.factor(recode(school_type, - "All schools and FE sector colleges" = "All Institutions", - "All state-funded schools and colleges" = "All state-funded" + "All schools and FE sector colleges" = "All Institutions", + "All state-funded schools and colleges" = "All state-funded" )) ) @@ -238,11 +239,26 @@ dfAttainment <- dfAttainmentRaw %>% version = as.factor(version), cert_type = as.factor(cert_type), school_type = as.factor(recode(school_type, - "All schools and FE sector colleges" = "All Institutions", - "All state-funded schools and colleges" = "All state-funded" + "All schools and FE sector colleges" = "All Institutions", + "All state-funded schools and colleges" = "All state-funded" )), cert_type = as.factor(recode(cert_type, "Alevel" = "A level")) ) %>% group_by(school_type, cert_type) %>% arrange(desc(year), .by_group = TRUE) %>% ungroup() + + +############################################################################################################# +# Maths Science attainment + + +dfMsRaw <- read_all_ms_data() + +dfMs<-dfMsRaw%>% + mutate(subject=as.factor(subject), + characteristic_gender=as.factor(characteristic_gender), + version=as.factor(version))%>% + filter(!subject %in% c("Five Maths/Science subjects" , "Six Maths/Science subjects", "Total Students")) + + diff --git a/renv.lock b/renv.lock index 2d316cf..3c317f8 100644 --- a/renv.lock +++ b/renv.lock @@ -1,6 +1,6 @@ { "R": { - "Version": "4.3.1", + "Version": "4.3.2", "Repositories": [ { "Name": "CRAN", @@ -14,13 +14,15 @@ "Version": "1.81.0-1", "Source": "Repository", "Repository": "CRAN", - "Hash": "68122010f01c4dcfbe58ce7112f2433d" + "Hash": "68122010f01c4dcfbe58ce7112f2433d", + "Requirements": [] }, "DT": { "Package": "DT", - "Version": "0.30", + "Version": "0.31", "Source": "Repository", "Repository": "CRAN", + "Hash": "77b5189f5272ae2b21e3ac2175ad107c", "Requirements": [ "crosstalk", "htmltools", @@ -30,357 +32,289 @@ "jsonlite", "magrittr", "promises" - ], - "Hash": "dffb4d94a00be1b4a4507e53ab95bd90" + ] }, "MASS": { "Package": "MASS", "Version": "7.3-60", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats", - "utils" - ], - "Hash": "a56a6365b3fa73293ea8d084be0d9bb0" + "Hash": "a56a6365b3fa73293ea8d084be0d9bb0", + "Requirements": [] }, "Matrix": { "Package": "Matrix", - "Version": "1.6-3", + "Version": "1.6-1.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "1a00d4828f33a9d690806e98bd17150c", "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "lattice", - "methods", - "stats", - "utils" - ], - "Hash": "1d1b6901cf9b6b1b446bc56a7d47efa4" + "lattice" + ] }, "R.cache": { "Package": "R.cache", "Version": "0.16.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "fe539ca3f8efb7410c3ae2cf5fe6c0f8", "Requirements": [ - "R", "R.methodsS3", "R.oo", "R.utils", - "digest", - "utils" - ], - "Hash": "fe539ca3f8efb7410c3ae2cf5fe6c0f8" + "digest" + ] }, "R.methodsS3": { "Package": "R.methodsS3", "Version": "1.8.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "278c286fd6e9e75d0c2e8f731ea445c8" + "Hash": "278c286fd6e9e75d0c2e8f731ea445c8", + "Requirements": [] }, "R.oo": { "Package": "R.oo", - "Version": "1.25.0", + "Version": "1.26.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "4fed809e53ddb5407b3da3d0f572e591", "Requirements": [ - "R", - "R.methodsS3", - "methods", - "utils" - ], - "Hash": "a0900a114f4f0194cf4aa8cd4a700681" + "R.methodsS3" + ] }, "R.utils": { "Package": "R.utils", - "Version": "2.12.2", + "Version": "2.12.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "3dc2829b790254bfba21e60965787651", "Requirements": [ - "R", "R.methodsS3", - "R.oo", - "methods", - "tools", - "utils" - ], - "Hash": "325f01db13da12c04d8f6e7be36ff514" + "R.oo" + ] }, "R6": { "Package": "R6", "Version": "2.5.1", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "470851b6d5d0ac559e9d01bb352b4021" + "Hash": "470851b6d5d0ac559e9d01bb352b4021", + "Requirements": [] }, "RColorBrewer": { "Package": "RColorBrewer", "Version": "1.1-3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "45f0398006e83a5b10b72a90663d8d8c" + "Hash": "45f0398006e83a5b10b72a90663d8d8c", + "Requirements": [] }, "Rcpp": { "Package": "Rcpp", "Version": "1.0.11", "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "methods", - "utils" - ], - "Hash": "ae6cbbe1492f4de79c45fce06f967ce8" + "Repository": "CRAN", + "Hash": "ae6cbbe1492f4de79c45fce06f967ce8", + "Requirements": [] }, "Rttf2pt1": { "Package": "Rttf2pt1", "Version": "1.3.12", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "a60168d094ca7e4de5106d60001c3964" + "Hash": "a60168d094ca7e4de5106d60001c3964", + "Requirements": [] }, "anytime": { "Package": "anytime", "Version": "0.3.9", "Source": "Repository", "Repository": "CRAN", + "Hash": "74a64813f17b492da9c6afda6b128e3d", "Requirements": [ "BH", - "R", "Rcpp" - ], - "Hash": "74a64813f17b492da9c6afda6b128e3d" + ] }, "askpass": { "Package": "askpass", - "Version": "1.2.0", + "Version": "1.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", "Requirements": [ "sys" - ], - "Hash": "cad6cf7f1d5f6e906700b9d3e718c796" + ] }, "assertthat": { "Package": "assertthat", "Version": "0.2.1", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "tools" - ], - "Hash": "50c838a310445e954bc13f26f26a6ecf" + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] }, "backports": { "Package": "backports", "Version": "1.4.1", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c39fbec8a30d23e721980b8afb31984c" + "Hash": "c39fbec8a30d23e721980b8afb31984c", + "Requirements": [] }, "base64enc": { "Package": "base64enc", "Version": "0.1-3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "543776ae6848fde2f48ff3816d0628bc" + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] }, "bit": { "Package": "bit", "Version": "4.0.5", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "d242abec29412ce988848d0294b208fd" + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] }, "bit64": { "Package": "bit64", "Version": "4.0.5", "Source": "Repository", "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", "Requirements": [ - "R", - "bit", - "methods", - "stats", - "utils" - ], - "Hash": "9fe98599ca456d6552421db0d6772d8f" + "bit" + ] }, "brio": { "Package": "brio", "Version": "1.1.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "976cf154dfb043c012d87cddd8bca363" + "Hash": "976cf154dfb043c012d87cddd8bca363", + "Requirements": [] }, "bslib": { "Package": "bslib", - "Version": "0.5.1", + "Version": "0.6.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "c0d8599494bc7fb408cd206bbdd9cab0", "Requirements": [ - "R", "base64enc", "cachem", - "grDevices", "htmltools", "jquerylib", "jsonlite", + "lifecycle", "memoise", "mime", "rlang", "sass" - ], - "Hash": "283015ddfbb9d7bf15ea9f0b5698f0d9" + ] }, "cachem": { "Package": "cachem", "Version": "1.0.8", "Source": "Repository", "Repository": "CRAN", + "Hash": "c35768291560ce302c0a6589f92e837d", "Requirements": [ "fastmap", "rlang" - ], - "Hash": "c35768291560ce302c0a6589f92e837d" + ] }, "callr": { "Package": "callr", "Version": "3.7.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "9b2191ede20fa29828139b9900922e51", "Requirements": [ - "R", "R6", - "processx", - "utils" - ], - "Hash": "9b2191ede20fa29828139b9900922e51" + "processx" + ] }, "checkmate": { "Package": "checkmate", - "Version": "2.3.0", + "Version": "2.3.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "c01cab1cb0f9125211a6fc99d540e315", "Requirements": [ - "R", - "backports", - "utils" - ], - "Hash": "ed4275b13c6ab74b89a31def0b6bf835" + "backports" + ] }, "cli": { "Package": "cli", - "Version": "3.6.1", + "Version": "3.6.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "89e6d8219950eac806ae0c489052048a" + "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52", + "Requirements": [] }, "clipr": { "Package": "clipr", "Version": "0.8.0", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042", + "Requirements": [] }, "colorspace": { "Package": "colorspace", "Version": "2.1-0", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats" - ], - "Hash": "f20c47fd52fae58b4e377c37bb8c335b" + "Hash": "f20c47fd52fae58b4e377c37bb8c335b", + "Requirements": [] }, "commonmark": { "Package": "commonmark", "Version": "1.9.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "d691c61bff84bd63c383874d2d0c3307" + "Hash": "d691c61bff84bd63c383874d2d0c3307", + "Requirements": [] }, "cpp11": { "Package": "cpp11", - "Version": "0.4.6", + "Version": "0.4.7", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "707fae4bbf73697ec8d85f9d7076c061" + "Hash": "5a295d7d963cc5035284dcdbaf334f4e", + "Requirements": [] }, "crayon": { "Package": "crayon", "Version": "1.5.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "grDevices", - "methods", - "utils" - ], - "Hash": "e8a1e41acf02548751f45c718d55aa6a" + "Hash": "e8a1e41acf02548751f45c718d55aa6a", + "Requirements": [] }, "crosstalk": { "Package": "crosstalk", "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "6aa54f69598c32177e920eb3402e8293", "Requirements": [ "R6", "htmltools", "jsonlite", "lazyeval" - ], - "Hash": "6aa54f69598c32177e920eb3402e8293" + ] }, "crul": { "Package": "crul", "Version": "1.4.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "1eb00a531331c91d970f3af74b75321f", "Requirements": [ "R6", "curl", @@ -388,54 +322,45 @@ "jsonlite", "mime", "urltools" - ], - "Hash": "1eb00a531331c91d970f3af74b75321f" + ] }, "curl": { "Package": "curl", - "Version": "5.1.0", + "Version": "5.0.1", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "9123f3ef96a2c1a93927d828b2fe7d4c" + "Hash": "2118af9cb164c8d2dddc7b89eaf732d9", + "Requirements": [] }, "data.table": { "Package": "data.table", - "Version": "1.14.8", + "Version": "1.14.10", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "b4c06e554f33344e044ccd7fdca750a9" + "Hash": "6ea17a32294d8ca00455825ab0cf71b9", + "Requirements": [] }, "debugme": { "Package": "debugme", "Version": "1.1.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "2d8a9e4f08f3dd669cb8ddd1eb575959", "Requirements": [ - "crayon", - "grDevices" - ], - "Hash": "2d8a9e4f08f3dd669cb8ddd1eb575959" + "crayon" + ] }, "desc": { "Package": "desc", "Version": "1.4.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21", "Requirements": [ - "R", "R6", "cli", - "rprojroot", - "utils" - ], - "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21" + "rprojroot" + ] }, "dfeshiny": { "Package": "dfeshiny", @@ -447,636 +372,537 @@ "RemoteRef": "main", "RemoteSha": "437c6e4c60b5eb9c1f55333588b65110d47b7ba2", "RemoteHost": "api.github.com", + "Hash": "b3f1cac9ab18652447e842b04f702959", "Requirements": [ "shiny", "shinyGovstyle", "styler" - ], - "Hash": "b3f1cac9ab18652447e842b04f702959" + ] }, "diffobj": { "Package": "diffobj", "Version": "0.3.5", "Source": "Repository", "Repository": "CRAN", + "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8", "Requirements": [ - "R", - "crayon", - "methods", - "stats", - "tools", - "utils" - ], - "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8" + "crayon" + ] }, "digest": { "Package": "digest", "Version": "0.6.33", "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "utils" - ], - "Hash": "b18a9cf3c003977b0cc49d5e76ebe48d" + "Repository": "CRAN", + "Hash": "b18a9cf3c003977b0cc49d5e76ebe48d", + "Requirements": [] }, "dplyr": { "Package": "dplyr", - "Version": "1.1.3", + "Version": "1.1.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "fedd9d00c2944ff00a0e2696ccf048ec", "Requirements": [ - "R", "R6", "cli", "generics", "glue", "lifecycle", "magrittr", - "methods", "pillar", "rlang", "tibble", "tidyselect", - "utils", "vctrs" - ], - "Hash": "e85ffbebaad5f70e1a2e2ef4302b4949" + ] }, "ellipsis": { "Package": "ellipsis", "Version": "0.3.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", "Requirements": [ - "R", "rlang" - ], - "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + ] }, "evaluate": { "Package": "evaluate", "Version": "0.23", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "daf4a1246be12c1fa8c7705a0935c1a0" + "Hash": "daf4a1246be12c1fa8c7705a0935c1a0", + "Requirements": [] }, "extrafont": { "Package": "extrafont", "Version": "0.19", "Source": "Repository", "Repository": "CRAN", + "Hash": "03d9939b37164f34e0522fef13e63158", "Requirements": [ - "R", "Rttf2pt1", - "extrafontdb", - "grDevices", - "utils" - ], - "Hash": "03d9939b37164f34e0522fef13e63158" + "extrafontdb" + ] }, "extrafontdb": { "Package": "extrafontdb", "Version": "1.0", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "a861555ddec7451c653b40e713166c6f" + "Hash": "a861555ddec7451c653b40e713166c6f", + "Requirements": [] }, "fansi": { "Package": "fansi", - "Version": "1.0.5", + "Version": "1.0.6", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "utils" - ], - "Hash": "3e8583a60163b4bc1a80016e63b9959e" + "Hash": "962174cf2aeb5b9eea581522286a911f", + "Requirements": [] }, "farver": { "Package": "farver", "Version": "2.1.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "8106d78941f34855c440ddb946b8f7a5" + "Hash": "8106d78941f34855c440ddb946b8f7a5", + "Requirements": [] }, "fastmap": { "Package": "fastmap", "Version": "1.1.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "f7736a18de97dea803bde0a2daaafb27" + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] }, "fontBitstreamVera": { "Package": "fontBitstreamVera", "Version": "0.1.1", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "f6068021eff4aba735a9b2353516636c" + "Hash": "f6068021eff4aba735a9b2353516636c", + "Requirements": [] }, "fontLiberation": { "Package": "fontLiberation", "Version": "0.1.0", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "f918c5e723f86f409912104d5b7a71d6" + "Hash": "f918c5e723f86f409912104d5b7a71d6", + "Requirements": [] }, "fontawesome": { "Package": "fontawesome", "Version": "0.5.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d", "Requirements": [ - "R", "htmltools", "rlang" - ], - "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" + ] }, "fontquiver": { "Package": "fontquiver", "Version": "0.2.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "fc0f4226379e451057d55419fd31761e", "Requirements": [ - "R", "fontBitstreamVera", "fontLiberation" - ], - "Hash": "fc0f4226379e451057d55419fd31761e" + ] }, "forcats": { "Package": "forcats", "Version": "1.0.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "1a0a9a3d5083d0d573c4214576f1e690", "Requirements": [ - "R", "cli", "glue", "lifecycle", "magrittr", "rlang", "tibble" - ], - "Hash": "1a0a9a3d5083d0d573c4214576f1e690" + ] }, "fs": { "Package": "fs", "Version": "1.6.3", "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "methods" - ], - "Hash": "47b5f30c720c23999b913a1a635cf0bb" + "Repository": "CRAN", + "Hash": "47b5f30c720c23999b913a1a635cf0bb", + "Requirements": [] }, "gdtools": { "Package": "gdtools", - "Version": "0.3.4", + "Version": "0.3.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "98158453e15bbd2486fac8454f4b4409", "Requirements": [ - "R", "Rcpp", "curl", "fontquiver", "gfonts", "htmltools", - "systemfonts", - "tools" - ], - "Hash": "dcbec937764c19774f6f719e6bf45c69" + "systemfonts" + ] }, "generics": { "Package": "generics", "Version": "0.1.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "15e9634c0fcd294799e9b2e929ed1b86" + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] }, "gfonts": { "Package": "gfonts", "Version": "0.2.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "a535d76cf92645364997a8751396d63b", "Requirements": [ - "R", "crayon", "crul", "glue", "htmltools", "jsonlite", - "shiny", - "utils" - ], - "Hash": "a535d76cf92645364997a8751396d63b" + "shiny" + ] }, "ggplot2": { "Package": "ggplot2", "Version": "3.4.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "313d31eff2274ecf4c1d3581db7241f9", "Requirements": [ "MASS", - "R", "cli", "glue", - "grDevices", - "grid", "gtable", "isoband", "lifecycle", "mgcv", "rlang", "scales", - "stats", "tibble", "vctrs", "withr" - ], - "Hash": "313d31eff2274ecf4c1d3581db7241f9" + ] }, "glue": { "Package": "glue", "Version": "1.6.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e" + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] }, "gtable": { "Package": "gtable", - "Version": "0.3.4", + "Version": "0.3.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "b44addadb528a0d227794121c00572a0", "Requirements": [ - "R", "cli", "glue", - "grid", "lifecycle", "rlang" - ], - "Hash": "b29cf3031f49b04ab9c852c912547eef" + ] }, "highr": { "Package": "highr", "Version": "0.10", "Source": "Repository", "Repository": "CRAN", + "Hash": "06230136b2d2b9ba5805e1963fa6e890", "Requirements": [ - "R", "xfun" - ], - "Hash": "06230136b2d2b9ba5805e1963fa6e890" + ] }, "hms": { "Package": "hms", "Version": "1.1.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "b59377caa7ed00fa41808342002138f9", "Requirements": [ "lifecycle", - "methods", "pkgconfig", "rlang", "vctrs" - ], - "Hash": "b59377caa7ed00fa41808342002138f9" + ] }, "hrbrthemes": { "Package": "hrbrthemes", "Version": "0.8.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "0d1257948f016840ad90320ed19c8c7d", "Requirements": [ - "R", "extrafont", "gdtools", "ggplot2", - "grDevices", - "grid", "htmltools", "knitr", "magrittr", "rmarkdown", - "scales", - "tools" - ], - "Hash": "0d1257948f016840ad90320ed19c8c7d" + "scales" + ] }, "htmltools": { "Package": "htmltools", "Version": "0.5.7", "Source": "Repository", "Repository": "CRAN", + "Hash": "2d7b3857980e0e0d0a1fd6f11928ab0f", "Requirements": [ - "R", "base64enc", "digest", "ellipsis", "fastmap", - "grDevices", - "rlang", - "utils" - ], - "Hash": "2d7b3857980e0e0d0a1fd6f11928ab0f" + "rlang" + ] }, "htmlwidgets": { "Package": "htmlwidgets", - "Version": "1.6.2", + "Version": "1.6.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "04291cc45198225444a397606810ac37", "Requirements": [ - "grDevices", "htmltools", "jsonlite", "knitr", "rmarkdown", "yaml" - ], - "Hash": "a865aa85bcb2697f47505bfd70422471" + ] }, "httpcode": { "Package": "httpcode", "Version": "0.3.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "13641a1c6d2cc98801b76764078e17ea" + "Hash": "13641a1c6d2cc98801b76764078e17ea", + "Requirements": [] }, "httpuv": { "Package": "httpuv", - "Version": "1.6.12", + "Version": "1.6.11", "Source": "Repository", "Repository": "CRAN", + "Hash": "838602f54e32c1a0f8cc80708cefcefa", "Requirements": [ - "R", "R6", "Rcpp", "later", - "promises", - "utils" - ], - "Hash": "c992f75861325961c29a188b45e549f7" + "promises" + ] }, "httr": { "Package": "httr", - "Version": "1.4.7", + "Version": "1.4.6", "Source": "Repository", "Repository": "CRAN", + "Hash": "7e5e3cbd2a7bc07880c94e22348fb661", "Requirements": [ - "R", "R6", "curl", "jsonlite", "mime", "openssl" - ], - "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" + ] }, "isoband": { "Package": "isoband", "Version": "0.2.7", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "grid", - "utils" - ], - "Hash": "0080607b4a1a7b28979aecef976d8bc2" + "Hash": "0080607b4a1a7b28979aecef976d8bc2", + "Requirements": [] }, "jquerylib": { "Package": "jquerylib", "Version": "0.1.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "5aab57a3bd297eee1c1d862735972182", "Requirements": [ "htmltools" - ], - "Hash": "5aab57a3bd297eee1c1d862735972182" + ] }, "jsonlite": { "Package": "jsonlite", "Version": "1.8.7", "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "methods" - ], - "Hash": "266a20443ca13c65688b2116d5220f76" + "Repository": "CRAN", + "Hash": "266a20443ca13c65688b2116d5220f76", + "Requirements": [] }, "knitr": { "Package": "knitr", "Version": "1.45", "Source": "Repository", "Repository": "CRAN", + "Hash": "1ec462871063897135c1bcbe0fc8f07d", "Requirements": [ - "R", "evaluate", "highr", - "methods", - "tools", "xfun", "yaml" - ], - "Hash": "1ec462871063897135c1bcbe0fc8f07d" + ] }, "labeling": { "Package": "labeling", "Version": "0.4.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "graphics", - "stats" - ], - "Hash": "b64ec208ac5bc1852b285f665d6368b3" + "Hash": "b64ec208ac5bc1852b285f665d6368b3", + "Requirements": [] }, "later": { "Package": "later", "Version": "1.3.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "40401c9cf2bc2259dfe83311c9384710", "Requirements": [ "Rcpp", "rlang" - ], - "Hash": "40401c9cf2bc2259dfe83311c9384710" + ] }, "lattice": { "Package": "lattice", - "Version": "0.22-5", + "Version": "0.21-9", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "stats", - "utils" - ], - "Hash": "7c5e89f04e72d6611c77451f6331a091" + "Hash": "5558c61e0136e247252f5f952cdaad6a", + "Requirements": [] }, "lazyeval": { "Package": "lazyeval", "Version": "0.2.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "d908914ae53b04d4c0c0fd72ecc35370" + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] }, "lifecycle": { "Package": "lifecycle", "Version": "1.0.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "b8552d117e1b808b09a832f589b79035", "Requirements": [ - "R", "cli", "glue", "rlang" - ], - "Hash": "b8552d117e1b808b09a832f589b79035" + ] }, "magrittr": { "Package": "magrittr", "Version": "2.0.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "7ce2733a9826b3aeb1775d56fd305472" + "Hash": "7ce2733a9826b3aeb1775d56fd305472", + "Requirements": [] }, "memoise": { "Package": "memoise", "Version": "2.0.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", "Requirements": [ "cachem", "rlang" - ], - "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + ] }, "mgcv": { "Package": "mgcv", "Version": "1.9-0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", + "Hash": "086028ca0460d0c368028d3bda58f31b", "Requirements": [ "Matrix", - "R", - "graphics", - "methods", - "nlme", - "splines", - "stats", - "utils" - ], - "Hash": "086028ca0460d0c368028d3bda58f31b" + "nlme" + ] }, "mime": { "Package": "mime", "Version": "0.12", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "tools" - ], - "Hash": "18e9c28c1d3ca1560ce30658b22ce104" + "Hash": "18e9c28c1d3ca1560ce30658b22ce104", + "Requirements": [] }, "munsell": { "Package": "munsell", "Version": "0.5.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "6dfe8bf774944bd5595785e3229d8771", "Requirements": [ - "colorspace", - "methods" - ], - "Hash": "6dfe8bf774944bd5595785e3229d8771" + "colorspace" + ] }, "nlme": { "Package": "nlme", "Version": "3.1-163", "Source": "Repository", "Repository": "CRAN", + "Hash": "8d1938040a05566f4f7a14af4feadd6b", "Requirements": [ - "R", - "graphics", - "lattice", - "stats", - "utils" - ], - "Hash": "8d1938040a05566f4f7a14af4feadd6b" + "lattice" + ] }, "openssl": { "Package": "openssl", - "Version": "2.1.1", + "Version": "2.0.6", "Source": "Repository", "Repository": "CRAN", + "Hash": "0f7cd2962e3044bb940cca4f4b5cecbe", "Requirements": [ "askpass" - ], - "Hash": "2a0dc8c6adfb6f032e4d4af82d258ab5" + ] }, "parsedate": { "Package": "parsedate", "Version": "1.3.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "7f5024cc7af45eeecef657fa62beb568" + "Hash": "7f5024cc7af45eeecef657fa62beb568", + "Requirements": [] }, "patchwork": { "Package": "patchwork", - "Version": "1.1.3", + "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "9c8ab14c00ac07e9e04d1664c0b74486", "Requirements": [ "cli", "ggplot2", - "grDevices", - "graphics", - "grid", "gtable", - "rlang", - "stats", - "utils" - ], - "Hash": "c5754106c02e8e019941100c81149431" + "rlang" + ] }, "pillar": { "Package": "pillar", "Version": "1.9.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "15da5a8412f317beeee6175fbc76f4bb", "Requirements": [ "cli", "fansi", @@ -1084,29 +910,26 @@ "lifecycle", "rlang", "utf8", - "utils", "vctrs" - ], - "Hash": "15da5a8412f317beeee6175fbc76f4bb" + ] }, "pingr": { "Package": "pingr", "Version": "2.0.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "b762f8f7d305f7eb0bab96eb1a3c782a", "Requirements": [ - "processx", - "utils" - ], - "Hash": "b762f8f7d305f7eb0bab96eb1a3c782a" + "processx" + ] }, "pkgbuild": { "Package": "pkgbuild", "Version": "1.4.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "beb25b32a957a22a5c301a9e441190b3", "Requirements": [ - "R", "R6", "callr", "cli", @@ -1115,47 +938,41 @@ "prettyunits", "processx", "rprojroot" - ], - "Hash": "beb25b32a957a22a5c301a9e441190b3" + ] }, "pkgconfig": { "Package": "pkgconfig", "Version": "2.0.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "01f28d4278f15c76cddbea05899c5d6f" + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] }, "pkgload": { "Package": "pkgload", "Version": "1.3.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "903d68319ae9923fb2e2ee7fa8230b91", "Requirements": [ - "R", "cli", "crayon", "desc", "fs", "glue", - "methods", "pkgbuild", "rlang", "rprojroot", - "utils", "withr" - ], - "Hash": "903d68319ae9923fb2e2ee7fa8230b91" + ] }, "plotly": { "Package": "plotly", "Version": "4.10.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "56914cc61df53f2d0283d5498680867e", "Requirements": [ - "R", "RColorBrewer", "base64enc", "crosstalk", @@ -1175,124 +992,109 @@ "scales", "tibble", "tidyr", - "tools", "vctrs", "viridisLite" - ], - "Hash": "56914cc61df53f2d0283d5498680867e" + ] }, "png": { "Package": "png", "Version": "0.1-8", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "bd54ba8a0a5faded999a7aab6e46b374" + "Hash": "bd54ba8a0a5faded999a7aab6e46b374", + "Requirements": [] }, "praise": { "Package": "praise", "Version": "1.0.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "a555924add98c99d2f411e37e7d25e9f" + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] }, "prettyunits": { "Package": "prettyunits", "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7" + "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7", + "Requirements": [] }, "processx": { "Package": "processx", - "Version": "3.8.2", + "Version": "3.8.3", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", + "Hash": "82d48b1aec56084d9438dbf98087a7e9", "Requirements": [ - "R", "R6", - "ps", - "utils" - ], - "Hash": "3efbd8ac1be0296a46c55387aeace0f3" + "ps" + ] }, "progress": { "Package": "progress", - "Version": "1.2.2", + "Version": "1.2.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "f4625e061cb2865f111b47ff163a5ca6", "Requirements": [ "R6", "crayon", "hms", "prettyunits" - ], - "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" + ] }, "promises": { "Package": "promises", - "Version": "1.2.1", + "Version": "1.2.0.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "4ab2c43adb4d4699cf3690acd378d75d", "Requirements": [ "R6", "Rcpp", - "fastmap", "later", "magrittr", - "rlang", - "stats" - ], - "Hash": "0d8a15c9d000970ada1ab21405387dee" + "rlang" + ] }, "ps": { "Package": "ps", "Version": "1.7.5", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "709d852d33178db54b17c722e5b1e594" + "Hash": "709d852d33178db54b17c722e5b1e594", + "Requirements": [] }, "purrr": { "Package": "purrr", "Version": "1.0.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc", "Requirements": [ - "R", "cli", "lifecycle", "magrittr", "rlang", "vctrs" - ], - "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc" + ] }, "rappdirs": { "Package": "rappdirs", "Version": "0.3.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + "Hash": "5e3c5dc0b071b21fa128676560dbe94d", + "Requirements": [] }, "readr": { "Package": "readr", "Version": "2.1.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "b5047343b3825f37ad9d3b5d89aa1078", "Requirements": [ - "R", "R6", "cli", "clipr", @@ -1300,60 +1102,53 @@ "crayon", "hms", "lifecycle", - "methods", "rlang", "tibble", "tzdb", - "utils", "vroom" - ], - "Hash": "b5047343b3825f37ad9d3b5d89aa1078" + ] }, "rematch": { "Package": "rematch", - "Version": "2.0.0", + "Version": "1.0.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "cbff1b666c6fa6d21202f07e2318d4f1" + "Hash": "c66b930d20bb6d858cd18e1cebcfae5c", + "Requirements": [] }, "rematch2": { "Package": "rematch2", "Version": "2.1.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", "Requirements": [ "tibble" - ], - "Hash": "76c9e04c712a05848ae7a23d2f170a40" + ] }, "renv": { "Package": "renv", - "Version": "1.0.3", + "Version": "0.16.0", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "41b847654f567341725473431dd0d5ab" + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] }, "rlang": { "Package": "rlang", "Version": "1.1.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "50a6dbdc522936ca35afc5e2082ea91b" + "Hash": "50a6dbdc522936ca35afc5e2082ea91b", + "Requirements": [] }, "rmarkdown": { "Package": "rmarkdown", "Version": "2.25", "Source": "Repository", "Repository": "CRAN", + "Hash": "d65e35823c817f09f4de424fcdfa812a", "Requirements": [ - "R", "bslib", "evaluate", "fontawesome", @@ -1361,72 +1156,68 @@ "jquerylib", "jsonlite", "knitr", - "methods", "stringr", "tinytex", - "tools", - "utils", "xfun", "yaml" - ], - "Hash": "d65e35823c817f09f4de424fcdfa812a" + ] }, "rprojroot": { "Package": "rprojroot", - "Version": "2.0.4", + "Version": "2.0.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144" + "Hash": "1de7ab598047a87bba48434ba35d497d", + "Requirements": [] }, "rstudioapi": { "Package": "rstudioapi", "Version": "0.15.0", "Source": "Repository", "Repository": "RSPM", - "Hash": "5564500e25cffad9e22244ced1379887" + "Hash": "5564500e25cffad9e22244ced1379887", + "Requirements": [] }, "sass": { "Package": "sass", - "Version": "0.4.7", + "Version": "0.4.8", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", + "Hash": "168f9353c76d4c4b0a0bbf72e2c2d035", "Requirements": [ "R6", "fs", "htmltools", "rappdirs", "rlang" - ], - "Hash": "6bd4d33b50ff927191ec9acbf52fd056" + ] }, "scales": { "Package": "scales", - "Version": "1.2.1", + "Version": "1.3.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "c19df082ba346b0ffa6f833e92de34d1", "Requirements": [ - "R", "R6", "RColorBrewer", + "cli", "farver", + "glue", "labeling", "lifecycle", "munsell", "rlang", "viridisLite" - ], - "Hash": "906cb23d2f1c5680b8ce439b44c6fa63" + ] }, "shiny": { "Package": "shiny", - "Version": "1.7.5.1", + "Version": "1.8.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "3a1f41807d648a908e3c7f0334bf85e6", "Requirements": [ - "R", "R6", "bslib", "cachem", @@ -1436,113 +1227,101 @@ "fastmap", "fontawesome", "glue", - "grDevices", "htmltools", "httpuv", "jsonlite", "later", "lifecycle", - "methods", "mime", "promises", "rlang", "sourcetools", - "tools", - "utils", "withr", "xtable" - ], - "Hash": "5ec01cc255f2138fc2f0dc74d2b1a1a1" + ] }, "shinyBS": { "Package": "shinyBS", "Version": "0.61.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "e44255f073ecdc26ba6bc2ce3fcf174d", "Requirements": [ "htmltools", "shiny" - ], - "Hash": "e44255f073ecdc26ba6bc2ce3fcf174d" + ] }, "shinyGovstyle": { "Package": "shinyGovstyle", "Version": "0.0.8", "Source": "Repository", "Repository": "CRAN", + "Hash": "a593ce187f4a7830392e0843041e3ea8", "Requirements": [ - "R", "htmltools", "jsonlite", "shiny", "shinyjs" - ], - "Hash": "a593ce187f4a7830392e0843041e3ea8" + ] }, "shinyWidgets": { "Package": "shinyWidgets", "Version": "0.8.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "c6acc72327e63668bbc7bd258ee54132", "Requirements": [ - "R", "anytime", "bslib", - "grDevices", "htmltools", "jsonlite", "rlang", "sass", "shiny" - ], - "Hash": "c6acc72327e63668bbc7bd258ee54132" + ] }, "shinycssloaders": { "Package": "shinycssloaders", "Version": "1.0.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", + "Hash": "f39bb3c44a9b496723ec7e86f9a771d8", "Requirements": [ - "R", "digest", "glue", - "grDevices", "shiny" - ], - "Hash": "f39bb3c44a9b496723ec7e86f9a771d8" + ] }, "shinydashboard": { "Package": "shinydashboard", "Version": "0.7.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "e418b532e9bb4eb22a714b9a9f1acee7", "Requirements": [ - "R", "htmltools", "promises", - "shiny", - "utils" - ], - "Hash": "e418b532e9bb4eb22a714b9a9f1acee7" + "shiny" + ] }, "shinyjs": { "Package": "shinyjs", "Version": "2.1.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "802e4786b353a4bb27116957558548d5", "Requirements": [ - "R", "digest", "jsonlite", "shiny" - ], - "Hash": "802e4786b353a4bb27116957558548d5" + ] }, "shinytest": { "Package": "shinytest", "Version": "1.5.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "981229915650258e38ae95947210082d", "Requirements": [ "R6", "assertthat", @@ -1561,63 +1340,53 @@ "rstudioapi", "shiny", "testthat", - "utils", "webdriver", "withr" - ], - "Hash": "981229915650258e38ae95947210082d" + ] }, "shinytitle": { "Package": "shinytitle", "Version": "0.1.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "12a2972d88910692c1a125d6e1e95d51", "Requirements": [ "shiny" - ], - "Hash": "12a2972d88910692c1a125d6e1e95d51" + ] }, "showimage": { "Package": "showimage", "Version": "1.0.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "841927b226db842d24d9c288c99ed27b", "Requirements": [ - "png", - "tools" - ], - "Hash": "841927b226db842d24d9c288c99ed27b" + "png" + ] }, "sourcetools": { "Package": "sourcetools", "Version": "0.1.7-1", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5f5a7629f956619d519205ec475fe647" + "Hash": "5f5a7629f956619d519205ec475fe647", + "Requirements": [] }, "stringi": { "Package": "stringi", - "Version": "1.8.1", + "Version": "1.8.3", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "stats", - "tools", - "utils" - ], - "Hash": "12bf57fdcb9b7068bea39b32f87ecac9" + "Hash": "058aebddea264f4c99401515182e656a", + "Requirements": [] }, "stringr": { "Package": "stringr", - "Version": "1.5.0", + "Version": "1.5.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "960e2ae9e09656611e0b8214ad543207", "Requirements": [ - "R", "cli", "glue", "lifecycle", @@ -1625,102 +1394,92 @@ "rlang", "stringi", "vctrs" - ], - "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + ] }, "styler": { "Package": "styler", "Version": "1.10.2", "Source": "Repository", "Repository": "CRAN", + "Hash": "d61238fd44fc63c8adf4565efe8eb682", "Requirements": [ - "R", "R.cache", "cli", "magrittr", "purrr", "rlang", "rprojroot", - "tools", "vctrs", "withr" - ], - "Hash": "d61238fd44fc63c8adf4565efe8eb682" + ] }, "sys": { "Package": "sys", "Version": "3.4.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "3a1be13d68d47a8cd0bfd74739ca1555" + "Hash": "3a1be13d68d47a8cd0bfd74739ca1555", + "Requirements": [] }, "systemfonts": { "Package": "systemfonts", - "Version": "1.0.5", + "Version": "1.0.4", "Source": "Repository", "Repository": "CRAN", + "Hash": "90b28393209827327de889f49935140a", "Requirements": [ - "R", "cpp11" - ], - "Hash": "15b594369e70b975ba9f064295983499" + ] }, "testthat": { "Package": "testthat", - "Version": "3.2.0", + "Version": "3.2.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "4767a686ebe986e6cb01d075b3f09729", "Requirements": [ - "R", "R6", "brio", "callr", "cli", "desc", "digest", - "ellipsis", "evaluate", "jsonlite", "lifecycle", "magrittr", - "methods", "pkgload", "praise", "processx", "ps", "rlang", - "utils", "waldo", "withr" - ], - "Hash": "877508719fcb8c9525eccdadf07a5102" + ] }, "tibble": { "Package": "tibble", "Version": "3.2.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "a84e2cc86d07289b3b6f5069df7a004c", "Requirements": [ - "R", "fansi", "lifecycle", "magrittr", - "methods", "pillar", "pkgconfig", "rlang", - "utils", "vctrs" - ], - "Hash": "a84e2cc86d07289b3b6f5069df7a004c" + ] }, "tidyr": { "Package": "tidyr", "Version": "1.3.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf", "Requirements": [ - "R", "cli", "cpp11", "dplyr", @@ -1732,112 +1491,101 @@ "stringr", "tibble", "tidyselect", - "utils", "vctrs" - ], - "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf" + ] }, "tidyselect": { "Package": "tidyselect", "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", "Requirements": [ - "R", "cli", "glue", "lifecycle", "rlang", "vctrs", "withr" - ], - "Hash": "79540e5fcd9e0435af547d885f184fd5" + ] }, "tinytex": { "Package": "tinytex", - "Version": "0.48", + "Version": "0.49", "Source": "Repository", "Repository": "CRAN", + "Hash": "5ac22900ae0f386e54f1c307eca7d843", "Requirements": [ "xfun" - ], - "Hash": "8f96d229b7311beb32b94cf413b13f84" + ] }, "triebeard": { "Package": "triebeard", "Version": "0.4.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "642507a148b0dd9b5620177e0a044413", "Requirements": [ "Rcpp" - ], - "Hash": "642507a148b0dd9b5620177e0a044413" + ] }, "tzdb": { "Package": "tzdb", "Version": "0.4.0", "Source": "Repository", "Repository": "CRAN", + "Hash": "f561504ec2897f4d46f0c7657e488ae1", "Requirements": [ - "R", "cpp11" - ], - "Hash": "f561504ec2897f4d46f0c7657e488ae1" + ] }, "urltools": { "Package": "urltools", "Version": "1.7.3", "Source": "Repository", "Repository": "CRAN", + "Hash": "e86a704261a105f4703f653e05defa3e", "Requirements": [ - "R", "Rcpp", - "methods", "triebeard" - ], - "Hash": "e86a704261a105f4703f653e05defa3e" + ] }, "utf8": { "Package": "utf8", "Version": "1.2.4", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "62b65c52671e6665f803ff02954446e9" + "Hash": "62b65c52671e6665f803ff02954446e9", + "Requirements": [] }, "vctrs": { "Package": "vctrs", - "Version": "0.6.4", + "Version": "0.6.5", "Source": "Repository", "Repository": "CRAN", + "Hash": "c03fa420630029418f7e6da3667aac4a", "Requirements": [ - "R", "cli", "glue", "lifecycle", "rlang" - ], - "Hash": "266c1ca411266ba8f365fcc726444b87" + ] }, "viridisLite": { "Package": "viridisLite", "Version": "0.4.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c826c7c4241b6fc89ff55aaea3fa7491" + "Hash": "c826c7c4241b6fc89ff55aaea3fa7491", + "Requirements": [] }, "vroom": { "Package": "vroom", - "Version": "1.6.4", + "Version": "1.6.5", "Source": "Repository", "Repository": "CRAN", + "Hash": "390f9315bc0025be03012054103d227c", "Requirements": [ - "R", "bit64", "cli", "cpp11", @@ -1845,41 +1593,37 @@ "glue", "hms", "lifecycle", - "methods", "progress", "rlang", - "stats", "tibble", "tidyselect", "tzdb", "vctrs", "withr" - ], - "Hash": "9db52c1656cf19c124f93124ea57f0fd" + ] }, "waldo": { "Package": "waldo", - "Version": "0.5.2", + "Version": "0.5.1", "Source": "Repository", "Repository": "CRAN", + "Hash": "2c993415154cdb94649d99ae138ff5e5", "Requirements": [ - "R", "cli", "diffobj", "fansi", "glue", - "methods", "rematch2", "rlang", "tibble" - ], - "Hash": "c7d3fd6d29ab077cbac8f0e2751449e6" + ] }, "webdriver": { "Package": "webdriver", "Version": "1.0.6", "Source": "Repository", "Repository": "CRAN", + "Hash": "adc1e0db3ac0d75dcdb4b8179e7ca796", "Requirements": [ "R6", "base64enc", @@ -1889,53 +1633,40 @@ "httr", "jsonlite", "showimage", - "utils", "withr" - ], - "Hash": "adc1e0db3ac0d75dcdb4b8179e7ca796" + ] }, "withr": { "Package": "withr", "Version": "2.5.2", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "stats" - ], - "Hash": "4b25e70111b7d644322e9513f403a272" + "Hash": "4b25e70111b7d644322e9513f403a272", + "Requirements": [] }, "xfun": { "Package": "xfun", "Version": "0.41", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "stats", - "tools" - ], - "Hash": "460a5e0fe46a80ef87424ad216028014" + "Hash": "460a5e0fe46a80ef87424ad216028014", + "Requirements": [] }, "xtable": { "Package": "xtable", "Version": "1.8-4", "Source": "Repository", "Repository": "CRAN", - "Requirements": [ - "R", - "stats", - "utils" - ], - "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2" + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2", + "Requirements": [] }, "yaml": { "Package": "yaml", - "Version": "2.3.7", + "Version": "2.3.8", "Source": "Repository", "Repository": "CRAN", - "Hash": "0d0056cc5383fbc240ccd0cb584bf436" + "Hash": "29240487a071f535f5e5d5a323b7afbd", + "Requirements": [] } } } diff --git a/renv/activate.R b/renv/activate.R index cb5401f..019b5a6 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -2,27 +2,11 @@ local({ # the requested version of renv - version <- "1.0.3" - attr(version, "sha") <- NULL + version <- "0.16.0" # the project directory project <- getwd() - # use start-up diagnostics if enabled - diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") - if (diagnostics) { - start <- Sys.time() - profile <- tempfile("renv-startup-", fileext = ".Rprof") - utils::Rprof(profile) - on.exit({ - utils::Rprof(NULL) - elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) - writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) - writeLines(sprintf("- Profile: %s", profile)) - print(utils::summaryRprof(profile)) - }, add = TRUE) - } - # figure out whether the autoloader is enabled enabled <- local({ @@ -76,75 +60,21 @@ local({ # load bootstrap tools `%||%` <- function(x, y) { - if (is.null(x)) y else x - } - - catf <- function(fmt, ..., appendLF = TRUE) { - - quiet <- getOption("renv.bootstrap.quiet", default = FALSE) - if (quiet) - return(invisible()) - - msg <- sprintf(fmt, ...) - cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") - - invisible(msg) - - } - - header <- function(label, - ..., - prefix = "#", - suffix = "-", - n = min(getOption("width"), 78)) - { - label <- sprintf(label, ...) - n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) - if (n <= 0) - return(paste(prefix, label)) - - tail <- paste(rep.int(suffix, n), collapse = "") - paste0(prefix, " ", label, " ", tail) - - } - - startswith <- function(string, prefix) { - substring(string, 1, nchar(prefix)) == prefix + if (is.environment(x) || length(x)) x else y } bootstrap <- function(version, library) { - friendly <- renv_bootstrap_version_friendly(version) - section <- header(sprintf("Bootstrapping renv %s", friendly)) - catf(section) - # attempt to download renv - catf("- Downloading renv ... ", appendLF = FALSE) - withCallingHandlers( - tarball <- renv_bootstrap_download(version), - error = function(err) { - catf("FAILED") - stop("failed to download:\n", conditionMessage(err)) - } - ) - catf("OK") - on.exit(unlink(tarball), add = TRUE) + tarball <- tryCatch(renv_bootstrap_download(version), error = identity) + if (inherits(tarball, "error")) + stop("failed to download renv ", version) # now attempt to install - catf("- Installing renv ... ", appendLF = FALSE) - withCallingHandlers( - status <- renv_bootstrap_install(version, tarball, library), - error = function(err) { - catf("FAILED") - stop("failed to install:\n", conditionMessage(err)) - } - ) - catf("OK") - - # add empty line to break up bootstrapping from normal output - catf("") + status <- tryCatch(renv_bootstrap_install(version, tarball, library), error = identity) + if (inherits(status, "error")) + stop("failed to install renv ", version) - return(invisible()) } renv_bootstrap_tests_running <- function() { @@ -153,32 +83,28 @@ local({ renv_bootstrap_repos <- function() { - # get CRAN repository - cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") - # check for repos override repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) - if (!is.na(repos)) { - - # check for RSPM; if set, use a fallback repository for renv - rspm <- Sys.getenv("RSPM", unset = NA) - if (identical(rspm, repos)) - repos <- c(RSPM = rspm, CRAN = cran) - + if (!is.na(repos)) return(repos) - } - # check for lockfile repositories repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) if (!inherits(repos, "error") && length(repos)) return(repos) + # if we're testing, re-use the test repositories + if (renv_bootstrap_tests_running()) + return(getOption("renv.tests.repos")) + # retrieve current repos repos <- getOption("repos") # ensure @CRAN@ entries are resolved - repos[repos == "@CRAN@"] <- cran + repos[repos == "@CRAN@"] <- getOption( + "renv.repos.cran", + "https://cloud.r-project.org" + ) # add in renv.bootstrap.repos if set default <- c(FALLBACK = "https://cloud.r-project.org") @@ -217,34 +143,33 @@ local({ renv_bootstrap_download <- function(version) { - sha <- attr(version, "sha", exact = TRUE) - - methods <- if (!is.null(sha)) { - - # attempting to bootstrap a development version of renv - c( - function() renv_bootstrap_download_tarball(sha), - function() renv_bootstrap_download_github(sha) + # if the renv version number has 4 components, assume it must + # be retrieved via github + nv <- numeric_version(version) + components <- unclass(nv)[[1]] + + # if this appears to be a development version of 'renv', we'll + # try to restore from github + dev <- length(components) == 4L + + # begin collecting different methods for finding renv + methods <- c( + renv_bootstrap_download_tarball, + if (dev) + renv_bootstrap_download_github + else c( + renv_bootstrap_download_cran_latest, + renv_bootstrap_download_cran_archive ) - - } else { - - # attempting to bootstrap a release version of renv - c( - function() renv_bootstrap_download_tarball(version), - function() renv_bootstrap_download_cran_latest(version), - function() renv_bootstrap_download_cran_archive(version) - ) - - } + ) for (method in methods) { - path <- tryCatch(method(), error = identity) + path <- tryCatch(method(version), error = identity) if (is.character(path) && file.exists(path)) return(path) } - stop("All download methods failed") + stop("failed to download renv ", version) } @@ -308,6 +233,8 @@ local({ type <- spec$type repos <- spec$repos + message("* Downloading renv ", version, " ... ", appendLF = FALSE) + baseurl <- utils::contrib.url(repos = repos, type = type) ext <- if (identical(type, "source")) ".tar.gz" @@ -324,10 +251,13 @@ local({ condition = identity ) - if (inherits(status, "condition")) + if (inherits(status, "condition")) { + message("FAILED") return(FALSE) + } # report success and return + message("OK (downloaded ", type, ")") destfile } @@ -384,6 +314,8 @@ local({ urls <- file.path(repos, "src/contrib/Archive/renv", name) destfile <- file.path(tempdir(), name) + message("* Downloading renv ", version, " ... ", appendLF = FALSE) + for (url in urls) { status <- tryCatch( @@ -391,11 +323,14 @@ local({ condition = identity ) - if (identical(status, 0L)) + if (identical(status, 0L)) { + message("OK") return(destfile) + } } + message("FAILED") return(FALSE) } @@ -409,7 +344,8 @@ local({ return() # allow directories - if (dir.exists(tarball)) { + info <- file.info(tarball, extra_cols = FALSE) + if (identical(info$isdir, TRUE)) { name <- sprintf("renv_%s.tar.gz", version) tarball <- file.path(tarball, name) } @@ -418,7 +354,7 @@ local({ if (!file.exists(tarball)) { # let the user know we weren't able to honour their request - fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + fmt <- "* RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." msg <- sprintf(fmt, tarball) warning(msg) @@ -427,7 +363,10 @@ local({ } - catf("- Using local tarball '%s'.", tarball) + fmt <- "* Bootstrapping with tarball at path '%s'." + msg <- sprintf(fmt, tarball) + message(msg) + tarball } @@ -454,6 +393,8 @@ local({ on.exit(do.call(base::options, saved), add = TRUE) } + message("* Downloading renv ", version, " from GitHub ... ", appendLF = FALSE) + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) name <- sprintf("renv_%s.tar.gz", version) destfile <- file.path(tempdir(), name) @@ -463,105 +404,26 @@ local({ condition = identity ) - if (!identical(status, 0L)) + if (!identical(status, 0L)) { + message("FAILED") return(FALSE) - - renv_bootstrap_download_augment(destfile) - - return(destfile) - - } - - # Add Sha to DESCRIPTION. This is stop gap until #890, after which we - # can use renv::install() to fully capture metadata. - renv_bootstrap_download_augment <- function(destfile) { - sha <- renv_bootstrap_git_extract_sha1_tar(destfile) - if (is.null(sha)) { - return() } - # Untar - tempdir <- tempfile("renv-github-") - on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) - untar(destfile, exdir = tempdir) - pkgdir <- dir(tempdir, full.names = TRUE)[[1]] - - # Modify description - desc_path <- file.path(pkgdir, "DESCRIPTION") - desc_lines <- readLines(desc_path) - remotes_fields <- c( - "RemoteType: github", - "RemoteHost: api.github.com", - "RemoteRepo: renv", - "RemoteUsername: rstudio", - "RemotePkgRef: rstudio/renv", - paste("RemoteRef: ", sha), - paste("RemoteSha: ", sha) - ) - writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) - - # Re-tar - local({ - old <- setwd(tempdir) - on.exit(setwd(old), add = TRUE) - - tar(destfile, compression = "gzip") - }) - invisible() - } + message("OK") + return(destfile) - # Extract the commit hash from a git archive. Git archives include the SHA1 - # hash as the comment field of the tarball pax extended header - # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) - # For GitHub archives this should be the first header after the default one - # (512 byte) header. - renv_bootstrap_git_extract_sha1_tar <- function(bundle) { - - # open the bundle for reading - # We use gzcon for everything because (from ?gzcon) - # > Reading from a connection which does not supply a 'gzip' magic - # > header is equivalent to reading from the original connection - conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) - on.exit(close(conn)) - - # The default pax header is 512 bytes long and the first pax extended header - # with the comment should be 51 bytes long - # `52 comment=` (11 chars) + 40 byte SHA1 hash - len <- 0x200 + 0x33 - res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) - - if (grepl("^52 comment=", res)) { - sub("52 comment=", "", res) - } else { - NULL - } } renv_bootstrap_install <- function(version, tarball, library) { # attempt to install it into project library + message("* Installing renv ", version, " ... ", appendLF = FALSE) dir.create(library, showWarnings = FALSE, recursive = TRUE) - output <- renv_bootstrap_install_impl(library, tarball) - - # check for successful install - status <- attr(output, "status") - if (is.null(status) || identical(status, 0L)) - return(status) - - # an error occurred; report it - header <- "installation of renv failed" - lines <- paste(rep.int("=", nchar(header)), collapse = "") - text <- paste(c(header, lines, output), collapse = "\n") - stop(text) - - } - - renv_bootstrap_install_impl <- function(library, tarball) { # invoke using system2 so we can capture and report output bin <- R.home("bin") exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" - R <- file.path(bin, exe) + r <- file.path(bin, exe) args <- c( "--vanilla", "CMD", "INSTALL", "--no-multiarch", @@ -569,7 +431,19 @@ local({ shQuote(path.expand(tarball)) ) - system2(R, args, stdout = TRUE, stderr = TRUE) + output <- system2(r, args, stdout = TRUE, stderr = TRUE) + message("Done!") + + # check for successful install + status <- attr(output, "status") + if (is.numeric(status) && !identical(status, 0L)) { + header <- "Error installing renv:" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- c(header, lines, output) + writeLines(text, con = stderr()) + } + + status } @@ -779,60 +653,32 @@ local({ } - renv_bootstrap_validate_version <- function(version, description = NULL) { - - # resolve description file - # - # avoid passing lib.loc to `packageDescription()` below, since R will - # use the loaded version of the package by default anyhow. note that - # this function should only be called after 'renv' is loaded - # https://github.com/rstudio/renv/issues/1625 - description <- description %||% packageDescription("renv") + renv_bootstrap_validate_version <- function(version) { - # check whether requested version 'version' matches loaded version of renv - sha <- attr(version, "sha", exact = TRUE) - valid <- if (!is.null(sha)) - renv_bootstrap_validate_version_dev(sha, description) - else - renv_bootstrap_validate_version_release(version, description) - - if (valid) + loadedversion <- utils::packageDescription("renv", fields = "Version") + if (version == loadedversion) return(TRUE) - # the loaded version of renv doesn't match the requested version; - # give the user instructions on how to proceed - remote <- if (!is.null(description[["RemoteSha"]])) { - paste("rstudio/renv", description[["RemoteSha"]], sep = "@") - } else { - paste("renv", description[["Version"]], sep = "@") - } - - # display both loaded version + sha if available - friendly <- renv_bootstrap_version_friendly( - version = description[["Version"]], - sha = description[["RemoteSha"]] - ) + # assume four-component versions are from GitHub; three-component + # versions are from CRAN + components <- strsplit(loadedversion, "[.-]")[[1]] + remote <- if (length(components) == 4L) + paste("rstudio/renv", loadedversion, sep = "@") + else + paste("renv", loadedversion, sep = "@") fmt <- paste( "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", - "- Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", - "- Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + "Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", + "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", sep = "\n" ) - catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) - FALSE + msg <- sprintf(fmt, loadedversion, version, remote) + warning(msg, call. = FALSE) - } - - renv_bootstrap_validate_version_dev <- function(version, description) { - expected <- description[["RemoteSha"]] - is.character(expected) && startswith(expected, version) - } + FALSE - renv_bootstrap_validate_version_release <- function(version, description) { - expected <- description[["Version"]] - is.character(expected) && identical(expected, version) } renv_bootstrap_hash_text <- function(text) { @@ -854,12 +700,6 @@ local({ # warn if the version of renv loaded does not match renv_bootstrap_validate_version(version) - # execute renv load hooks, if any - hooks <- getHook("renv::autoload") - for (hook in hooks) - if (is.function(hook)) - tryCatch(hook(), error = warnify) - # load the project renv::load(project) @@ -999,66 +839,14 @@ local({ } - renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { - sha <- sha %||% attr(version, "sha", exact = TRUE) - parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) - paste(parts, collapse = "") - } - - renv_bootstrap_exec <- function(project, libpath, version) { - if (!renv_bootstrap_load(project, libpath, version)) - renv_bootstrap_run(version, libpath) - } - - renv_bootstrap_run <- function(version, libpath) { - - # perform bootstrap - bootstrap(version, libpath) - - # exit early if we're just testing bootstrap - if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) - return(TRUE) - - # try again to load - if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { - return(renv::load(project = getwd())) - } - - # failed to download or load renv; warn the user - msg <- c( - "Failed to find an renv installation: the project will not be loaded.", - "Use `renv::activate()` to re-initialize the project." - ) - - warning(paste(msg, collapse = "\n"), call. = FALSE) - - } renv_json_read <- function(file = NULL, text = NULL) { - jlerr <- NULL - # if jsonlite is loaded, use that instead - if ("jsonlite" %in% loadedNamespaces()) { - - json <- catch(renv_json_read_jsonlite(file, text)) - if (!inherits(json, "error")) - return(json) - - jlerr <- json - - } - - # otherwise, fall back to the default JSON reader - json <- catch(renv_json_read_default(file, text)) - if (!inherits(json, "error")) - return(json) - - # report an error - if (!is.null(jlerr)) - stop(jlerr) + if ("jsonlite" %in% loadedNamespaces()) + renv_json_read_jsonlite(file, text) else - stop(json) + renv_json_read_default(file, text) } @@ -1172,9 +960,35 @@ local({ # construct full libpath libpath <- file.path(root, prefix) - # run bootstrap code - renv_bootstrap_exec(project, libpath, version) + # attempt to load + if (renv_bootstrap_load(project, libpath, version)) + return(TRUE) + + # load failed; inform user we're about to bootstrap + prefix <- paste("# Bootstrapping renv", version) + postfix <- paste(rep.int("-", 77L - nchar(prefix)), collapse = "") + header <- paste(prefix, postfix) + message(header) + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + message("* Successfully installed and loaded renv ", version, ".") + return(renv::load()) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) - invisible() + warning(paste(msg, collapse = "\n"), call. = FALSE) }) diff --git a/server.R b/server.R index 0feb451..1e60cde 100644 --- a/server.R +++ b/server.R @@ -432,7 +432,8 @@ server <- function(input, output, session) { output$textHeadline <- renderText({ val <- paste(input$headlineAps, collapse = ",") # val1<-paste(input$allGender, collapse=", ") - paste("The boxes display the latest provisional average results in 2022/23 for A level, applied general and tech level. In 2018, there was a large drop in the number of applied general + + paste("The boxes display the latest revised average grades in 2022/23 for A level, applied general and tech level. In 2018, there was a large drop in the number of applied general and tech level students. This was due to the change in the list of tech level and applied general qualifications eligible for reporting in the performance tables. Point scores for 2020 and 2021 are based on Centre assessment grade and Teacher assessed grade respectively. @@ -537,11 +538,11 @@ server <- function(input, output, session) { reactiveSubjectFm <- reactive({ - subjNameFm <- subjectByGender + subjNameFm <- subjectByGender #dfMs subjNameFm <- subset( subjNameFm, - subject_name == input$subjectFm & + subject_name == input$subjectFm & #subjectMs between(year, as.numeric(input$year_start_fm), as.numeric(input$year_end_fm)) ) @@ -617,8 +618,8 @@ server <- function(input, output, session) { val2 <- paste(input$year_end_fm, collapse = ", ") paste( - "The line chart shows the A level exam entries for female and male on ", val, " from ", val1, "to ", val2, - " in England. " + "The line chart shows the A level exam entries on ", val, " from ", val1, "to ", val2, + " for female, male and all students in England. " ) }) @@ -629,8 +630,8 @@ server <- function(input, output, session) { val2 <- paste(input$year_end_fm, collapse = ", ") paste( - "The line chart shows the A level cumulative percentage grades for female and male on ", val, "\n from ", val1, " to ", val2, - " in England. The shaded area on chart shows the Centre Assessment Grade (CAG) and Teacher Assessed Grade (TAG) + "The line chart shows the A level cumulative percentage grades on ", val, "\n from ", val1, " to ", val2, + " for female, male and all students in England. The shaded area on chart shows the Centre Assessment Grade (CAG) and Teacher Assessed Grade (TAG) awarded in 2019/20 and 2020/21 respectively." ) }) @@ -839,6 +840,190 @@ server <- function(input, output, session) { }) + + + ####### Maths and science + + + reactiveSubjectMs <- reactive({ + subjNameMs <- dfMs + + subjNameMs <- subset( + subjNameMs, + subject == input$subjectMs & #subjectMs + + between(year, as.numeric(input$year_start_ms), as.numeric(input$year_end_ms)) + ) + + subjNameMs + }) + + output$plotSubjectMs <- renderPlotly({ + createTimeSeriesSubjectMs(reactiveSubjectMs(), + subByMs = input$subjectMs + ) + }) + + + # observeEvent(input$year_start_fm, {updateSelectInput(session, "year_end_fm", label = NULL, + # choices = seq(ifelse(input$year_start_fm == latest_year, latest_year, as.numeric(input$year_start_fm)), latest_year, 1), + # selected = input$year_end_fm) }) + observeEvent(input$year_end_ms, { + updateSelectInput(session, "year_start_ms", + label = NULL, + choices = seq(2010, ifelse(input$year_end_ms == 2010, 2010, as.integer(2018)), 1), + selected = input$year_start_ms + ) + }) + + observeEvent(input$resetSubMs, { + updateSelectInput(session, "subjectMs", selected = "Maths") + updateSelectInput(session, "year_start_ms", selected = 2010) + updateSelectInput(session, "year_end_ms", selected = latest_year) + + }) + + + + output$textSubMs <- renderText({ + val <- paste(input$subjectMs, collapse = ",") + val1 <- paste(input$year_start_ms, collapse = ", ") + val2 <- paste(input$year_end_ms, collapse = ", ") + + paste( + "The line chart shows the proportion of A level students that entered ", val, " from ", val1, "to ", val2, "for female, male and all students in England." + + ) + }) + + + + # + # output$textResFm <- renderText({ + # val <- paste(input$subjectFm, collapse = ", ") + # val1 <- paste(input$year_start_fm, collapse = ", ") + # val2 <- paste(input$year_end_fm, collapse = ", ") + # + # paste( + # "The line chart shows the A level cumulative percentage grades for female and male on ", val, "\n from ", val1, " to ", val2, + # " in England. The shaded area on chart shows the Centre Assessment Grade (CAG) and Teacher Assessed Grade (TAG) + # awarded in 2019/20 and 2020/21 respectively." + # ) + # }) + # + + + # Download selected subjects + + + + + + + + # Download subject entry and cumulative result for all subject from top panel + + + + output$downloadDataSubjectMs <- downloadHandler( + filename = "alevel_maths_science_data.csv", + content = function(file) { + data <- dfMsRaw + write.csv(data, file, row.names = FALSE) + } + ) + + + + # Download selected subject entries by gender + selectedSubMs <- reactive({ + subjName <- dfMs %>% + select( + year, time_period, subject, + characteristic_gender, percent_entered, number_of_students, version + ) + subjName <- subset( + subjName, + subject_name == input$subjectMs & + + between(year, as.numeric(input$year_start_ms), as.numeric(input$year_end_ms)) + ) + + subjName + }) + + + + selectedMsData <- reactive({ + msData <- dfMs + msData <- subset( + msData, + subject == input$subjectMs) %>% + select( + Year = year, + `Time period` = time_period, + `Characteristic gender` = characteristic_gender, + Subject = subject, + `Proportion of students` = percent_entered, + `Number of students` = number_of_students, + Version = version) + + }) + + + output$tabMs <- renderDataTable({ + datatable(selectedMsData(), + extens = "Buttons", + options = ( + list( + infor = F, paging = F, + searching = F, + stripClasses = F, + lengthChange = F, + scrollY = "260px", + scrollX = T, + scrollCollapse = T, + dom = "Bfrtip", + buttons = (c("copy", "csv", "excel")), + class = "display" + )), + rownames = FALSE + ) + }) + + + + # + # + # output$resall <- renderDataTable({ + # datatable(selected_subAll(), + # options = list( + # infor = T, paging = F, + # searching = F, + # stripClasses = F, + # lengthChange = F, + # scrollY = "260px", + # scrollX = T, + # scrollCollapse = T, + # rownames = FALSE, + # autoWidth = TRUE, + # server = TRUE + # ) + # ) + # }) + + + + + + + + + + + + + @@ -856,6 +1041,10 @@ server <- function(input, output, session) { observeEvent(input$link_to_alevelAllSubject_tab, { updateTabsetPanel(session, "navlistPanel", selected = "dashboard_alse") }) + + observeEvent(input$link_to_alevelMathsScience_tab, { + updateTabsetPanel(session, "navlistPanel", selected = "dashboard_ms") + }) diff --git a/ui.R b/ui.R index 1eaacde..f0c679e 100644 --- a/ui.R +++ b/ui.R @@ -115,6 +115,7 @@ ui <- function(input, output, session) { well = FALSE, homepage_panel(), dashboard_panel_aps(), + dashboard_panel_ms(), dashboard_panel_sub_all(), dashboard_panel_sub_fm(), flow_panel(), diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 0000000..763cd2b --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,4 @@ +.Rhistory +.Rproj.user +.RData +timeseries_data_process.Rproj \ No newline at end of file