2015-09-30 13 views
12

Nel web browser si passare parametri a un sito web comeCome si fa a passare parametri a un'applicazione lucida tramite URL

www.mysite.com/?parameter=1

ho un app lucido e vorrei piace usare il parametro passato al sito nei calcoli come input. Quindi è possibile fare qualcosa come www.mysite.com/?parameter=1 e quindi utilizzare il parametro input!

Potete fornire qualsiasi codice di esempio o collegamenti?

Grazie

+0

Vedi anche [stato bookmarking] (http: // lucido .rstudio.com/articles/bookmarking-state.html) sul sito Web lucido (visualizzato in [questa risposta SO] (https://stackoverflow.com/a/25385474/2641825)). Ti consente di utilizzare gli URL del modulo: https://gallery.shinyapps.io/113-bookmarking-url/?_inputs_&n=149. –

risposta

22

Avresti per aggiornare l'ingresso da soli quando l'applicazione inizializza basato sulla URL. Utilizzerai la variabile session$clientData$url_search per ottenere i parametri della query. Ecco un esempio, si può facilmente espandere questa nelle vostre esigenze

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']]) 
     } 
    }) 
    } 
) 
+0

È possibile aggiornare l'ingresso direttamente sull'app? Sto cercando di cambiare automaticamente il valore dell'URL. Ad esempio in url scelgo text = 'abc' e poi nell'app voglio definire text = 'def'. – hsilva

7

costruzione al largo di daattali, questo richiede un qualsiasi numero di ingressi e fa l'assegnazione di valori per voi per una serie di vari tipi di ingressi:

ui.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) 

)) 

server.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)) 
    } 
    } 

} 

}) 
}) 

Esempio URL di prova: 127.0.0 .1: 5767/simbolo = BBB, AAA, CCC, DDD & DATE_START = 2005-01-02 & period_select = 2 & smaLen = 153 & usema = 1