init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
102
KretaWeb/Scripts/SessionHandler.js
Normal file
102
KretaWeb/Scripts/SessionHandler.js
Normal 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;
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue