init
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
<%@ page language="java" contentType="text/html; charset=utf-8"%>
|
||||
<%@ page import="java.io.*"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<%@ include file="/jsp/common/include/localemessage.jsp" %>
|
||||
<%
|
||||
response.setHeader("Pragma", "No-cache");
|
||||
response.setHeader("Cache-Control", "no-cache");
|
||||
response.setHeader("Expires", "0");
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<jsp:include page="/jsp/common/include/css.jsp"/>
|
||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||
|
||||
<script language="javascript">
|
||||
var url = '<c:url value="/onl/apim/portalmain/portalMainMan.json"/>';
|
||||
var url_view = '<c:url value="/onl/apim/portalmain/portalMainMan.view"/>';
|
||||
var isDetail = false;
|
||||
|
||||
function selectService(selectedServices) {
|
||||
if(!selectedServices) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 먼저 기존 그리드의 모든 데이터를 지웁니다
|
||||
$("#serviceGrid").jqGrid('clearGridData');
|
||||
|
||||
// 선택된 서비스들만 다시 추가합니다
|
||||
selectedServices.forEach(function(service) {
|
||||
$("#serviceGrid").jqGrid('addRowData', service.id, service, "last");
|
||||
});
|
||||
}
|
||||
|
||||
function componentRenderingInit() {
|
||||
$('#serviceGrid').jqGrid({
|
||||
datatype: "json",
|
||||
colNames: ['서비스 ID',
|
||||
'서비스명',
|
||||
'서비스 설명'
|
||||
],
|
||||
colModel: [
|
||||
{ name: 'id', align: 'center', width:'100', key:true},
|
||||
{ name: 'groupName', align: 'left', width:'150'},
|
||||
{ name: 'groupDesc', align: 'left'}
|
||||
],
|
||||
rowNum: 10000,
|
||||
autoheight: true,
|
||||
height: "160",
|
||||
autowidth: true,
|
||||
multiselect: true,
|
||||
viewrecords: true
|
||||
});
|
||||
}
|
||||
|
||||
function detail() {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
data: {cmd: 'DETAIL'},
|
||||
success: function(json) {
|
||||
var serviceList = json.services || [];
|
||||
var keywordList = json.searchTags || '';
|
||||
|
||||
$("#serviceGrid").jqGrid('clearGridData');
|
||||
|
||||
// 각 서비스의 고유 ID를 행 ID로 사용
|
||||
serviceList.forEach(function(service) {
|
||||
$("#serviceGrid").jqGrid('addRowData', service.id, service);
|
||||
});
|
||||
|
||||
// 키워드 리스트를 콤마로 구분된 문자열로 변환하여 input에 설정
|
||||
$("#keywordList").val(keywordList);
|
||||
},
|
||||
error: function(e) {
|
||||
alert(e.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
componentRenderingInit();
|
||||
detail();
|
||||
|
||||
$("#btn_save").click(function() {
|
||||
var serviceData = $("#serviceGrid").jqGrid('getRowData');
|
||||
var keywordString = $("#keywordList").val();
|
||||
|
||||
var serviceIds = [];
|
||||
for(var i=0; i<serviceData.length; i++) {
|
||||
serviceIds.push({id: serviceData[i].id});
|
||||
}
|
||||
|
||||
let postData = [];
|
||||
postData.push({name: "services", value: JSON.stringify(serviceIds)});
|
||||
postData.push({name: "searchTags", value: keywordString});
|
||||
postData.push({name: "cmd", value: "INSERT"});
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
data: postData,
|
||||
success: function(args) {
|
||||
alert("저장되었습니다.");
|
||||
detail();
|
||||
},
|
||||
error: function(e) {
|
||||
alert(e.responseText);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#btn_add_service").click(function() {
|
||||
// 현재 선택된 서비스 목록 가져오기
|
||||
var currentServices = $("#serviceGrid").jqGrid('getRowData');
|
||||
var selectedIds = currentServices.map(function(service) {
|
||||
return service.id;
|
||||
}).join(',');
|
||||
|
||||
const popupUrl = url_view + "?cmd=POPUP&selectedIds=" + encodeURIComponent(selectedIds);
|
||||
|
||||
const args = {
|
||||
title: 'API 그룹 선택',
|
||||
callback: function(selectedData) {
|
||||
if(selectedData) {
|
||||
$("#serviceGrid").jqGrid('clearGridData');
|
||||
selectedData.forEach(function(service) {
|
||||
$("#serviceGrid").jqGrid('addRowData', service.id, service, "last");
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
showModal(popupUrl, args, 1280, 860);
|
||||
});
|
||||
|
||||
$("#btn_delete_service").click(function() {
|
||||
var selectedIds = $("#serviceGrid").jqGrid('getGridParam', 'selarrrow');
|
||||
if (selectedIds.length > 0) {
|
||||
// 선택된 행의 ID를 복사한 배열을 사용
|
||||
var idsToDelete = selectedIds.slice();
|
||||
|
||||
for (var i = 0; i < idsToDelete.length; i++) {
|
||||
$("#serviceGrid").jqGrid('delRowData', idsToDelete[i]); // 선택된 각 행을 삭제
|
||||
}
|
||||
} else {
|
||||
alert("Please select at least one row to delete.");
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="right_box">
|
||||
<div class="content_top">
|
||||
<ul class="path">
|
||||
<li><a href="#">${rmsMenuPath}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="content_middle">
|
||||
<div class="search_wrap">
|
||||
<button type="button" class="cssbtn" id="btn_save" level="W">
|
||||
<i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %>
|
||||
</button>
|
||||
</div>
|
||||
<div class="title">포털 메인 관리</div>
|
||||
<div style="margin-top:15px;">
|
||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px">
|
||||
<div class="table_row_title" style="margin-bottom: 0px">메인 서비스 목록</div>
|
||||
<div style="text-align: end;">
|
||||
<button type="button" class="cssbtn" id="btn_delete_service" level="W">
|
||||
<i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %>
|
||||
</button>
|
||||
<button type="button" class="cssbtn" id="btn_add_service" level="W">
|
||||
<i class="material-icons">add</i> <%= localeMessage.getString("button.add") %>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<table id="serviceGrid"></table>
|
||||
</div>
|
||||
|
||||
<div style="margin-top:15px;">
|
||||
<div class="table_row_title">메인 키워드 목록</div>
|
||||
<table class="table_row" cellspacing="0">
|
||||
<tr>
|
||||
<th style="width:180px;">키워드</th>
|
||||
<td>
|
||||
<input type="text" id="keywordList" style="width:100%" placeholder="쉼표(,)로 구분하여 입력">
|
||||
<div class="help-text" style="color:#666; font-size:12px; margin-top:5px;">
|
||||
예시: #인증, #대출, #예금
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,155 @@
|
||||
<%-- portalMainManPopup.jsp --%>
|
||||
<%@ page language="java" contentType="text/html; charset=utf-8" %>
|
||||
<%@ page import="java.io.*" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ include file="/jsp/common/include/localemessage.jsp" %>
|
||||
<%
|
||||
response.setHeader("Pragma", "No-cache");
|
||||
response.setHeader("Cache-Control", "no-cache");
|
||||
response.setHeader("Expires", "0");
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<jsp:include page="/jsp/common/include/css.jsp"/>
|
||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||
|
||||
<script language="javascript">
|
||||
var url = '<c:url value="/onl/apim/apigroup/apiGroupMan.json"/>';
|
||||
|
||||
function search() {
|
||||
var postData = getSearchForJqgrid("cmd", "LIST");
|
||||
$("#grid").setGridParam({postData: postData, page: "1"}).trigger("reloadGrid");
|
||||
}
|
||||
|
||||
function list() {
|
||||
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||
$('#grid').jqGrid({
|
||||
mtype: 'POST',
|
||||
datatype: "json",
|
||||
url: url,
|
||||
postData: gridPostData,
|
||||
colNames: ['서비스 ID', '서비스명', '서비스 설명', '공개여부'],
|
||||
colModel: [
|
||||
{name: 'id', align: 'center', width: '100'},
|
||||
{name: 'groupName', align: 'left', width: '150'},
|
||||
{name: 'groupDesc', align: 'left'},
|
||||
{
|
||||
name: 'displayYn', align: 'center', width: '60', formatter: function(cellvalue) {
|
||||
return cellvalue === '1' ? 'Y' : 'N';
|
||||
}
|
||||
}
|
||||
],
|
||||
jsonReader: {
|
||||
repeatitems: false
|
||||
},
|
||||
pager: '#pager',
|
||||
rowNum: '${rmsDefaultRowNum}',
|
||||
autoheight: true,
|
||||
height: $("#container").height(),
|
||||
autowidth: true,
|
||||
viewrecords: true,
|
||||
rowList: eval('[${rmsDefaultRowList}]'),
|
||||
multiselect: true,
|
||||
loadComplete: function() {
|
||||
try {
|
||||
// URL에서 selectedIds 파라미터 가져오기
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var selectedIds = urlParams.get('selectedIds');
|
||||
|
||||
if(selectedIds) {
|
||||
selectedIds = selectedIds.split(',');
|
||||
var ids = $(this).jqGrid('getDataIDs');
|
||||
|
||||
ids.forEach(function(id) {
|
||||
var rowData = $(this).jqGrid('getRowData', id);
|
||||
if(selectedIds.includes(rowData.id)) {
|
||||
$(this).jqGrid('setSelection', id, true);
|
||||
}
|
||||
}.bind(this));
|
||||
}
|
||||
} catch(e) {
|
||||
console.error("Failed to sync with parent window:", e);
|
||||
}
|
||||
},
|
||||
ondblClickRow: function(rowId) {
|
||||
var rowData = $(this).jqGrid('getRowData', rowId);
|
||||
if (window.dialogArguments && window.dialogArguments.callback) {
|
||||
window.dialogArguments.callback([rowData]);
|
||||
}
|
||||
window.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
$("#btn_search").click(function() {
|
||||
search();
|
||||
});
|
||||
|
||||
$("#btn_save").click(function() {
|
||||
var selectedRows = $("#grid").jqGrid('getGridParam', 'selarrrow');
|
||||
if(selectedRows.length === 0) {
|
||||
alert("선택된 서비스가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
// 선택된 모든 행의 데이터를 배열로 수집
|
||||
var selectedData = selectedRows.map(function(rowId) {
|
||||
return $("#grid").jqGrid('getRowData', rowId);
|
||||
});
|
||||
|
||||
if(window.dialogArguments && window.dialogArguments.callback) {
|
||||
window.dialogArguments.callback(selectedData);
|
||||
}
|
||||
window.close();
|
||||
});
|
||||
|
||||
$("input[name^=search]").keydown(function(key) {
|
||||
if (key.keyCode == 13) {
|
||||
$("#btn_search").click();
|
||||
}
|
||||
});
|
||||
|
||||
list();
|
||||
|
||||
resizeJqGridWidth('grid', 'content_middle', '1000');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<div class="content_middle" id="content_middle" style="margin-top: 0px">
|
||||
<div class="search_wrap">
|
||||
<button type="button" class="cssbtn" id="btn_search" level="R">
|
||||
<i class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
|
||||
</button>
|
||||
<button type="button" class="cssbtn" id="btn_save" level="R">
|
||||
<i class="material-icons">check</i> <%= localeMessage.getString("button.check") %>
|
||||
</button>
|
||||
</div>
|
||||
<div class="title">API 그룹 선택</div>
|
||||
<table class="search_condition" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="width:180px;">서비스명</th>
|
||||
<td>
|
||||
<input type="text" name="searchGroupName">
|
||||
</td>
|
||||
<th style="width:180px;">서비스 설명</th>
|
||||
<td>
|
||||
<input type="text" name="searchGroupDesc">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="grid"></table>
|
||||
<div id="pager"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user