R Кнопка обновления блестящей страницы для нескольких вкладок - PullRequest
0 голосов
/ 20 марта 2019

Я создаю блестящую панель инструментов, в которой есть несколько вкладок, каждая вкладка находится на отдельной странице и может быть направлена ​​из элементов вкладок на боковой панели.

Я пытаюсь добавить кнопку обновления страницы на каждой вкладке, перейдя по ссылке здесь Кнопка обновления страницы в R блестящий

Однако я могу добавить ее только к однойна вкладке произошел сбой, когда я скопировал и вставил тот же код для других вкладок

Ниже приводится текущая структура, которую я использую:

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

jscode <- "shinyjs.refresh = function() { history.go(0); }"

header <- dashboardHeader(

)

sidebar <- dashboardSidebar(
  tags$head(tags$style(HTML('.content-wrapper { height: 1500px !important;}'))),
  sidebarMenu (
    menuItem("A", tabName = "d1"),
    menuItem("B", tabName = "d2"),
    menuItem("C", tabName = "d3")
  )
)

body <- dashboardBody(
  useShinyjs(),
  extendShinyjs(text = jscode),
  tabItems(
    tabItem(tabName = "d1",
            box(title = "AAA",
                actionButton("refresh", "Save"))
    ),
    tabItem(tabName = "d2",
             box(title = "BBB")
    ),
    tabItem(tabName = "d3",
            box(title = "CCC")
    )
  )
)

# UI
ui <- dashboardPage(header, sidebar, body)

# Server
server <- function(input, output, session) {

  observeEvent({
    input$aa
    input$refresh
  })

  observeEvent(input$refresh, {
    js$refresh();
  })

  observeEvent({
    input$bb
  })

  observeEvent({
    input$cc
  })


}

# Shiny dashboard
shiny::shinyApp(ui, server)

По сути, теперь у меня только кнопка обновления страницы называется SAVE на вкладке 1 для ввода aa .

Мне интересно, как бы я мог иметь такую ​​же кнопку обновления страницы на вкладке 2 и вкладке 3 для ввода bb и куб.см .Идеальным решением было бы обновить панель инструментов Shiny, если пользователи нажимают какие-либо кнопки сохранения на любых страницах.

Заранее спасибо

1 Ответ

1 голос
/ 20 марта 2019

Вам нужно создать 3 разные кнопки для каждой вкладки, затем вы можете вызвать одну из них для обновления:

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

jscode <- "shinyjs.refresh = function() { history.go(0); }"

header <- dashboardHeader(

)

sidebar <- dashboardSidebar(
  tags$head(tags$style(HTML('.content-wrapper { height: 1500px !important;}'))),
  sidebarMenu (
    menuItem("A", tabName = "d1"),
    menuItem("B", tabName = "d2"),
    menuItem("C", tabName = "d3")
  )
)

body <- dashboardBody(
  useShinyjs(),
  extendShinyjs(text = jscode),
  tabItems(
    tabItem(tabName = "d1",
            box(title = "AAA",
                actionButton("b1", "Save"))
    ),
    tabItem(tabName = "d2",
            box(title = "BBB",
                actionButton("b2", "Save"))
    ),
    tabItem(tabName = "d3",
            box(title = "CCC",
                actionButton("b3", "Save"))
    )
  )
)

# UI
ui <- dashboardPage(header, sidebar, body)

# Server
server <- function(input, output, session) {

  observeEvent(c(input$b1,input$b2,input$b3), {
    js$refresh()
  },ignoreNULL = T,ignoreInit = T)

}

# Shiny dashboard
shiny::shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...