Как добавить downloadButton в шапку блестящей панели инструментов - PullRequest
3 голосов
/ 22 сентября 2019

Я хочу иметь downloadButton на моем shiny Dashboard, который загружает .pdf, который у меня есть, в папке www , который объясняет, как использовать панель мониторинга.

Пока чтоЯ успешно добавил Home Button и GitHub ссылку (window.open), но не могу найти способ реализовать downloadButton.

Пока здесь мой код:

header.R:

header <- dashboardHeader(title = "Support Vector Machine - Credit Fraud",
                          titleWidth = 400,
                          tags$li(a(onclick = "onclick =window.open('https://github.com/xxx/xxx')",
                                    href = NULL,
                                    icon("github"),
                                    title = "GitHub",
                                    style = "cursor: pointer;"),
                                  class = "dropdown"),
                          tags$li(a(onclick = "openTab('foa')",
                                    href = NULL,
                                    icon("home"),
                                    title = "Homepage",
                                    style = "cursor: pointer;"),
                                  class = "dropdown",
                                  tags$script(HTML("
                                       var openTab = function(tabName){
                                       $('a', $('.sidebar')).each(function() {
                                       if(this.getAttribute('data-value') == tabName) {
                                       this.click()
                                       };
                                       });
                                       }")))


)

server.R:

server <- function(input, output, session) {

  observeEvent(input$home, {
    updateTabItems(session, "sidebar", "foa")
  })
}

Результат:

code screenshot

Я просто хочудобавить downloadButton рядом со значком GitHub, где написано «Как использовать эту панель инструментов», и когда вы нажимаете на нее, она загружает .md или .pdf, которые есть у меня на www папка.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Вы можете сделать это, добавив еще одну кнопку tag для загрузки (скажем, ваш файл PDF сохранен в подпапке с именем img в папке www).

 tags$li(a(id = "download", class = "fa fa-download",
           href = "/img/how_to.pdf", download = "how_to.pdf"), class = "dropdown")

Итак, добавив к вашемусуществующий код заголовка:

header <- dashboardHeader(title = "Support Vector Machine - Credit Fraud",
                          titleWidth = 400,
                          tags$li(a(onclick = "onclick =window.open('https://github.com/xxx/xxx')",
                                    href = NULL,
                                    icon("github"),
                                    title = "GitHub",
                                    style = "cursor: pointer;"),
                                  class = "dropdown"),
                          tags$li(a(onclick = "openTab('foa')",
                                    href = NULL,
                                    icon("home"),
                                    title = "Homepage",
                                    style = "cursor: pointer;"),
                                  class = "dropdown",
                                  tags$script(HTML("
                                       var openTab = function(tabName){
                                       $('a', $('.sidebar')).each(function() {
                                       if(this.getAttribute('data-value') == tabName) {
                                       this.click()
                                       };
                                       });
                                       }"))),

                          ## DOWNLOAD
                          tags$li(a(id = "download", class = "fa fa-download",
                                    href = "/img/how_to.pdf", download = "how_to.pdf"),
                                    class = "dropdown")



)

enter image description here

0 голосов
/ 22 сентября 2019

Это с другого форума у ​​кого-то был такой же вопрос.И это сработало для этого человека.

   > downloadButton
    function (outputId, label = "Download", class = NULL, ...) 
    {
        aTag <- tags$a(id = outputId, class = paste("btn btn-default shiny-download-link", 
            class), href = "", target = "_blank", download = NA, 
            icon("download"), label, ...)
    }
    <bytecode: 0x000000001a919c58>
    <environment: namespace:shiny>

Эта функция скрывается за кнопкой «Скачать».Просто используйте свою собственную функцию.

customDownloadbutton <- function(outputId, label = "Download"){
    tags$a(id = outputId, class = "btn btn-default shiny-download-link", href = "", 
           target = "_blank", download = NA, icon("accessible-icon"), label)
}

Просто вставьте в icon значок, который вы хотите, и используйте функцию, как обычную кнопку загрузки

Как ее использовать:

customDownloadbutton <- function(outputId, label = "Download"){
    tags$a(id = outputId, class = "btn btn-default shiny-download-link", href = "", 
           target = "_blank", download = NA, icon("accessible-icon"), label)
}

library(shiny)


ui <- fluidPage(


   titlePanel("Old Faithful Geyser Data"),


   sidebarLayout(
      sidebarPanel(
         sliderInput("bins",
                     "Number of bins:",
                     min = 1,
                     max = 50,
                     value = 30),
         customDownloadbutton("myDownloadButton")
      ),


      mainPanel(
         plotOutput("distPlot")
      )
...