2017-04-06 3 views
0

statische Dateien zu glänzenden R Paket hinzufügen Ich habe versuchen addResourcePath zu verwenden und umfassen extdata Verzeichnis (das ist in inst Verzeichnis):Wie für neue Eingangssteuer

in meiner benutzerdefinierten Eingabefunktion Skript und CSS-Datei zu haben:

#' @export 
multiSelect <- function(inputId, label = NULL, choices = NULL, selected = NULL) { 
    args <- lapply(names(choices), function(name) { 
    value <- choices[[name]] 
    if (value %in% selected) { 
     tags$option(value = value, selected = "selected", name) 
    } else { 
     tags$option(value = value, name) 
    } 
    }) 
    args$id = inputId 
    args$class = "multiple-select" 
    args$multiple = "true" 
    tagList(
    singleton(tags$head(
     tags$link(rel = "stylesheet", href = "extdata/multiSelect.css"), 
     tags$script(src = "extdata/multiSelect.js") 
    )), 
    tags$script(paste0("$('#", inputId, "').multipleSelect()")), 
    tags$div(
     class = "form-group shiny-input-container", 
     tags$label(`for`=inputId, label), 
     do.call(tags$select, args) 
    ) 
) 
} 

ich habe dies versuchen:

addResourcePath('extdata', system.file('extdata', package='myPackage')) 

ich laufe dies in meiner divosshiny\R\shinyUtils.R Datei des Pakets.

aber wenn ich laufe den Server und offen:

http://127.0.0.1:7003/extdata/multiSelect.js 

die multiSelect.js in package/inst/extdata/ Verzeichnis ist. Fehle ich etwas? Wie soll addResourcePath funktionieren?

Ich bekomme keine Fehler, wenn ich das Paket baue. Ich hatte Fehler, wenn ich extdata als exdata falsch geschrieben habe, also weiß ich, dass der Pfad korrekt ist.

Antwort

0

Die Funktion addResourcePath müssen in Benutzercode ausgeführt werden (im Haupt server.R), habe ich eine Funktion hinzugefügt:

#' @export 
setupWidgets <- function() { 
    addResourcePath('extdata', system.file('extdata', package='divosShiny')) 
} 

und ausgeführt es in server.R und es funktionierte.