2015-02-10 14 views

Trả lời

1

Tôi cũng đang tìm kiếm nó và tôi nghĩ rằng nó không được triển khai. Trong nhóm thảo luận sáng bóng có một câu hỏi tương tự từ tháng 11 năm 2014, và nó vẫn mở.

https://groups.google.com/forum/#!searchin/shiny-discuss/vertical$20slider

Tìm kiếm trên official gallery và các trang web, tôi couldn`t tìm thấy bất kỳ ví dụ về nó. Tất cả các thanh trượt đều nằm ngang. Luôn luôn.

4

Có nhiều cách để thực hiện thủ công. Bạn sẽ cần phải tạo một tuỳ chỉnh js.

Đây là một ứng dụng shinny điên nơi mà mọi thứ quay

#Libs 
    require(c('shiny')) 
    js<-"$(function() { 
     var $elie = $('div'); 
     rotate(25); 
     function rotate(degree) {   
      $elie.css({ WebkitTransform: 'rotate(' + degree + 'deg)'}); 
      $elie.css({ '-moz-transform': 'rotate(' + degree + 'deg)'}); 
      timer = setTimeout(function() { 
       rotate(++degree); 
      },100); 
     } 
    });" 


    renderInputs <- function(prefix) { 
     wellPanel(
     fluidRow(
      column(3, 
       sliderInput(paste0(prefix, "_", "n_obs"), "View a specific date", min = as.Date('1980-05-15'), max = Sys.Date(), value = as.Date('2000-01-01'), 
       #sliderInput("date_range", "Choose Date Range:", min = as.Date("2016-02-01"), max = Sys.Date(), value = c(as.Date("2016-02-25"), Sys.Date()) 
       ), 
       verbatimTextOutput("info") 
     ), 
      column(9, 
       plotOutput("plot1", 
          click = "plot_click", 
          dblclick = "plot_dblclick", 
          hover = "plot_hover", 
          brush = "plot_brush") 
     ) 
     ) 
    ) 
    } 

    ui <- shinyUI(fluidPage(theme="simplex.min.css", 
          tags$style(type="text/css", 
             "label {font-size: 12px;}", 
             ".recalculating {opacity: 1.0;}" 
          ), 
          tags$head(
           tags$style(HTML(" 
               @import url('//fonts.googleapis.com/css?family=Lobster|Cabin:400,700'); 

               h1 { 
               font-family: 'Lobster', cursive; 
               font-weight: 500; 
               line-height: 1.1; 
               color: #48ca3b; 
               } 

               ")), 
           tags$script(HTML(js)) 
          ), 

          # Application title 
          tags$h2("Google!!!"), 
          p("An adaptation of the", 
           tags$a(href="https://google.com", "Google"), 
           "from", 
           tags$a(href="https://duckduckgo.com/", "DuckDuckGo"), 
           "to get the best possible results without selling yourself"), 
          hr(), 

          fluidRow(
           column(6, tags$h3("Scenario A")), 
           column(6, tags$h3("Scenario B")) 
          ), 
          fluidRow(
           column(12, renderInputs("a")) 
          ), 
          fluidRow(
           column(6, 
            plotOutput("a_distPlot", height = "600px") 
          ), 
           column(6, 
            plotOutput("b_distPlot", height = "600px") 
          ) 
          ) 
          ) 
       ) 


    server <- function(input, output) { 
     output$plot1 <- renderPlot({ 
     plot(mtcars$wt, mtcars$mpg) 
     }) 

     output$info <- renderText({ 
     xy_str <- function(e) { 
      if(is.null(e)) return("NULL\n") 
      paste0("x=", round(e$x, 1), " y=", round(e$y, 1), "\n") 
     } 
     xy_range_str <- function(e) { 
      if(is.null(e)) return("NULL\n") 
      paste0("xmin=", round(e$xmin, 1), " xmax=", round(e$xmax, 1), 
       " ymin=", round(e$ymin, 1), " ymax=", round(e$ymax, 1)) 
     } 

     paste0(
      "click: ", xy_str(input$plot_click), 
      "dblclick: ", xy_str(input$plot_dblclick), 
      "hover: ", xy_str(input$plot_hover), 
      "brush: ", xy_range_str(input$plot_brush) 
     ) 
     }) 
    } 

    shinyApp(ui, server) 


    ################################ 

Nếu bạn muốn nó làm việc xoay chỉ có một yếu tố bạn cần phải sửa đổi js như thế này:

js<-"$(function() { 
     var $elie = $(document.getElementsByClassName('form-group shiny-input-container')); 
    rotate(270); 
    function rotate(degree) {   
     $elie.css({ WebkitTransform: 'rotate(' + degree + 'deg)'}); 
     $elie.css({ '-moz-transform': 'rotate(' + degree + 'deg)'}); 
    } 
});" 

Nó vẫn cần một bit công việc để sửa các chức năng như trượt và đệm của div và thêm id tùy chỉnh trên tất cả các phần tử bạn muốn xoay: do đó đảm bảo bạn sẽ không áp dụng js trên phần tử bạn không muốn và nhận được sự lộn xộn từ ví dụ đầu tiên, nhưng nó phải là ag điểm khởi đầu tốt.

+0

thankyou! Tôi có thể thấy điều này có thể là một sự khởi đầu. Người đầu tiên thực sự là điên rồ! Cái thứ 2 chỉ với thanh trượt xoay có vẻ tốt nhưng, như bạn đề nghị thanh trượt vẫn phát hiện chuyển động của chuột trái sang phải để di chuyển thanh trượt lên xuống. Điều đó có thể sửa chữa được không? – Andy

+0

Có. Đoán tốt nhất của tôi là ghi đè các hàm từ js tương quan với điều này. Một cách khác là chỉ đơn giản là không sử dụng thanh trượt sáng bóng và thêm một trong số của riêng bạn bằng cách sử dụng một số mã từ các nguồn khác như ở đây: https://jqueryui.com/slider/#multiple-vertical – Stanislav

Các vấn đề liên quan