shinydrive

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 :

Le fonctionnement du package est le suivant :

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)

Installation

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")

Application de démonstration

Une application de démonstration est disponible

  • directement dans le package :
runApp(system.file("demo_app", package = "shinydrive"))

Utilisation

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 à renseigner
  • shiny_drive_server : dans la partie du server.R avec à minima :
    • l’identifiant du module (id)
    • ainsi que le répertoire de stockage (save_dir)

En complément, il est possible de :

  • définir le rôle, administrateur ou lecteur (admin_user)
  • la langue (lan)
  • de forcer le remplissage du champ “description” lors de l’insertion d’un nouveau fichier (force_desc)
  • et de restreindre les accès à un sous-ensemble de sous-dossiers si nécessaire (dir_access)
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.

Next steps

Perspectives d’évolutions d’ores et déjà identifiées :

  • chiffrement des fichiers
  • logs de téléchargement
  • Fonction de transformation du fichier avant téléchargement