Картинка в модальном диалоге Shiny

Опубликовано Опубликовано в рубрике Основная, Рецепты

Понадобилось мне показывать картинки модальном окне диалога в 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)

Добавить комментарий