Я перешел на sweetalert2, поскольку старая версия более ограничена, чем новая, которая активно развивается.
Я столкнулся с проблемой, однако код, который я использовал для подтверждения или отмены в старой версии, больше не работает для меня.
В старой версии я использовал для добавления функции в коде 'myjava
' после
closeOnConfirm: true}
, а именно:
,
evalFunction = function(isConfirm){
if (isConfirm === true) {
var val1= 1;
Shiny.onInputChange('option1', [val1, Math.random()]);
}
else {
var val2= 2;
Shiny.onInputChange('option2'', [val2, Math.random()]);
}
}
, но это неработать с sweetalert2 похоже.
Я пытался заставить примеры на сайте работать, но безуспешно.https://sweetalert2.github.io/ Они используют такую структуру, как:
.then((result) => {
if (result.value === true) {
swal('Processing');
}
});
, но она продолжает приводить к Предупреждение: Ошибка в :inyjs: Ошибка синтаксического анализа файла JavaScript: SyntaxError: Неожиданный токен>.
Вот приложение для тестирования.Вам нужно будет изменить каталог и загрузить два файла, чтобы sweetalert2
работал здесь: https://www.jsdelivr.com/package/npm/sweetalert2
Кнопка загрузки находится справа от заголовка sweetalert2 и 2 необходимых файланаходятся в папке dist с именем:
sweetalert2.min.js & sweetalert2.min.css
setwd('FOLDER WHERE THE sweetalert2files are ')
library(shiny)
library(shinyjs)
myjava <- "shinyjs.swalFromButton = function(params) {
var defaultParams = {
title : null,
html : null
};
params = shinyjs.getParams(params, defaultParams);
swal({title : params.title, html : params.html,
showConfirmButton : true,
confirmButtonText : 'Left',
confirmButtonColor: '#00cc00',
showCancelButton : true,
cancelButtonText : 'Right',
cancelButtonColor : '#339fff',
closeOnCancel : true,
allowOutsideClick: true,
allowEscapeKey: true,
closeOnConfirm: true});
};"
ui <- fluidPage(
actionButton(inputId = 'messagebutton', label = 'click me'),
shinyjs::useShinyjs(),
shinyjs::extendShinyjs(text = myjava),
tags$head(includeScript("sweetalert2.min.js"),
includeCSS("sweetalert2.min.css")
)
)
server <- function(input, output, session) {
observeEvent(input$messagebutton, {
shinyjs::js$swalFromButton( title = paste('<span style ="color:#339FFF;">An alert with a choice'),
html = paste('Pick left or right'))
})
observeEvent(input$option1, { print('confirm choosen')})
observeEvent(input$option2, { print('cancel choosen')})
}
shinyApp(ui = ui, server = server)
ОБНОВЛЕНИЕ Я пробовал бесконечные варианты этого javascript, удаляя проблемный символ>, как было предложено, но R продолжает выдавать 'ошибку при разборе предоставленного кода javascript.
myjava <- "shinyjs.swalFromButton = function(params) {
var defaultParams = {
title : null,
html : null
};
params = shinyjs.getParams(params, defaultParams);
swal({title : params.title, html : params.html,
showConfirmButton : true,
confirmButtonText : 'Left',
confirmButtonColor: '#00cc00',
showCancelButton : true,
cancelButtonText : 'Right',
cancelButtonColor : '#339fff',
closeOnCancel : true,
allowOutsideClick: true,
allowEscapeKey: true,
closeOnConfirm: true}).then((result){
if (result.value === true) {
swal('Processing');
}
});
};"