Brilliant choice go to another tab using the action button or something else

I created the following template for my brilliant application.

##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") ) ) )) 

And the server file remains empty:

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

Ideally, I would like to use the enter button, for example action, on the first tab tab to go to the second tab. Any suggestion for an alternative would be appreciated equally.

+5
source share
1 answer

You can send your own message:

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

Also, you cannot have objects with the same identifiers. Note that all of your numericInput and actionButton have the same identifiers. I also deleted the submit buttons, not sure if you want more than one of them.

+8
source

Source: https://habr.com/ru/post/1202903/


All Articles