【发布时间】:2021-09-14 13:54:12
【问题描述】:
我试图将标题始终保持在相对于窗口/mainPanel 的宽度的居中位置。当我在宽桌子上折叠sidebarPanel 时,只有这样标题才保持居中。但是当sidebarPanel 未折叠时,与其他DT 小部件不同,标题会更改它的“位置”并出现在右侧。请帮忙。
这是一个代表:
global.R
options(scipen = 99999)
library(shiny)
library(shinyjs)
library(shinyWidgets)
library(dplyr)
library(DT)
library(htmltools)
xyz_query <- dplyr::bind_cols(mtcars, mtcars)
ui.R
fluidPage(
shinyjs::useShinyjs(),
navbarPage(
id = "navbar",
title= "xyz",
windowTitle = "xyz test",
tabPanel("Dataset",
div(style="display:inline-block",shinyWidgets::materialSwitch(inputId = "toggleSidebar", label = "Filter Panel: ",
value = TRUE, status = "warning")),
sidebarLayout(
sidebarPanel(
id = "Sidebar",
br(),
br()
),
mainPanel(
id = "main_panel",
DT::DTOutput('panel1_data')
)
)
)
)
)
服务器.R
function(input, output, session) {
observeEvent(input$toggleSidebar, {
shinyjs::toggle(id = "Sidebar", condition = input$toggleSidebar)
if(!isTRUE(input$toggleSidebar)) {
shinyjs::runjs("$('#main_panel').removeClass('col-sm-8').addClass('col-sm-12')")
} else {
shinyjs::runjs("$('#main_panel').removeClass('col-sm-12').addClass('col-sm-8')")
}
})
output$panel1_data <- DT::renderDT(server = FALSE, {
DT::datatable(xyz_query,
extensions = c('Buttons'),
caption = htmltools::tags$caption(style = 'caption-side: top; text-align: center; color:black; font-size:150% ;',
'MTCARS mtCARS mTcArS MTcars'),
options = list(scrollY = 600,
scrollX = TRUE,
dom = '<"float-left"l><"float-right"f>rt<"row"<"col-sm-4"B><"col-sm-4"i><"col-sm-4"p>>',
lengthMenu= list(c(10, 25, 50, -1),
c('10', '25', '50','All')),
scrollCollapse= TRUE,
lengthChange = TRUE,
widthChange= TRUE,
rownames = TRUE))})
}
图片-
【问题讨论】:
标签: r shiny shinydashboard dt shinyjs