R Shiny приборной панели загрузки вкладок только один раз - PullRequest
1 голос
/ 29 марта 2020

Я начал создавать свое первое блестящее приложение, но теперь борюсь со странным поведением. Во-первых, когда я изначально загружаю приложение, по умолчанию вкладка не выбирается. Во-вторых, при нажатии на любое меню на боковой панели, оно показывает тело только в первый раз. Когда я go из «Обзор» в «Pivot-Tabelle» и обратно, тело пусто. Что мне не хватает? Ниже приведен код, который я использовал.

library(shiny)
library(shinydashboard)

df<-data.frame(a=c(1,2,3,4),
               b=c("A","B","C","D"))

###################Beginn der App################
ui <- dashboardPage(
  # Application title
  dashboardHeader(),

  ##----DashboardSidebar----

  dashboardSidebar(
    menuItem("Overview", tabName = "overview",selected=TRUE),
    menuItem("Pivot-Tabelle", tabName = "pivot"),
    menuItem("Test", tabName = "farmer")
  ),

  ##----DashboardBody----
  dashboardBody(
    tabItems(
      ##----TabItem: Overview----
      tabItem(tabName="overview",
              fluidRow(
                valueBoxOutput("A"),
                valueBoxOutput("B")
              )
      ),
      ###----TabItem:Pivot----
      tabItem(tabName = "pivot",
              ##Pivot
              column(6,offset=4,titlePanel("Daten-Explorer")),
              column(12,
                     mainPanel(
                       rpivotTableOutput("pivot")
                     )
              )
      ),
      ##----TabItem:Test----
      tabItem(tabName = "Test",
              h2("In Progress"))
    )
  )
)

server <- function(input, output) {
  ##----server:overview----
  output$A<-renderValueBox({
    valueBox(
      paste0(25, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })
  output$B<-renderValueBox({
    valueBox(
      paste0(55, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })



  ##----server:pivot----
  output$pivot <- renderRpivotTable({
    rpivotTable(data = df)
  })
}

# Run the application
shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 29 марта 2020

Это похоже на работу. Вам нужно иметь sidebarMenu для ваших menuItem с. Кроме того, вам нужно изменить tabName на farmer, чтобы оно соответствовало вашему menuItem. И я не думаю, что вам нужно mainPanel там (вы можете использовать mainPanel с sidebarPanel как часть sidebarLayout, если вы хотели этот макет - см. опции макета ). Посмотрите, работает ли это для вас.

library(shiny)
library(shinydashboard)
library(rpivotTable)

df<-data.frame(a=c(1,2,3,4),
               b=c("A","B","C","D"))

###################Beginn der App################
ui <- dashboardPage(
  # Application title
  dashboardHeader(),

  ##----DashboardSidebar----

  dashboardSidebar(
    sidebarMenu(
      menuItem("Overview", tabName = "overview",selected=TRUE),
      menuItem("Pivot-Tabelle", tabName = "pivot"),
      menuItem("Test", tabName = "farmer")
    )
  ),

  ##----DashboardBody----
  dashboardBody(
    tabItems(
      ##----TabItem: Overview----
      tabItem(tabName="overview",
              fluidRow(
                valueBoxOutput("A"),
                valueBoxOutput("B")
              )
      ),
      ###----TabItem:Pivot----
      tabItem(tabName = "pivot",
              ##Pivot
              column(6,offset=4,titlePanel("Daten-Explorer")),
              column(12,
                     #mainPanel(
                       rpivotTableOutput("pivot")
                     #)
              )
      ),
      ##----TabItem:Test----
      tabItem(tabName = "farmer",
              h2("In Progress"))
    )
  )
)

server <- function(input, output) {
  ##----server:overview----
  output$A<-renderValueBox({
    valueBox(
      paste0(25, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })
  output$B<-renderValueBox({
    valueBox(
      paste0(55, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })
  ##----server:pivot----
  output$pivot <- renderRpivotTable({
    rpivotTable(data = df)
  })
}

# Run the application
shinyApp(ui = ui, server = server)
...