This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,102 @@
var SessionHandler = (function () {
var sessionHandler = function () {};
var interval = 0;
var countDownTimer;
var timerSpanElement;
var timerUrl;
var warnTime = 60;
var refreshTime = 60;
var warningTrigered = false;
var warnMethod = function () {};
var endMethod = function () {};
sessionHandler.SetTimeSpanElement = function (element) {
timerSpanElement = element;
};
sessionHandler.Url = function (url) {
timerUrl = url;
};
sessionHandler.WarningTime = function (second) {
warnTime = second;
};
sessionHandler.WarnMethod = function (method) {
warnMethod = method;
};
sessionHandler.EndMethod = function (method) {
endMethod = method;
};
sessionHandler.Start = function () {
getRemainingTime();
};
sessionHandler.Clear = function () {
resetInterval();
};
function startSessionTimer(duration) {
var countDownTimer = 0;
var actualTime = duration;
resetInterval();
interval = setInterval(function () {
var minutes = parseInt(actualTime / 60, 10);
var seconds = parseInt(actualTime % 60, 10);
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
setSpanText(minutes, seconds);
countDownTimer = countDownTimer + 1;
actualTime = duration - countDownTimer;
if (actualTime < warnTime) {
if (!warningTrigered) {
getRemainingTime();
}
} else {
warningTrigered = false;
}
if (countDownTimer > refreshTime || actualTime < 1) {
getRemainingTime();
}
}, 1000);
}
function getRemainingTime() {
resetInterval();
if (typeof timerUrl !== 'undefined') {
AjaxHelper.AsyncPingPost(timerUrl, remainingTimeCallback);
}
}
function remainingTimeCallback(remainingSeconds) {
if (remainingSeconds < 1) {
resetInterval();
endMethod();
return;
}
if (remainingSeconds < warnTime) {
if (!warningTrigered) {
warningTrigered = true;
warnMethod();
}
}
startSessionTimer(remainingSeconds);
}
function resetInterval() {
clearInterval(interval);
interval = 0;
}
function setSpanText(minutes, seconds) {
if (timerSpanElement) {
if (timerSpanElement.is('p')) {
timerSpanElement.text('(' + minutes + ':' + seconds + ')');
}
}
}
return sessionHandler;
})();