function SessionTimeout(){} SessionTimeout.prototype = { countDown : false, sessionTimeout : 0, timeoutAlert : 0, timeoutId : 0, registerSessionTimeout : function (sessExpire, timeBeforeAlert){ this.sessionTimeout = sessExpire; this.timeoutAlert = timeBeforeAlert; clearTimeout(this.timeoutId); var _this = this; this.timeoutId = setTimeout(function() { _this.alertSessionTimeout(); }, this.sessionTimeout - this.timeoutAlert); }, alertSessionTimeout: function(){ var modal = new Modal({ title: translate['tickets-js-modal-title-alert'], body: '
'+translate['session-timeout-js-alert']+' '+translate['session-timeout-js-seconds']+'
'+translate['session-timeout-js-alert-p2']+'
', buttonOK : false, cancelText : translate['session-timeout-js-update'], cancel : function(){ $.ajax({ url: '/index/keep-alive', success: function(time){ console.log(time); } }); } }); modal.show(); this.registerCountdown(); }, registerCountdown : function(){ if(this.countDown != false){ clearInterval(countDown); } var _this = this; this.countDown = setInterval(function(){ var countdown = parseInt($('#session-countdown').html()); if(countdown <= 0){ _this.sessionExpired(); clearInterval(_this.countDown); }else{ $('#session-countdown').html(countdown - 1); if(countdown < 3) $('#countdown-label').html(' ' + translate['session-timeout-js-second']); else $('#countdown-label').html(' ' + translate['session-timeout-js-seconds']); } }, 1000); }, sessionExpired: function (){ var modal = new Modal({ title: translate['session-timeout-js-expired-header'], body: '
'+translate['session-timeout-js-expired-body']+'
', cancelText : translate['session-timeout-js-close'], okText : translate['session-timeout-js-return-to-login'], cancel : function(){ window.location.href = '/'; }, confirm : function(){ window.location.href = '/login'; } }); modal.replace(); } } var SessionTimeout = new SessionTimeout(); $(document).ajaxComplete(function(){ if(SessionTimeout.sessionTimeout != 0){ clearTimeout(SessionTimeout.timeoutId); SessionTimeout.timeoutId = setTimeout(function() { SessionTimeout.alertSessionTimeout(); }, SessionTimeout.sessionTimeout - SessionTimeout.timeoutAlert); } });