@@ -183,6 +183,10 @@ render_posters_section <- function(
183183 return (invisible (NULL ))
184184 }
185185
186+ if ( ! " poster_nro" %in% colnames(posters ) ){
187+ stop(" Add poster numbers with add_poster_number()" )
188+ }
189+
186190 cat(" <h2 style='margin-top: 2.5em; margin-bottom: 0.4em;'>POSTERS</h2>\n " )
187191 cat(" <hr style='margin-top: 0; margin-bottom: 1.2em;'>\n " )
188192 cat(" <p>(In alphabetical order.)</p>\n " )
@@ -193,26 +197,8 @@ render_posters_section <- function(
193197 posters <- posters | >
194198 arrange(is.na(day ), day , presenter , title )
195199
196- # Add poster number. One can specify them in with poster_nro column, or then
197- # we assign them automatically.
198- if (" poster_nro" %in% names(posters )) {
199- used <- posters $ poster_nro [! is.na(posters $ poster_nro )]
200- available <- setdiff(seq_len(nrow(posters )), used )
201- posters <- posters | >
202- mutate(
203- idx = if_else(
204- ! is.na(poster_nro ),
205- poster_nro ,
206- available [cumsum(is.na(poster_nro ))]
207- )
208- )
209- } else {
210- posters <- posters | >
211- mutate(idx = seq_len(n()))
212- }
213-
214200 posters <- posters | >
215- arrange(idx )
201+ arrange(poster_nro )
216202
217203 posters_with_day <- posters | >
218204 filter(! is.na(day ) & str_trim(day ) != " " )
@@ -248,7 +234,7 @@ render_posters_section <- function(
248234
249235 out <- day_df | >
250236 mutate(
251- Author = paste0(idx , " " , htmlEscape(presenter )),
237+ Author = paste0(poster_nro , " " , htmlEscape(presenter )),
252238 Title = mapply(
253239 make_collapsible_title ,
254240 title ,
@@ -278,7 +264,7 @@ render_posters_section <- function(
278264
279265 out <- posters_without_day | >
280266 mutate(
281- Author = paste0(idx , " " , htmlEscape(presenter )),
267+ Author = paste0(poster_nro , " " , htmlEscape(presenter )),
282268 Title = mapply(
283269 make_collapsible_title ,
284270 title ,
@@ -545,3 +531,52 @@ render_detailed_program <- function(
545531 full_width = full_width
546532 )
547533}
534+
535+ add_poster_number <- function (sessions_csv = " ../data/sessions.csv" ){
536+ df <- read.csv(
537+ sessions_csv ,
538+ stringsAsFactors = FALSE ,
539+ na.strings = c(" " , " NA" )
540+ ) | >
541+ mutate(
542+ day = str_trim(coalesce(day , " " )),
543+ time = str_trim(coalesce(time , " " )),
544+ type = str_trim(coalesce(type , " " )),
545+ title = str_trim(coalesce(title , " " )),
546+ authors = str_trim(coalesce(authors , " " )),
547+ presenter = str_trim(coalesce(presenter , " " )),
548+ abstract = str_trim(coalesce(abstract , " " )),
549+ time_min = parse_hm(time ),
550+ type_norm = normalize_type(type )
551+ ) | >
552+ fill_presenter()
553+
554+ posters <- df [df $ type == " poster" , , drop = FALSE ]
555+ df <- df [df $ type != " poster" , , drop = FALSE ]
556+
557+ # Sort in alphabetical order
558+ weekday_order <- wday(1 : 7 , label = TRUE , abbr = TRUE , week_start = 1 )
559+ posters $ day <- factor (posters $ day , level = levels(weekday_order ))
560+ posters <- posters | >
561+ arrange(is.na(day ), day , presenter , title )
562+
563+ # Add poster number
564+ if ( " poster_nro" %in% colnames(posters ) ){
565+ posters <- posters | >
566+ arrange(is.na(poster_nro ), poster_nro , is.na(day ), day , presenter , title )
567+ posters <- posters | >
568+ mutate(
569+ poster_nro = coalesce(poster_nro , seq_len(n()))
570+ )
571+ } else {
572+ posters <- posters | >
573+ mutate(poster_nro = seq_len(n()))
574+ }
575+
576+ # Add poster_nro column to original table if it does not exist yet
577+ df [[" poster_nro" ]] <- NA
578+ # Add posters back
579+ df <- rbind(df , posters )
580+ write.csv(df , sessions_csv , row.names = FALSE )
581+ return (NULL )
582+ }
0 commit comments