R/datexp_gather.R

Defines functions datexp_gather

Documented in datexp_gather

#' Interface to import and concatenate datasets having the same format.
#' @return A tibble resulting for the concatenation of all the files.
#' @importFrom miniUI miniPage
#' @importFrom miniUI gadgetTitleBar
#' @importFrom miniUI miniTabstripPanel
#' @importFrom miniUI miniTabPanel
#' @importFrom miniUI miniContentPanel
#' @importFrom shiny fillCol
#' @importFrom shiny fillRow
#' @importFrom shiny callModule
#' @importFrom shiny icon
#' @importFrom shiny fileInput
#' @importFrom shiny textInput
#' @importFrom shiny dateInput
#' @importFrom shiny numericInput
#' @importFrom shiny textAreaInput
#' @importFrom shiny selectInput
#' @importFrom shiny checkboxInput
#' @importFrom shiny downloadButton
#' @importFrom shiny downloadHandler
#' @importFrom shiny stopApp
#' @importFrom shiny runGadget
#' @importFrom shiny conditionalPanel
#' @importFrom shiny tags
#' @importFrom shiny dataTableOutput
#' @importFrom shiny htmlOutput
#' @importFrom shiny uiOutput
#' @importFrom shiny plotOutput
#' @importFrom shiny actionButton
#' @importFrom shiny renderDataTable
#' @importFrom shiny renderUI
#' @importFrom shiny renderPlot
#' @importFrom shiny renderText
#' @importFrom shiny reactive
#' @importFrom shiny reactiveValues
#' @importFrom shiny observe
#' @importFrom shiny observeEvent
#' @importFrom shiny withProgress
#' @importFrom shiny incProgress
#' @importFrom shiny h3
#' @importFrom shiny isolate
#' @importFrom shiny reactiveValuesToList
#' @importFrom shiny tableOutput
#' @importFrom shiny renderTable
#' @importFrom shiny HTML
#' @importFrom dplyr select
#' @importFrom dplyr filter
#' @importFrom dplyr group_by
#' @importFrom dplyr summarize_all
#' @importFrom dplyr mutate
#' @importFrom dplyr %>%
#' @importFrom dplyr case_when
#' @importFrom dplyr arrange
#' @importFrom dplyr bind_rows
#' @importFrom dplyr everything
#' @importFrom utils write.csv
#' @export

datexp_gather <- function() {
  
  ui <- miniPage(
    gadgetTitleBar("Gather data into a single dataset"),
    fillRow(
      flex = c(1, 3),
      miniContentPanel(
        importFilesInput("files", "Select files to import"),
        actionButton("import", "Import"),
        tags$hr(),
        downloadButton("downloadData", "Download")
      ),
      miniContentPanel(
        dataTableOutput("dispdata")
      )
    )
  )

  server <- function(input, output, session) {
    options(shiny.maxRequestSize = 50 * 1024 ^ 2)

    ################
    # Import data
    concatenation <- callModule(importFiles, "files",
                                stringsAsFactors = FALSE)

    output$dispdata <- renderDataTable({
      if (input$import == 0) {
        return()
      }
      isolate({
        concatenation()
      })
    })

    #################
    # On exit

    output$downloadData <- downloadHandler(
      filename = "concatenation.csv",
      content = function(file) {
        write.csv(concatenation(), file, row.names = F)
      }
    )

    observeEvent(input$done, {
      stopApp(concatenation())
    })
  }
  runGadget(ui, server)
}
NicolasJBM/datexp documentation built on May 14, 2019, 10:36 a.m.