Shiny Dashboard - Как добавить текст для элементов боковой панели - PullRequest
0 голосов
/ 12 февраля 2020

Я пытался добавить информацию о веб-сайте на мою блестящую панель инструментов, и для раздела «О программе» (см. Изображение) я хочу, чтобы при нажатии на эту вкладку в теле панели инструментов отображалось несколько строк. Как я мог достичь этого? Я мог бы успешно добавить href для раздела «контакт». enter image description here

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Возможно, я не правильно понимаю ваш вопрос, но как насчет:

library(shiny)
library(shinydashboard)

header <- dashboardHeader()

sidebar <- dashboardSidebar(
  sidebarMenu(
    id = "tabs",
    menuItem("About", icon = icon("info"), tabName = "about"),
    menuItem("Contact", icon = icon("phone"), tabName = "contact")
    )
  )
)

body <- dashboardBody(
  tabItems(
    tabItem("about",
            h1("About")),
    tabItem("contact",
            h1("Contact"))
  )
)

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) { }
)

Когда вы нажимаете About, вы получаете новую вкладку в dashboardBody, где вы можете отобразить все, что захотите.


Обновление

На основании ваших разъяснений вы можете использовать shinyjs до hide / show соответствующую часть:

library(shiny)
library(shinydashboard)
library(shinyjs)

header <- dashboardHeader()

sidebar <- dashboardSidebar(
  sidebarMenu(
    id = "tabs",
    menuItem("About", icon = icon("info"), tabName = "about"),
    menuItem("Contact", icon = icon("phone"), tabName = "contact")
  )
)
)

body <- dashboardBody(
  useShinyjs(),
  fluidPage(
    fluidRow(id = "mainContent",
      column(12, h1("Main Content"))
    ),
    hidden(fluidRow(id = "contact", h1("Contact Info")))
  )
)

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) {
    observe({
      if (input$tabs == "contact") {
        hideElement("mainContent")
        showElement("contact")
      } else {
        hideElement("contact")
        showElement("mainContent")
      }
    })
  }
)

При нажатии на Contact основная часть скрыта, и отображается контакт. У меня, однако, ощущение, что немного неправильно использует идею shinydashboard.

0 голосов
/ 12 февраля 2020

@ thothal, он не позволил мне добавить комментарий в качестве длины, поэтому я оставил свой комментарий (ниже) в качестве ответа.

Извините, если неясно. Тем не менее, ваш ответ помог мне частично. Я включил tabItems деталь в мой dashboardBody раздел, как показано ниже:

dashboardBody(
    fluidPage(
       fluidRow(
          column(12, div(dataTableOutput("dataTable")))
       )
    ),
    tabItems(
       tabItem("About", h1("text to be displayed"))
    )
)

, но «текст для отображения» отображается под таблицей.

То, что я хочу, это раздел About (при нажатии) должен отображать только текст, а не таблицу. Я понимаю, что это просто форматирование кода в разделе dashboardBody, но я не знаю, как это сделать.

Чтобы быть более понятным, в разделе моей панели инструментов всегда должен отображаться объект данных, а в разделе about при нажатии должен отображаться текст, а не объект данных. Я действительно надеюсь, что это ясно. Большое спасибо за вашу помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...