Files
Jorge Luis caudillo esparza b7c80baadc Ajustes Lotes
2026-10-02 00:20:26 -07:00

278 lines
7.2 KiB
JavaScript

(function (window, document, $) {
'use strict';
if (window.SIGAlerts) {
return;
}
var queue = [];
var active = false;
var processScheduled = false;
function text(value) {
return value == null ? '' : String(value);
}
function encodedText(value) {
return $('<div />')
.text(text(value))
.html()
.replace(/\r?\n/g, '<br />');
}
function runScript(script) {
if (!script) {
return;
}
window.setTimeout(function () {
Function(text(script))();
}, 0);
}
function finishCurrent() {
if (!active) {
return;
}
active = false;
scheduleProcess();
}
function getModalSettings(type) {
switch (type) {
case 1:
return {
title: "<i class='fa fa-times-circle'></i> Error",
headerClass: 'header-red',
acceptClass: 'red'
};
case 3:
return {
title: "<i class='fa fa-check-square'></i> Confirmación",
headerClass: 'header-blue',
acceptClass: 'blue'
};
case 4:
return {
title: "<i class='fa fa-warning'></i> Advertencia",
headerClass: 'header-yellow',
acceptClass: 'yellow'
};
default:
return {
title: "<i class='fa fa-info-circle'></i> Información",
headerClass: 'header-green',
acceptClass: 'green'
};
}
}
function executeAccept(request) {
if (typeof request.acceptCallback === 'function') {
request.acceptCallback();
return;
}
runScript(request.acceptScript);
}
function showFallback(request) {
var confirmed = true;
if (request.type === 3 || request.type === 9) {
confirmed = window.confirm(text(request.message));
}
else {
window.alert(text(request.message));
}
if (confirmed) {
executeAccept(request);
}
finishCurrent();
}
function showToast(request) {
if (!window.toastr) {
showFallback(request);
return;
}
var timeoutMilliseconds = Math.max(0, request.timeout || 0) * 1000;
var options = {
closeButton: request.showCloseButton !== false,
debug: false,
positionClass: 'toast-top-right',
onclick: function () {
executeAccept(request);
},
onHidden: finishCurrent,
showDuration: 0,
hideDuration: 0,
timeOut: timeoutMilliseconds,
extendedTimeOut: 0,
showEasing: 'swing',
hideEasing: 'linear',
showMethod: 'fadeIn',
hideMethod: 'fadeOut'
};
switch (request.type) {
case 5:
toastr.success(text(request.message), '', options);
break;
case 7:
toastr.error(text(request.message), '', options);
break;
case 8:
toastr.warning(text(request.message), '', options);
break;
default:
toastr.info(text(request.message), '', options);
break;
}
}
function buildButtons(request, settings) {
var buttons = {};
if (request.type === 3) {
buttons.cancel = {
label: encodedText(request.cancelText || 'Cancelar'),
className: 'red'
};
}
if (request.type === 9) {
buttons.second = {
label: encodedText(request.secondButtonText || 'Otra opción'),
className: 'blue',
callback: function () {
runScript(request.secondButtonScript);
}
};
}
buttons.accept = {
label: encodedText(request.acceptText || 'Aceptar'),
className: settings.acceptClass,
callback: function () {
executeAccept(request);
}
};
return buttons;
}
function showModal(request) {
if (!window.bootbox || typeof bootbox.dialog !== 'function') {
showFallback(request);
return;
}
var settings = getModalSettings(request.type);
var dialog = bootbox.dialog({
message: text(request.message),//request.allowHtml === true ? text(request.message) : encodedText(request.message),
title: settings.title,
className: settings.headerClass,
backdrop: request.showCloseButton === false ? 'static' : true,
keyboard: request.showCloseButton !== false,
closeButton: request.showCloseButton !== false,
buttons: buildButtons(request, settings)
});
dialog.css('z-index', 1060);
$('.modal-backdrop').last().css('z-index', 1055);
dialog.one('hidden.bs.modal.sigAlerts', function () {
if ($('.modal.in').length > 0) {
$('body').addClass('modal-open');
}
finishCurrent();
});
}
function showRequest(request) {
active = true;
if (request.type >= 5 && request.type <= 8) {
showToast(request);
return;
}
showModal(request);
}
function processQueue() {
processScheduled = false;
if (active || queue.length === 0) {
return;
}
showRequest(queue.shift());
}
function scheduleProcess() {
if (processScheduled) {
return;
}
processScheduled = true;
window.setTimeout(processQueue, 0);
}
function enqueue(request) {
if (!request) {
return;
}
queue.push(request);
scheduleProcess();
}
function processPending() {
var pending = window.SIG_PENDING_ALERTS || [];
window.SIG_PENDING_ALERTS = [];
for (var index = 0; index < pending.length; index++) {
enqueue(pending[index]);
}
}
function confirmPostBack(element, message) {
if (!element) {
return false;
}
if (element.getAttribute('data-sig-alert-confirmed') === '1') {
element.removeAttribute('data-sig-alert-confirmed');
return true;
}
enqueue({
type: 3,
message: message,
showCloseButton: true,
acceptText: 'Aceptar',
cancelText: 'Cancelar',
acceptCallback: function () {
element.setAttribute('data-sig-alert-confirmed', '1');
element.click();
}
});
return false;
}
window.SIGAlerts = {
enqueue: enqueue,
processPending: processPending,
confirmPostBack: confirmPostBack
};
processPending();
}(window, document, window.jQuery));