Пользователи смогли загрузить таблицу после редактирования заголовков в DT R Shiny - PullRequest
0 голосов
/ 02 мая 2020

Это пример, когда пользователи могут редактировать заголовки имен столбцов, я хочу добавить кнопку загрузки, и пользователи могут загрузить таблицу после редактирования заголовка, как я могу сохранить таблицу после их редактирования. Я ценю любую помощь

library(shiny)
library(DT)
callback <- c(
  "$.contextMenu({",
  "  selector: '#table th',", 
  "  trigger: 'right',",
  "  autoHide: true,",
  "  items: {",
  "    text: {",
  "      name: 'Enter column header:',", 
  "      type: 'text',", 
  "      value: ''", 
  "    }",
  "  },",
  "  events: {",
  "    show: function(opts){",
  "      $.contextMenu.setInputValues(opts, {text: opts.$trigger.text()});",
  "    },",
  "    hide: function(opts){",
  "      var $this = this;",
  "      var data = $.contextMenu.getInputValues(opts, $this.data());",
  "      var $th = opts.$trigger;",
  "      $th.text(data.text);",
  "    }",
  "  }",
  "});" 
)
ui <- fluidPage(
  tags$head(
    tags$link(
      rel = "stylesheet", 
      href = "https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.8.0/jquery.contextMenu.min.css"
    ),
    tags$script(
      src = "https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.8.0/jquery.contextMenu.min.js"
    )
  ),
  DTOutput("table")
)
server <- function(input, output){
  output[["table"]] <- renderDT({
    datatable(iris, callback = JS(callback))
  }, server = FALSE)  
}
shinyApp(ui, server)

1 Ответ

0 голосов
/ 03 мая 2020

Вам просто нужно использовать расширение Buttons:

  output[["table"]] <- renderDT({
    datatable(iris, 
              callback = JS(callback), 
              extensions = "Buttons", 
              options = list(
                dom = "Bfrtip",
                buttons = list("excel")
              )
    )
  }, server = FALSE)  
...