2014-09-18 3 views
4

J'essaie de trouver un moyen de modifier de façon interactive le thème de l'application à partir d'une entrée de texte.R Shiny: modifier de façon interactive le thème de l'application

Voici un exemple de mon ui.R.

shinyUI(fluidPage(
    tabsetPanel(
    tabPanel("Main"), 
    tabPanel("Settings", 
     textInput("skin", "Select Skin", value = "bootstrap1.css") 
    ), type = "pills", position = "above" 
    ),theme = input$skin 
) 
) 

Je reçois l'erreur suivante: « ERREUR: objet « input » not found »

Comme note finale, j'ai créé un foler www dans le dossier de l'application qui ne contient bootstrap1.css entre autres fichiers css.

Répondre

5

L'option theme dans fluidPage est d'insérer un script CSS avec l'appel suivant:

tags$head(tags$link(rel = "stylesheet", type = "text/css", 
          href = input$Skin)) 

Vous pouvez simplement ajouter ce code HTML comme un élément réactif dans votre ui:

library(shiny) 
runApp(list(ui = fluidPage(
    tabsetPanel(
    tabPanel("Main"), 
    tabPanel("Settings", 
      textInput("Skin", "Select Skin", value = "bootstrap1.css") 
    ), type = "pills", position = "above" 
), 
    uiOutput("myUI") 
) 
, server = function(input, output, session){ 
    output$myUI <- renderUI({ 
    tags$head(tags$link(rel = "stylesheet", type = "text/css", 
         href = input$Skin)) 
    }) 
} 
)) 
+0

J'apprécie votre détaillée répondre. C'est exactement ce que je cherchais. – Christos

Questions connexes