-
Notifications
You must be signed in to change notification settings - Fork 0
/
schedule.qmd
86 lines (75 loc) · 4.01 KB
/
schedule.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
---
title: "Schedule"
sidebar: false
toc: false
page-layout: full
---
::: {.schedule-page}
- [**Content**](/content/) ({{< fa book-open-reader >}}): This page contains the readings, slides, and recorded lectures for the week. Read and watch these **before** our in-person class.
- [**Example**](/example/) ({{< fa laptop-code >}}): This page contains fully annotated R code and other supplementary information that you can use as a reference for your evaluations. This is only a reference page—you don't have to necessarily do anything here. Some sections also contain videos of me live coding the examples so you can see what it looks like to work in real time. This page will be *very* helpful as you work on your evaluations.
- [**Evaluations**](/evaluations/) ({{< fa pen-ruler >}}): This page contains the instructions for each evaluation. Weekly check-ins and problem sets are due by **noon** on the day before class.
```{r build-table, include=FALSE}
library(tidyverse)
library(glue)
library(knitr)
library(kableExtra)
Sys.setlocale("LC_TIME", "en_CA.UTF-8")
withr::with_dir(here::here(), {
targets::tar_load(schedule_file)
})
schedule_raw <- read_csv(schedule_file)
schedule <- schedule_raw %>%
mutate(group = fct_inorder(group)) %>%
mutate(subgroup = fct_inorder(subgroup)) %>%
mutate(var_title = ifelse(!is.na(content),
glue('<span class="content-title">{title}</span>'),
glue('{title}'))) %>%
mutate(var_deadline = ifelse(!is.na(deadline),
glue('  <small>(submit by {deadline})</small>'),
"")) %>%
mutate(var_content = ifelse(!is.na(content),
glue('<a href="{content}.qmd"><i class="fa-solid fa-book-open-reader fa-lg"></i></a>'),
glue('<font color="#e9ecef"><i class="fa-solid fa-book-open-reader fa-lg"></i></font>'))) %>%
mutate(var_example = ifelse(!is.na(example),
glue('<a href="{example}.qmd"><i class="fa-solid fa-laptop-code fa-lg"></i></a>'),
glue('<font color="#e9ecef"><i class="fa-solid fa-laptop-code fa-lg"></i></font>'))) %>%
mutate(var_evaluations = ifelse(!is.na(evaluations),
glue('<a href="{evaluations}.qmd"><i class="fa-solid fa-pen-ruler fa-lg"></i></a>'),
glue('<font color="#e9ecef"><i class="fa-solid fa-pen-ruler fa-lg"></i></font>'))) %>%
mutate(col_date = ifelse(is.na(date_end),
glue('<strong>{format(date, "%B %e")}</strong>'),
glue('<strong>{format(date, "%B %e")}</strong>–<strong>{format(date_end, "%B %e")}</strong>'))) %>%
mutate(col_title = glue('{var_title}{var_deadline}')) %>%
mutate(col_content = var_content,
col_example = var_example,
col_evaluations = var_evaluations)
schedule_nested <- schedule %>%
select(group, subgroup,
` ` = col_date, Title = col_title, Content = col_content,
Example = col_example, Evaluations = col_evaluations) %>%
group_by(group) %>%
nest() %>%
mutate(subgroup_count = map(data, ~count(.x, subgroup)),
subgroup_index = map(subgroup_count, ~{
.x %>% pull(n) %>% set_names(.x$subgroup)
}))
show_table <- function(group_id) {
# Add a heading
cat(as.character(paste("\n\n###", schedule_nested$group[[group_id]], "\n\n")))
# Make the table
tbl <- schedule_nested$data[[group_id]] |>
select(-subgroup) %>%
kbl(escape = FALSE, align = "rlccc", table.attr = 'class="schedule-table"') %>%
kable_styling() %>%
column_spec(1, width = "20%", extra_css = "padding-right: 20px;") %>%
column_spec(2, width = "50%") %>%
column_spec(3:5, width = "10%") %>%
pack_rows(index = schedule_nested$subgroup_index[[group_id]],
label_row_css = "border-bottom: 2px solid #000000;")
cat(tbl)
}
```
```{r show-table, echo=FALSE, results="asis"}
walk(seq(1, nrow(schedule_nested)), ~show_table(.x))
```
:::