удаление выделения при наведении курсора в пакете DT с помощью shinny

#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)