Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add vignette showing use for ics file creation #30

Open
Robinlovelace opened this issue Jan 28, 2019 · 4 comments
Open

Add vignette showing use for ics file creation #30

Robinlovelace opened this issue Jan 28, 2019 · 4 comments

Comments

@Robinlovelace
Copy link
Member

E.g. building on this:

# Aim: create ical of all lectures and practicals of TDS
    
    # install required package:
    devtools::install_github("ATFutures/calendar")
#> Skipping install of 'calendar' from a github remote, the SHA1 (4efa5ba6) has not changed since last install.
#>   Use `force = TRUE` to force installation
    
    # Manual input ----
    # First thought was to capture the data hosted at:
    # http://timetable.leeds.ac.uk/teaching/201819/reporting/individual;?objectclass=module&idtype=name&identifier=TRAN5340M01&&template=SWSCUST+module+Individual&days=1-7&weeks=1-52&periods=1-21
    # found from: http://timetable.leeds.ac.uk/teaching/201819/module.htm
    library(rvest)
#> Loading required package: xml2
    # vignette("selectorgadget") # check how it works...
    u = "http://timetable.leeds.ac.uk/teaching/201819/reporting/TextSpreadsheet?objectclass=module&idtype=name&identifier=TRAN5340M01&template=SWSCUST+module+individual&days=1-7&periods=1-21&weeks=1-52"
    day_of_week = 2 
    session_ids = c(
        "intro",
        "software",
        "structure",
        "cleaning",
        "accessing",
        "processing",
        "viz",
        "ml",
        "project",
        "prof"
    )
    session_descriptions = c(
        "Introduction to transport data science",
        "Software for practical data science",
        "The structure of transport data",
        "Data cleaning and subsetting",
        "Accessing data from web sources",
        "Routing",
        "Data visualization",
        "Machine learning",
        "Project work",
        "Professional issues"
    )
    
    html = read_html(u)
    tt_html = html_nodes(html, ".spreadsheet") %>% html_text()
    extract_column = function(x, n) {
        nodes = html_nodes(x, paste0(".spreadsheet td:nth-child(", n, ")"))
        html_text(nodes)[-1]
    }
    extract_column_name = function(x, n) {
        nodes = html_nodes(x, paste0(".spreadsheet td:nth-child(", n, ")"))
        html_text(nodes)[1]
    }
    
    cols = c(1:3, 7:11)
    colum_names = purrr::map_chr(cols, ~ extract_column_name(html, .x))
    tt_list = purrr::map(cols, ~ extract_column(html, .x))
    names(tt_list) = colum_names
    tt_df = tibble::as_tibble(tt_list)
    tt_df$Weekday = day_of_week
    
    # get dates -----
    w14_start = as.Date("2019-01-28")
    week_num = c(14:22, paste0("E", 1:4), 23:30)
    n_weeks = length(week_num)
    week_commencing = seq(from = w14_start, by = "week", length.out = n_weeks)
    weeks = tibble::data_frame(week_num, week_commencing)
    x = tt_df$Weeks[1]
    extract_weeks = function(x) {
        r_expression = paste0(
            "c(",
            gsub(pattern = "-", replacement = ":", x = x),
            ")"
        )
        eval(parse(text = r_expression))
    }
    
    extract_week_commencing = function(x) {
        weeks_n = tibble::data_frame(week_num = as.character(extract_weeks(x)))
        dplyr::inner_join(weeks_n, weeks)
    }
    extract_week_commencing(x)
#> Joining, by = "week_num"
#> # A tibble: 10 x 2
#>    week_num week_commencing
#>    <chr>    <date>         
#>  1 15       2019-02-04     
#>  2 16       2019-02-11     
#>  3 17       2019-02-18     
#>  4 19       2019-03-04     
#>  5 20       2019-03-11     
#>  6 21       2019-03-18     
#>  7 22       2019-03-25     
#>  8 23       2019-04-29     
#>  9 24       2019-05-06     
#> 10 25       2019-05-13
    extract_attributes = function(tt_df) {
        tt_i = extract_week_commencing(tt_df$Weeks[1])
        tt_i$code = tt_df$`Module code (or codes if jointly taught)`[1] 
        
        tt_i$type = tt_df$`Type of activity`[1]
        tt_i$type = gsub(pattern = " 1| Based Learning 1", replacement = "", tt_i$type)
        tt_i$type = gsub(pattern = "Computer", replacement = "Practical", tt_i$type)
        
        tt_i$LOCATION = tt_df$Location[1] 
        tt_i$day_of_week = tt_df$Weekday[1] 
        tt_i$DTSTART = lubridate::ymd_hm(paste(tt_i$week_commencing + day_of_week - 1, tt_df$Start[1])) 
        tt_i$DTEND = lubridate::ymd_hm(paste(tt_i$week_commencing + day_of_week - 1, tt_df$End[1]))
        tt_i$size = tt_df$Size[1]
        tt_i$staff = tt_df$`Teaching staff`[1]
        tt_i
    }
    
    # iterate over each type of event 
    i = 1
    for(i in seq(nrow(tt_df))) {
        tti = extract_attributes(tt_df[i, ])
        if(i == 1) {
            tt = tti
        } else (
            tt = rbind(tt, tti)
        )
    }
#> Joining, by = "week_num"
#> Joining, by = "week_num"
    
    tt$SUMMARY = paste0(
        "TDS ",
        tt$type,
        ": ",
        rep(session_ids, 2)
    )
    tt$id = paste(rep(session_ids, each = 2), tt$type)
    tt$DESCRIPTION = paste0(rep(session_descriptions, each = 2), ", ", gsub(pattern = " 1| Based Learning 1", replacement = "", tt$type))
    tt$staff = "Dr Robin Lovelace"
    tt$staff[c(5:6, 17:18)] = "Dr Richard Connors"
    tt$staff[c(11:12)] = "Dr Malcolm Morgan"
    tt$DESCRIPTION = paste0(tt$DESCRIPTION, ", taught by: ", tt$staff)
    
    tt = dplyr::arrange(tt, DTSTART)
    tt_min = dplyr::select(tt, SUMMARY, DESCRIPTION, DTSTART, DTEND, LOCATION, UID = id)
    tt_min
#> # A tibble: 20 x 6
#>    SUMMARY DESCRIPTION DTSTART             DTEND               LOCATION
#>    <chr>   <chr>       <dttm>              <dttm>              <chr>   
#>  1 TDS Le… Introducti… 2019-02-05 12:30:00 2019-02-05 13:30:00 EC Ston…
#>  2 TDS Pr… Routing, P… 2019-02-05 14:00:00 2019-02-05 15:30:00 West Te…
#>  3 TDS Le… Introducti… 2019-02-12 12:30:00 2019-02-12 13:30:00 EC Ston…
#>  4 TDS Pr… Routing, P… 2019-02-12 14:00:00 2019-02-12 15:30:00 West Te…
#>  5 TDS Le… Software f… 2019-02-19 12:30:00 2019-02-19 13:30:00 EC Ston…
#>  6 TDS Pr… Data visua… 2019-02-19 14:00:00 2019-02-19 15:30:00 West Te…
#>  7 TDS Le… Software f… 2019-03-05 12:30:00 2019-03-05 13:30:00 EC Ston…
#>  8 TDS Pr… Data visua… 2019-03-05 14:00:00 2019-03-05 15:30:00 West Te…
#>  9 TDS Le… The struct… 2019-03-12 12:30:00 2019-03-12 13:30:00 EC Ston…
#> 10 TDS Pr… Machine le… 2019-03-12 14:00:00 2019-03-12 15:30:00 West Te…
#> 11 TDS Le… The struct… 2019-03-19 12:30:00 2019-03-19 13:30:00 EC Ston…
#> 12 TDS Pr… Machine le… 2019-03-19 14:00:00 2019-03-19 15:30:00 West Te…
#> 13 TDS Le… Data clean… 2019-03-26 12:30:00 2019-03-26 13:30:00 EC Ston…
#> 14 TDS Pr… Project wo… 2019-03-26 14:00:00 2019-03-26 15:30:00 West Te…
#> 15 TDS Le… Data clean… 2019-04-30 12:30:00 2019-04-30 13:30:00 EC Ston…
#> 16 TDS Pr… Project wo… 2019-04-30 14:00:00 2019-04-30 15:30:00 West Te…
#> 17 TDS Le… Accessing … 2019-05-07 12:30:00 2019-05-07 13:30:00 EC Ston…
#> 18 TDS Pr… Profession… 2019-05-07 14:00:00 2019-05-07 15:30:00 West Te…
#> 19 TDS Le… Accessing … 2019-05-14 12:30:00 2019-05-14 13:30:00 EC Ston…
#> 20 TDS Pr… Profession… 2019-05-14 14:00:00 2019-05-14 15:30:00 West Te…
#> # ... with 1 more variable: UID <chr>
    submission_deadline = tt_min[1, ]
    submission_deadline$SUMMARY = "Deadline: report submission"
    submission_deadline$DESCRIPTION = "Hand-in deadline of portfolio of work"
    submission_deadline$DTSTART = lubridate::ymd_hm("2019-05-07 09:00")
    submission_deadline$DTEND = lubridate::ymd_hm("2019-05-07 09:00")
    submission_deadline$LOCATION = "ITS reception (40 University Road) and online"
    submission_deadline$UID = "submission"
    ic = calendar::ical(tt_min)
    calendar::ic_write(ic, "tds-timetable.ics")
    readr::write_csv(ic, "timetable.csv")
    ic
#> # A tibble: 20 x 6
#>    SUMMARY DESCRIPTION DTSTART             DTEND               LOCATION
#>    <chr>   <chr>       <dttm>              <dttm>              <chr>   
#>  1 TDS Le… Introducti… 2019-02-05 12:30:00 2019-02-05 13:30:00 EC Ston…
#>  2 TDS Pr… Routing, P… 2019-02-05 14:00:00 2019-02-05 15:30:00 West Te…
#>  3 TDS Le… Introducti… 2019-02-12 12:30:00 2019-02-12 13:30:00 EC Ston…
#>  4 TDS Pr… Routing, P… 2019-02-12 14:00:00 2019-02-12 15:30:00 West Te…
#>  5 TDS Le… Software f… 2019-02-19 12:30:00 2019-02-19 13:30:00 EC Ston…
#>  6 TDS Pr… Data visua… 2019-02-19 14:00:00 2019-02-19 15:30:00 West Te…
#>  7 TDS Le… Software f… 2019-03-05 12:30:00 2019-03-05 13:30:00 EC Ston…
#>  8 TDS Pr… Data visua… 2019-03-05 14:00:00 2019-03-05 15:30:00 West Te…
#>  9 TDS Le… The struct… 2019-03-12 12:30:00 2019-03-12 13:30:00 EC Ston…
#> 10 TDS Pr… Machine le… 2019-03-12 14:00:00 2019-03-12 15:30:00 West Te…
#> 11 TDS Le… The struct… 2019-03-19 12:30:00 2019-03-19 13:30:00 EC Ston…
#> 12 TDS Pr… Machine le… 2019-03-19 14:00:00 2019-03-19 15:30:00 West Te…
#> 13 TDS Le… Data clean… 2019-03-26 12:30:00 2019-03-26 13:30:00 EC Ston…
#> 14 TDS Pr… Project wo… 2019-03-26 14:00:00 2019-03-26 15:30:00 West Te…
#> 15 TDS Le… Data clean… 2019-04-30 12:30:00 2019-04-30 13:30:00 EC Ston…
#> 16 TDS Pr… Project wo… 2019-04-30 14:00:00 2019-04-30 15:30:00 West Te…
#> 17 TDS Le… Accessing … 2019-05-07 12:30:00 2019-05-07 13:30:00 EC Ston…
#> 18 TDS Pr… Profession… 2019-05-07 14:00:00 2019-05-07 15:30:00 West Te…
#> 19 TDS Le… Accessing … 2019-05-14 12:30:00 2019-05-14 13:30:00 EC Ston…
#> 20 TDS Pr… Profession… 2019-05-14 14:00:00 2019-05-14 15:30:00 West Te…
#> # ... with 1 more variable: UID <chr>
    readLines("tds-timetable.ics")
#>   [1] "BEGIN:VCALENDAR"                                                                          
#>   [2] "PRODID:ATFutures/calendar"                                                                
#>   [3] "VERSION:2.0"                                                                              
#>   [4] "CALSCALE:GREGORIAN"                                                                       
#>   [5] "METHOD:PUBLISH"                                                                           
#>   [6] "BEGIN:VEVENT"                                                                             
#>   [7] "SUMMARY:TDS Lecture: intro"                                                               
#>   [8] "DESCRIPTION:Introduction to transport data science, Lecture, taught by: Dr Robin Lovelace"
#>   [9] "DTSTART:20190205T123000"                                                                  
#>  [10] "DTEND:20190205T133000"                                                                    
#>  [11] "LOCATION:EC Stoner SR (7.76)"                                                             
#>  [12] "UID:intro Lecture"                                                                        
#>  [13] "END:VEVENT"                                                                               
#>  [14] "BEGIN:VEVENT"                                                                             
#>  [15] "SUMMARY:TDS Practical: intro"                                                             
#>  [16] "DESCRIPTION:Routing, Practical, taught by: Dr Malcolm Morgan"                             
#>  [17] "DTSTART:20190205T140000"                                                                  
#>  [18] "DTEND:20190205T153000"                                                                    
#>  [19] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#>  [20] "UID:processing Practical"                                                                 
#>  [21] "END:VEVENT"                                                                               
#>  [22] "BEGIN:VEVENT"                                                                             
#>  [23] "SUMMARY:TDS Lecture: software"                                                            
#>  [24] "DESCRIPTION:Introduction to transport data science, Lecture, taught by: Dr Robin Lovelace"
#>  [25] "DTSTART:20190212T123000"                                                                  
#>  [26] "DTEND:20190212T133000"                                                                    
#>  [27] "LOCATION:EC Stoner SR (7.76)"                                                             
#>  [28] "UID:intro Lecture"                                                                        
#>  [29] "END:VEVENT"                                                                               
#>  [30] "BEGIN:VEVENT"                                                                             
#>  [31] "SUMMARY:TDS Practical: software"                                                          
#>  [32] "DESCRIPTION:Routing, Practical, taught by: Dr Malcolm Morgan"                             
#>  [33] "DTSTART:20190212T140000"                                                                  
#>  [34] "DTEND:20190212T153000"                                                                    
#>  [35] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#>  [36] "UID:processing Practical"                                                                 
#>  [37] "END:VEVENT"                                                                               
#>  [38] "BEGIN:VEVENT"                                                                             
#>  [39] "SUMMARY:TDS Lecture: structure"                                                           
#>  [40] "DESCRIPTION:Software for practical data science, Lecture, taught by: Dr Robin Lovelace"   
#>  [41] "DTSTART:20190219T123000"                                                                  
#>  [42] "DTEND:20190219T133000"                                                                    
#>  [43] "LOCATION:EC Stoner SR (7.76)"                                                             
#>  [44] "UID:software Lecture"                                                                     
#>  [45] "END:VEVENT"                                                                               
#>  [46] "BEGIN:VEVENT"                                                                             
#>  [47] "SUMMARY:TDS Practical: structure"                                                         
#>  [48] "DESCRIPTION:Data visualization, Practical, taught by: Dr Robin Lovelace"                  
#>  [49] "DTSTART:20190219T140000"                                                                  
#>  [50] "DTEND:20190219T153000"                                                                    
#>  [51] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#>  [52] "UID:viz Practical"                                                                        
#>  [53] "END:VEVENT"                                                                               
#>  [54] "BEGIN:VEVENT"                                                                             
#>  [55] "SUMMARY:TDS Lecture: cleaning"                                                            
#>  [56] "DESCRIPTION:Software for practical data science, Lecture, taught by: Dr Robin Lovelace"   
#>  [57] "DTSTART:20190305T123000"                                                                  
#>  [58] "DTEND:20190305T133000"                                                                    
#>  [59] "LOCATION:EC Stoner SR (7.76)"                                                             
#>  [60] "UID:software Lecture"                                                                     
#>  [61] "END:VEVENT"                                                                               
#>  [62] "BEGIN:VEVENT"                                                                             
#>  [63] "SUMMARY:TDS Practical: cleaning"                                                          
#>  [64] "DESCRIPTION:Data visualization, Practical, taught by: Dr Robin Lovelace"                  
#>  [65] "DTSTART:20190305T140000"                                                                  
#>  [66] "DTEND:20190305T153000"                                                                    
#>  [67] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#>  [68] "UID:viz Practical"                                                                        
#>  [69] "END:VEVENT"                                                                               
#>  [70] "BEGIN:VEVENT"                                                                             
#>  [71] "SUMMARY:TDS Lecture: accessing"                                                           
#>  [72] "DESCRIPTION:The structure of transport data, Lecture, taught by: Dr Richard Connors"      
#>  [73] "DTSTART:20190312T123000"                                                                  
#>  [74] "DTEND:20190312T133000"                                                                    
#>  [75] "LOCATION:EC Stoner SR (7.76)"                                                             
#>  [76] "UID:structure Lecture"                                                                    
#>  [77] "END:VEVENT"                                                                               
#>  [78] "BEGIN:VEVENT"                                                                             
#>  [79] "SUMMARY:TDS Practical: accessing"                                                         
#>  [80] "DESCRIPTION:Machine learning, Practical, taught by: Dr Robin Lovelace"                    
#>  [81] "DTSTART:20190312T140000"                                                                  
#>  [82] "DTEND:20190312T153000"                                                                    
#>  [83] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#>  [84] "UID:ml Practical"                                                                         
#>  [85] "END:VEVENT"                                                                               
#>  [86] "BEGIN:VEVENT"                                                                             
#>  [87] "SUMMARY:TDS Lecture: processing"                                                          
#>  [88] "DESCRIPTION:The structure of transport data, Lecture, taught by: Dr Richard Connors"      
#>  [89] "DTSTART:20190319T123000"                                                                  
#>  [90] "DTEND:20190319T133000"                                                                    
#>  [91] "LOCATION:EC Stoner SR (7.76)"                                                             
#>  [92] "UID:structure Lecture"                                                                    
#>  [93] "END:VEVENT"                                                                               
#>  [94] "BEGIN:VEVENT"                                                                             
#>  [95] "SUMMARY:TDS Practical: processing"                                                        
#>  [96] "DESCRIPTION:Machine learning, Practical, taught by: Dr Robin Lovelace"                    
#>  [97] "DTSTART:20190319T140000"                                                                  
#>  [98] "DTEND:20190319T153000"                                                                    
#>  [99] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#> [100] "UID:ml Practical"                                                                         
#> [101] "END:VEVENT"                                                                               
#> [102] "BEGIN:VEVENT"                                                                             
#> [103] "SUMMARY:TDS Lecture: viz"                                                                 
#> [104] "DESCRIPTION:Data cleaning and subsetting, Lecture, taught by: Dr Robin Lovelace"          
#> [105] "DTSTART:20190326T123000"                                                                  
#> [106] "DTEND:20190326T133000"                                                                    
#> [107] "LOCATION:EC Stoner SR (7.76)"                                                             
#> [108] "UID:cleaning Lecture"                                                                     
#> [109] "END:VEVENT"                                                                               
#> [110] "BEGIN:VEVENT"                                                                             
#> [111] "SUMMARY:TDS Practical: viz"                                                               
#> [112] "DESCRIPTION:Project work, Practical, taught by: Dr Richard Connors"                       
#> [113] "DTSTART:20190326T140000"                                                                  
#> [114] "DTEND:20190326T153000"                                                                    
#> [115] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#> [116] "UID:project Practical"                                                                    
#> [117] "END:VEVENT"                                                                               
#> [118] "BEGIN:VEVENT"                                                                             
#> [119] "SUMMARY:TDS Lecture: ml"                                                                  
#> [120] "DESCRIPTION:Data cleaning and subsetting, Lecture, taught by: Dr Robin Lovelace"          
#> [121] "DTSTART:20190430T123000"                                                                  
#> [122] "DTEND:20190430T133000"                                                                    
#> [123] "LOCATION:EC Stoner SR (7.76)"                                                             
#> [124] "UID:cleaning Lecture"                                                                     
#> [125] "END:VEVENT"                                                                               
#> [126] "BEGIN:VEVENT"                                                                             
#> [127] "SUMMARY:TDS Practical: ml"                                                                
#> [128] "DESCRIPTION:Project work, Practical, taught by: Dr Richard Connors"                       
#> [129] "DTSTART:20190430T140000"                                                                  
#> [130] "DTEND:20190430T153000"                                                                    
#> [131] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#> [132] "UID:project Practical"                                                                    
#> [133] "END:VEVENT"                                                                               
#> [134] "BEGIN:VEVENT"                                                                             
#> [135] "SUMMARY:TDS Lecture: project"                                                             
#> [136] "DESCRIPTION:Accessing data from web sources, Lecture, taught by: Dr Robin Lovelace"       
#> [137] "DTSTART:20190507T123000"                                                                  
#> [138] "DTEND:20190507T133000"                                                                    
#> [139] "LOCATION:EC Stoner SR (7.76)"                                                             
#> [140] "UID:accessing Lecture"                                                                    
#> [141] "END:VEVENT"                                                                               
#> [142] "BEGIN:VEVENT"                                                                             
#> [143] "SUMMARY:TDS Practical: project"                                                           
#> [144] "DESCRIPTION:Professional issues, Practical, taught by: Dr Robin Lovelace"                 
#> [145] "DTSTART:20190507T140000"                                                                  
#> [146] "DTEND:20190507T153000"                                                                    
#> [147] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#> [148] "UID:prof Practical"                                                                       
#> [149] "END:VEVENT"                                                                               
#> [150] "BEGIN:VEVENT"                                                                             
#> [151] "SUMMARY:TDS Lecture: prof"                                                                
#> [152] "DESCRIPTION:Accessing data from web sources, Lecture, taught by: Dr Robin Lovelace"       
#> [153] "DTSTART:20190514T123000"                                                                  
#> [154] "DTEND:20190514T133000"                                                                    
#> [155] "LOCATION:EC Stoner SR (7.76)"                                                             
#> [156] "UID:accessing Lecture"                                                                    
#> [157] "END:VEVENT"                                                                               
#> [158] "BEGIN:VEVENT"                                                                             
#> [159] "SUMMARY:TDS Practical: prof"                                                              
#> [160] "DESCRIPTION:Professional issues, Practical, taught by: Dr Robin Lovelace"                 
#> [161] "DTSTART:20190514T140000"                                                                  
#> [162] "DTEND:20190514T153000"                                                                    
#> [163] "LOCATION:West Teaching Lab Cluster (G.29)"                                                
#> [164] "UID:prof Practical"                                                                       
#> [165] "END:VEVENT"                                                                               
#> [166] "END:VCALENDAR"

Created on 2019-01-28 by the reprex package (v0.2.1)

Session info
devtools::session_info()
#> ─ Session info ──────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 3.5.1 (2018-07-02)
#>  os       Debian GNU/Linux 9 (stretch)
#>  system   x86_64, linux-gnu           
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_US.UTF-8                 
#>  ctype    en_US.UTF-8                 
#>  tz       Etc/UTC                     
#>  date     2019-01-28                  
#> 
#> ─ Packages ──────────────────────────────────────────────────────────────
#>  package     * version    date       lib
#>  assertthat    0.2.0      2017-04-11 [1]
#>  backports     1.1.2      2017-12-13 [1]
#>  base64enc     0.1-3      2015-07-28 [1]
#>  bindr         0.1.1      2018-03-13 [1]
#>  bindrcpp    * 0.2.2      2018-03-29 [1]
#>  calendar      0.0.0.9000 2019-01-28 [1]
#>  callr         3.0.0      2018-08-24 [1]
#>  cli           1.0.1      2018-09-25 [1]
#>  crayon        1.3.4      2017-09-16 [1]
#>  curl          3.2        2018-03-28 [1]
#>  desc          1.2.0      2018-05-01 [1]
#>  devtools      2.0.1      2018-10-26 [1]
#>  digest        0.6.18     2018-10-10 [1]
#>  dplyr         0.7.8      2018-11-10 [1]
#>  evaluate      0.12       2018-10-09 [1]
#>  fansi         0.4.0      2018-10-05 [1]
#>  fs            1.2.6      2018-08-23 [1]
#>  glue          1.3.0      2018-07-17 [1]
#>  hms           0.4.2      2018-03-10 [1]
#>  htmltools     0.3.6      2017-04-28 [1]
#>  httr          1.3.1      2017-08-20 [1]
#>  knitr         1.20       2018-02-20 [1]
#>  lubridate     1.7.4      2018-04-11 [1]
#>  magrittr      1.5        2014-11-22 [1]
#>  memoise       1.1.0      2017-04-21 [1]
#>  pillar        1.3.0      2018-07-14 [1]
#>  pkgbuild      1.0.2      2018-10-16 [1]
#>  pkgconfig     2.0.2      2018-08-16 [1]
#>  pkgload       1.0.2      2018-10-29 [1]
#>  prettyunits   1.0.2      2015-07-13 [1]
#>  processx      3.2.1      2018-12-05 [1]
#>  ps            1.2.1      2018-11-06 [1]
#>  purrr         0.2.5      2018-05-29 [1]
#>  R6            2.3.0      2018-10-04 [1]
#>  Rcpp          1.0.0      2018-11-07 [1]
#>  readr         1.2.1      2018-11-22 [1]
#>  remotes       2.0.2      2018-10-30 [1]
#>  rlang         0.3.0.1    2018-10-25 [1]
#>  rmarkdown     1.10       2018-06-11 [1]
#>  rprojroot     1.3-2      2018-01-03 [1]
#>  rvest       * 0.3.2      2016-06-17 [1]
#>  selectr       0.4-1      2018-04-06 [1]
#>  sessioninfo   1.1.1      2018-11-05 [1]
#>  stringi       1.2.4      2018-07-20 [1]
#>  stringr       1.3.1      2018-05-10 [1]
#>  testthat      2.0.1      2018-10-13 [1]
#>  tibble        1.4.2      2018-01-22 [1]
#>  tidyselect    0.2.5      2018-10-11 [1]
#>  usethis       1.4.0      2018-08-14 [1]
#>  utf8          1.1.4      2018-05-24 [1]
#>  withr         2.1.2      2018-03-15 [1]
#>  xml2        * 1.2.0      2018-01-24 [1]
#>  yaml          2.2.0      2018-07-25 [1]
#>  source                             
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  Github (ATFutures/calendar@4efa5ba)
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#>  CRAN (R 3.5.1)                     
#> 
#> [1] /usr/local/lib/R/site-library
#> [2] /usr/local/lib/R/library
@layik
Copy link
Member

layik commented Jan 28, 2019

Great work.

@Robinlovelace
Copy link
Member Author

@layik
Copy link
Member

layik commented Jan 28, 2019

image
Yep confirmed!

@layik
Copy link
Member

layik commented Jan 28, 2019

Reproduction:
Download above tds-timetable.ics file from the link above.
Open your Outlook Calendar
Create new calendar (to separate it from your calendar)
Add calendar > from file
Save!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants