Commit 1da5c4e9 by Masaru Abe

screenLock.jsリファクタリング

parent 6ba272bc
......@@ -2057,7 +2057,7 @@ COMMON.LockScreen = function() {
var timeWaitLockScreen = COMMON.getTimeWaitLockScreen();
if (timeWaitLockScreen > 0) {
//var message = I18N.i18nText("sysInfoScrLock01");
screenLock({
SCREENLOCK.screenLock({
timeout: timeWaitLockScreen,
html: '<img src="img/1222.png" alt="Screen Lock" /><br />', //+ message,
unlockFunc: COMMON.unlockFunction,
......
......@@ -22,39 +22,52 @@
* }
*
*/
function screenLock(options) {
//グローバルの名前空間用のオブジェクトを用意する
var SCREENLOCK = {};
SCREENLOCK.screenLock = function(options) {
var idleTimerId = null;
var bTimeout = false;
var defaultOptions = {
timeout : 600000, // default timeout = 10min.
id: 'to',
html: 'Clickして画面ロックを解除してください。',
color: '#fff',
opacity: '0.95',
background: '#333',
lockspeed: 'slow',
errorMessage: 'ロックを解除できません。入力したパスワードを確認してください。',
unlockFunc : function(elmId) {
// overlay click then fade out and remove element
$('#' + elmId).fadeOut(lockspeed, function() {
// ロック画面をDOM要素から削除
$('#' + elmId).remove();
// 画面ロック状態を解除
removeLockState();
// アイドルタイマーをもう一度仕掛ける
setIdleTimer();
});
// unlock
return { 'result': true, 'errorCode' : 'success' };
}
};
var timeout, elmId, html, color, opacity, background, lockspeed, unlockEvent, unlockFunc, errorMessage;
timeout : 600000, // default timeout = 10min.
id: 'to',
html: 'Clickして画面ロックを解除してください。',
color: '#fff',
opacity: '0.95',
background: '#333',
lockspeed: 'slow',
errorMessage: 'ロックを解除できません。入力したパスワードを確認してください。',
unlockFunc : function(elmId) {
// overlay click then fade out and remove element
$('#' + elmId).fadeOut(lockspeed, function() {
// ロック画面をDOM要素から削除
$('#' + elmId).remove();
// 画面ロック状態を解除
removeLockState();
// アイドルタイマーをもう一度仕掛ける
setIdleTimer();
});
// unlock
return { 'result': true, 'errorCode' : 'success' };
}
};
var timeout;
var elmId;
var html;
var color;
var opacity;
var background;
var lockspeed;
var unlockEvent;
var unlockFunc;
var errorMessage;
// overlay option
if(options) {
......@@ -81,10 +94,10 @@ function screenLock(options) {
// bind event
$(window).click(resetIdleTimer)
.mousemove(resetIdleTimer)
.keydown(resetIdleTimer)
.bind('touchstart', resetIdleTimer)
.bind('touchmove', resetIdleTimer);
.mousemove(resetIdleTimer)
.keydown(resetIdleTimer)
.bind('touchstart', resetIdleTimer)
.bind('touchmove', resetIdleTimer);
// アイドルタイマーを起動
setIdleTimer();
......@@ -92,23 +105,23 @@ function screenLock(options) {
/* ロックするまでのアイドルタイマー */
function setIdleTimer() {
// check time out
if (timeout < 0) { // Remove unlock when timeout < 0 (this case for: after unlock, values from service options: web_screen_lock=N)
// clear timeout
if (idleTimerId) {
clearTimeout(idleTimerId);
idleTimerId = null;
}
bTimeout = false;
// clear lock state
removeLockState();
return;
}
// check time out
if (timeout < 0) { // Remove unlock when timeout < 0 (this case for: after unlock, values from service options: web_screen_lock=N)
// clear timeout
if (idleTimerId) {
clearTimeout(idleTimerId);
idleTimerId = null;
}
bTimeout = false;
// clear lock state
removeLockState();
return;
}
// アイドルタイマーのタイムアウト時間(デフォルト/オプション指定時間)
var idleStateTimeout = timeout;
......@@ -121,11 +134,10 @@ function screenLock(options) {
// すでにロック状態かどうかをチェックし、ロック状態であれば、即ロックをかける
if(isLocked()) {
idleStateTimeout = 0;
}
// clear lock state
removeLockState();
}
// clear lock state
removeLockState();
// set idle timeout
idleTimerId = setTimeout(function() {
......@@ -141,7 +153,7 @@ removeLockState();
showLockScreen();
}, idleStateTimeout);
// clear time out
bTimeout = false;
};
......@@ -195,18 +207,18 @@ removeLockState();
// フォーカスを当ててキーダウンイベントでタイムアウト解除を登録
$('#passwd-txt').focus()
.keydown(function(event) {
// パスワード入力タイマーを解除
if(pwInputTimer) {
clearTimeout(pwInputTimer);
}
pwInputTimer = null;
// エンターキーで解除実行
if(event.which == 13) {
executeUnlock();
}
});
.keydown(function(event) {
// パスワード入力タイマーを解除
if(pwInputTimer) {
clearTimeout(pwInputTimer);
}
pwInputTimer = null;
// エンターキーで解除実行
if(event.which == 13) {
executeUnlock();
}
});
});
// force unlock function
......@@ -216,40 +228,39 @@ removeLockState();
// execute unlock process
function executeUnlock() {
if (unlockFunc) {
var val = unlockFunc($('#passwd-txt').val(), forceUnlockFunc);
if (!val.result) {
$('#screenLockErrMsg').text(AVWEB.format(errorMessage, val.errorCode.errorMessage));
$('#screenLockErrMsg').fadeIn();
$('#passwd-txt').focus();
return;
}
else {
// Set new timeout value
timeout = val.newTimeout;
}
/*
if(!unlockFunc($('#passwd-txt').val(), forceUnlockFunc)) {
$('#screenLockErrMsg').fadeIn();
$('#passwd-txt').focus();
return;
}
*/
}
defaultOptions.unlockFunc(elmId);
if (unlockFunc) {
var val = unlockFunc($('#passwd-txt').val(), forceUnlockFunc);
if (!val.result) {
$('#screenLockErrMsg').text(AVWEB.format(errorMessage, val.errorCode.errorMessage));
$('#screenLockErrMsg').fadeIn();
$('#passwd-txt').focus();
return;
}
else {
// Set new timeout value
timeout = val.newTimeout;
}
/*
if(!unlockFunc($('#passwd-txt').val(), forceUnlockFunc)) {
$('#screenLockErrMsg').fadeIn();
$('#passwd-txt').focus();
return;
}
*/
}
defaultOptions.unlockFunc(elmId);
}
// OKボタン押下でロック解除関数を実行
$('#unlock-btn').click(function() { executeUnlock(); });
// resize overlay
// resize overlay
$(window).resize(function() {
$('#' + elmId).css( {
'width': $(window).width(),
'height': $(window).height()
});
});
});
});
};
/* set lock state */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment