R의 bsplus, Shiny 및 JavaScript를 사용하여 캐 러셀 자동 재생 중지

Dec 26 2020

@YBS 제안을 사용하여 "bs_carousel (...) inside a renderUI"여기에 내 시도가 있습니다. 슬라이드가 렌더링되고 처음에는 자동 재생이 꺼집니다. 그러나 오른쪽 갈매기 표를 클릭하면 자동 재생이 시작됩니다.

library("shiny")
library("shinyjs")
library("bsplus")

# Stop autoplay
# https://stackoverflow.com/questions/26133618/how-to-stop-bootstrap-carousel-from-autosliding

jscode <- "
shinyjs.init = function() {
  $('.carousel').carousel({ interval: false }); }" ui <- fluidPage( shinyjs::useShinyjs(), extendShinyjs(text = jscode, functions = c()), # Application title titlePanel("Carousel Demo"), uiOutput("carousel") ) server <- shinyServer(function(input, output) { output$carousel <- renderUI({
    bs_carousel(id = "images", use_indicators = TRUE) %>%
      bs_append(
        content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=Merry")
      ) %>%
      bs_append(
        content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=Christmas")
      ) %>%
      bs_append(
        content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=To")
      ) %>%
      bs_append(
        content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=All")
      ) 
  })
  
})

# Run the application
shinyApp(ui = ui, server = server)

원래 질문

R의 bsplus 패키지의 캐 러셀을 사용하고 있습니다. 자동 재생을 중지하고 싶습니다. 여기에서 다양한 솔루션이 언급 되었습니다 .

나는 성공하지 않고 아래 중 하나를 구현하려고 노력하고 있습니다.

library("shiny")
library("bsplus")

# Stop autoplay
# https://stackoverflow.com/questions/26133618/how-to-stop-bootstrap-carousel-from-autosliding

jscode <- "
shinyjs.init = function() {
  $('.carousel').carousel({ interval: false });
}"

ui <- shinyUI(fluidPage(
  
  shinyjs::useShinyjs(),
  extendShinyjs(text = jscode, functions = c()),

  # Application title
  titlePanel("Carousel Demo"),
),

bs_carousel(id = "images", use_indicators = TRUE) %>%
  bs_append(
    content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=Merry")
  ) %>%
  bs_append(
    content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=Christmas")
  ) %>%
  bs_append(
    content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=To")
  ) %>%
  bs_append(
    content = bs_carousel_image(src = "https://placehold.it/900x500/3c8dbc/ffffff&text=All")
  ) 

)

server <- shinyServer(function(input, output) {
  
})

# Run the application
shinyApp(ui = ui, server = server)

답변

1 YBS Dec 27 2020 at 09:54

bs_carousel()마우스 포인터가 활성 슬라이드 위에 있지 않는 한 자동 재생은에서 중지되지 않습니다 . 그러나 아래 코드 carousel()shinydashboardPlus패키지 에서 자동 재생을 끌 수 있음을 보여줍니다 .

library(shiny)
library(shinydashboardPlus)
library(DT)

jscode <-"
$(document).ready(function(){ $('#mycarousel').carousel( { interval:  false } );
});"

shinyApp(
  ui = dashboardPage(
    header = dashboardHeader(),
    sidebar = dashboardSidebar(),
    body = dashboardBody(
      tags$head( tags$style(HTML("
      #mycarousel {
        width:900px;
        height:600px;
      }
    .carousel-control{
      color:#FF0000;
    }
    "))
      ),
      tags$head(tags$script(HTML(jscode))),
      carousel(
        id = "mycarousel",
        carouselItem(
          DTOutput("show_iris_dt")
        ),
        carouselItem(
          caption = "An image file",
          tags$img(src = "YBS.png") ), carouselItem( caption = "Item 3", tags$img(src = "http://placehold.it/900x500/39CCCC/ffffff&text=Happy+New+Year")
        )
      )
    ),
    title = "Carousel Demo"
  ),
  server = function(input, output) {
    output$show_iris_dt <- renderDT({
      datatable(iris)
    })
  }
)