我正在使用Shinydashboard框功能。我想实现以下几点。
1)在渲染输出表上,输入框应折叠。我有什么办法可以做到这一点?
2)当我要在“第一个盒子”事件后从“第二个盒子”打印表格时,第二个提交按钮的响应没有响应。要解决此问题需要做什么?
3)进度栏显示在页面加载中,但仅应显示在渲染输出表上。如何解决呢?
ui.R
library(shiny)
library(shinyjs)
library(shinydashboard)
library(DT)
shinyUI(
dashboardPage(title = "My Page",
dashboardHeader(
title = "My Header",
titleWidth = 200
),
dashboardSidebar(
width = 200,
sidebarMenu(
menuItem("My Data", selected = FALSE,
menuSubItem(text = "My Data", tabName = "my_data", newtab = TRUE, selected = FALSE)
)
)
),
dashboardBody(
useShinyjs(),
tabItems(
# First tab content
tabItem(tabName = "my_data",
h2("Please select fields"),
div(
fluidRow
(
box(title = 'First Box', background = 'green', collapsible = TRUE, collapsed = TRUE,
column(2,
actionButton("sub_mt", "Show MT Cars")
)),
box(title = 'Second Box', background = 'yellow', collapsible = TRUE, collapsed = TRUE,
column(2,
actionButton("sub_iris","Show Iris Data")
))
)
)
)
),
DT::dataTableOutput('optable'),
textOutput('message')
)
))
server.R
library(shiny)
library(shinydashboard)
library(DT)
library(shinyjs)
if (interactive()) {
shinyServer(function(session,input,output){
dt_mtcars <- eventReactive(input$sub_mt,
{
mtcars
})
dt_iris <- eventReactive(input$sub_iris,
{
iris
})
output$optable <- DT::renderDataTable({
withProgress(message = 'Data Loading...',value = 0, {
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.25)
}
})
if(input$sub_mt == TRUE)
{
dt_tab=dt_mtcars()
} else{
dt_tab=dt_iris()
}
datatable(dt_tab, rownames = FALSE, filter = 'top',
style = 'bootstrap', selection = 'single')}
)
}
)
}
1)在渲染输出表上,输入框应自动折叠。
2)我希望eventReactive在所有情况下都可以工作。
3)ProgressBar应该仅在加载表时显示,而不在页面加载时显示。