6542b0c0f8
- emergency.jsp JSTL core 태그 추가
202 lines
7.4 KiB
Plaintext
202 lines
7.4 KiB
Plaintext
<%@ page contentType="text/html; charset=utf-8"%>
|
|
<%@page import="com.eactive.eai.rms.common.util.StringUtils"%>
|
|
<%@page import="com.eactive.eai.rms.env.EmsConfig"%>
|
|
<%@page import="com.eactive.eai.common.util.SystemUtil"%>
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
|
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
|
|
<%@ include file="/jsp/common/include/localemessage.jsp" %>
|
|
<c:set var="themeColor" value="<%=System.getProperty(\"theme.color\")%>" scope="session" />
|
|
|
|
<%
|
|
String topPage = request.getContextPath() + StringUtils.defaultString((String) request.getAttribute("topPage"), "/top_04.do");
|
|
|
|
String mainPage = StringUtils.defaultString((String) request.getAttribute("mainPage"), "");
|
|
String menuId = StringUtils.defaultString((String) request.getAttribute("menuId"), "");
|
|
|
|
if (!"".equals(mainPage)) {
|
|
topPage = topPage + "?mainPage=" + mainPage;
|
|
}
|
|
|
|
if(!"".equals(menuId)) {
|
|
if(topPage.contains("?")) {
|
|
topPage += "&menuId=" + menuId;
|
|
} else {
|
|
topPage += "?menuId=" + menuId;
|
|
}
|
|
}
|
|
|
|
//2020.04.28 탭에 서버 구분표시 김소희차장님 요청반영
|
|
String systemModeTitle = SystemUtil.getSystemModeTitle();
|
|
|
|
String drmode = System.getProperty(EmsConfig.DR_MODE);
|
|
|
|
if("Y".equals(drmode)){
|
|
systemModeTitle = "[DR] ";
|
|
}
|
|
|
|
|
|
%>
|
|
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title><%= systemModeTitle %><%= localeMessage.getString("screen.title") %></title>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="icon" href="<c:url value="/img/ic_eai_favi_${themeColor}.png"/>" type="image/ico" sizes="16x16" />
|
|
<link rel="stylesheet" type="text/css" media="screen" href="<c:url value="/css/web_ui.css"/>"/>
|
|
<link rel="stylesheet" type="text/css" media="screen" href="<c:url value="/css/theme_${themeColor}.css"/>" />
|
|
<script language="javascript" src="<c:url value="/js/jquery-1.12.1.min.js"/>"></script>
|
|
<script language="javascript">
|
|
var $ = jQuery.noConflict();
|
|
var urlParam = window.document.location.search;
|
|
var mod = "";
|
|
var strServiceType = "<%=request.getParameter("serviceType")%>";
|
|
function getServiceType() {
|
|
var serviceType = sessionStorage.getItem("serviceType");
|
|
if (!serviceType || serviceType == "undefined" || serviceType == "null") {
|
|
serviceType = localStorage.getItem("serviceType") || "";
|
|
}
|
|
return serviceType;
|
|
}
|
|
if(urlParam != ""){
|
|
if(urlParam.indexOf("mod=") > -1){
|
|
mod = urlParam.substring((urlParam.indexOf("mod=") + 4), urlParam.lastIndexOf("&"));
|
|
sessionStorage["mod"] = mod;
|
|
}
|
|
|
|
// 대시보드 상세화면으로부터 특정화면을 지정하여 Open 하는 경우.
|
|
// session에 저장되어 있는 serviceType과 화면 지정할 때 선택한 serviceType이 다른 경우
|
|
// 대시보드 상세화면에서 지정한 serviceType으로 session에 저장되어 있는 serviceType을 변경합니다.
|
|
if(strServiceType != "null" && sessionStorage["serviceType"] != strServiceType)
|
|
{
|
|
sessionStorage["serviceType"] = strServiceType;
|
|
}
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
var url = '<%=topPage%>';
|
|
var serviceType = getServiceType();
|
|
if (serviceType) {
|
|
if (url.indexOf("?")>=0){
|
|
url = url + "&serviceType="+ serviceType;
|
|
}else{
|
|
url = url + "?serviceType="+ serviceType;
|
|
}
|
|
}
|
|
|
|
$("#topFrame").attr('src',url);
|
|
|
|
$(".topMenu").load(function(){ // iframe이 모두 load된후 제어
|
|
$(".topMenu").contents().find('.gnb').on("mouseenter", function(e){
|
|
$(".topMenu").css("height","450px");
|
|
});
|
|
$(".topMenu").contents().find('.gnb').on("mouseleave",function(e){
|
|
$(".topMenu").css("height","80px");
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
function changeLocale(lang){
|
|
console.log("lang : " + lang);
|
|
location.href = "/monitoring/main.do?lang="+lang;
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<iframe class="topMenu" src="" id="topFrame" name="topFrame" scrolling="no" noresize="noresize"></iframe>
|
|
<iframe class="leftMenu" src="" name="leftFrame" scrolling="no" noresize="noresize"></iframe>
|
|
<iframe class="rightCon" src="" name="mainFrame" scrolling="auto"></iframe>
|
|
|
|
<%-- 자동 로그아웃 경고 모달 --%>
|
|
<div id="autoLogoutModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:99999;">
|
|
<div style="position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); background:#fff; padding:30px 40px; border-radius:4px; text-align:center; min-width:320px; box-shadow:0 4px 20px rgba(0,0,0,0.3);">
|
|
<h3 style="margin:0 0 12px; color:#333; font-size:16px;">자동 로그아웃 안내</h3>
|
|
<p style="margin:0 0 22px; color:#666; font-size:14px;">
|
|
장시간 사용하지 않아 <strong><span id="autoLogoutSeconds">60</span>초</strong> 후 자동 로그아웃됩니다.
|
|
</p>
|
|
<button id="autoLogoutContinue" style="margin-right:8px; padding:8px 22px; background:#337ab7; color:#fff; border:none; border-radius:3px; cursor:pointer; font-size:13px;">계속 사용</button>
|
|
<button id="autoLogoutNow" style="padding:8px 22px; background:#d9534f; color:#fff; border:none; border-radius:3px; cursor:pointer; font-size:13px;">로그아웃</button>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
(function () {
|
|
var IDLE_MS = ${autoLogoutTimeout} * 60 * 1000; // 설정값(분) → ms
|
|
var WARN_MS = 60 * 1000; // 로그아웃 1분 전 경고
|
|
var CHECK_INTERVAL = 5000; // 5초 간격 체크
|
|
var countdownTimer = null;
|
|
|
|
/* sessionStorage: iframe 포함 모든 동일-origin 프레임과 공유 */
|
|
function getLastActivity() {
|
|
var t = sessionStorage.getItem('lastActivity');
|
|
return t ? parseInt(t, 10) : Date.now();
|
|
}
|
|
function markActivity() {
|
|
sessionStorage.setItem('lastActivity', String(Date.now()));
|
|
}
|
|
|
|
function resetTimer() {
|
|
markActivity();
|
|
if ($('#autoLogoutModal').is(':visible')) {
|
|
$('#autoLogoutModal').hide();
|
|
clearInterval(countdownTimer);
|
|
}
|
|
}
|
|
|
|
function showWarning(remainMs) {
|
|
var sec = Math.ceil(remainMs / 1000);
|
|
$('#autoLogoutSeconds').text(sec);
|
|
$('#autoLogoutModal').show();
|
|
clearInterval(countdownTimer);
|
|
countdownTimer = setInterval(function () {
|
|
sec--;
|
|
if (sec <= 0) {
|
|
clearInterval(countdownTimer);
|
|
doLogout();
|
|
} else {
|
|
$('#autoLogoutSeconds').text(sec);
|
|
}
|
|
}, 1000);
|
|
}
|
|
|
|
function doLogout() {
|
|
location.href = '<%=request.getContextPath()%>/rms/logout.do';
|
|
}
|
|
|
|
/* 상위 프레임(main.jsp) 활동 감지 */
|
|
['mousemove', 'keydown', 'click', 'touchstart'].forEach(function (e) {
|
|
document.addEventListener(e, markActivity, true);
|
|
});
|
|
|
|
/* 주기적 유휴 시간 체크 */
|
|
setInterval(function () {
|
|
var idle = Date.now() - getLastActivity();
|
|
var remain = IDLE_MS - idle;
|
|
if (remain <= 0) {
|
|
clearInterval(countdownTimer);
|
|
doLogout();
|
|
} else if (remain <= WARN_MS && !$('#autoLogoutModal').is(':visible')) {
|
|
showWarning(remain);
|
|
}
|
|
}, CHECK_INTERVAL);
|
|
|
|
/* 버튼 이벤트 */
|
|
$(document).on('click', '#autoLogoutContinue', function () {
|
|
resetTimer();
|
|
$.get('<%=request.getContextPath()%>/checkSession.do'); // 서버 세션도 갱신
|
|
});
|
|
$(document).on('click', '#autoLogoutNow', function () {
|
|
doLogout();
|
|
});
|
|
|
|
/* 페이지 로드 시 초기화 */
|
|
markActivity();
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|