- Scan ID:
- ab7766f0-d6e2-442b-a9fe-7e70a0c2aeaaFinished
- Submitted URL:
- https://sms.sermescro.com/Redirected
- Report Finished:
Links · 0 found
The outgoing links identified from the page
JavaScript Variables · 83 found
Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope
Name | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
$ | function |
jQuery | function |
__core-js_shared__ | object |
core | object |
setImmediate | function |
clearImmediate | function |
regeneratorRuntime | object |
Console log messages · 1 found
Messages logged to the web console
Type | Category | Log |
---|---|---|
verbose | dom |
|
HTML
The raw HTML body of the page
<!DOCTYPE html><html style="height: 100%" class="fontawesome-i2svg-active fontawesome-i2svg-complete"><head>
<meta charset="UTF-8">
<title>Sermes Management System</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" integrity="sha256-lSjKY0/srUM9BE3dPm+c4fBo1dky2v27Gdjm2uoZaL0=" crossorigin="anonymous"></script>
<!-- Librerías para exportar en Excel y PDF a través de los componentes de DevExtreme (ej.: DataGrid) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.4.0/polyfill.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/exceljs/4.0.1/exceljs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.2/FileSaver.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.3.1/jspdf.umd.min.js"></script>
<script>
// This code is used for backwards compatibility with the older jsPDF variable name
// Read more: https://github.com/MrRio/jsPDF/releases/tag/v2.0.0
window.jsPDF = window.jspdf.jsPDF;
</script>
<!-- DevExtreme theme -->
<style type="text/css">svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}</style><link rel="stylesheet" type="text/css" href="/CSS/dx.light_24_1_3.css">
<!-- DevExtreme Quill (required by the HtmlEditor UI component) -->
<script type="text/javascript" src="/JS/dx-quill_1_7_1.min.js"></script>
<!-- DevExtreme library -->
<script type="text/javascript" src="/DevExtreme/licencia.js"></script>
<script type="text/javascript" src="/JS/dx.all_24_1_3.js"></script>
<script type="text/javascript" src="/DevExtreme/dx.messages.es.js"></script>
<script>
DevExpress.localization.locale(navigator.language);
DevExpress.config({
licenseKey: dxLicencia,
floatingActionButtonConfig: {
icon: 'hidepanel',
closeIcon: 'showpanel',
shading: true,
maxSpeedDialActionCount: 7,
},
defaultCurrency: "EUR"
});
</script>
<!-- SELECT 2-->
<link type="text/css" href="/CSS/select2.css" rel="stylesheet">
<link type="text/css" href="/CSS/select2-bootstrap4.css" rel="stylesheet">
<script type="text/javascript" src="/JS/select2.js"></script>
<!-- Latest compiled and minified CSS -->
<link type="text/css" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<script type="text/javascript" src="/JS/popper.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous">
</script>
<script type="text/javascript" defer="" src="https://use.fontawesome.com/releases/v5.8.1/js/all.js" integrity="sha384-g5uSoOSBd7KkhAMlnQILrecXvzst9TdC09/VM+pjDTCM+1il8RHz5fKANTFFb+gQ" crossorigin="anonymous">
</script>
<!-- bootstrap dialog-->
<link type="text/css" rel="stylesheet" href="/CSS/bootstrap-dialog.css">
<script type="text/javascript" src="/JS/bootstrap-dialog.js"></script>
<!-- MASCARAS DE INPUT-->
<script type="text/javascript" src="/JS/maskedinput.js"></script>
<!-- DATE PICKER BOOTSTRAP -->
<link type="text/css" rel="stylesheet" href="/DatePicker/css/bootstrap-datepicker.min.css">
<script src="/DatePicker/js/bootstrap-datepicker.min.js" type="text/javascript"></script>
<script src="/DatePicker/locales/bootstrap-datepicker.es.min.js" type="text/javascript"></script>
<!-- DataTables -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.css">
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.js"></script>
<!-- Custom CSS -->
<link rel="stylesheet" type="text/css" href="/CSS/Personal.css?v=v1.9.6.1">
<link rel="stylesheet" type="text/css" href="/CSS/sermes.css?v=v1.9.6.1">
<script type="text/javascript" src="/JS/sermes.js?v=v1.9.6.1"></script>
<link rel="stylesheet" type="text/css" href="/CSS/menu.css?v=v1.9.6.1">
<link rel="stylesheet" type="text/css" href="/CSS/scrollbar.css?v=v1.9.6.1">
<!-- jQuery dirty plugin -->
<script type="text/javascript" src="/JS/jquery.dirty.js"></script>
<!-- Custom JS -->
<script type="text/javascript" src="/JS/validaciones.js?v=v1.9.6.1"></script>
<link rel="icon" type="image/x-icon" href="/favicon.ico">
</head>
<body style="height: 100% !important;" class="dx-viewport color-fondo-base dx-device-desktop dx-device-generic dx-theme-generic dx-theme-generic-typography dx-color-scheme-light">
<nav class="navbar navbar-expand-lg navbar-dark fixed-top fondo-sermes-nuevo" style="color: white;">
<a class="navbar-brand" href="/"><img src="/img/Logotipo Sermes-blanco.png" style="height: 25px"></a>
<ul class="navbar-nav mr-auto">
</ul>
<ul class="navbar-nav ml-auto">
</ul>
</nav>
<div class="container-fluid" style="height: 100%; padding-top: 57px; background-image: url('/img/Imagen login v2.jpg');background-repeat: no-repeat;background-size: cover;" id="nonsession-full-page">
<div class="row" style="height: 100%">
<div id="main" class="col-12">
<div>
<script>
var azureAuth = localStorage.getItem('AzureAuth')
if(azureAuth){
window.location = '/connect/azure?sf_redirect=https://sms.sermescro.com/'
}
</script>
<div class="container-fluid">
<form action="/login_check" method="post">
<input type="hidden" name="_csrf_token" value="hs-aiBhWR4agEMqBOkZcfNprtp7v3gCfXh_e7KncPKI">
<div class="card" style="background-color: #0088CC; color: #FFFFFF; width: 50%; margin:auto; margin-top: 3.5%; padding: 4px; font-size: 32px" align="center">
<span>Sermes Management System</span>
</div>
<div class="card" style="width: 50%; margin:auto; padding: 20px">
<div class="container">
<div class="py-2">
<h3>Inicio de sesión</h3>
</div>
<div style="display: block" id="login-form">
<div class="row py-2">
<div class="col-4">
<label for="username">Email</label>
</div>
<div class="col-8">
<input type="text" id="username" name="_username" value="" required="required" autocomplete="username" class="form-control">
</div>
</div>
<div class="row py-2">
<div class="col-4">
<label for="password">Contraseña</label>
</div>
<div class="col-8">
<input type="password" id="password" name="_password" required="required" autocomplete="current-password" class="form-control">
</div>
</div>
<div class="row pt-2" align="center">
<div class="col-12" align="center">
<button type="submit" class="btn btn-primary"><svg class="svg-inline--fa fa-lock fa-w-14" aria-hidden="true" focusable="false" data-prefix="fa" data-icon="lock" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><path fill="currentColor" d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path></svg><!-- <i class="fa fa-lock"></i> --> Acceder</button>
<br>
<a href="/resetting/request">¿Ha olvidado su contraseña?</a>
<br><br>
<a style="font-size: 18px" href="/quejas">Buzón anónimo para quejas / sugerencias / felicitaciones</a>
</div>
</div>
</div>
<div class="row py-0">
<div class="col-12" align="center">
<span style="font-size: 12px">Web optimizada para <strong>Mozilla Firefox</strong> y <strong>Google Chrome</strong></span>
</div>
</div>
</div>
</div>
</form>
<script>
$(document).ready(function(){
$("#change-login").click(function(){
$("#login-azure").hide();
$("#login-form").show();
});
});
</script>
</div>
</div>
</div>
</div>
</div>
<!-- MODALES -->
<!-- Error -->
<div class="modal fade" id="errorModal" tabindex="-1" role="dialog" aria-labelledby="errorModalLabel" aria-hidden="true" style="z-index: 1901">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: #AA3333; color: #FFFFFF">
<h5 class="modal-title" id="exampleModalLabel"></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!-- Exito -->
<div class="modal fade" id="exitoModal" tabindex="-1" role="dialog" aria-labelledby="exitoModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: #55AA55; color: #FFFFFF">
<h5 class="modal-title" id="exampleModalLabel"></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!-- Warning -->
<div class="modal fade" id="warningModal" tabindex="-1" role="dialog" aria-labelledby="warningModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header bg-warning" style="color: #FFFFFF">
<h5 class="modal-title" id="exampleModalLabel"></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!-- Confirm -->
<div class="modal fade" id="confirmModal" tabindex="-1" role="dialog" aria-labelledby="confirmModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header bg-warning text-white">
<h5 class="modal-title" id="exampleModalLabel"></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" id="confirmBtn" class="btn btn-warning" data-dismiss="modal">
Aceptar
</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!-- Confirmación de clave -->
<div class="modal fade" id="confirmacionClaveModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header bg-warning text-white">
<h5 class="modal-title">Confirmar clave</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Como medida adicional de seguridad, le rogamos introduzca su clave de acceso a SMS. De esta forma, esta acción quedará vinculada y firmada digitalmente con su usuario de manera única</p>
<form onkeydown="return event.key != 'Enter';">
<label for="clave">Clave de acceso a SMS</label>
<input type="password" class="form-control" name="clave" id="confirmacionClave" placeholder="Introduzca la clave">
</form>
</div>
<div class="modal-footer">
<button type="button" id="confirmacionClaveBtn" class="btn btn-warning" data-dismiss="modal">
Confirmar
</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!-- Cargando -->
<div class="modal" id="cargandoModal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static">
<div class="spinner"></div>
</div>
<div id="loadPanel" class="dx-overlay dx-widget dx-state-invisible dx-visibility-change-handler dx-loadpanel"><div class="dx-overlay-content dx-state-invisible" style="width: 222px; height: 90px;"></div></div>
<script>
var successBag = '';
var errorBag = '';
window.onload = () => {
$("#contenido").css('margin-top', $("#cabecera").height() - 20);
if (successBag !== '') {
muestraExitoDx(successBag);
}
if (errorBag !== '') {
muestraErrorDx(errorBag);
}
};
function muestraErrorDx(msg) {
DevExpress.ui.notify({
message: msg,
type: 'error',
displayTime: 3000,
position: 'bottom center'
});
}
function muestraExitoDx(msg) {
DevExpress.ui.notify({
message: msg,
type: 'success',
displayTime: 3000,
position: 'bottom center'
});
}
function alternarVisibilidadCampoDx(componenteDx, nombre, tipo){
if(tipo === 'hide'){
if (componenteDx !== '') {
componenteDx.option('visible', false)
$("label[for="+nombre+"]").addClass('dx-state-invisible')
} else {
$("#"+nombre).addClass('dx-state-invisible')
}
}else if (tipo === 'show'){
if (componenteDx !== '') {
componenteDx.option('visible', true)
$("label[for="+nombre+"]").removeClass('dx-state-invisible')
} else {
$("#"+nombre).removeClass('dx-state-invisible')
}
}
}
$.mask.definitions['H'] = "[0-2]";
$.mask.definitions['M'] = "[0-5]";
$(".hora").mask("H9:M9");
$.mask.definitions['a'] = "[1-2]";
$(".anio").mask("a999");
$.mask.definitions['D'] = "[0-3]";
$.mask.definitions['#'] = "[0-1]";
$.mask.definitions['X'] = "[0-9X]";
$(".fecha").mask("D9-#9-a999");
$(".fecha-uk").mask("XX/XX/a999");
$(".matricula").mask("9999");
$(".cp").mask("99999");
$(".eudra").mask("9999-999999-99");
$(document).ready(function () {
$('[data-toggle="tooltip"]').tooltip({html: true});
});
function muestraError(titulo, msg) {
var modal = $("#errorModal");
modal.find(".modal-title").html(titulo);
modal.find(".modal-body").html(msg);
modal.modal('toggle');
}
function muestraExito(titulo, msg) {
var modal = $("#exitoModal");
modal.find(".modal-title").html(titulo);
modal.find(".modal-body").html(msg);
modal.modal('toggle');
}
function muestraWarning(titulo, msg) {
var modal = $("#warningModal");
modal.find(".modal-title").html(titulo);
modal.find(".modal-body").html(msg);
modal.modal('toggle');
}
function muestraConfirmDx(titulo, msg, action, params){
let result = DevExpress.ui.dialog.confirm(msg, titulo);
result.done(function(dialogResult) {
if (dialogResult) {
action(params)
}
})
}
function muestraConfirm(titulo, msg, action, params, confirmarClave) {
var modal = $("#confirmModal");
modal.find(".modal-title").html(titulo);
modal.find(".modal-body").html(msg);
modal.find('#confirmBtn').off('click')
if (confirmarClave) {
modal.find('#confirmBtn').on('click', () => muestraConfirmacionClave(action, {data: params}))
} else {
modal.find('#confirmBtn').on('click', params, action)
}
modal.modal('toggle');
}
function confirmarClave(clave, action, params) {
muestraCargando(true);
var url = '/user/confirmarClave';
$.ajax({
url: url,
data: {clave},
type: 'POST',
action,
params,
success: function () {
this.action(this.params);
},
error: function () {
muestraError('No se ha podido confirmar la operación', 'La clave que has introducido no coincide con la clave de acceso a SMS.');
},
complete: function () {
muestraCargando(false);
}
})
}
function muestraConfirmacionClave(action, params) {
var modal = $("#confirmacionClaveModal");
modal.find('#confirmacionClaveBtn').off('click');
var inputClave = modal.find('#confirmacionClave');
modal.find('#confirmacionClaveBtn').on('click', () => {
confirmarClave(inputClave.val(), action, params);
inputClave.val('');
});
modal.modal('toggle');
}
var procesosCargando = 0;
function muestraCargando(cargando) {
var modal = $('#cargandoModal');
cargando ? procesosCargando++ : procesosCargando--;
if (procesosCargando > 0) {
modal.modal('show');
} else {
modal.modal('hide');
}
}
const loadPanel = $("#loadPanel").dxLoadPanel({
shadingColor: 'rgba(0,0,0,0.4)',
position: { of: '#main' },
visible: false,
showIndicator: true,
showPane: true,
shading: true,
hideOnOutsideClick: false,
}).dxLoadPanel('instance');
function enviaPeticionAjax(url, data, type = 'GET'){
return new Promise(function (resolve,reject) {
$.ajax({
'url': url,
'data': data,
'type': type,
'success': function (data) {
resolve(data)
},
'error': function (request, error) {
reject(request)
}
});
});
}
let callbackAjax = (data) => {
if(typeof data.status !== 'undefined'){
if (data.status === 'success') {
muestraExitoDx(data.msg);
} else if (data.status === 'error') {
muestraErrorDx(data.msg);
}
}
}
function cargarFormModal(url, data){
var html = null;
loadPanel.show();
$.ajax({
url: url,
data: data,
type: 'get',
async: false,
success: function(data) {
var $noCache = $('<input type="hidden" name="nocache"'+$.now()+' />')
html = data;
html = $(html).append($noCache)
},
complete: function () {
loadPanel.hide();
}
})
return html;
}
function cargarFormModalScroll(url, data){
var html = cargarFormModal(url, data)
const scrollView = $('<div />');
scrollView.append(html);
scrollView.dxScrollView({
width: '100%',
height: '100%',
});
return scrollView;
}
/**
* Tramita la petición de submit del formulario con id pasado en formId.
*
* @param formId
* @param datosAdicionales
* @returns {null}
*/
function guardarFormModal(formId, datosAdicionales = [])
{
var form = $("#"+formId)
var formData = document.getElementById(formId)
var data = new FormData(formData)
datosAdicionales.forEach(function (valor){
data.append(valor.indice, valor.valor)
})
var ret = null;
$.ajax({
url: form.attr('action'),
data: data,
type: 'post',
dataType: 'json',
async: false,
contentType:false,
processData:false,
cache:false,
success: function(data) {
ret = data;
},
error: function(data) {
ret = {
response: 'error',
form: data.responseText,
}
}
})
return ret;
}
/**
* Tramita la petición de submit del formulario con id pasado en formId.
*
* @param formId
* @param datosAdicionales
* @returns {null}
*/
function guardarFormModalPromise(formId, datosAdicionales = [])
{
loadPanel.show();
var form = $("#"+formId)
var formData = document.getElementById(formId)
var data = new FormData(formData)
datosAdicionales.forEach(function (valor){
data.append(valor.indice, valor.valor)
})
return new Promise(function (resolve,reject) {
$.ajax({
url: form.attr('action'),
'data': data,
'type': 'POST',
dataType: 'json',
contentType:false,
processData:false,
cache:false,
'success': function (data) {
resolve(data)
},
'error': function (request, error) {
reject(request)
},
complete: function () {
loadPanel.hide();
}
});
});
}
function isNotEmpty(value) {
return value !== undefined && value !== null && value !== "";
}
</script>
<script>
const idleTimeout = 1200000;
const idleWarningTimeout = 1080000;
var warningTimeout = null;
var logoutTimeout = null;
function mostrarAvisoInactividad() {
//Obtener último tiempo de actividad
$.getJSON("/security/comprobar-inactividad").then((data) => {
let lastActivity = new Date(data.data.lastActivity);
let currentDate = new Date();
let inactivity = currentDate - lastActivity;
//Si inactividad es mayor o igual a idleWarningTimeout, mostrar el aviso de inactividad
if (inactivity >= idleWarningTimeout) {
if (logoutTimeout !== null) {
window.clearTimeout(logoutTimeout);
}
logoutTimeout = window.setTimeout(forzarLogout, idleTimeout - idleWarningTimeout);
//Enviar notificacion push
enviarNotificacionPush("Aviso de inactividad", "Se cerrará por inactividad su sesión en SMS en 2 minutos");
//Aviso de confirmación de cierre de sesión
muestraConfirmDx('Cierre de sesión', 'Hemos detectado que llevas un tiempo ausente. ¿Quieres mantener tu sesión activa? Haz clic en Sí para mantenerla.',
() => {
$.getJSON("/security/mantener-sesion");
window.clearTimeout(logoutTimeout);
window.clearTimeout(warningTimeout);
warningTimeout = window.setTimeout(mostrarAvisoInactividad, idleWarningTimeout);
}
);
} else {
window.clearTimeout(warningTimeout);
warningTimeout = window.setTimeout(mostrarAvisoInactividad, idleWarningTimeout - inactivity);
}
});
}
function forzarLogout() {
$.getJSON("/security/comprobar-inactividad").then((data) => {
let logoutLastActivity = new Date(data.data.lastActivity);
let logoutCurrentDate = new Date();
let logoutInactivity = logoutCurrentDate - logoutLastActivity;
if (logoutInactivity >= idleTimeout) {
console.log("Sesión caducada por inactividad. Forzando logout...");
location.reload();
} else if (logoutInactivity >= idleWarningTimeout) {
window.clearTimeout(logoutTimeout);
logoutTimeout = window.setTimeout(forzarLogout, idleTimeout - logoutInactivity);
} else {
window.clearTimeout(warningTimeout);
warningTimeout = window.setTimeout(mostrarAvisoInactividad, idleWarningTimeout - logoutInactivity);
}
});
}
warningTimeout = window.setTimeout(mostrarAvisoInactividad, idleWarningTimeout);
</script>
<script type="text/javascript" src="/DevExtreme/groupSelectionHelper.js?v=v1.9.6.1"></script>
<script type="text/javascript" src="/JS/notificationHelper.js?v=v1.9.6.1"></script>
<script type="text/javascript" src="/JS/plegarSecciones.js?v=v1.9.6.1"></script>
<script type="text/javascript" src="/JS/cookies.js?v=v1.9.6.1"></script>
<script type="text/javascript" src="/JS/observers.js?v=v1.9.6.1"></script>
</body></html>