Запишу поскорей, чтобы не забыть…
Понадобилось мне к таблице в ShinyDashboard добавить «стрелочки» показывающие приросты. Ну там знаете — треугольничек вниз красный — все пропало, треугольничек вверх зеленый — дела пошли на лад.
Сама таблица реализована посредством DT:datatable. Важно — стрелочки-треугольники хочу рисовать именно в каждой ячейке данных. Как это на картинке представлено.
Изначально собирался сделать через функцию icon из пакета shiny. Оно ж для этого и заточено. Грубо говоря — эта функция подставляет класс символа шрифта Awesome в html-код страницы.
Сразу не заработало. Поискал полдня — Google по этому поводу практически ничего не выдает. Вот, практически единственное упоминание такого случая. Ну, почитал, более-менее все понял. Сделал прототип — заработало.
И тут мне понадобилось отвлечься на пару дней. Важный урок — я не сохранил прототип. Зачем — R-Studio же сохраняет все открытые файлы.
Ну и естественно, мне зачем то после понадобилось закрыть все открытые окна в R-studio. Прощай мой прототип!
После возвращения к этой работе — я попытался восстановить тот несложный пример из 5 строчек. Так вот — НЕ ЗАРАБОТАЛО, не помогало ничего.
Возможно, я в процессе отвлечения обновил пакеты, либо растерял нужную часть мозга. Не знаю. Не работает никак.
Два дня бился — количество ссылок в Google так и не прибавилось.
Потом решил, что пора и прекратить биться головой об стенку, и поискать другие способы решить задачу. Вспомнил, что у icon есть возможность использовать кроме собственно Font-Awesome — еще и glyphicon. Уже не стал городить огород с использованием icon, полез в интернет и подсмотрел html-обертку для этих символов.
Собственно, все это был рефлексивный отклик на полученный опыт, а теперь собственно код, который хочу запомнить:
Библиотеки:
library(shiny)
library(shinydashboard)
library(DT)
Тестовые данные
t_df <- data.frame(Строка=c('Строка 1','Строка 2'),
Процент=c(0.02,-0.3),
stringsAsFactors = FALSE)
Функция по значению которая раскрашивает html-представление цифры и дорисовывает значок:
add_percent_direction<- function(x) { ifelse(x<0, res <- paste0('' ,x,' ', ''), res <- paste0('',x,' ', '') ) return(res) }
И все делаем в минималистичном shiny-dashboard:
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(fluidPage(box(dataTableOutput('tab'), width = 6))))
server <- function(input, output)
{
t_df$Процент <- sapply(t_df$Процент, FUN=add_percent_direction)
output$tab <- renderDataTable(t_df, escape=FALSE)
}
shinyApp(ui, server)
Добавление значков направления к DT:Datatable: 5 комментариев
Большое спасибо за евангелистскую работу.
Не подскажете, как сменить размер шрифта в заголовке таблицы и фиксировать заголовок (FixedHeader)
Добрый день. Не очень понял про фиксацию заголовка, а сменить шрифт можно с помощью небольшой инъекции JavaScript:
Подскажите,
— установил фильтр для каждой колонки таблицы DT. Колонок много и необходим скроллинг. При его исполнении, колонки сдвигаются, а колоночные фильтры нет.
— при установке fixedColumns = list(leftColumns = 1) появляется дополнительный элемент скроллинга над первой колонкой, причем только в режиме open in browser.
Добрый день. Боюсь так подробно не подскажу сразу. Это надо пробовать примеры, вспоминать параметры.
Рекомендую ответ поискать в на stackoverflow английском, причем скорее даже не в хабе про R, а вообще про этот js-компонент DataTable. Обычно ответы находятся, а потом уж не очень сложно сообразить как js-параметры привести в потребный для R код.
Хм, заметил что кусок кода не показывает в записи.
Корректный кусок кода: