ShinyAlert идет не так с локальным изображением (порядок выполнения)

Я столкнулся со следующей проблемой

используя ShinyAlert *, если я добавляю imageUrl к сообщению, если это интернет-адрес URL, никаких проблем, сообщение появляется, изображение появляется мгновенно, а затем запускаются другие фрагменты кода, НО, если это изображение на моем жестком диске, это происходит: Сообщение без изображения открывает другой код после запуска сообщения, ТОГДА изображение появляется..

Я понятия не имею, почему, и я попробовал это на 3 разных компьютерах, а также протестировал с подходом js swal, та же проблема:

library(shiny)
library(sweetalertR)
library(shinyjs)
library(shinydashboard)

ui <- fluidPage(
  shinyjs::useShinyjs(),
  useShinyalert(),
  textInput("expr", label = "Enter an R expression",
            value = "bio",width="600px"),

  actionButton(inputId ="mybutton", "Run")


)

server <- function(input, output, session) {
  shinyEnv <- environment()

  observeEvent(input$mybutton, {
    print(getwd())
    shinyalert(title = 'hello', imageUrl ="insert http url or local disk path/name.png", imageSize = "80x80")

    for (i in 1:50000){ print(i)  ### see if picture in message shows up before this code runs
      }
    })
  }



shinyApp(ui = ui, server = server)

ДОПОЛНИТЕЛЬНЫЙ пример, как я кодирую его с помощью jscode

swal5 = function(params) { 
      var defaultParams = {
        title : null,
        text : null,
        type : null  
      };
      params = shinyjs.getParams(params, defaultParams);
      swal({title : params.title, text : params.text, type : params.type,
        showCancelButton : true,
        cancelButtonText : "No, cancel please!",
        showConfirmButton : true,
        confirmButtonText : "Yes, merge the files!",
        closeOnCancel : true,
        closeOnConfirm: false},
        evalFunction = function(isConfirm){
          if (isConfirm === true) {
            var val1= 1;
            Shiny.onInputChange("MergeRaw_OP", [val1, Math.random()]);}

        });
    };

1 ответ

Решение

Ваш код (по крайней мере, первый, второй не пробовал) на самом деле неверен и содержит много дополнительного кода, который ничего не делает. Нет необходимости загружать блестящие, Shinydashboard, чтобы сохранить окружающую среду, и sweetalertR это неправильный пакет. Когда я пытаюсь запустить правильную и минимальную версию этого фрагмента кода, он работает для меня.

library(shinyalert)
library(shiny)
ui <- fluidPage(
  useShinyalert(),
  actionButton(inputId ="mybutton", "Run")
)

server <- function(input, output, session) {
  observeEvent(input$mybutton, {
    shinyalert(title = 'hello', imageUrl ="http://deanattali.com/img/deanimg.jpeg", imageSize = "80x80")
    for (i in 1:50000){ print(i) }
  })
}

shinyApp(ui = ui, server = server)
Другие вопросы по тегам