ОсновнаяРецепты

Картинка в модальном диалоге 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)

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

    1. Добрый день. Так сразу не подскажу. Даже не сталкивался с ситуацией, когда это могло бы понадобиться…
      Рекомендую задать вопрос в русском Stackoverflow https://ru.stackoverflow.com/questions/tagged/r
      Ну или вступать в сообщество OpenDataScience и задать вопрос там же в Slack http://ods.ai/

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