Блестящий с условным и tabsetpanel не работает, как ожидалось - PullRequest
0 голосов
/ 19 марта 2020

У меня блестящее приложение с панелями табуляции и условными панелями на боковой панели. Проблема в том, что одна из условных панелей также появляется, когда она не должна появляться. Ниже приведен код: я показываю название панели на боковой панели. Если я нажму «Допущения и сценарий ios», а затем на «Допущения» на боковой панели, я ожидаю увидеть только «Допущения», но я также получу «Совокупность автомобилей». Я изучал код более двух часов, поигравшись с ним, но не могу найти ошибку (или, возможно, это ошибка). Я был бы очень признателен за помощь. Это код

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      conditionalPanel(
        condition = "input.tabs_a == 't_ass'",
        h4("Assumptions")
      ),
      conditionalPanel(
        condition = "input.tabs_c == 't_cara'",
        h4("Car aggregate")
      ), # End conditionalPanel
      conditionalPanel(
        condition = "input.tabs_c == 't_carf'",
        h4("Car fuel")
      ), # End conditionalPanel
      conditionalPanel(
        condition = "input.tabs_c == 't_carfp'",
        h4("Car fuel power:")
      ) # End conditionalPanel
    ),    # End sidebarPanel
    mainPanel(
      tabsetPanel(
        type = "tabs", 
        tabPanel( 
          "Assumptions and Scenarios",
          tabsetPanel(
            type = "tabs",  id = "tabs_a",
            tabPanel(
              "Assumptions",  value = "t_ass"
            ), # Close tabpanel t_ass,
            tabPanel(
              "Scenarios", value = "t_scen"
            ) # Close tabpanel t_scen
          ) # Close tabsetpanel
        ), # Close tabPanel t_Ass
        tabPanel(
          "Transport results",
          tabsetPanel(
            type = "tabs", id = "tabs_c",
            tabPanel(
              "Cars: Aggregated", value = "t_cara"
            ),  # Close tabpanel t_cara
            tabPanel(
              "Cars: Fuel",  value = "t_carf"
            ), # Close tabpanel
            tabPanel(
              id = "t_carfp",
              "Cars: Fuel vs Power",  value = "t_carfp",
            ) # Close tabpanel t_carfp
          ) # Close tabset tabs_c
        ) # Close tabpanel Transport results
      ) # Close tabset tabs_a
    ) # End mainPanel
  )  # End sidebarLayout
) # End fluidPage

server <- function(input, output) {
}

shinyApp(ui = ui, server = server)

enter image description here Просто сохраните его как app.R и запустите.

Спасибо Renger

1 Ответ

0 голосов
/ 20 марта 2020

Я нашел решение: для него нужны два условия, одно должно быть нацелено на tabsetpanel-id, а другое - на tabpanel-value. Вот код:

 ui <- fluidPage(sidebarLayout(
sidebarPanel(
  conditionalPanel(
    condition = "input.tabs == 'a1' && input.tabs_a == 't_ass'", ns = NS(NULL),
    h4("Assumptions")
  ),
  conditionalPanel(
    condition = "input.tabs == 'a1' && input.tabs_a == 't_scen'",  ns = NS(NULL),
    h4("Scenarios")
  ),
  conditionalPanel(
    condition = "input.tabs == 't1' && input.tabs_c == 't_cara' ",  ns = NS(NULL),
    h4("Car aggregate")
  ), # End conditionalPanel
  conditionalPanel(
    condition = "input.tabs == 't1' && input.tabs_c == 't_carf' ",  ns = NS(NULL),
    h4("Car fuel")
  ), # End conditionalPanel
  conditionalPanel(
    condition = "input.tabs == 't1' && input.tabs_c == 't_carfp' ",
    h4("Car fuel power:")
  ) # End conditionalPanel
),    # End sidebarPanel
mainPanel(
  tabsetPanel(
    type = "tabs", id = "tabs",
    tabPanel(id = 'a1', value = 'a1', 
             "Assumptions and Scenarios",
             tabsetPanel(
               type = "tabs",  id = "tabs_a", 
               tabPanel(
                 "Assumptions",  value = "t_ass"
               ), # Close tabpanel t_ass,
               tabPanel(
                 "Scenarios", value = "t_scen"
               ) # Close tabpanel t_scen
             ) # Close tabsetpanel
    ), # Close tabPanel t_Ass
    tabPanel(id = "t1", value = "t1",
             "Transport results",
             tabsetPanel(
               type = "tabs", id = "tabs_c",
               tabPanel(
                 "Cars: Aggregated", value = "t_cara"
               ),  # Close tabpanel t_cara
               tabPanel(
                 "Cars: Fuel",  value = "t_carf"
               ), # Close tabpanel
               tabPanel(
                 id = "t_carfp",
                 "Cars: Fuel vs Power",  value = "t_carfp",
               ) # Close tabpanel t_carfp
             ) # Close tabset tabs_c
    ) # Close tabpanel Transport results
  ) # Close tabset tabs_a
) # End mainPanel  )   # End sidebarLayout) # End fluidPage    server <- function(input, output) { } hinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...