0

The shiny app that I am making has multiple subMenuItems in the dashboardSidebar. I want to link each of these menu items to a database. The UI code is as follows:

dashboardSidebar(
                width = 150,
                sidebarMenu(
                        menuItem("By States",
                                 menuSubItem("AP", tabName = "AP"),
                                 menuSubItem("ANP", tabName = "ANP"),
                                 menuSubItem("BIH", tabName = "BIH"),
                                 menuSubItem("TN", tabName = "TN")
                        )
                ),
                sidebarMenu(
                        menuItem("Charts",
                            menuSubItem("AP", tabName = "APC"),
                            menuSubItem("Anp", tabName = "ANPC")
                ))
        ),

I have tried to attach each of these submenuitems to a database using the following code in the server.

datasetInput <- reactive({
                   if (input$AP == "AP"){
                    "AP" = readRDS("data/AP.rds")       
            } else if (input$BIH == "BIH") {
                    "BIH" = readRDS("data/Bih.rds")        
            } else if (input$ANP == "ANP") {
                    "ANP" = readRDS("data/Anp.rds")
            } else if (input$TN == "TN") {
                    "TN" = readRDS("data/tnd.rds")        
            }
        })

I am getting the following error:

Error in if (input$AP == "AP") { : argument is of length zero
ERROR: [on_request_read] connection reset by peer

How to link the menuSubItem to a database? I have tried the following which works fine but I could not get the subItems under each menu.

The code that works fine is as follows:

dashboardSidebar(
                width = 150,
                sidebarMenu(id = "tabs",
                            menuItem("AP", tabName = "AP"),
                            menuItem("ANP", tabName = "ANP"),
                            menuItem("BIH", tabName = "BIH"),
                            menuItem("TN", tabName = "TN")

                ),
                sidebarMenu(id = "charts",
                            menuItem("AP", tabName = "APC"),
                            menuItem("Anp", tabName = "ANPC")
                )
        ),

and the server code:

datasetInput <- reactive({
                switch(input$tabs,
                        "AP" = readRDS("data/AP.rds"),
                        "BIH" = readRDS("data/Bih.rds"),
                        "ANP" = readRDS("data/Anp.rds"),
                        "TN" = readRDS("data/tnd.rds") 
                )
        })

But this is not rendering subMenus.

LeArNr
  • 635
  • 1
  • 6
  • 12
  • Could you please make your above code reproducible? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Shiva Dec 03 '15 at 20:29

1 Answers1

0

I think you've found the solution but, to have subMenus :

dashboardSidebar(
            width = 150,
            sidebarMenu(id = "mysidebar",
                        menuItem("Tabs", 
                                 menuSubItem("ANP", tabName = "ANP"),
                                 menuSubItem(""BIH", tabName = "BIH""),
                                 menuSubItem("TN", tabName = "TN")),
                        menuItem("Charts",
                                 menuSubItem("AP", tabName = "APC"),
                                 menuSubItem("Anp", tabName = "ANPC"))

            ),
...

Then you access the selected item using : input$mysidebar which possible values are : "ANP", "BIH", etc