knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
<!-- You can install the experimental version from github :
remotes::install_github("MehdiChelh/triangle.tlbx")
-->
Résumé :
Détail :
Le guide d'installation ci-dessous pré-suppose R et RStudio déjà installés. La version de R actuellement utilisée sur le serveur est la version 3.6.1, disponible ici. Il est donc préférable de passer par cette version pour travailler sur le projet.
Téléchargement du projet depuis Gitlab
NB. - Il est préférable de télécharger/déziper le projet dans un répertoire dont le chemin ne contient pas d'espaces ou de caractères tels que "&", "|", ou "$". (liste potentiellement non exhaustive... A voir).
Résumé :
packrat::restore()
pour installer les dépendancesCtrl + Shift + B
ou Build > Install and Restart
dans le menu de RStudiotriangle.tlbx::run_app()
pour vérifier que l'installation s'est correctement dérouléeDétail :
Le projet utilise le package packrat
qui permet de gérer automatiquement les dépendance du projet et de les installer dans le dossier ./packrat/lib
sans modifier les packages déjà installés avec votre installation de R.
Pour ouvrir le projet dans RStudio, double-cliquer sur le fichier triangle.tlbx.Rproj à la racine du projet. A l'ouverture du projet, vous devriez obtenir une sortie similaire à la sortie suivante :
R version 3.6.1 (2019-07-05) -- "Action of the Toes" Copyright (C) 2019 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. Packrat is not installed in the local library -- attempting to bootstrap an installation... > No source tarball of packrat available locally > Installing packrat from CRAN trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/packrat_0.5.0.zip' Content type 'application/zip' length 457428 bytes (446 KB) downloaded 446 KB package ‘packrat’ successfully unpacked and MD5 sums checked The downloaded binary packages are in d:\Users\mehdi.echchelh\AppData\Local\Temp\RtmpCgY74l\downloaded_packages Packrat mode on. Using library in directory: - "~/1_RD/Code/triangle.tlbx/packrat/lib"
Pour installer les packages nécessaires au projet il suffit alors d'utiliser la fonction restore
de packrat :
> packrat::restore()
L'installation peut durer environ 20 minutes.
Une fois l'installation des packages terminée vous pouvez alors compiler (Ctrl + Shift + B
ou Build > Install and Restart
dans le menu de RStudio) puis lancer l'application :
> library(triangle.tlbx) > run_app()
Ctrl + Shift + B
ou Build > Install and Restart
triangle.tlbx::run_app()
Le mode "développement" permet de ne pas avoir à recompiler le package.
source("./dev/run_dev.R")
Attention : pour que cette option marche il faut que le working directory soit celui du projet.
Rappel : on peut vérifier le working directory via l'instruction getwd()
et le paramétrer via setwd(<chemin vers le projet>)
.
Cette partie suppose que le lecteur a certaines notions de la librairie shiny et en particulier des modules shiny.
Mettre des schémas ici
Corriger le schéma sur la partie bootstrap
Le code est structuré selon une partie client ou front-end et une partie backend :
Les parties client et backend sont chacunes décomposées en modules.
Pour le client comme pour le backend chaque module est en fait un shiny module tel que défini dans la documentation rajouter lien
. Cependant on notera que, pour les modules backend, la fonction ui
n'est utilisée.
Actuellement l'arborescence des modules / sous-modules de la partie front-end peut être représentée par le schéma suivant :
En plus de ces modules, on note certains modules additionnels, indépendant du reste de l'application :
mod_import_data
et mod_import_data_format
(sous-module)mod_colored_table
permettant d'afficher des tableaux avec ou sans dégradé de couleur.Pour la partie backend, les modules définis actuellement sont les modules :
Actuellement, les fichiers du backend sont ceux se terminant par "com". Cependant la convention qui sera utilisée par la suite sera probablement de les renommés en "com*" (exemple : "com_bootstrap").
La communication entre frontend et backend se fait par le biais d'un "espace mémoire" partagé entre le backend et le frontend. Le frontend peut intéragir avec cet espace via les fonction setInput
et get
, tandis que le backend peut intéragir avec via les fonction getInput
, get
et set
.
Exemple:
Supposons que l'on ait un module frontend avec un input de type selectInput
pour choisir le jeu de donnée sur lequel appliquer Chain Ladder, et un module backend nommé chainladder
calculant une variable link_ratio
correspondant aux facteurs de développement de Chain Ladder.
On aura alors dans le code de la partie frontend :
# Partie frontend # ----------- # On met la valeur de l'input utilisateur dans l'espace partagé observe({ setInput("chainladder", "triangle", { input[["triangle-select"]] # input renseigné par l'utilisateur }) }) # On récupère le résultat calculé par la partie backend et on l'affiche dans un tableau output[["link_ratio-table"]] <- renderTable({ req(get("chainladder", "link_ratio")) # pour éviter d'exécuter la suite du code si la variable n'est pas encore définie get("chainladder", "link_ratio") })
# Partie backend - Module "chainladder" # ----------- # On calcule le résultat et on le met dans l'espace partagé. observe({ set("link_ratio", { req(getInput("triangle")) # pour éviter d'exécuter la suite du code si la variable n'est pas encore définie triangle <- getInput("triangle")) # .... calculs à insérer link_ratio }) })
Chaque module de backend possède quatre fonctions/méthodes :
getInput(key=nom_variable)
permetant de récupérer un input communiqué par un module du front-endgetInput(key=nom_variable)
permetant de récupérer une variable d'un autre getInput(key=nom_variable)
permetant de récupérer un input communiqué par un module du front-endAdd the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.