9

DataTables を含む RStudio Shiny サーバー ページを取得し、TableTools と ColReorder を以下の例で動作させましたが、ColVis (ボタン) はhttp://datatables.net/extensions/colvis/Show/hide columnsの例と同じように動作しません。:

ボタンをクリックするShow/hide columnsと、リストが下のテーブルの値と混同され、ボタンをもう一度クリックしたり、ページ内の他の場所をクリックしてもリストを非表示にすることはできません (データテーブル ページの例は正しく動作します)。

ここに画像の説明を入力

sDomまた、テーブル内のさまざまな要素を並べ替えるために使用することについて混乱しています。Show/hide columnsボタンを左上ではなく右上に配置したいと思います。また、テーブルのさまざまな要素を並べ替える方法がわからないためsDom、列の順序を変更した後、CSV/Excel に保存するか、列を非表示にすると、元のテーブルではなく新しいテーブル レイアウトが表示されます。

何か案は?

ui.R

shinyUI(pageWithSidebar(

h1('Diamonds DataTable with TableTools'),
        tagList(
                  singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdn.datatables.net/colvis/1.1.0/js/dataTables.colVis.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
                  singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
                ),
        dataTableOutput("mytable")
      )
)

サーバー.R

shinyServer(function(input, output, session) {
output$mytable = renderDataTable({
          diamonds[,1:6]
      }, options = list(
               "sDom" = 'RMDCT<"clear">lfrtip',
               "oTableTools" = list(
                       "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
                       "aButtons" = list(
                                 "copy",
                                 "print",
                                 list("sExtends" = "collection",
                                                     "sButtonText" = "Save",
                                                     "aButtons" = c("csv","xls")
                                                )
                               )
                     )
             )
    )
})
#

また、列の並べ替えと列の並べ替えにも問題があります。並べ替えてから列を並べ替え、もう一度並べ替えると、列ヘッダーが反転します。たとえば、列の深さで並べ替え、列 1 を左にシフトし、ヘッダーをもう一度クリックして並べ替えると、間違った列のコンテンツでヘッダーの深さが得られます。スナップショットを参照してください:

ここに画像の説明を入力

4

1 に答える 1

7

いくつかのメモ:

現在の data.table バージョンは、shiny atm と互換性がありません。バージョンが必要1.9.4です。のプレ1.1.0バージョンも必要ですcolvis。残念ながら、これは への呼び出しを発行した古いバージョンの jQuery を参照していましたjQuery.browser。そのため、これへの参照をjQuery.browser削除する必要があります。これは、856 行から 859 行で発生します。sDom 属性も、新しい data.table に置き換えられて表示されないため、少し注意が必要domです。ドキュメントはhttp://legacy.datatables.net/usage/options#sDomにあります。class="cvclear"このスニペットを使用して、colVis コンテンツを に追加し<"cvclear"C>ます。sDom先頭に配置するには、ステートメントの先頭に並べます。これは機能しますが、右揃えにする必要があります。通常、それは追加することによって行われますalign = "right"ただし、クラスはsDom呼び出しによって開始されるため、代わりに HTML5 css を使用する必要がありますtext-align:right。を使用してこれを追加しtags$styleます。

colVisしたがって、上記により、現在の光沢のあるものを使用できるようになります。シャイニーが data.table にアップグレードすると、現在のプラグイン ファイル1.10.0を使用できるようになるはずであり、修正が必要ないことを願っています。colVis

以下は私にとってはうまくいきます:

ui.R

# get the colVis js file and delete lines 
library(RCurl)
write(getURL("https://raw.githubusercontent.com/openMF/mifosx-community-apps/master/IndividualLendingGeneralJavaScript/resources/libs/DataTables-1.9.4/extras/ColVis/media/js/ColVis.js")
      , file = 'www/colvis.js')
tf <- readLines("www/colvis.js")[-c(856:859)]
write(tf, file = "www/colvis.js")
shinyUI({
  pageWithSidebar(

    h1('Diamonds DataTable with TableTools'),
    tagList(
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='colvis.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
      singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
      singleton(tags$head(tags$link(href='https://raw.githubusercontent.com/openMF/mifosx-community-apps/master/IndividualLendingGeneralJavaScript/resources/libs/DataTables-1.9.4/extras/ColVis/media/css/ColVis.css',rel='stylesheet',type='text/css'))),     
      singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');"))),
      singleton(tags$head(tags$link(href='https://raw.githubusercontent.com/DataTables/ColVis/18b52dfdd7255ffe96a92aadc16cadd70e3e174a/media/css/ColVis.css',rel='stylesheet',type='text/css')))  
      , tags$head(
        tags$style(HTML("
                        .cvclear{
                         text-align:right}")
        )
      )
    ),
    dataTableOutput("mytable")
  )
})

サーバー.R

library(shiny)
library(ggplot2)

shinyServer(function(input, output, session) {
  output$mytable = renderDataTable({
    diamonds[,1:6]
  }, options = list(
    "sDom" = 'RMD<"cvclear"C><"clear"T>lfrtip',
    "oTableTools" = list(
      "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
      "aButtons" = list(
        "copy",
        "print",
        list("sExtends" = "collection",
             "sButtonText" = "Save",
             "aButtons" = c("csv","xls")
        )
      )
    )
  )
  )
}
)

アプリは次の場所で表示できます。

http://128.199.255.233:3838/userApps/john/cvtestapp/

ここに画像の説明を入力

于 2014-07-13T00:39:25.507 に答える