timevis est un package pour faire des emplois du temps interactifs.

# install.packages("timevis")
library(timevis)
library(tidyverse)
library(lubridate)

Il faut d’abord par créer un data frame avec les informations que l’on souhaite visualiser. Afin faciliter la lecture, nous allons d’abord créer des

arrivee <- ymd_hm("2020-08-24-14-00")
am <- ymd_hm("2020-08-25-08-30") + days(0:3)
pm <- ymd_hm("2020-08-25-14-00") + days(0:3)
pdej <- ymd_hm("2020-08-25-07-45") + days(0:3)
dejeuner <- ymd_hm("2020-08-25-12-30") + days(0:3)
diner <- ymd_hm("2020-08-24-19-00") + days(0:3)

h1 <- hours(1)
h2 <- hours(2)
h3 <- hours(3)
h4 <- hours(4)
m15 <- minutes(15)
m30 <- minutes(30)
m45 <- minutes(45)

Le data.frame doit contenir les colonnes id (identifiant unique), content pour le texte à afficher sur l’événement, start et end pour les dates de début et de fin, et éventuellement group et type pour le groupe de l’événement et la façon dont il est affiché.

programmme <-
  tribble(
    ~content,  ~start,  ~end,  ~group,  ~type,
    "Arrivée", arrivee - m30, NA, "Di", "point",
    "Choix des ateliers", arrivee, arrivee + h2, "Di", "range",
    "GAM",   arrivee + h2, arrivee + h4 + m45, "M", "range",
    "Optim", arrivee + h2, arrivee + h4 + m45, "De", "range",
    "ED",    arrivee + h2, arrivee + h4 + m45, "M", "range",
    "Restitutions", am[1], am[1] + h2 + m30, "Di", "range",
    "Enseignement", am[1] + h2 + m30, am[1] + h3 + m45, "Co", "range",
    "Widgets",      am[1] + h2 + m30, am[1] + h3 + m45, "Co", "range",
    "Enseignement", pm[1], pm[1] + h2, "Co", "range",
    "Widgets",      pm[1], pm[1] + h2, "Co", "range",
    "Petit déjeuner", pdej[1], pdej[1] + m30, NA, "background",
    "Petit déjeuner", pdej[2], pdej[2] + m30, NA, "background",
    "Petit déjeuner", pdej[3], pdej[3] + m30, NA, "background",
    "Petit déjeuner", pdej[4], pdej[4] + m30, NA, "background",
    "Déjeuner", dejeuner[1], dejeuner[1] + h1 + m15 , NA, "background",
    "Déjeuner", dejeuner[2], dejeuner[2] + h1 + m15 , NA, "background",
    "Déjeuner", dejeuner[3], dejeuner[3] + h1 + m15 , NA, "background",
    "Déjeuner", dejeuner[4], dejeuner[4] + h1 + m15 , NA, "background",
    "Dîner", diner[1], diner[1] + hours(2), NA, "background",
    "Dîner", diner[2], diner[2] + hours(2), NA, "background",
    "Dîner", diner[3], diner[3] + hours(2), NA, "background",
    "Dîner", diner[4], diner[4] + hours(2), NA, "background",
    ) %>%
  mutate(id = 1:n()) %>%
  dplyr::select(id, everything())

programmme
## # A tibble: 22 x 6
##       id content            start               end                 group type 
##    <int> <chr>              <dttm>              <dttm>              <chr> <chr>
##  1     1 Arrivée            2020-08-24 13:30:00 NA                  Di    point
##  2     2 Choix des ateliers 2020-08-24 14:00:00 2020-08-24 16:00:00 Di    range
##  3     3 GAM                2020-08-24 16:00:00 2020-08-24 18:45:00 M     range
##  4     4 Optim              2020-08-24 16:00:00 2020-08-24 18:45:00 De    range
##  5     5 ED                 2020-08-24 16:00:00 2020-08-24 18:45:00 M     range
##  6     6 Restitutions       2020-08-25 08:30:00 2020-08-25 11:00:00 Di    range
##  7     7 Enseignement       2020-08-25 11:00:00 2020-08-25 12:15:00 Co    range
##  8     8 Widgets            2020-08-25 11:00:00 2020-08-25 12:15:00 Co    range
##  9     9 Enseignement       2020-08-25 14:00:00 2020-08-25 16:00:00 Co    range
## 10    10 Widgets            2020-08-25 14:00:00 2020-08-25 16:00:00 Co    range
## # … with 12 more rows

Les groupes sont à préciser dans un data frame de correspondance.

groupes <- data.frame(
  id = c("M", "De", "Co", "Di"),
  content = c("Maths", "Developpement", "Communication", "Divers")
)

La fonction timevis permet d’afficher le widget.

timevis(programmme, groups = groupes)