2014-09-18 13 views
5

Ho creato il seguente modello per la mia app lucida.Seleziona lucido vai a tabPanel diverso utilizzando il pulsante di azione o qualcosa del genere

 ##ui.R 
     shinyUI(navbarPage("My Application", 
     tabPanel 
     (
     "Select Data range", 
     sidebarLayout 
     (
      sidebarPanel 
      (
       h3("Select Data Range"), 
       selectInput("select", label = h3("Select Sector"),choices = list("Sector 1" = 1, "Sector 2" = 2,"Sector 3" = 3), selected = 1),br(), 
       dateRangeInput("dates", label = h3("Select Date range")),br(), 
       submitButton("Submit"),br(), 
       actionButton("action", label = "Proceed to select resolution") 
      ), 
      mainPanel("Output") 
     ) 
    ), 

     tabPanel 
     (
     "Select Resolution", 
     sidebarLayout 
     (
      sidebarPanel 
      (
       h3("Select Resolution"), 
       numericInput("num", label = h3("Select X-Grid Size"), value = 2),br(), 
       numericInput("num", label = h3("Select Y-Grid Size"), value = 2),br(), 
       numericInput("num", label = h3("Outlier Removal"), value = 2),br(), 
       numericInput("num", label = h3("Frequency"), value = 2),br(), 
       submitButton("Submit"),br(), 
       #actionButton("action", label = "Proceed to Service Parameters") 
      ), 
      mainPanel("Output") 
     ) 
    ) 

    )) 

e il file server viene mantenuto vuoto per ora:

 ##server.R 
     shinyServer(function(input, output) { 
     }) 

Il problema è idealmente vorrei utilizzare un ingresso come pulsante di azione in prima tabpanel per navigare pannello seconda scheda. Qualsiasi suggerimento su un'alternativa sarebbe apprezzato allo stesso modo.

risposta

8

è possibile inviare un messaggio personalizzato:

ui.R

shinyUI(navbarPage("My Application", 

       tabPanel 
       (
       "Select Data range", 
       sidebarLayout 
       (
        sidebarPanel 
        (tags$head(tags$script(' 
            Shiny.addCustomMessageHandler("myCallbackHandler", 
             function(typeMessage) {console.log(typeMessage) 
              if(typeMessage == 1){ 
              console.log("got here"); 
              $("a:contains(Select Resolution)").click(); 
              } 
              if(typeMessage == 2){ 
              $("a:contains(Select Data range)").click(); 
              } 
              }); 
              ')), 
        h3("Select Data Range"), 
        selectInput("select", label = h3("Select Sector"),choices = list("Sector 1" = 1, "Sector 2" = 2,"Sector 3" = 3), selected = 1),br(), 
        dateRangeInput("dates", label = h3("Select Date range")),br(), 
        actionButton("action", label = "Proceed to select resolution") 
        ), 
        mainPanel("Output") 
       ) 
       ), 

       tabPanel 
       (
       "Select Resolution", 
       sidebarLayout 
       (
        sidebarPanel 
        (
        h3("Select Resolution"), 
        numericInput("num1", label = h3("Select X-Grid Size"), value = 2),br(), 
        numericInput("num2", label = h3("Select Y-Grid Size"), value = 2),br(), 
        numericInput("num3", label = h3("Outlier Removal"), value = 2),br(), 
        numericInput("num4", label = h3("Frequency"), value = 2),br(), 
        actionButton("action1", label = "Proceed to Service Parameters") 

        ), 
        mainPanel("Output"), 

       ) 
       ) 

)) 

server.R

library(shiny) 
shinyServer(function(input, output,session) { 
    observe({ 
    if(input$action > 0){ 
     print('1') 
     session$sendCustomMessage("myCallbackHandler", "1") 
    } 
    }) 
    observe({ 
    if(input$action1 > 0){ 
     print('2') 
     session$sendCustomMessage("myCallbackHandler", "2") 
    } 
    }) 
} 
) 

Inoltre non si può avere gli oggetti con lo stesso ID di. Nota che tutti i tuoi numericInput e actionButton hanno lo stesso ID. Inoltre ho rimosso i pulsanti di invio non sicuro di volere più di uno di questi.

+0

Grazie, è esattamente ciò di cui avevo bisogno. Gli oggetti erano con lo stesso id perché questo era solo il layout di base dell'app e stavo per rinominarli mentre li uso in server.R. – anonR

Problemi correlati