## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, eval = FALSE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- # library(dir2json) # library(shiny) ## ----app---------------------------------------------------------------------- # ui <- fluidPage( # titlePanel("Encode Uploaded Files to JSON"), # sidebarLayout( # sidebarPanel( # fileInput("files", "Upload Files", multiple = TRUE), # actionButton("encode", "Encode to JSON"), # downloadButton("downloadJSON", "Download JSON") # ), # mainPanel( # verbatimTextOutput("jsonOutput") # ) # ), # # Custom CSS to enable line wrapping # tags$style( # HTML(" # #jsonOutput { # white-space: pre-wrap; # word-wrap: break-word; # max-height: 400px; # overflow-y: auto; # } # ") # ) # ) # # server <- function(input, output, session) { # # Reactive value to store the JSON data # json_data <- reactiveVal(NULL) # # observeEvent(input$encode, { # req(input$files) # Ensure files are uploaded # # # Create a temporary directory to store uploaded files # temp_dir <- tempfile() # dir.create(temp_dir) # # # Copy uploaded files to the temporary directory # for (i in seq_len(nrow(input$files))) { # file.copy(input$files$datapath[i], file.path(temp_dir, input$files$name[i])) # } # # # Encode the directory to JSON # json_data(json_encode_dir(temp_dir)) # }) # # # Display the JSON data in the UI # output$jsonOutput <- renderText({ # req(json_data()) # json_data() # }) # # # Allow the user to download the JSON file # output$downloadJSON <- downloadHandler( # filename = function() { # "encoded_files.json" # }, # content = function(file) { # req(json_data()) # writeLines(json_data(), file) # } # ) # } # # shinyApp(ui, server)