2016-06-16 3 views
2

У моего DT datatable есть надпись, в которой написано «Обработка ...», даже несмотря на то, что таблица данных обработана и данные появляются за ней баннер. Баннер не исчезнет, ​​и это заставило меня с ума сойти.R Shiny DT :: renderDataTable застрял с наложением «Обработка ...» banner

Stupid F%&*ing Processing Banner

Некоторых пользователи моего приложение ХОТЯТ столбец конкретных функцию поиска Устаревшего блестящей :: renderDataTable(), так что я бег блестящего :: renderDataTable() для data.frames на некоторых вкладках, и DT :: renderDataTable() на других вкладках.

Я использую R-Portable (Windows 7), потому что приложение необходимо развернуть для соответствующих заинтересованных сторон на полу ... так что если вы не используете R-Portable, я не верю, что вы полностью воспроизведите среду, в которой я запущен ... но это похоже на проблему AJAX, поэтому, возможно, кто-то с пониманием может дать ответ, не «воспроизведя» ошибку. Кроме того, в этом блестящем приложении есть не менее 1500 строк кода, поэтому я вытаскиваю все, что могу, чтобы выяснить вопрос, не оставляя слишком много путаницы.

Все работает безупречно в мое приложение с точки зрения функциональности ... и я использую все из следующих пакетов, включая shinyBS (Bootstrap) и shinythemes, устанавливая все основные функции в файл global.R:

library(shiny) 
library(shinyBS) 
library(shinythemes) 
library(RODBC) 
library(ggplot2) 
library(gridExtra) 
library(Hmisc) 
library(stringr) 
library(data.table) 
library(DT) 

Я создаю свой объект таблицы реактивных данных с помощью функции, которая вызывает из наших баз данных SQL с помощью RODBC ... У меня есть кнопка действия, текстовый ввод, а сценарий reactive() вызывает функцию AttrInfo(), которая возвращает data.frame.

TriInfo = reactive({ 
    input$UpdateTBAtt 
    if(input$UpdateTBAtt == 0) return(NULL) 
    isolate(withProgress(message = "Searching for Credit Attribute", 
        value = 0, { 
         AttrInfo(input$TriAttr) 
        })) 
}) 

Мой код для визуализации данных таблицы следует за направляющей DT:

output$TriLDD <- DT::renderDataTable({ 
    req(input$UpdateTBAtt) 
    DT::datatable(TriInfo(),options = list(paging=FALSE,searching=FALSE)) 
}) 

Мой файл ui.R называет этот объект:

shinyUI(fluidPage(
    list(tags$head(HTML('<link rel="icon", href="RosiePageICON.png", 
        type="image/png" />'))), 
    div(style="padding: 1px 0px; width: '100%'", 
     titlePanel(title="", windowTitle="Rosetta")), 
    navbarPage(theme = shinytheme("spacelab"),title = div(img(src="ReadyRosie_Logo6.png"),""), 
tabPanel("Tri-Bureau Attributes", 
    sidebarLayout(
     sidebarPanel(width = 3, 
      actionButton(inputId = "UpdateTBAtt",label = "Get Attribute"), 
      textInput("TriAttr","Credit Attribute:", value = "")),  
     mainPanel(width=9, 
      tabsetPanel(id = "TB", 
       tabPanel(title = "Check Tables", 
        p("Here's the Definition:"), 
        dataTableOutput(outputId = "TriLDD"))))))))) 
+0

Просьба включить воспроизводимый пример. То, что вы включили, недостаточно. – hedgedandlevered

ответ

0

Это может произойти, если блестящий думает, что вы используете shiny::dataTableOutput() вместо DT::dataTableOutput().

Если вы явно используете DT::renderDataTable() и DT::dataTableOutput() на своем сервере, и вы избежите этой проблемы.

5

Так что я, наконец, нашел обходной путь похоронена в библиотеке jQuery ... иногда он не требует воспроизводимого кода, если ответ является простым вариантом ...

В общем, что-то в обработке jQuery библиотеки DT, когда команда shiny :: renderDataTable также находится в одном приложении, это вызывает проблему. Во всяком случае, я нашел простое расторжение.

Я пошел на страницу DataTables JQuery и нашел вариант «обработки» ... Я просто добавил ее опций:

DT::datatable(TriInfo(),options = list(paging=FALSE, searching=FALSE, processing=FALSE)) 

и, наконец, исчез.