Shiny

2014-10-07 18 views
11

içinde data.table kullanarak donma başlığı ve ilk sütun Veri tablosunu veren bir Parlak uygulamasına sahibim, ancak ilk sütunu ve üstbilgileri donduramıyorum, böylece tabloyu aşağı okurken okunması zor ya da karşısında. Bölmeleri dondurmak için zaten var mı? Aramayı denedim ama hiçbir şey bulamadım.Shiny

+0

arasında incompatibility son Parlak güncelleme sonrasında üzere, buradan denemek ve sıralama seçenekleri https://datatables.net/upgrade/1.10-convert –

cevap

12

İlginç bir soru ve şimdi Shiny için data.tables 1.10.2 'un son güncellemesi sayesinde, çeşitli eklentileri ve uzantıları kullanmak çok daha kolay. Sorunuz için FixedHeader uzantısı ideal görünüyor. alakalı JavaScript ve CSS dosyasını dahil gerekir bu uzantı eklemek için (http://cdn.datatables.net/ bakınız):

tagList(
    singleton(tags$head(tags$script(src='//cdn.datatables.net/fixedheader/2.1.2/js/dataTables.fixedHeader.min.js',type='text/javascript'))), 
    singleton(tags$head(tags$link(href='//cdn.datatables.net/fixedheader/2.1.2/css/dataTables.fixedHeader.css',rel='stylesheet',type='text/css'))) 
) 

data.tables tablo vb çizilir kez bize geri arama şart sağlayan bir seçenek initComplete sahiptir

function(settings, json) { 
    new $.fn.dataTable.FixedHeader(this, { 
              left: true, 
              right: true 
              }); 
             } 

iris veri kümesinin değiştirilmiş bir sürümünü kullanarak, bir endeks ve soldan sağa kaydırmayı göstermek için sonunda rastgele bir veri ekleyeceğiz:

library(shiny) 
myData <- cbind(list(index = row.names(iris)), iris 
       , rep(list(row.names(iris)), 10)) 
names(myData)[7:16] <- paste0("randomData", 1:10) 
runApp(
    list(ui = fluidPage(
    tagList(
     singleton(tags$head(tags$script(src='//cdn.datatables.net/fixedheader/2.1.2/js/dataTables.fixedHeader.min.js',type='text/javascript'))), 
     singleton(tags$head(tags$link(href='//cdn.datatables.net/fixedheader/2.1.2/css/dataTables.fixedHeader.css',rel='stylesheet',type='text/css'))) 
    ), 

    dataTableOutput("mytable") 
) 
    , server = function(input, output, session){ 
    output$mytable <- renderDataTable(myData, 
             options = list(
             pageLength = 50, 
             initComplete = I("function(settings, json){ 
              new $.fn.dataTable.FixedHeader(this, { 
              left: true, 
              right: true 
              }); 
             }") 
            ) 
    ) 
    }) 
) 

görebildiğimiz gibi, görüntünün 8'ini kaydetmek için aşağıya kaydırılmış olduğumuzu görebiliyoruz, ancak başlık ve ilk sütun (eklenen dizin sütunumuz) hala görülebilir durumda.

enter image description here

+1

Mutlu kullanılabilir yardım etmek ne görebilirsiniz ise cevap çözer eğer sorunuz, onu işaretleyerek kabul edildi olarak işaretlemeyi düşünün. – jdharrison

+1

Yardımlarınız için çok teşekkürler! İlk sütunun başlığını da dondurmak için bir yol var mı, bu yüzden sağa kaydırırken görünür? – Kamal

+2

'dataTables' belgelerini ve mükemmel ayrıntılı cevabınızı takip ederek, parlak uygulamalardan birinde 'FixedColumns' eklentisini denedim. Başlıklarımdaki "dataTables 1.10.4" css ve js dosyalarının yanı sıra "fixedcolumns/3.0.2" css ve js dosyalarını dahil ettim ve aşağıdaki gibi küçük bir değişiklikle seçeneklerimdeki initComplete'i ekledim: 'function (ayarlar, json) { yeni $ .fn.dataTable.FixedColumns (bu, {}); } '. Ancak uygulamayı çalıştırdığımda, tablo 'işleme ... 'mesajını görüntülemeye devam etti ve beklendiği gibi yüklenmedi. Şu anda en son parlak sürüm olan 0.11'i kullanıyorum. Düşünceler? –

3

FixedHeader çalışmıyor x-kaydırma, ama FixedColumns eserleri ise yanlış sütun adlarını verir. Dolayı kendilerine

library(shiny) 
library(DT) 
runApp(
    list(ui = fluidPage(

    dataTableOutput("mytable") 
) 
    , server = function(input, output, session){ 
    Rows <- c(1:50) 
    for (y in 1:15){ 
     x<-y-1 
     assign(letters[x+1],runif(5, 0, 1)) 
    } 
    x <- data.frame(Rows, mget(letters[1:15]), row.names=NULL) 
    x<- x[2:15] 
    output$mytable <- renderDataTable(
     DT::datatable(x, rownames=FALSE,extensions = c('FixedColumns',"FixedHeader"), 
        options = list(dom = 't', 
            scrollX = TRUE, 
            paging=FALSE, 
            fixedHeader=TRUE, 
            fixedColumns = list(leftColumns = 1, rightColumns = 0)) 
    ) 
    ) 
    } 
) 
)