2017-11-26 2 views
3

Ich möchte meinen Aktionsschaltflächen oder meinen Slidern Tooltips mit dem Paket shinyBS und einer Funktion tipify hinzufügen. Ich habe einen Text für das Argument "title" des Tooltips hinzugefügt. Wenn mein Text jedoch einen Apostroph (einfaches Anführungszeichen) enthält, wird ein Fehler angezeigt. Was nicht mit dem Label des actionButton selbst passiert!einfaches Anführungszeichen in string transformiert sliderInput in numericInput bei Verwendung von shinyBS

library(shiny); library(shinyBS) 
shinyApp(ui = basicPage(p("title"), uiOutput("button_with_tooltip"), uiOutput("input_slider")), 
     server = function(input, output, session){ 
       output$button_with_tooltip = renderUI({ 
        tipify(actionButton("button", label="I'm doing nothing"), title="I am doing nothing")})}) 

Wenn Sie den Tooltip-Titel von ändern „Ich bin“ zu „Ich bin“, wird es nicht angezeigt werden soll.

Und noch überraschender Verhalten Folge dieses Fehlers ist mit inputSlider, sie verwandeln sich automatisch in eine numericInput, wenn der Titel des Tooltip ein einziges Zitat darin hat ... seltsam! Versuchen Sie folgendes:

shinyApp(
    ui = basicPage(p("title"), uiOutput("input_slider")), 
    server = function(input, output, session){ 
      output$input_slider = renderUI({ 
       tipify(sliderInput("slider", label="I'm a simple slider", min=0, max=10, value=5), title="I'm doing nothing") 
      })}) 

Warum dies geschieht und wie kann ich diese außer Kraft setzen? Danke,

NB: Ich bin Französisch, damit ich Apostrophe NEED

Danke,

+0

wichtig: ich verwende Version shinyBS_0.61; Aktuelle Versionen scheinen es zu beheben. – agenis

Antwort

1

Sieht aus wie diese Fehler war, die in der neuesten Version auf GitHub festgelegt wurde:

Aber die neueste CRAN Version ist ein wenig älter (2015-03-31). Ich habe die neueste Version auf GitHub installiert und diese App ohne Probleme ausgeführt.

devtools::install_github("ebailey78/[email protected]") 

tipify fügt einen Tooltip von JavaScript auf der Seite einbetten. Das Problem bestand darin, dass der JavaScript-Code mit einzelnen Strings in Anführungszeichen erstellt wurde, der String-Inhalt jedoch nicht maskiert wurde. Das verursacht einen JavaScript-Analysefehler, weshalb der Schieberegler wie ein einfaches <input>-Element aussieht.

Sie können Apostrophe mit einem Backslash als @akrun zeigte, oder HTML entkommen sie mit &#39;

1

wir eine Flucht tun \\'

library(shiny) 
library(shinyBS) 
shinyApp(
    ui = basicPage(p("title"), uiOutput("input_slider")), 
    server = function(input, output, session){ 
      output$input_slider = renderUI({ 
     tipify(sliderInput("slider", label="I'm a simple slider", 
      min=0, max=10, value=5), title="I\\'m doing nothing") 
})}) 

--output

enter image description here

+1

Danke @akrun, es funktioniert gut! (Eigentlich muss der Text direkt in einem Google-Blatt geändert werden, wo die App alle ihre Texte abruft). Haben Sie eine Vorstellung davon, warum dieser Schieberegler als numerische oder Texteingabe angezeigt wurde? und kann das etwas mit der Dateicodierung zu tun haben? – agenis

+0

@agenis Ich bin mir nicht sicher, warum es auf numerische Eingabe ändert – akrun

Verwandte Themen