diff --git a/WebContent/WEB-INF/applicationContext-jpa.xml b/WebContent/WEB-INF/applicationContext-jpa.xml index b1da502..95e9929 100644 --- a/WebContent/WEB-INF/applicationContext-jpa.xml +++ b/WebContent/WEB-INF/applicationContext-jpa.xml @@ -69,6 +69,7 @@ + "> + <%-- --%> diff --git a/WebContent/jsp/common/screen/main.jsp b/WebContent/jsp/common/screen/main.jsp index 0642401..8748ef8 100644 --- a/WebContent/jsp/common/screen/main.jsp +++ b/WebContent/jsp/common/screen/main.jsp @@ -99,6 +99,93 @@ - + + <%-- 자동 로그아웃 경고 모달 --%> + + + + diff --git a/WebContent/jsp/js/custom.js b/WebContent/jsp/js/custom.js index 2cde935..5eda123 100644 --- a/WebContent/jsp/js/custom.js +++ b/WebContent/jsp/js/custom.js @@ -36,6 +36,14 @@ // save the returnValue in options so that it is available in the callback function optns.returnValue = $frame[0].contentWindow.window.returnValue; optns.onClose(); + // Remove iframe from DOM so window.frames doesn't accumulate stale entries; + // without this, a second showModal call leaves frames[0] pointing to the first + // (closed) iframe, causing the previous returnValue to bleed into the next callback. + var $dialogEl = $frame.closest('.ui-dialog'); + setTimeout(function() { + $frame.remove(); + if ($dialogEl.length) $dialogEl.remove(); + }, 0); if(optns.option && optns.option.fullScreenPopup){ $('iframe[name=topFrame]',window.parent.document).css('display', 'block'); diff --git a/WebContent/jsp/onl/admin/inflow/inflowAdapterControlManDetail.jsp b/WebContent/jsp/onl/admin/inflow/inflowAdapterControlManDetail.jsp index 6aed70c..0a3b453 100644 --- a/WebContent/jsp/onl/admin/inflow/inflowAdapterControlManDetail.jsp +++ b/WebContent/jsp/onl/admin/inflow/inflowAdapterControlManDetail.jsp @@ -16,173 +16,486 @@ - - -
-
- -
-
-
- - - -<%-- " alt="" id="btn_delete" level="W" status="DETAIL"/> --%> -<%-- " alt="" id="btn_modify" level="W" status="DETAIL,NEW" /> --%> -<%-- " alt="" id="btn_previous" level="R" status="DETAIL,NEW"/> --%> -
-
<%= localeMessage.getString("infAdpConMan.title") %><%= localeMessage.getString("infAdpConMan.title") %>
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
<%= localeMessage.getString("infAdpConMan.adaNm") %>
<%= localeMessage.getString("infAdpConMan.adaDes") %>
<%= localeMessage.getString("infAdpConMan.thrPerSecond") %>
<%= localeMessage.getString("infAdpConMan.thr") %>
<%= localeMessage.getString("infAdpConMan.thrTimeUnit") %> -
-
<%= localeMessage.getString("infAdpConMan.useYn") %> -
-
-
- -
-
- - + +
+
+ +
+
+
+ + + +
+
+
<%= localeMessage.getString("infAdpConMan.title") %><%= localeMessage.getString("infAdpConMan.title") %>
+ +
+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
<%= localeMessage.getString("infAdpConMan.adaNm") %>
<%= localeMessage.getString("infAdpConMan.adaDes") %>
<%= localeMessage.getString("infAdpConMan.useYn") %> + +
+ + + + + + + + + + + + + + + + + +
+ <%= localeMessage.getString("infAdpConMan.thrPerSecond") %> + help_outline + 1초 단위의 순간 트래픽 제한입니다. 매 초마다 설정한 건수만큼 토큰이 리필되며, 초과 시 요청이 거부됩니다. + + +
+ + req/sec +
+
+ <%= localeMessage.getString("infAdpConMan.thr") %> + help_outline + 장시간 누적 트래픽 제한입니다. 시간단위를 선택하면 해당 주기마다 토큰이 리필됩니다. + + +
+ + + requests +
+
+
+
+ + +
+
+
+ 마지막 갱신: - + +
+ + + + +
+
+ hourglass_empty + 버킷 현황을 조회하려면 새로고침 버튼을 클릭하세요 +
+
+
+
+ +
+
+ + diff --git a/WebContent/jsp/onl/admin/inflow/inflowClientControlManDetail.jsp b/WebContent/jsp/onl/admin/inflow/inflowClientControlManDetail.jsp index 2bac2cd..db4bf9a 100644 --- a/WebContent/jsp/onl/admin/inflow/inflowClientControlManDetail.jsp +++ b/WebContent/jsp/onl/admin/inflow/inflowClientControlManDetail.jsp @@ -16,170 +16,501 @@ - - -
-
- -
-
-
- - - -
-
클라이언트 유량제어 클라이언트 유량제어
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
클라이언트 ID
클라이언트명
<%= localeMessage.getString("infAdpConMan.thrPerSecond") %>
<%= localeMessage.getString("infAdpConMan.thr") %>
<%= localeMessage.getString("infAdpConMan.thrTimeUnit") %> -
-
<%= localeMessage.getString("infAdpConMan.useYn") %> -
-
-
- -
-
- - + +
+
+ +
+
+
+ + + +
+
+
클라이언트 유량제어클라이언트 유량제어
+ +
+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
클라이언트 ID
클라이언트명
<%= localeMessage.getString("infAdpConMan.useYn") %> + +
+ + + + + + + + + + + + + + + + + +
+ <%= localeMessage.getString("infAdpConMan.thrPerSecond") %> + help_outline + 1초 단위의 순간 트래픽 제한입니다. 매 초마다 설정한 건수만큼 토큰이 리필되며, 초과 시 요청이 거부됩니다. + + +
+ + req/sec +
+
+ <%= localeMessage.getString("infAdpConMan.thr") %> + help_outline + 장시간 누적 트래픽 제한입니다. 시간단위를 선택하면 해당 주기마다 토큰이 리필됩니다. + + +
+ + + requests +
+
+
+
+ + +
+
+
+ 마지막 갱신: - + +
+ + + + +
+
+ hourglass_empty + 버킷 현황을 조회하려면 새로고침 버튼을 클릭하세요 +
+
+
+
+ +
+
+ + diff --git a/WebContent/jsp/onl/admin/inflow/inflowInterfaceControlManDetail.jsp b/WebContent/jsp/onl/admin/inflow/inflowInterfaceControlManDetail.jsp index 03a2aa6..511bc59 100644 --- a/WebContent/jsp/onl/admin/inflow/inflowInterfaceControlManDetail.jsp +++ b/WebContent/jsp/onl/admin/inflow/inflowInterfaceControlManDetail.jsp @@ -16,173 +16,486 @@ - - -
-
- -
-
-
- - - -<%-- " alt="" id="btn_delete" level="W" status="DETAIL"/> --%> -<%-- " alt="" id="btn_modify" level="W" status="DETAIL,NEW" /> --%> -<%-- " alt="" id="btn_previous" level="R" status="DETAIL,NEW"/> --%> -
-
<%= localeMessage.getString("infIfConMan.title") %><%= localeMessage.getString("infIfConMan.title") %>
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
<%= localeMessage.getString("infIfConMan.ifNm") %>
<%= localeMessage.getString("infIfConMan.ifDesc") %>
<%= localeMessage.getString("infAdpConMan.thrPerSecond") %>
<%= localeMessage.getString("infAdpConMan.thr") %>
<%= localeMessage.getString("infAdpConMan.thrTimeUnit") %> -
-
<%= localeMessage.getString("infAdpConMan.useYn") %> -
-
-
- -
-
- - + +
+
+ +
+
+
+ + + +
+
+
<%= localeMessage.getString("infIfConMan.title") %><%= localeMessage.getString("infIfConMan.title") %>
+ +
+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
<%= localeMessage.getString("infIfConMan.ifNm") %>
<%= localeMessage.getString("infIfConMan.ifDesc") %>
<%= localeMessage.getString("infAdpConMan.useYn") %> + +
+ + + + + + + + + + + + + + + + + +
+ <%= localeMessage.getString("infAdpConMan.thrPerSecond") %> + help_outline + 1초 단위의 순간 트래픽 제한입니다. 매 초마다 설정한 건수만큼 토큰이 리필되며, 초과 시 요청이 거부됩니다. + + +
+ + req/sec +
+
+ <%= localeMessage.getString("infAdpConMan.thr") %> + help_outline + 장시간 누적 트래픽 제한입니다. 시간단위를 선택하면 해당 주기마다 토큰이 리필됩니다. + + +
+ + + requests +
+
+
+
+ + +
+
+
+ 마지막 갱신: - + +
+ + + + +
+
+ hourglass_empty + 버킷 현황을 조회하려면 새로고침 버튼을 클릭하세요 +
+
+
+
+ +
+
+ + diff --git a/WebContent/jsp/onl/apim/approval/portalAppApprovalManPopup.jsp b/WebContent/jsp/onl/apim/approval/portalAppApprovalManPopup.jsp index ad28250..03e3996 100644 --- a/WebContent/jsp/onl/apim/approval/portalAppApprovalManPopup.jsp +++ b/WebContent/jsp/onl/apim/approval/portalAppApprovalManPopup.jsp @@ -38,12 +38,22 @@ var loginUser = '<%= loginVo.getUserId() %>'; var url = ''; var url_view = ''; + + function dateFormat(cellvalue) { + if ( cellvalue == null || cellvalue.length < 8 ) + return ''; + return cellvalue.substr(0 ,4) + '-' + + cellvalue.substr(4, 2) + '-' + + cellvalue.substr(6, 2) ; + } $(document).ready(function () { var key = "${param.id}"; if (key) { detail(key); } + + $("#expectEndDate").datepicker().inputmask("yyyy-mm-dd", {'autoUnmask': true}); $("#btn_app_approve").click(function () { if (confirm("승인하시겠습니까?")) { @@ -112,6 +122,28 @@ }); } }); + + $("#btn_modify").click(function () { + if (confirm("수정하시겠습니까?")) { + $.ajax({ + type: "POST", + url: url, + data: {cmd: "UPDATE", id: key, expectEndDate: $("#expectEndDate").val().replaceAll('-','')}, + success: function (args) { + alert("수정되었습니다."); + if (window.dialogArguments && window.dialogArguments.self) { + window.dialogArguments.self.location.reload(); + } else if (window.opener) { + window.opener.location.reload(); + } + window.close(); + }, + error: function (e) { + alert(e.responseText); + } + }); + } + }); $("#btn_close").click(function () { window.close(); @@ -126,12 +158,25 @@ data: {cmd: 'DETAIL', id: key}, success: function (json) { var data = json; + + if (data.approvalStatus.code == 'END') { + $('#btn_modify').hide(); + $('#expectEndDate').hide(); + $('#spExpectEndDate').show(); + $('#spExpectEndDate').text(dateFormat(data.expectEndDate)); + } else { + $('#btn_modify').show(); + $('#expectEndDate').show(); + $('#spExpectEndDate').hide(); + } + $("#approvalType").text(data.approvalType === 'USER' ? "법인사용자" : "API 사용"); $("#approvalStatus").text(data.approvalStatus.description); $("#requesterName").text(data.requester.userName); $("#approvalSubject").text(data.approvalSubject); $("#approvalDetail").html(data.approvalDetail); $("#createdDate").text(data.createdDate).inputmask("9999-99-99 99:99:99.999", {'autoUnmask': true}); + $("#expectEndDate").val(data.expectEndDate); if (data.approvers.some(approver => approver.approverStatus === 'CURRENT' && @@ -144,7 +189,7 @@ document.getElementById("btn_app_reject").style.display = "none"; } - if (data.approvalStatus.description === '배포실패') { + if (data.approvalStatus.code === 'FAILED') { document.getElementById("btn_app_redeploy").style.display = ""; } @@ -242,9 +287,14 @@ 상세 내용 - +
+ 예상완료일 + + + + @@ -282,6 +332,9 @@