I have built the following template for my shiny app.
##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 is kept empty for now:
##server.R
shinyServer(function(input, output) {
})
The problem is ideally I would like to use a input like action button on first tabPanel to navigate to second tab panel. Any suggestion about an alternative would be appreciated equally.
You can send a custom 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 id's. Note all your numericInput
and actionButton
had the same id's. Also I removed the submit buttons not sure you want more then one of these.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With