Giter Site home page Giter Site logo

Comments (8)

jwildfire avatar jwildfire commented on August 18, 2024 1

Alas, bumping from v0.2.0. Sys.sleep() didn't play nice with interactivity. Seems like we probably need to use a more typical javascript event workflow to do this. Will tackle in a future version.

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

There are a few steps to figure out.

  1. Once the files tab is drawn server.R add the buttons to the tab (this isn't done by the javascript library)
  2. When a button is clicked, the file or files should be added to the files table (this requires passing info from client -> server -> client)

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

A few (possibly) helpful links:

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

Pretty sure we want to use observeEvent() for these. This example is close, but we need to trigger on a custom js from codebook.js ("renderComplete" or whatever we choose to call it) instead of a named input (input$go):

  shinyApp(
    ui = basicPage(actionButton("go", "Go")),
    server = function(input, output, session) {
      observeEvent(input$go, {
        insertUI("#go", "afterEnd",
                 actionButton("dynamic", "click to remove"))

        # set up an observer that depends on the dynamic
        # input, so that it doesn't run when the input is
        # created, and only runs once after that (since
        # the side effect is remove the input from the DOM)
        observeEvent(input$dynamic, {
          removeUI("#dynamic")
        }, ignoreInit = TRUE, once = TRUE)
      })
    }
  )
}

EDIT: No longer convinced observeEvent() is the way to go. Not clear to me if you can trigger this based on an output changing state, or if it has to be an input. Not able to find an example where this triggers on an arbitrary js event (although seems like it should be doable ...)

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

This looks like a good option for js -> R -> js rendering. Can be used to trigger an update in the files table once a new file is added.

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

And this might be the way to add content after the initial loads. Can be used to add the file upload buttons after the explorer Shiny output is validated.

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

Simple implementation of part #1 ("Once the files tab is drawn server.R adds the buttons to the tab") done like so:

    Sys.sleep(1)
    insertUI(
      selector="div.explorer div.instructions.section",
      where="beforeEnd",
      ui=fileInput('datafile','Upload a file',accept = c('.sas7bdat','.csv'))
    )

Need to add in some of bootstrap's CSS to make it look decent and would be better to trigger on a call back, but all things considered, waiting for a second works reasonably well ...

from datadigest.

jwildfire avatar jwildfire commented on August 18, 2024

One is basically good to go. Going to create separate issues for part 2 below:

  1. Once the files tab is drawn server.R add the buttons to the tab (this isn't done by the javascript library)
  2. When a button is clicked, the file or files should be added to the files table (this requires passing info from client -> server -> client)

from datadigest.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.