Comment passer des paramètres à une application brillante via L'URL

dans les navigateurs web vous passez des paramètres à un site Web comme

www.mysite.com/?parameter=1

j'ai une brillante application, et je voudrais utiliser le paramètre transmis vers le site dans les calculs comme une entrée. Est - il possible de faire quelque chose comme www.mysite.com/?parameter=1 et puis utiliser input!paramètre?

pouvez-vous fournir un code d'exemple ou des liens?

Merci

19
demandé sur user3022875 2015-09-30 20:25:15

2 réponses

vous devrez mettre à jour vous-même l'entrée lorsque l'application initialise sur la base de l'URL. Vous devez utiliser la session$clientData$url_search variable pour obtenir les paramètres de la requête. Voici un exemple, vous pouvez facilement étendre vers vos besoins

library(shiny)

shinyApp(
  ui = fluidPage(
    textInput("text", "Text", "")
  ),
  server = function(input, output, session) {
    observe({
      query <- parseQueryString(session$clientData$url_search)
      if (!is.null(query[['text']])) {
        updateTextInput(session, "text", value = query[['text']])
      }
    })
  }
)
28
répondu Dean Attali 2015-09-30 19:29:48

construire à partir de daattali, cela prend n'importe quel nombre d'entrées et fait l'assignation de valeurs pour vous pour quelques différents types d'entrées:

interface utilisateur.R:

library(shiny)

shinyUI(fluidPage(
textInput("symbol", "Symbol Entry", ""),

dateInput("date_start", h4("Start Date"), value = "2005-01-01" ,startview = "year"),

selectInput("period_select", label = h4("Frequency of Updates"),
            c("Monthly" = 1,
              "Quarterly" = 2,
              "Weekly" = 3,
              "Daily" = 4)),

sliderInput("smaLen", label = "SMA Len",min = 1, max = 200, value = 115),br(),

checkboxInput("usema", "Use MA", FALSE)

))

le serveur.R:

shinyServer(function(input, output,session) {
observe({
 query <- parseQueryString(session$clientData$url_search)

 for (i in 1:(length(reactiveValuesToList(input)))) {
  nameval = names(reactiveValuesToList(input)[i])
  valuetoupdate = query[[nameval]]

  if (!is.null(query[[nameval]])) {
    if (is.na(as.numeric(valuetoupdate))) {
      updateTextInput(session, nameval, value = valuetoupdate)
    }
    else {
      updateTextInput(session, nameval, value = as.numeric(valuetoupdate))
    }
  }

 }

 })
})

exemple D'URL à tester: 127.0.0.1: 5767/?symbole=BBB,AAA, CCC, DDD&date_start=2005-01-02&period_select=2&smaLen=153&usema=1

8
répondu Jason S 2016-01-15 00:32:13