2014-12-19 15 views
5

खींचने के बिना चमकदार ऐप की योग्यता मैं डेटाटेबल (इसकी सभी रैंकिंग, खोज और पेज फीचर्स के साथ) प्राप्त करना चाहता हूं जो पूरी तरह से पृष्ठ पर फैला नहीं है, और परिणामस्वरूप प्रत्येक में बड़ी मात्रा में सफेद स्थान होता है स्तंभ ...रेंडर में कॉलम चौड़ाई

enter image description here

... आदर्श स्तंभ के साथ renderTable से "रैप" शैली के समान चौड़ाई ...

enter image description here

मैं के.एन. ओउ, मैं सापेक्ष कॉलम चौड़ाई को ठीक कर सकता हूं, हालांकि, मेरी तालिका चयनित इनपुट के आश्रित कॉलम की विभिन्न संख्याओं के साथ गतिशील रूप से अपडेट हो जाएगी। मैं दाएं हाथ की खाली जगह में विस्तार करने के लिए अतिरिक्त कॉलम पसंद करूंगा और फिर ब्राउज़र क्षैतिज चौड़ाई से अधिक हो जाने पर एक क्षैतिज स्क्रॉलबार ट्रिगर करें। ऊपर छवियों में तालिकाओं के

प्रतिलिपि प्रस्तुत करने योग्य उदाहरण ...

library(shiny) 
runApp(list(
    ui = navbarPage(
    title = 'Tables', 
    tabPanel('dataTableOutput', dataTableOutput('ex1')), 
    tabPanel('tableOutput', tableOutput('ex2')) 
), 
server = function(input, output) { 
    output$ex1 <- renderDataTable(iris) 
    output$ex2 <- renderTable(iris) 
} 
)) 
+0

मुझे पता है कि यह सीधे आपके प्रश्न का समाधान नहीं करता है, लेकिन आर स्टुडियो ने आर के लिए एचटीएमएल विजिट्स की घोषणा की जिसमें अन्य शांत चीजें, डेटाटेबल्स शामिल हैं। http://www.htmlwidgets.org/showcase_datatables.html – Khashaa

उत्तर

6

मुझे लगता है कि आप DataTables में drawCallback उपयोग करना चाहिए। यहां मैंने डेटा की चौड़ाई को ठीक करने के लिए थोड़ा सा अपना उदाहरण बदल दिया है 600px तक। आप लगभग कुछ भी करने के लिए कॉलबैक फ़ंक्शन में संभावित जावा स्क्रिप्ट फ़ंक्शन के साथ खेल सकते हैं।

library(shiny) 
runApp(list(
    ui = navbarPage(
    title = 'Tables', 
    tabPanel('dataTableOutput', dataTableOutput('ex1')), 
    tabPanel('tableOutput', tableOutput('ex2')) 
), 
    server = function(input, output) { 
    output$ex1 <- renderDataTable(iris, 
            option = list(drawCallback = I("function(settings) {document.getElementById('ex1').style.width = '600px';}"))) 
    output$ex2 <- renderTable(iris) 
    } 
)) 
0

मानते हुए अपने data.framedf है, तो सर्वर साइड पर प्रतिक्रियाशील/renderTable ब्लॉक की शुरुआत में इस कोड डाल दिया। यह स्तंभ नामों को वांछनीय लंबाई में लपेट देगा और इसलिए तालिका के आकार को कम करेगा। आप वांछित चौड़ाई के बराबर चौड़ाई बदल सकते हैं।

library(stringr) 

colnames(df) = str_wrap(colnames(df),width = 10) 
संबंधित मुद्दे