Где хранить файл ccs при упаковке блестящего приложения - PullRequest
0 голосов
/ 08 мая 2019

Я упаковываю блестящее приложение с R. У меня есть пять файлов

ui.R

    ui <-
    div(
        class = "navbar1",
navbarPage(
    div(tags$b("Test"), style = "color:#dcaaaa"),
           theme = "custom.css",
           tabPanel("Plot",
                    sidebarLayout(
                        sidebarPanel(
                            radioButtons("plotType", "Plot type",
                                         c("Scatter"="p", "Line"="l")
                            )
                        ),
                        mainPanel(
                            plotOutput("plot")
                        )
                    )
           ),
           tabPanel("Summary",
                    verbatimTextOutput("summary")
           ),
           navbarMenu("More",
                      tabPanel("Table",
                               DT::dataTableOutput("table")
                      ),
                      tabPanel("About",
                               fluidRow(
                                   # column(6,
                                   #        includeMarkdown("about.md")
                                   # ),
                                   column(9,
                                          img(class="img-polaroid",
                                              src=paste0("http://upload.wikimedia.org/",
                                                         "wikipedia/commons/9/92/",
                                                         "1919_Ford_Model_T_Highboy_Coupe.jpg")),
                                          tags$small(
                                              "Source: Photographed at the Bay State Antique ",
                                              "Automobile Club's July 10, 2005 show at the ",
                                              "Endicott Estate in Dedham, MA by ",
                                              a(href="http://commons.wikimedia.org/wiki/User:Sfoskett",
                                                "User:Sfoskett")
                                          )
                                   )
                               )
                      )
           )
)
)

Сервер. R

server <- function(input, output, session) {
    output$plot <- renderPlot({
        plot(cars, type=input$plotType)
    })

    output$summary <- renderPrint({
        summary(cars)
    })

    output$table <- DT::renderDataTable({
        DT::datatable(cars)
    })
}

launchApp.R

#' launches the test shiny app
#'
#' @export launchApp
#'
#' @return shiny application object
#'
#' @example \dontrun {launchApp()}
#'
#' @import shiny 
#'


# wrapper for shiny::shinyApp()
launchApp <- function() {
  shinyApp(ui, server)
}

custom.css

.navbar1 .navbar{background-color: #2C6D26;}

.navbar1 .navbar-default .navbar-brand{color: white;}


.navbar1 .navbar-nav li a:hover, .navbar1 .navbar-nav > .active > a 
  {
    color: #fff !important;
    background-color:#2C6D26 !important;
    background-image: #fff !important;
  }

Цель состоит в том, чтобы упаковать это приложение в MyPackage.После http://r -pkgs.had.co.nz / inst.html я создал папку www в inst.Я организовал файлы как:

| MyPackage/
    | R
        | ui.R
        | server.R
        | launchApp.R
    | inst
        | www
            | imgName.jpg
            | custom.css

Изображение доступно в http://upload.wikimedia.org/wikipedia/commons/9/92/1919_Ford_Model_T_Highboy_Coupe.jpg - для переименования в imgName.jpg

Может быть собран пакет.Но не может заставить файлы css и jpg работать в пакете.

Есть Включая изображение в блестящий пакет приложения .Но до сих пор не могу понять.

Какой лучший способ достичь этого?Большое спасибо!

1 Ответ

0 голосов
/ 09 мая 2019

Вы должны использовать addResourcePath для этого (как в ответе на ссылку).Создайте в своем пакете функцию, подобную этой:

.onLoad <- function(...) {
  shiny::addResourcePath(
    prefix = "custom-assets", # custom prefix that will be used to reference your directory
    directoryPath = system.file("www", package = "MyPackage") # path to resource in your package
  )
}

После того, как вы сможете обратиться к пользовательскому префиксу, чтобы найти свои файлы в приложении:

tags$link(href="custom-assets/styles.css", rel="stylesheet")

tags$img(class="img-polaroid", src = "custom-assets/imgName.jpg")

themeаргумент navBarPage, он не в нужном месте в вашем коде.

...