This Shiny Module was created in order to provide an easy-to-use downloadFileButton for a plot that is automatically created, linked and managed. This module is compatible with ggplot2, grob and lattice produced graphics as well as any superclass of these.
Shiny modules consist of a pair of functions that modularize, or package, a small piece of reusable functionality. The UI function is called directly by the user to place the UI in the correct location (as with other shiny UI objects). The server function is not called directly by the user of the module. Instead the module server function is called only once to set it up using the shiny::callModule function inside the server function (i.e. user-local session scope. The callModule function supplies the first three arguments of the Shiny Module’s function inputs - the input, output, and session. Additional arguments supplied by the user in the callModule function are passed to the specific shiny module that is called. There can be additional helper functions that are a part of a shiny module.
The downloadablePlotUI function is called from the ui.R (or equivalent) file in the location where the plot should be placed. This is similar to other UI element placement in shiny.
The downloadablePlotUI looks like:
The downloadablePlotUI function takes the unique object ID for the UI object. The next two arguments (downloadtypes and download_hovertext) are passed to the downloadFileButton and set the file types the button will allow the user to request and the downloadFileButton’s tooltip text. The next two options (width, height) set the plot size in the UI and can be any css-recognizable size value. These options are followed with alignment and overlap options. The last three options give you the standard ways of interacting with shiny plots - using the functionality available with the clickOpts, hoverOpts and brushOpts functions. When you create an object using any of these functions shiny will send information about the user’s interactions with the plot to the server and make it available to you via an input$ variable.
# Inside ui_body.R or ui_sidebar.R downloadablePlotUI("object_id1", downloadtypes = c("png", "csv"), download_hovertext = "Download the plot and data here!", height = "500px", btn_halign = "left")
The downloadablePlot function is not called directly - instead a call to shiny::callModule is made inside the server.R (or equivalent) file to initialize the module.
The call consists of the following:
Download Function Requirements
# Inside server_local.R callModule(downloadablePlot, "object_id1", logger = ss_userAction.Log, filenameroot = "mydownload1", aspectratio = 1.33, downloadfxns = list(png = myplotfxn, tsv = mydatafxn), visibleplot = myplotfxn)