2015-09-30 10 views
12

In Web-Browser übergeben Sie Parameter an eine Website wieWie Sie Parameter an eine glänzende App via URL

www.mysite.com/?parameter=1

gebe ich haben eine glänzende app und ich würde Ich mag es, den Parameter zu verwenden, der in Berechnungen als Eingabe an die Site übergeben wird. Also ist es möglich, etwas wie www.mysite.com/?parameter=1 zu machen und dann den Input! -Parameter zu verwenden?

Können Sie Beispielcode oder Links angeben?

Danke

+0

Siehe auch [bookmarking state] (http: // glänzend .rstudio.com/articles/bookmarking-state.html) auf der glänzenden Website (siehe [diese Antwort] (https://stackoverflow.com/a/25385474/2641825)). Es ermöglicht Ihnen, URLs des Formulars zu verwenden: https://gallery.shinyapps.io/113-bookmarking-url/?_inputs_&n=149. –

Antwort

22

Sie müssen die Eingabe selbst aktualisieren würde, wenn die App basierend auf der URL initialisiert. Sie würden die Variable session$clientData$url_search verwenden, um die Abfrageparameter abzurufen. Hier ist ein Beispiel, können Sie leicht erweitern Sie diese in Ihre Bedürfnisse

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

Ist es möglich, die Eingabe direkt in der App zu aktualisieren? Ich versuche es, aber es ändert sich automatisch zum URL-Wert. ZB in url wähle ich text = 'abc' und dann auf der app möchte ich text = 'def' definieren. – hsilva

7

Gebäude weg von daattali, nimmt diese eine beliebige Anzahl von Eingängen und macht die Zuweisung von Werten für Sie für ein paar verschiedene Arten von Eingängen:

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

} 

}) 
}) 

Beispiel URL zum Test: 127.0.0 .1: 5767/symbol = BBB, AAA, CCC, DDD & DATE_START = 2005-01-02 & period_select = 2 & smaLen = 153 & usema = 1

Verwandte Themen