3

アイデア

私はbox()光沢のあるアプリを持っています。にbox()は、title引数 (これには が含まれますicon) とselectInput()要素が含まれます。にカーソルを合わせると、入力に応じて生成されるiconツールチップ( を使用tipify())またはポップオーバー( を使用 popify()titleまたは引数(または両方)が必要でした。contentselectInput()

問題

or引数として正しく実装されていませtipify()ん。文字列が必要なので、関数の引数として要素を使用しようとしましたが、これも失敗しました。popify()textOutput()titlecontentreactiveValues()

質問

を使用するだけで、ツールチップまたはポップオーバーのコンテンツを動的にできrますか? これはどのように行うことができますか?

私はそれを行うことができるとJavaScript思いますが、私はそれについてほとんど知りません。

コード

試行 1 - 失敗 - 実際のテキストではなくコードを表示する

library("shiny")
library("shinydashboard")
library("shinyBS")

ui <- fluidPage(
 box(
   title = span("My box",
                tipify(el = icon(name = "info-circle", lib = "font-awesome"), title = textOutput("TIP"))),
   selectInput(
     inputId = "SELECT",
     label = NULL,
     choices = c("Option1" = "Option1",
                 "Option2" = "Option2"
     ),
     multiple = FALSE
   )
 )
)
server <- function(input, output, session){
  output$TIP <- renderText({"Helo world!"})
}
shinyApp(ui, server)

試行 2 - 失敗 - TIP ( reactiveValues()) がまだ定義されていないため、UI を作成できません

library("shiny")
library("shinydashboard")
library("shinyBS")

ui <- fluidPage(
 box(
   title = span("My box",
                tipify(el = icon(name = "info-circle", lib = "font-awesome"), title = TIP$a)),
   selectInput(
     inputId = "SELECT",
     label = NULL,
     choices = c("Option1" = "Option1",
                 "Option2" = "Option2"
     ),
     multiple = FALSE
   )
 )
)
server <- function(input, output, session){
  TIP <- reactiveValues(a = "Hello world!")
}
shinyApp(ui, server)

ここに同様の質問がありますが、ここで説明されている問題は解決しません。

4

1 に答える 1

3

できることは、サーバー側で完全にタイトルを作成することです。このようにして、動的にすることに問題はありません。これにより、次のようなアプリが得られます。

library("shiny")
library("shinydashboard")
library("shinyBS")

ui <- fluidPage(
  box(
    title = uiOutput("title"),
    selectInput(
      inputId = "SELECT",
      label = NULL,
      choices = c("Option1" = "Option1",
                  "Option2" = "Option2"
      ),
      multiple = FALSE
    )
  )
)
server <- function(input, output, session){
  TIP <- reactiveValues()
  observe({
    TIP$a <- ifelse(input$SELECT =="Option1","Hello World","Hello Mars")
  })


  output$title <- renderUI({span("My box",
                   tipify(el = icon(name = "info-circle", lib = "font-awesome"), title = TIP$a))})


}
shinyApp(ui, server)

それが役に立てば幸い。

于 2016-09-09T13:12:48.653 に答える