102 lines
2.4 KiB
JavaScript
102 lines
2.4 KiB
JavaScript
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;
|
|
})();
|