Использование conditionalPanel (или других методов) для создания временного баннера, который исчезает, если пользователь перемещается

Я хочу создать приветственное сообщение, когда пользователь сначала откроет блестящую веб-страницу. В настоящее время у меня он такой, что он постоянно находится на первом tabPanel. Есть ли способ заставить его исчезнуть, когда пользователь переместится, а затем обратно на эту панель?

fluidRow(
 column(width=12,
 tabsetPanel(type = "tabs", id = "tabs1", 
 tabPanel("Express Usage", wellPanel("Welcome! Please select the libraries you are interested in viewing from below and use the tabs to navigate between graphs. It is best to limit your selection to no more than 5 libraries at a time"), plotOutput("express_Plot", height=400)),
 tabPanel("Juvenile Usage", plotOutput("juvenile_Plot", height=400)), 
 tabPanel("test", h3(textOutput("text_test")))))
 ),
1 ответ

Вы можете установить атрибут value для всех ваших tabPanel соответственно. Таким образом, вы можете сказать, в server.R, какая вкладка в данный момент выбрана путем чтения input$tabs1, где tabs1 - это id вы устанавливаете для tabsetPanel.

Замените wellPanel на элемент uiOutput и обновите элементы пользовательского интерфейса в соответствии с:

  1. Текущая панель.
  2. Время посещения панели.

ui.R

library(shiny)
shinyUI(fluidPage(
 fluidRow(
 column(width=12,
 tabsetPanel(type = "tabs", id = "tabs1", 
 tabPanel("Express Usage", 
 uiOutput("welcome"), # replace the wellPanel
 plotOutput("express_Plot", height=400), value="ex_usage"),
 tabPanel("Juvenile Usage", plotOutput("juvenile_Plot", height=400), value="juv_usage"), 
 tabPanel("test", h3(textOutput("text_test")))), value="test")
 )
)
)

server.R

library(shiny)

shinyServer(function(input, output, session){
 visits <- reactiveValues(times = 0)
 output$welcome <- renderUI({
 if (input$tabs1 == "ex_usage") {
 isolate(visits$times <- visits$times + 1)
 if (isolate(visits$times) == 1) {
 return (wellPanel("Welcome! Please select the libraries you are interested in viewing from below and use the tabs to navigate between graphs. It is best to limit your selection to no more than 5 libraries at a time"))
 }
 else {
 return ()
 }
 }
 })
})

licensed under cc by-sa 3.0 with attribution.