library(shinygouv)
knitr::opts_chunk$set(eval = FALSE)

Comment savoir ce qui a été mis à jour ?

Le principe de ce package est de proposer une transposition des fonctions de {shiny} à la charte graphique Marque Etat grâce au [design system de l’Etat](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/. Pour savoir si une montée de version est nécessaire, consultez les notes de versions du dsfr sur https://www.systeme-de-design.gouv.fr/a-propos/versions/version-courante.

Egalement, les fonctions shiny transposées peuvent évoluer : consultez ici les notes de versions de shiny : https://github.com/rstudio/shiny/blob/main/NEWS.md.

Procéder à une montée de version du dsfr

Dans le dossier “inst/” du package, nous allons créer deux dossiers:

  • un pour récolter les css et js du dsfr,
  • et un pour stocker les templates HTML que vous aurez converti

Ci-dessous, nous prenons l’exemple de la montée de version de 1.6.0 vers 1.7.2

Indiquez ici le numéro de la nouvelle version à implémenter que vous pourrez trouver sur la page du dsfr

nouvelle_version <- "1.9.3"

Récolter les fichiers CSS et JS du DSFR

  • Télécharger le zip de la dernière version 1.7.2 qui se trouve ici
  • Décompresser le fichier
  • Déplacer le dossier “dsfr-v1.7.2/dist” dans le dossier “inst/” du package ‘shinygouv’.
tmp_ <- tempfile(fileext = ".zip")
download.file(
  paste0(
    "https://github.com/GouvernementFR/dsfr/releases/download/v",
    nouvelle_version,
    "/dsfr-v",
    nouvelle_version,
    ".zip"
  ),
  tmp_
)
unzip(tmp_, exdir = file.path(paste0("inst/dsfr-v", nouvelle_version)))

Pour une version minimale, les seuls fichiers à garder sont :

/ Racine du projet
└── index.html
└── dsfr.min.css
└── dsfr.module.min.js
└── dsfr.nomodule.min.js
└── favicon
└── font
└── icons
└── utility
  └── icons

Vous pouvez lancer le contenu du script dev/tools/maj_version_dsfr.R pour votre version pour réaliser ce nettoyage

On pourra ensuite créer une fonction qui permettera d’ajouter les dépendances dans les applications {shiny}.

Mettre à jour les composants avec le nouveau dsfr

Dans le fichier “table_correspondance_shiny_dsfr.csv”, mettez non dans la colonne mis_a_jour car pour le moment, vous ne vous êtes pas assurer du bon foncionnement des composants dans la nouvelle version.

corresp <- read.csv2(file.path("inst", paste0("v", nouvelle_version), "table_correspondance_shiny_dsfr.csv"))
corresp[, "mis_a_jour"] <- "non"
write.csv2(corresp, file.path("inst", paste0("v", nouvelle_version), "table_correspondance_shiny_dsfr.csv"))

Vous pouvez ouvrir une issue pour lister tous les fichiers HTML de composants à vérifier avant de mettre oui dans la colonne mis_a_jour

corresp <- read.csv2(file.path("inst", paste0("v", nouvelle_version), "table_correspondance_shiny_dsfr.csv"))

# A coller dans votre issue
cat(
  paste("- [ ]", corresp[["fichier"]]),
  sep = "\n"
)

Monter le numéro de version dans DESCRIPTION

Quand tous les dossiers sont prêt, pour garder trace de la version du dsfr utilisée dans {shinygouv}, nous stockons celle en cours dans le fichier DESCRIPTION

desc::desc_set("VersionDsfr" = nouvelle_version)

Nettoyer la version d’avant

Nous n’avons pas besoin de stocker toutes les versions du dsfr dans le package.
Maintenant que vous avez récupéré les fichiers pour une nouvelle version, vous pouvez supprimer la plus ancienne.

all_versions <- list.files("inst", pattern = "^v\\d")
if (length(all_versions > 2)) {
  unlink(file.path("inst", min(all_versions)), recursive = TRUE)
  unlink(
    file.path(
      "inst",
      paste0(
        "dsfr-",
        min(all_versions)
      )
    ),
    recursive = TRUE
  )
}

Récupérer les codes HTML un par un

Suivre la procédure de création de composant dans la vignette Comment faire un composant shiny