#r #shiny #dt
#r #блестящий #dt
Вопрос:
У меня есть небольшие данные, которые я пытаюсь отобразить в приложении shinny с некоторыми пользовательскими удобными функциями, такими как функция загрузки, просмотр небольших / всех данных и т. Д. Мой вопрос в том, как удалить эффект наведения, потому что я использую цвет для выделения некоторых значений, и когда я выбираю строки, вид наведения удаляетраскраска. кто-нибудь может мне помочь, как удалить выделение при наведении курсора. ниже приведен воспроизводимый код, который я запускаю… заранее спасибо. введите описание изображения здесь. обратите внимание, что код не содержит цветовой части
library(DT)
library(tidyverse)
library(formattable)
library(shiny)
library(shinydashboard)
library(shinythemes)
library(shinyWidgets)
table_options <- function() {
list(
dom = 'Bfrtip',
#Bfrtip
# pageLength = 10,
buttons = list(
c('copy', 'csv', 'excel', 'pdf', 'print'),
list(
extend = "collection",
text = 'Show All',
action = DT::JS(
"function ( e, dt, node, config ) {
dt.page.len(-1);
dt.ajax.reload();}"
)
),
list(
extend = "collection",
text = 'Show Less',
action = DT::JS(
"function ( e, dt, node, config ) {
dt.page.len(10);
dt.ajax.reload();}"
)
)
),
deferRender = TRUE,
lengthMenu = list(c(-1,10,20), c('All', '10', '20')),
searching = TRUE,
#editable = TRUE,
scroller = TRUE,
lengthChange = FALSE
,
initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'background-color': '#517fb9', 'color': '#fff'});",
"}"
)
)
}
ui <- fluidPage(
titlePanel( h1("Iris data view", align = 'center'),
windowTitle = "Iris data "),
#theme = shinytheme("superhero"),
# Add the CSS
#tags$style(fmt_css),
# Create a container for tab panels
tabsetPanel(
# Create "Table" tab
tabPanel(
title = "Iris",
DT::dataTableOutput("table")
)
)
)
server <- function(input, output) {
# Creating a reactive variable named "filtered_data"
filtered_data <- reactive({
# Filter the data (copied from previous exercise)
data <- iris
data
})
output$table <- DT::renderDataTable({
data <- filtered_data()
DT::datatable(data,
rownames = FALSE,
#filter="top",
# editable = TRUE,
class = 'cell-border',
escape = FALSE,
#container = table_frame(),
options = table_options(),
extensions = 'Buttons'
)
})
}
shinyApp(ui, server)
Комментарии:
1. Здесь у вас много дополнительного кода, не связанного с раскраской ячейки и настройкой режима выделения. Если бы вы могли свести его к минимально воспроизводимому примеру, который показывает только конкретную проблему, это могло бы помочь вам решить ее самостоятельно и помочь другим людям, когда они попытаются помочь, сделав ее более понятной. Никто в мире не имеет
pv_ip_rescheduling
, кроме вас, поэтому никто не может запустить пример без воссоздания данных, что является болезненным2. @Nate, я отредактировал код, и теперь он должен быть воспроизводимым.
Ответ №1:
То, что вы ищете, — это не наведение курсора, поскольку это будет изменение цвета строки, когда мышь просто наводится на нее (это контролируется class
аргументом, класс hover
содержится в стандартном display
классе, поэтому это поведение по умолчанию, которое вы уже изменили).
Я думаю, что вы ищете, чтобы не разрешать выбор строки. Это контролируется аргументом selection
, вам нужно установить его в none
:
library(DT)
library(shiny)
table_options <- function() {
list(
dom = 'Bfrtip',
#Bfrtip
# pageLength = 10,
buttons = list(
c('copy', 'csv', 'excel', 'pdf', 'print'),
list(
extend = "collection",
text = 'Show All',
action = DT::JS(
"function ( e, dt, node, config ) {
dt.page.len(-1);
dt.ajax.reload();}"
)
),
list(
extend = "collection",
text = 'Show Less',
action = DT::JS(
"function ( e, dt, node, config ) {
dt.page.len(10);
dt.ajax.reload();}"
)
)
),
deferRender = TRUE,
lengthMenu = list(c(-1,10,20), c('All', '10', '20')),
searching = TRUE,
#editable = TRUE,
scroller = TRUE,
lengthChange = FALSE
,
initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'background-color': '#517fb9', 'color': '#fff'});",
"}"
)
)
}
ui <- fluidPage(
titlePanel( h1("Iris data view", align = 'center'),
windowTitle = "Iris data "),
#theme = shinytheme("superhero"),
# Add the CSS
#tags$style(fmt_css),
# Create a container for tab panels
tabsetPanel(
# Create "Table" tab
tabPanel(
title = "Iris",
DT::dataTableOutput("table")
)
)
)
server <- function(input, output) {
# Creating a reactive variable named "filtered_data"
filtered_data <- reactive({
# Filter the data (copied from previous exercise)
data <- iris
data
})
output$table <- DT::renderDataTable({
data <- filtered_data()
DT::datatable(data,
rownames = FALSE,
#filter="top",
# editable = TRUE,
class = 'cell-border',
escape = FALSE,
#container = table_frame(),
options = table_options(),
extensions = 'Buttons',
selection = "none"
)
})
}
shinyApp(ui, server)