Переместите нижний колонтитул в нижней части DT в блестящем R

#shiny #datatables #dt

#блестящий #таблицы данных #dt

Вопрос:

У меня есть таблица данных, в которой нижний колонтитул содержит текст «Предыдущий / следующий». В настоящее время он перекрывает текст «Отображение 1 из 15». Есть ли способ переместить это, чтобы я не получал избыточный круг?

Вот картинка, а также код. Я не очень знаком с html / java script, поэтому, если бы вы могли предоставить ответ, объясняющий, почему вы используете конкретный код, который был бы очень признателен

 library(shiny)
library(bs4Dash)
library(DT)


x = data.frame(one = rep("Hey how is everyones day? I need some help on this shiny application and learn how to use some of the features on datatable.", 10),
               two = rep("this is the second column of text. ", 10),
               three = rep("this is the third column of text", 10))


    ui = bs4DashPage(
        old_school = FALSE,
        sidebar_min = TRUE,
        sidebar_collapsed = FALSE,
        controlbar_collapsed = FALSE,
        controlbar_overlay = TRUE,
        title = "Basic Dashboard",
        navbar = bs4DashNavbar(),
        sidebar = bs4DashSidebar(),
        controlbar = bs4DashControlbar(),
        footer = bs4DashFooter(),
        body = bs4DashBody(
            DTOutput("table")
        )
    )
    
    server = function(input, output) {
        
        output$table = renderDataTable({
            datatable(x, rownames = F, style = "bootstrap",  extensions = 'Responsive', options = list(
                #dom = 't'
            ))
        })
    }


shinyApp(ui, server)
  

введите описание изображения здесь

Когда я запускаю тот же код на shiny dashboard, он получается таким, каким я хотел бы, чтобы он выглядел. Поэтому я считаю, что это как-то связано с таблицей стилей Bs4Dash. Ниже показано, как это выглядит с помощью shinydashboard

введите описание изображения здесь

Комментарии:

1. Пожалуйста, поделитесь примером.

2. @ismirsehregal я обновил свой пост примером, а также тем, как я хотел бы, чтобы он выглядел

3. Привет. Давайте отлаживать вместе, и я опубликую ответ, когда мы найдем проблему. Исправит ли это удаление options ? Поскольку назначение вручную #dom = 't' , возможно, нарушает макет. Не могли бы вы подробнее рассказать о том, почему вы добавили эту опцию?

4. Привет @IslamElshobokshy проблема не в меню опций. Тем не менее, я кое-что выяснил. Это не работает только при запуске. Мой DT отображает таблицу данных с информацией о конкретном складе. Как только вы измените запас (снова отобразите таблицу), проблема будет решена.

5. @JordanWrong Я вижу, это важная информация. В этом случае попробуйте вызвать функцию рисования после рендеринга. Я опубликую ответ.

Ответ №1:

Вам нужно перерисовать свою таблицу после инициализации.

 $('#tableIdHere').DataTable().draw();
  

Комментарии:

1. Эй, Ислам, просто пытаюсь понять это, прежде чем убегу. Откуда берется ввод $ refresh?

2. @JordanWrong Я не знаком с Shiny так, как с таблицами данных. Вы можете прочитать здесь о том, как observeEvent работает. Что касается DT, когда таблица ложно инициализирована, вы всегда вызываете .draw() , чтобы изменить эту таблицу.

3. спасибо, что перезвонили мне. Я попытался добавить вышеуказанное, но не смог заставить его работать. Я не слишком уверен, зачем нам добавлять observeEvent()

4. @JordanWrong как я уже сказал, я не знаком с shiny, но я знаком с DT. Я не уверен, где вы должны добавить в shiny перерисовку, но это должно быть после первого и начального рендеринга DT.

Ответ №2:

Вы можете попробовать это, надеюсь, это решит вашу проблему.

 library(shiny)
library(bs4Dash)
library(DT)


x = data.frame(one = rep("Hey how is everyones day? I need some help on this shiny application and learn how to use some of the features on datatable.", 10),
               two = rep("this is the second column of text. ", 10),
               three = rep("this is the third column of text", 10))


ui = bs4DashPage(
  old_school = FALSE,
  sidebar_min = TRUE,
  sidebar_collapsed = FALSE,
  controlbar_collapsed = FALSE,
  controlbar_overlay = TRUE,
  title = "Basic Dashboard",
  navbar = bs4DashNavbar(),
  #sidebar = bs4DashSidebar(),
  controlbar = bs4DashControlbar(),
  footer = bs4DashFooter(),
  body = bs4DashBody(
    DTOutput("table")
  )
)

server = function(input, output) {
  
  output$table = renderDataTable({
    datatable(x, rownames = F,   extensions = 'Responsive', options = list(
      #dom = 't'
    ))
  })
}


shinyApp(ui, server)
  

Я удалил только style = "bootstrap" из renderDataTable и которые служат перпендикулярно

image_app

Комментарии:

1. эй, Гураб, я бы хотел сохранить функцию начальной загрузки

Ответ №3:

Ваш CSS перезаписан другим CSS по умолчанию. Пожалуйста, проверьте, имеют ли ваши классы похожие имена или конфликтуют друг с другом.

Комментарии:

1. Нет, это таблицы данных, которые не могут корректно отображаться при инициализации.