Dans la famille des packages shiny chez Datastorm, je demande le petit dernier, à savoir shinydrive.
Le package shinydrive a été développé pour répondre à un besoin simple : faciliter le partage de fichiers entre différents utilisateurs d’une application R/shiny. Il se compose :
add_file_in_dir
pour ajouter un nouveau fichieredit_file_in_dir
pour éditer un fichier existantsuppress_file_in_dir
pour supprimer un fichierLe fonctionnement du package est le suivant :
yaml
permettant de stocker :
img
Côté shiny, nous retrouvons une interface claire et épurée, disponible actuellement en trois langues (français, anglais et chinois), et qui se présente sous cette forme :
administateur
Vue des fichiers, avec la possibilité de les éditer / supprimer / télécharger
img
Popup pour l’insertion d’un nouveau fichier
img
lecteur
Uniquement la possibilité de télécharger les fichiers
img
N.B : La dernière colonne du tableau, composée de checkbox, permet de sélectionner plusieurs fichiers afin de tous les télécharger ou les supprimer (administrateur)
Le package devrait arriver dans les prochaines semaines sur le CRAN. En attendant, vous pouvez l’installer directement depuis notre gitub https://github.com/datastorm-open :
if(!require(devtools)) install.packages("devtools")
devtools::install_github("datastorm-open/shinydrive")
Une application de démonstration est disponible
runApp(system.file("demo_app", package = "shinydrive"))
en ligne à l’adresse suivante : https://datastorm-demo.shinyapps.io/shinydrive/
et dans la vidéo ci-dessous
En insérant tout simplement le module dans votre application shiny, avec l’utilisation des deux fonctions suivantes :
shiny_drive_ui
: dans le script ui.R, avec uniquement l’identifiant du module à renseignershiny_drive_server
: dans la partie du server.R avec à minima :
En complément, il est possible de :
require(shinydrive)
ui <- fluidPage(
shiny_drive_ui(id = "idm")
)
server <- function(input, output, session) {
callModule(module = shiny_drive_server,
id = "idm",
admin_user = TRUE,
save_dir = getwd(),
lan = "EN")
}
shinyApp(ui, server)
L’ensemble des arguments peut être donner de façon réactive afin de gérer les différentes options en fonction du profil de l’utilisateur.
Perspectives d’évolutions d’ores et déjà identifiées :