Понадобилось мне показывать картинки модальном окне диалога в ShinyDashboard…
Google и StackOverflow не особо смогли мне в этом помочь. Прямого ответа на такой вопрос так и не встретилось.
Пришлось изобретать велосипед самому. Сначала собирался сделать через тег img в тексте modalDialog но так не заработало.
Решение в итоге нашлось, но оно получилось довольно нетривиальное. Главная идея — output элементы можно объявлять не только в блоке UI, но и в блоке SERVER.
Таким вот изящным образом и решилась эта задача. Мы внутри вызова showModal(modalDialog( задаем imageOutput блок и прям в том же самом обсервере и рендерим его. И все работает.
Вот код:
library(shiny)
library(shinydashboard)
setwd('Ваш каталог где картинка')
ui <- dashboardPage(
dashboardHeader(disable = TRUE),
dashboardSidebar(disable = TRUE),
dashboardBody( actionButton("goButton", "Go!"))
)
server <- function(input, output, session)
{
observeEvent(input$goButton,
{
# Рендер картинки в output
output$curr_img <-
renderImage({
list(src = 'terminator.jpg',
alt = "Фото нет")
}, deleteFile = FALSE)
# Вывод модального окна
showModal(modalDialog(
title = paste0('Заголовок'),
imageOutput('curr_img', inline=TRUE),
easyClose = TRUE,
size='m',
footer = NULL
))
})
}
shinyApp(ui, server)
Картинка в модальном диалоге Shiny: 2 комментария
Здравствуйте. Могли бы вы подсказать как сохранять session state in Shiny?
Добрый день. Так сразу не подскажу. Даже не сталкивался с ситуацией, когда это могло бы понадобиться…
Рекомендую задать вопрос в русском Stackoverflow https://ru.stackoverflow.com/questions/tagged/r
Ну или вступать в сообщество OpenDataScience и задать вопрос там же в Slack http://ods.ai/