1348 lines
49 KiB
Plaintext
1348 lines
49 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=utf-8"%>
|
|
<%@ page import="java.io.*"%>
|
|
<%@ page import="com.eactive.eai.rms.common.login.SessionManager"%>
|
|
<%@ 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"/>
|
|
<style>
|
|
.ui-dialog { z-index:11; }
|
|
|
|
.div-hover {
|
|
background-color: #EDD5DD
|
|
}
|
|
|
|
.btn_move { width:69px; min-width: 32px; height: 32px; background-color: #fff; border:1px solid #999; border-radius:4px; margin-bottom: 4px; }
|
|
|
|
|
|
</style>
|
|
<jsp:include page="/jsp/common/include/script.jsp"/>
|
|
<script language="javascript">
|
|
const isPop = "${param.pop}";
|
|
|
|
const LAYOUT_ITEM_TYPE_GROUP = "Group";
|
|
const LAYOUT_ITEM_TYPE_GRID = "Grid";
|
|
const LAYOUT_ITEM_TYPE_FIELD = "Field";
|
|
const LAYOUT_ITEM_TYPE_ARRAY = "Array";
|
|
|
|
var srcItemComboOptionFormat = '"["+this.data[index]["LOUTITEMPATH"]+"] "+this.data[index]["loutItemDesc"]';
|
|
|
|
var isDetail = false;
|
|
|
|
var srcGroup;
|
|
var tgtGroup;
|
|
var sourceGrid ;
|
|
var targetGrid ;
|
|
var url = '<c:url value="/onl/admin/rule/transformMan.json" />';
|
|
var url_view = '<c:url value="/onl/admin/rule/transformMan.view" />';
|
|
|
|
var isAdmin = "";
|
|
|
|
var returnUrl = getReturnUrlForReturn();
|
|
var roleString = "<%=SessionManager.getRoleIdString(request)%>";
|
|
|
|
var selectName = "functionCombo"; // selectBox Name
|
|
|
|
var isContextMenuShow = false;
|
|
|
|
var LIST_TRANSFORM_ITEM;
|
|
var LIST_LAYOUT_ITEM;
|
|
|
|
var isValidMapping = true;
|
|
|
|
var transformGrid = {
|
|
findRowDatasByLayoutItemName : function (layoutItemName) {
|
|
return this.findRowDatasByLayoutItemNameWithoutNamespace(layoutItemName);
|
|
},
|
|
findRowDatasByLayoutItemNameWithoutNamespace : function (layoutItemName) {
|
|
layoutItemName = removeNamespace(layoutItemName.toUpperCase());
|
|
const rowDatas = this.getRowData();
|
|
const returnRowDatas = [];
|
|
for (var i = 0; i < rowDatas.length; i++) {
|
|
if (removeNamespace(rowDatas[i]['loutItemName'].toUpperCase()) == layoutItemName) {
|
|
returnRowDatas.push(rowDatas[i]);
|
|
}
|
|
}
|
|
return returnRowDatas;
|
|
}
|
|
};
|
|
|
|
$.jgrid.extend(transformGrid);
|
|
|
|
$(document).mousemove(function (e) {
|
|
$('html, body').scrollTop(function(i, v) {
|
|
var h = $(window).height();
|
|
if (e.clientY > 0 && h - e.clientY > 0) {
|
|
return;
|
|
}
|
|
|
|
var y = e.clientY - h/2;
|
|
var percent = v + y * 0.03;
|
|
return percent;
|
|
});
|
|
});
|
|
|
|
function doneAction(){
|
|
if(isPop == "true"){
|
|
window.close();
|
|
} else {
|
|
goNav(returnUrl);
|
|
}
|
|
}
|
|
|
|
function getSourceResult(cnvsnName){
|
|
|
|
console.debug("start getSourceResult : " + cnvsnName);
|
|
|
|
var LIST_TRANSFORM_SOURCE_RESULT = $.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
dataType:"json",
|
|
data:{cmd : 'LIST_TRANSFORM_SOURCE_RESULT', cnvsnName : cnvsnName},
|
|
});
|
|
|
|
LIST_TRANSFORM_SOURCE_RESULT.done(function (json) {
|
|
var data = json.rows;
|
|
var src = null;
|
|
var tgt = null;;
|
|
var srcDesc = null;
|
|
var tgtDesc = null;
|
|
var srcLoutIoId = null;
|
|
var tgtLoutIoId = null;
|
|
var srcLoutType = null;
|
|
var tgtLoutType = null;
|
|
for ( var i = 0; i < data.length; i++) {
|
|
if (data[i]['SOURCRSULTDSTCD'] == 'SRC_LAYOUT' ){
|
|
src = data[i]['LOUTNAME'];
|
|
srcDesc = data[i]['LOUTDESC'];
|
|
$("input[name=srcLayout]").val(src);
|
|
$("input[name=srcLayoutDesc]").val(srcDesc);
|
|
srcLoutIoId = data[i]['LOUTIOID'];
|
|
$("input[name=srcLoutIoId]").val(srcLoutIoId);
|
|
srcLoutType = data[i]['LOUTTYPE'];
|
|
}else if (data[i]['SOURCRSULTDSTCD'] == 'TGT_LAYOUT' ){
|
|
tgt = data[i]['LOUTNAME'];
|
|
tgtDesc = data[i]['LOUTDESC'];
|
|
$("input[name=tgtLayout]").val(tgt);
|
|
$("input[name=tgtLayoutDesc]").val(tgtDesc);
|
|
tgtLoutIoId = data[i]['LOUTIOID'];
|
|
$("input[name=tgtLoutIoId]").val(tgtLoutIoId);
|
|
tgtLoutType = data[i]['LOUTTYPE'];
|
|
}
|
|
}
|
|
|
|
confirmLastAmnDhms();
|
|
|
|
LIST_TRANSFORM_ITEM = listTransformItem(tgt, cnvsnName, tgtLoutIoId, tgtLoutType, src);
|
|
LIST_LAYOUT_ITEM = listLayoutItem(src, srcLoutIoId, srcLoutType);
|
|
|
|
console.debug('LIST_TRANSFORM_SOURCE_RESULT done');
|
|
}).fail(function (e) {
|
|
alert(e.responseText);
|
|
});
|
|
|
|
console.debug("end getSourceResult : " + cnvsnName);
|
|
}
|
|
|
|
function formatDate(cellvalue){
|
|
if (!cellvalue || cellvalue.length < 14) {
|
|
return "";
|
|
}
|
|
const year = cellvalue.substr(0, 4);
|
|
const month = cellvalue.substr(4, 2);
|
|
const day = cellvalue.substr(6, 2);
|
|
const hour = cellvalue.substr(8, 2);
|
|
const minute = cellvalue.substr(10, 2);
|
|
const second = cellvalue.substr(12, 2);
|
|
|
|
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
|
|
}
|
|
|
|
function confirmLastAmnDhms () {
|
|
var reqCnvsnLastAmnDhms = parseLastAmnDhms($('#REQ').attr('lastAmnDhms'));
|
|
var resCnvsnLastAmnDhms = parseLastAmnDhms($('#RES').attr('lastAmnDhms'));
|
|
|
|
var tgtLastAmnDhms = parseLastAmnDhms($("#tgtLastAmnDhms").val());
|
|
var srcLastAmnDhms = parseLastAmnDhms($("#srcLastAmnDhms").val());
|
|
|
|
var message = "";
|
|
if (reqCnvsnLastAmnDhms > 0 && (reqCnvsnLastAmnDhms < tgtLastAmnDhms || reqCnvsnLastAmnDhms < srcLastAmnDhms)) {
|
|
message = "<%=localeMessage.getString("transformManDetail.request")%>"
|
|
}
|
|
|
|
if (resCnvsnLastAmnDhms > 0 && (resCnvsnLastAmnDhms < tgtLastAmnDhms || resCnvsnLastAmnDhms < srcLastAmnDhms)) {
|
|
if (message.length > 0) {
|
|
message = message + ", <%=localeMessage.getString("transformManDetail.response")%>"
|
|
} else {
|
|
message = "<%=localeMessage.getString("transformManDetail.response")%>"
|
|
}
|
|
}
|
|
|
|
if (message.length > 0) {
|
|
if (isValidMapping) {
|
|
isValidMapping = false;
|
|
// alert은 1회
|
|
alert("<%=localeMessage.getString("transformManDetail.alert6")%> "+ message +" <%=localeMessage.getString("transformManDetail.alert7")%>");
|
|
}
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function parseLastAmnDhms(lastAmnDhms) {
|
|
try {
|
|
return parseInt(lastAmnDhms);
|
|
} catch (e) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function listLayoutItem(srcLayoutName, srcLoutIoId, srcLoutType) {
|
|
// console.error("start LIST_LAYOUT_ITEM : " + srcLayoutName);
|
|
if (srcLayoutName == null) {
|
|
return;
|
|
}
|
|
|
|
var LIST_LAYOUT_ITEM = $.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
dataType:"json",
|
|
data:{ cmd : 'LIST_LAYOUT_ITEM', loutName: srcLayoutName, loutIoId:srcLoutIoId, loutType:srcLoutType },
|
|
});
|
|
LIST_LAYOUT_ITEM = LIST_LAYOUT_ITEM.done(function (json) {
|
|
var data = json.rows;
|
|
sourceGrid.get(0).addJSONData(data);
|
|
|
|
srcGroup = new Object();
|
|
for ( var i = 0; i < data.length; i++) {
|
|
var rowData = data[i];
|
|
if (rowData["LOUTITEMPATH"].length > 0
|
|
&& (rowData["loutItemType"] == LAYOUT_ITEM_TYPE_GRID)
|
|
) {
|
|
srcGroup[data[i]["LOUTITEMPATH"]]= data[i]["LOUTITEMPATH"];
|
|
}
|
|
}
|
|
|
|
// 변환명령에서 매핑 가능한(필드 유형) 소스 항목만 콤보로 표시
|
|
var srcFieldRows = data.filter(function (rowData) {
|
|
return rowData['loutItemType'] == LAYOUT_ITEM_TYPE_FIELD;
|
|
});
|
|
$("#srcItemComboDialog").empty();
|
|
new makeOptions("id","LOUTITEMPATH").setObj($("#srcItemComboDialog")).setData(srcFieldRows).setFormat(srcItemComboOptionFormat).rendering();
|
|
|
|
sourceGrid.find('.jqgrow').mouseover(function (e) {
|
|
var rowId = $(this).attr('id');
|
|
const loutItemName = sourceGrid.getRowData(rowId)['loutItemName']
|
|
mouseoverJqgrid(loutItemName, targetGrid);
|
|
}).mouseout(function (e) {
|
|
var rowId = $(this).attr('id');
|
|
const loutItemName = sourceGrid.getRowData(rowId)['loutItemName']
|
|
mouseoutJqgrid(loutItemName, targetGrid);
|
|
});
|
|
});
|
|
return LIST_LAYOUT_ITEM;
|
|
}
|
|
|
|
function listLayoutItemForTarget(tgtLayoutName, tgtLoutIoId, tgtLoutType) {
|
|
if (tgtLayoutName == null) {
|
|
return;
|
|
}
|
|
|
|
var LIST_LAYOUT_ITEM = $.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
dataType:"json",
|
|
data:{ cmd : 'LIST_LAYOUT_ITEM', loutName: tgtLayoutName, loutIoId:tgtLoutIoId, loutType:tgtLoutType },
|
|
});
|
|
LIST_LAYOUT_ITEM = LIST_LAYOUT_ITEM.done(function (json) {
|
|
var data = json.rows;
|
|
targetGrid.get(0).addJSONData(data);
|
|
|
|
tgtGroup = new Object();
|
|
for ( var i = 0; i < data.length; i++) {
|
|
var rowData = data[i];
|
|
if (rowData["LOUTITEMPATH"].length > 0
|
|
&& (rowData["loutItemType"] == LAYOUT_ITEM_TYPE_GRID)
|
|
) {
|
|
tgtGroup[rowData["LOUTITEMPATH"]]= rowData["LOUTITEMPATH"];
|
|
}
|
|
}
|
|
|
|
targetGrid.find('.jqgrow').mouseover(function (e) {
|
|
var rowId = $(this).attr('id');
|
|
const loutItemName = targetGrid.getRowData(rowId)['loutItemName']
|
|
mouseoverJqgrid(loutItemName, targetGrid);
|
|
}).mouseout(function (e) {
|
|
var rowId = $(this).attr('id');
|
|
const loutItemName = targetGrid.getRowData(rowId)['loutItemName']
|
|
mouseoutJqgrid(loutItemName, targetGrid);
|
|
});
|
|
});
|
|
return LIST_LAYOUT_ITEM;
|
|
}
|
|
|
|
function listTransformItem (tgtLayoutName, cnvsnName, tgtLoutIoId, tgtLoutType, srcLayoutName) {
|
|
//console.error("start LIST_TRANSFORM_ITEM : " + cnvsnName);
|
|
if (tgtLayoutName == null) {
|
|
return;
|
|
}
|
|
|
|
var LIST_TRANSFORM_ITEM = $.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
dataType:"json",
|
|
data:{ cmd : 'LIST_TRANSFORM_ITEM', loutName: tgtLayoutName, cnvsnName : cnvsnName, loutIoId:tgtLoutIoId, loutType:tgtLoutType, srcLayoutName:srcLayoutName },
|
|
});
|
|
|
|
LIST_TRANSFORM_ITEM = LIST_TRANSFORM_ITEM.done(function (json) {
|
|
var data = json.rows;
|
|
targetGrid.get(0).addJSONData(data);
|
|
|
|
tgtGroup = new Object();
|
|
for ( var i = 0; i < data.length; i++) {
|
|
var rowData = data[i];
|
|
if (rowData["LOUTITEMPATH"].length > 0
|
|
&& (rowData["loutItemType"] == LAYOUT_ITEM_TYPE_GRID)
|
|
) {
|
|
tgtGroup[rowData["LOUTITEMPATH"]]= rowData["LOUTITEMPATH"];
|
|
}
|
|
}
|
|
|
|
targetGrid.find('.jqgrow').mouseover(function (e) {
|
|
var rowId = $(this).attr('id');
|
|
const loutItemName = targetGrid.getRowData(rowId)['loutItemName']
|
|
mouseoverJqgrid(loutItemName, sourceGrid);
|
|
}).mouseout(function (e) {
|
|
var rowId = $(this).attr('id');
|
|
const loutItemName = targetGrid.getRowData(rowId)['loutItemName']
|
|
mouseoutJqgrid(loutItemName, sourceGrid);
|
|
});
|
|
|
|
if (json.isRemappingRequired != undefined && json.isRemappingRequired == true) {
|
|
if (isValidMapping) {
|
|
isValidMapping = false;
|
|
// alert은 1회
|
|
alert('<%=localeMessage.getString("transformManDetail.alert8")%>');
|
|
}
|
|
}
|
|
|
|
console.debug('isRemappingRequired : ' + json.isRemappingRequired);
|
|
//console.error("end LIST_TRANSFORM_ITEM : " + cnvsnName);
|
|
|
|
});
|
|
return LIST_TRANSFORM_ITEM;
|
|
}
|
|
|
|
|
|
function addGroupTag(group, data) {
|
|
Object.keys(group)
|
|
.sort((a, b) => b.length - a.length)
|
|
.forEach(key => {
|
|
if (data.includes(key+".")) {
|
|
data = data.replace(key, key + "[*]");
|
|
}
|
|
});
|
|
return data;
|
|
}
|
|
|
|
// 항목 자신이 Array인 경우, 경로/변환명령 끝에 반복 표시 [*]를 추가
|
|
function addArrayTag(loutItemType, data) {
|
|
if (loutItemType == LAYOUT_ITEM_TYPE_ARRAY && !data.endsWith("[*]")) {
|
|
data = data + "[*]";
|
|
}
|
|
return data;
|
|
}
|
|
|
|
//변환명에 있는 서비스코드와 if서비스 코드 매칭
|
|
function validation(){
|
|
if ($('input[name=cnvsnName]').val() == '') {
|
|
$('#dialog').dialog('open');
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function clearThisPage() {
|
|
$("select[name=transformForEaiSvcNameCombo]").val('');
|
|
$("input[name=cnvsnDesc]").val('');
|
|
$("input[name=cnvsnTypeCombo]").val('');
|
|
sourceGrid.jqGrid('clearGridData');
|
|
targetGrid.jqGrid('clearGridData');
|
|
$('input[name=srcLayout]').val('');
|
|
$('input[name=srcLayoutDesc]').val('');
|
|
$('input[name=tgtLayout]').val('');
|
|
$('input[name=tgtLayoutDesc]').val('');
|
|
}
|
|
|
|
var transformRows;
|
|
$(function() {
|
|
|
|
var verInfo = "${param.verInfo}";
|
|
if (verInfo == "" || verInfo == "null") {
|
|
verInfo = "0";
|
|
}
|
|
|
|
$("input[name=verInfo]").val(verInfo);
|
|
|
|
var key = '${param.eaiSvcName}';
|
|
if (key != "" && key != "null") {
|
|
isDetail = true;
|
|
}
|
|
|
|
let cnvsnName = '${param.cnvsnName}';
|
|
if (cnvsnName != "" && cnvsnName != "null") {
|
|
isDetail = true;
|
|
}
|
|
|
|
//combo
|
|
$.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
dataType:"json",
|
|
data:{cmd : 'LIST_INIT_COMBO', eaiSvcName: '${param.eaiSvcName}', cnvsnName: '${param.cnvsnName}' },
|
|
success:function(json){
|
|
isAdmin = json.isAdmin;
|
|
var interfaceMap = json.interfaceMap;
|
|
transformRows = json.transformRows;
|
|
//eaiSvcName combo
|
|
$("input[name=eaiSvcName]").val('${param.eaiSvcName }');
|
|
|
|
var rawDesc = '${param.eaiSvcDesc}';
|
|
|
|
// XSS filter 값 복구
|
|
function decodeHTMLEntities(text) {
|
|
if (!text) return "";
|
|
var textArea = document.createElement('textarea');
|
|
textArea.innerHTML = text;
|
|
return textArea.value;
|
|
}
|
|
|
|
var cleanDesc = decodeURIComponent(rawDesc);
|
|
cleanDesc = decodeHTMLEntities(cleanDesc);
|
|
|
|
if (cleanDesc) {
|
|
$("input[name=eaiSvcDesc]").val(cleanDesc);
|
|
} else {
|
|
$("input[name=eaiSvcDesc]").val("");
|
|
}
|
|
|
|
//$("input[name=cnvsnDesc]").val('${param.cnvsnDesc }');
|
|
|
|
new makeOptions("CODE","NAME").setObj($("#functionCombo")).setData(json.functionRows).setNoValueInclude(true).setNoValue("", "<%=localeMessage.getString("transformManDetail.none")%>").setFormat(codeName3OptionFormat).rendering();
|
|
new makeOptions("CODE","NAME").setObj($("#functionComboDialog")).setData(json.functionRows).setNoValueInclude(true).setNoValue("", "<%=localeMessage.getString("transformManDetail.none")%>").setFormat(codeName3OptionFormat).rendering();
|
|
new makeOptions("CODE","NAME").setObj($("#transformForEaiSvcNameCombo")).setData(transformRows).setFormat(codeOptionFormat).rendering();
|
|
new makeOptions("CODE","NAME").setObj($("#eaiSevrDStcd")).setData(json.svrDstcd).setFormat(codeName3OptionFormat).rendering();
|
|
new makeOptions("CODE","NAME").setObj($("#useYn")).setData(json.useYnRows).setFormat(codeName3OptionFormat).rendering();
|
|
|
|
$("select[name=useYn]").val('${param.useYn }');
|
|
$("select[name=eaiSevrDStcd]").val('${param.eaiSevrDStcd }').attr("disabled",true);
|
|
|
|
reloadSourceTargetGrid('${param.cnvsnName}');
|
|
reloadCnvsnDesc();
|
|
|
|
setSearchable("functionCombo");
|
|
},
|
|
error:function(e){
|
|
alert(e.responseText);
|
|
}
|
|
});
|
|
|
|
sourceGrid = $("#sourceGrid");
|
|
sourceGrid.jqGrid({
|
|
datatype:'json',
|
|
loadui: "disable",
|
|
mtype: 'POST',
|
|
colNames: [
|
|
"id",
|
|
'<%=localeMessage.getString("tran2ManDt.engNm")%>',
|
|
'<%=localeMessage.getString("tran2ManDt.korNm")%>',
|
|
'<%=localeMessage.getString("transformManDetail.num")%>',
|
|
'<%=localeMessage.getString("tran2ManDt.itTp")%>',
|
|
'<%=localeMessage.getString("tran2ManDt.dtTp")%>',
|
|
"LOUTITEMNODEPTRNIDDESC",
|
|
"LOUTITEMPTRNIDNAME",
|
|
"LOUTITEMPATH",
|
|
"loutName",
|
|
"LOUTITEMMAXOCCURNOITM",
|
|
"LOUTITEMREFINFO2",
|
|
],
|
|
colModel: [
|
|
{name: "id" , hidden:true,key:true},
|
|
{name: "loutItemName" , width:"150"},
|
|
{name: "loutItemDesc" },
|
|
{name: "loutItemSerno" , width:"20", align : 'center' },
|
|
{name: "loutItemType" , width:"35"},
|
|
{name: "loutItemDataType" , width:"40"},
|
|
{name: "loutItemType" , hidden:true},
|
|
{name: "loutItemDataType" , hidden:true},
|
|
{name: "LOUTITEMPATH" , hidden:true},
|
|
{name: "loutName" , hidden:true},
|
|
{name: "loutItemOccCnt" , hidden:true},
|
|
{name: "loutItemOccRef" , hidden:true}
|
|
],
|
|
treeGrid: true,
|
|
treeGridModel: "adjacency",
|
|
ExpandColumn: "loutItemName",
|
|
height:500,
|
|
width: "660",
|
|
rowNum: 10000,
|
|
treeIcons: {leaf:'ui-icon-document-b'},
|
|
jsonReader: {
|
|
repeatitems: false
|
|
},
|
|
loadError: function (jqXHR, textStatus, errorThrown) {
|
|
if(jqXHR.status == 401) {
|
|
alert('HTTP status code: ' + jqXHR.status + '\n' +
|
|
'<%=localeMessage.getString("transformManDetail.alert9")%>');
|
|
parent.location.href='<%=request.getContextPath()%>/';
|
|
}
|
|
},
|
|
onSelectRow: function (rowId) {
|
|
var rowData = sourceGrid.getRowData(rowId);
|
|
|
|
// 매핑 불가능한 유형(필드가 아닌 행)을 선택하면 타겟 그리드 선택 해제 및 하단 상세 초기화
|
|
if (rowData['loutItemType'] != LAYOUT_ITEM_TYPE_FIELD) {
|
|
targetGrid.jqGrid('resetSelection');
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val('');
|
|
$('textarea[name=CNVSNCMDNAME]').val('');
|
|
$('input[name=CNVSNITEMBASCVAL]').val('');
|
|
$('input[name=CNVSNITEMSERNO]').val('');
|
|
return;
|
|
}
|
|
|
|
// 소스 항목과 이미 매핑된 타겟 항목을 강조 표시
|
|
tgtGridSelect(rowData['LOUTITEMPATH'], rowId);
|
|
}
|
|
});
|
|
|
|
targetGrid = $("#targetGrid");
|
|
targetGrid.jqGrid({
|
|
//url: '<c:url value="/iim/transform/transformMan.json" />',
|
|
//postData : { cmd : 'LAYOUT_ITEM', loutName: 'LAC_BBSA311_ORGS'},
|
|
datatype:'json',
|
|
loadui: "disable",
|
|
mtype: 'POST',
|
|
colNames: [
|
|
"id",
|
|
'<%=localeMessage.getString("tran2ManDt.tgetItem")%>',
|
|
'<%=localeMessage.getString("tran2ManDt.tgetItemDesc")%>',
|
|
'<%=localeMessage.getString("transformManDetail.num")%>',
|
|
'<%=localeMessage.getString("tran2ManDt.itTp")%>',
|
|
'<%=localeMessage.getString("tran2ManDt.dtTp")%>',
|
|
"loutItemType",
|
|
"LOUTITEMPTRNIDNAME",
|
|
"LOUTITEMPATH",
|
|
"loutName",
|
|
"CNVSNNAME",
|
|
'<%=localeMessage.getString("transformManDetail.tgtItemName")%>',
|
|
'<%=localeMessage.getString("transformManDetail.transCmdName")%>',
|
|
"CNVSNITEMBASCVAL",
|
|
"CNVSNITEMSERNO",
|
|
"CNVSNSRCITEMS",
|
|
"ISVALIDMAPPING"
|
|
],
|
|
colModel: [
|
|
{name: "id" , hidden:true,key:true},
|
|
{name: "loutItemName" , width:"100" },
|
|
{name: "loutItemDesc" , width:"100"},
|
|
{name: "loutItemSerno" , width:"20", align : 'center' },
|
|
{name: "loutItemType" , width:"35" },
|
|
{name: "loutItemDataType" , width:"40" },
|
|
|
|
{name: "loutItemType" , hidden:true},
|
|
{name: "loutItemDataType" , hidden:true},
|
|
{name: "LOUTITEMPATH" , hidden:true},
|
|
{name: "loutName" , hidden:true},
|
|
|
|
{name: "CNVSNNAME" , hidden:true}, //변환 명
|
|
{name: "CNVSNRSULTITEMPATHNAME" , hidden:true}, //타겟 항목명
|
|
{name: "CNVSNCMDNAME" }, //변환 명령
|
|
{name: "CNVSNITEMBASCVAL" , hidden:true}, //기본값
|
|
{name: "CNVSNITEMSERNO" , hidden:true}, //매핑순서
|
|
{name: "CNVSNSRCITEMS" , hidden:true},
|
|
{name: "ISVALIDMAPPING" , hidden:true}
|
|
],
|
|
treeGrid: true,
|
|
treeIcons : {
|
|
plus: "ui-icon-circlesmall-plus",
|
|
minus: "ui-icon-circlesmall-minus",
|
|
leaf : "ui-icon-document"
|
|
},
|
|
treeGridModel: "adjacency",
|
|
ExpandColumn: "loutItemName",
|
|
height:500,
|
|
width: "860",
|
|
rowNum: 10000,
|
|
//ExpandColClick: true,
|
|
treeIcons: {leaf:'ui-icon-document-b'},
|
|
jsonReader: {
|
|
repeatitems: false
|
|
},
|
|
loadError: function (jqXHR, textStatus, errorThrown) {
|
|
if(jqXHR.status == 401) {
|
|
alert('HTTP status code: ' + jqXHR.status + '\n' +
|
|
'<%=localeMessage.getString("transformManDetail.alert9")%>');
|
|
parent.location.href='<%=request.getContextPath()%>/';
|
|
}
|
|
},
|
|
onSelectRow: function (rowId) {
|
|
var rowData = targetGrid.getRowData(rowId);
|
|
|
|
// 매핑 불가능한 유형(필드가 아닌 행)을 선택하면 소스 그리드 선택 해제 및 하단 상세 초기화
|
|
if (rowData['loutItemType'] != LAYOUT_ITEM_TYPE_FIELD) {
|
|
sourceGrid.jqGrid('resetSelection');
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val('');
|
|
$('textarea[name=CNVSNCMDNAME]').val('');
|
|
$('input[name=CNVSNITEMBASCVAL]').val('');
|
|
$('input[name=CNVSNITEMSERNO]').val('');
|
|
return;
|
|
}
|
|
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val(rowData['CNVSNRSULTITEMPATHNAME']);
|
|
$('textarea[name=CNVSNCMDNAME]').val(rowData['CNVSNCMDNAME']);
|
|
$('input[name=CNVSNITEMBASCVAL]').val(rowData['CNVSNITEMBASCVAL']);
|
|
$('input[name=CNVSNITEMSERNO]').val(rowData['CNVSNITEMSERNO']);
|
|
|
|
// 타겟 항목에 매핑된 소스 항목을 찾아 선택
|
|
srcGridSelect(rowData['CNVSNCMDNAME'], rowId);
|
|
}
|
|
});
|
|
|
|
// 타겟 그리드 너비를 화면(컨테이너)에 맞춰 반응형으로 조정
|
|
resizeJqGridWidth('targetGrid', 'targetGridTd', 860);
|
|
|
|
$("#sourceGrid").jqGrid('gridDnD', {
|
|
connectWith: '#targetGrid',
|
|
ondrop: function (ev, ui, data, rowid, iRow, iCol, e) {
|
|
alert("Dropped!");
|
|
}
|
|
});
|
|
|
|
$("#auto").click(function(){
|
|
const sourceData = sourceGrid.getRowData();
|
|
const targetData = targetGrid.getRowData();
|
|
|
|
let selectValue = "";
|
|
let targetValue = "";
|
|
for ( var i = 0; i < sourceData.length; i++) {
|
|
if (sourceData[i]['loutItemType'] != "Field" && sourceData[i]['loutItemType'] != "Attr" && sourceData[i]['loutItemType'] != "Array") continue;
|
|
selectValue = (sourceData[i]['LOUTITEMPATH']).substr(sourceData[i]['loutName'].length+1);
|
|
for (var j = 0; j <targetData.length; j++) {
|
|
if (targetData[j]['loutItemType'] != "Field" && targetData[j]['loutItemType'] != "Attr" && targetData[j]['loutItemType'] != "Array") continue;
|
|
targetValue = (targetData[j]['LOUTITEMPATH']).substr(targetData[j]['loutName'].length+1);
|
|
if (targetValue == selectValue ) {
|
|
var tgtRowId = targetData[j]['id'];
|
|
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNCMDNAME',addArrayTag(sourceData[i]['loutItemType'], addGroupTag(srcGroup,sourceData[i]['LOUTITEMPATH'])));
|
|
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNRSULTITEMPATHNAME',addArrayTag(targetData[j]['loutItemType'], addGroupTag(tgtGroup,targetData[j]['LOUTITEMPATH'])));
|
|
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNITEMSERNO',targetData[j]['loutItemSerno']);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$("#addAll").click(function() {
|
|
console.debug('addAll');
|
|
var srcRowId = sourceGrid.getGridParam( "selrow" );
|
|
var tgtRowId = targetGrid.getGridParam( "selrow" );
|
|
if (srcRowId == null) {alert('<%=localeMessage.getString("transformManDetail.alert1")%>');return;}
|
|
if (tgtRowId == null) {alert('<%=localeMessage.getString("transformManDetail.alert2")%>');return;}
|
|
|
|
//field, ATTR 여부 판단
|
|
var sourceRow = sourceGrid.getRowData( srcRowId );
|
|
var targetRow = targetGrid.getRowData( tgtRowId );
|
|
if ( (sourceRow["loutItemType"] == 'Field' || sourceRow["loutItemType"] == 'Attr' || sourceRow["loutItemType"] == 'Array') &&
|
|
(targetRow["loutItemType"] == 'Field' || targetRow["loutItemType"] == 'Attr' || targetRow["loutItemType"] == 'Array') ){
|
|
;
|
|
}else{
|
|
alert('<%=localeMessage.getString("transformManDetail.alert3")%>');
|
|
return ;
|
|
}
|
|
//grid data
|
|
var sourceData = sourceGrid.getRowData();
|
|
var targetData = targetGrid.getRowData();
|
|
|
|
//grid index
|
|
var srcIndex = sourceGrid.jqGrid('getInd',srcRowId);
|
|
var tgtIndex = targetGrid.jqGrid('getInd',tgtRowId);
|
|
|
|
|
|
var selectValue = "";
|
|
var targetValue = "";
|
|
var j=tgtIndex-1-1;
|
|
for ( var i = srcIndex-1; i < sourceData.length; i++) {
|
|
if (sourceData[i]['loutItemType'] != LAYOUT_ITEM_TYPE_FIELD && sourceData[i]['loutItemType'] != LAYOUT_ITEM_TYPE_ARRAY) continue;
|
|
j++;
|
|
while (targetData.length -1 >= j && targetData[j]["loutItemType"] != LAYOUT_ITEM_TYPE_FIELD && targetData[j]["loutItemType"] != LAYOUT_ITEM_TYPE_ARRAY){
|
|
j++;
|
|
}
|
|
if (targetData.length -1 < j) break;
|
|
var targetRowId = targetData[j]['id'];
|
|
targetGrid.jqGrid('setCell',targetRowId,'CNVSNCMDNAME',addArrayTag(sourceData[i]['loutItemType'], addGroupTag(srcGroup,sourceData[i]['LOUTITEMPATH'])));
|
|
targetGrid.jqGrid('setCell',targetRowId,'CNVSNRSULTITEMPATHNAME',addArrayTag(targetData[j]['loutItemType'], addGroupTag(tgtGroup,targetData[j]['LOUTITEMPATH'])));
|
|
targetGrid.jqGrid('setCell',targetRowId,'CNVSNITEMSERNO',targetData[j]['loutItemSerno']);
|
|
}
|
|
});
|
|
|
|
$("#removeAll").click(function(){
|
|
var tgtRowId = targetGrid.getGridParam( "selrow" );
|
|
if (tgtRowId == null) {alert("타겟레이아웃을 선택하여 주십시요.");return;}
|
|
//grid data
|
|
var targetData = targetGrid.getRowData();
|
|
//grid index
|
|
var tgtIndex = targetGrid.jqGrid('getInd',tgtRowId);
|
|
|
|
for ( var i = tgtIndex-1; i < targetData.length; i++) {
|
|
var rowId = targetData[i]['id'];
|
|
targetGrid.jqGrid('setCell', rowId, 'CNVSNCMDNAME', null);
|
|
targetGrid.jqGrid('setCell', rowId, 'CNVSNRSULTITEMPATHNAME', null);
|
|
targetGrid.jqGrid('setCell', rowId, 'CNVSNITEMSERNO', null);
|
|
targetGrid.jqGrid('setCell', rowId, 'CNVSNITEMBASCVAL', null);
|
|
}
|
|
|
|
// 하단 상세 입력값 초기화
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val('');
|
|
$('textarea[name=CNVSNCMDNAME]').val('');
|
|
$('input[name=CNVSNITEMBASCVAL]').val('');
|
|
$('input[name=CNVSNITEMSERNO]').val('');
|
|
});
|
|
|
|
$("#add").click(function() {
|
|
|
|
var srcRowId = sourceGrid.getGridParam( "selrow" );
|
|
var tgtRowId = targetGrid.getGridParam( "selrow" );
|
|
if (srcRowId == null) {alert('<%=localeMessage.getString("transformManDetail.alert1")%>');return;}
|
|
if (tgtRowId == null) {alert('<%=localeMessage.getString("transformManDetail.alert2")%>');return;}
|
|
|
|
//field, ATTR 여부 판단
|
|
var sourceRow = sourceGrid.getRowData( srcRowId );
|
|
var targetRow = targetGrid.getRowData( tgtRowId );
|
|
if ( (sourceRow["loutItemType"] == 'Field' || sourceRow["loutItemType"] == 'Attr' || sourceRow["loutItemType"] == 'Array') &&
|
|
(targetRow["loutItemType"] == 'Field' || targetRow["loutItemType"] == 'Attr' || targetRow["loutItemType"] == 'Array') ){
|
|
;
|
|
}else{
|
|
alert('<%=localeMessage.getString("transformManDetail.alert3")%>');
|
|
return ;
|
|
}
|
|
|
|
var cnvsnCmdName = addArrayTag(sourceRow['loutItemType'], addGroupTag(srcGroup,sourceRow['LOUTITEMPATH']));
|
|
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNCMDNAME',cnvsnCmdName);
|
|
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNRSULTITEMPATHNAME',addArrayTag(targetRow['loutItemType'], addGroupTag(tgtGroup,targetRow['LOUTITEMPATH'])));
|
|
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNITEMSERNO',targetRow['loutItemSerno']);
|
|
|
|
// 하단 CNVSNCMDNAME 값 갱신 (함수 적용 상태로 남아있던 값이 그대로 표시되는 것 방지)
|
|
$('textarea[name=CNVSNCMDNAME]').val(cnvsnCmdName);
|
|
});
|
|
|
|
$("#remove").click(function(){
|
|
var tgtRowId = targetGrid.getGridParam( "selrow" );
|
|
if (tgtRowId == null) {alert("타겟레이아웃을 선택하여 주십시요.");return;}
|
|
//grid data
|
|
var targetData = targetGrid.getRowData();
|
|
|
|
targetGrid.jqGrid('setCell', tgtRowId, 'CNVSNCMDNAME', null);
|
|
targetGrid.jqGrid('setCell', tgtRowId, 'CNVSNRSULTITEMPATHNAME', null);
|
|
targetGrid.jqGrid('setCell', tgtRowId, 'CNVSNITEMSERNO', null);
|
|
targetGrid.jqGrid('setCell', tgtRowId, 'CNVSNITEMBASCVAL', null);
|
|
|
|
// 하단 상세 입력값 초기화
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val('');
|
|
$('textarea[name=CNVSNCMDNAME]').val('');
|
|
$('input[name=CNVSNITEMBASCVAL]').val('');
|
|
$('input[name=CNVSNITEMSERNO]').val('');
|
|
});
|
|
|
|
$("textarea[name=CNVSNRSULTITEMPATHNAME],textarea[name=CNVSNCMDNAME],input[name=CNVSNITEMBASCVAL],input[name=CNVSNITEMSERNO]").blur(function(){
|
|
setTgtCell();
|
|
});
|
|
|
|
$("#btn_close").click(function() {
|
|
isValidMapping = true;
|
|
if (confirmLastAmnDhms()) {
|
|
window.close();
|
|
}
|
|
});
|
|
|
|
$("#btn_previous").click(function(){
|
|
doneAction();
|
|
});
|
|
|
|
$("#btn_modify").click(function(){
|
|
|
|
var cmd;
|
|
if (isDetail) {
|
|
cmd = "UPDATE";
|
|
} else {
|
|
cmd = "INSERT";
|
|
}
|
|
|
|
let useYn = $("select[name=useYn]").val();
|
|
if (useYn === null || useYn.trim() === "") {
|
|
useYn = "1";
|
|
}
|
|
|
|
//disabled 해제
|
|
$("select[name=eaiSevrDStcd]").attr("disabled",false);
|
|
|
|
if(!validation()) return;
|
|
|
|
var targetData = targetGrid.getRowData();
|
|
var gridData = new Array();
|
|
for (var i = 0; i <targetData.length; i++) {
|
|
if ((targetData[i]['loutItemType'] != "Field") && (targetData[i]['loutItemType'] != "Attr") && (targetData[i]['loutItemType'] != "Array")) {
|
|
continue;
|
|
}
|
|
if (targetData[i]['CNVSNCMDNAME']==null
|
|
|| targetData[i]['CNVSNCMDNAME']== undefined
|
|
|| targetData[i]['CNVSNCMDNAME'].trim() ==""
|
|
) continue;
|
|
|
|
gridData.push(targetGrid.jqGrid('getRowData', targetData[i]['id']));
|
|
|
|
}
|
|
var postData = [];
|
|
postData.push({ name: "cmd" , value:cmd});
|
|
postData.push({ name: "cnvsnName" , value:$("#transformForEaiSvcNameCombo").val()});
|
|
postData.push({ name: "cnvsnDesc" , value:$("input[name=cnvsnDesc]").val()});
|
|
postData.push({ name: "cnvsnType" , value:$("#transformForEaiSvcNameCombo").val().substr(-3)});
|
|
postData.push({ name: "eaiSevrDStcd" , value:$("select[name=eaiSevrDStcd]").val()});
|
|
postData.push({ name: "chkForce" , value:$("input:checkbox[name=chk_eaiSvcName]").is(":checked")});
|
|
postData.push({ name: "srcLayoutName" , value:$("input[name=srcLayout]").val()});
|
|
postData.push({ name: "tgtLayoutName" , value:$("input[name=tgtLayout]").val()});
|
|
postData.push({ name: "useYn" , value: useYn});
|
|
postData.push({ name: "verInfo" , value:$("input[name=verInfo]").val()});
|
|
postData.push({ name: "gridData" , value:JSON.stringify(gridData)});
|
|
postData.push({ name: "eaiSvcName" , value:$("input[name=eaiSvcName]").val()});
|
|
$("#ajax_wait_modal").show();
|
|
$.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
data:postData,
|
|
success:function(args){
|
|
$("#ajax_wait_modal").hide();
|
|
alert('<%=localeMessage.getString("common.saveMsg")%>');
|
|
|
|
var transform = args;
|
|
|
|
var lastAmnDhms = transform['LASTAMNDHMS'];
|
|
$('#cnvsnlastAmnDhms').val(transform['LASTAMNDHMS']);
|
|
$("#displayCnvsnlastAmnDhms").val(formatDate(transform['LASTAMNDHMS']));
|
|
|
|
var cnvsnType = $("input[name=cnvsnTypeCombo]").val();
|
|
$('#' + cnvsnType).attr('lastAmnDhms', lastAmnDhms);
|
|
doneAction();
|
|
},
|
|
error:function(e){
|
|
$("#ajax_wait_modal").hide();
|
|
alert(e.responseText);
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#addCmd").click(function(){
|
|
var tgtRowId = targetGrid.getGridParam( "selrow" );
|
|
if (isNull(tgtRowId)){
|
|
alert('<%=localeMessage.getString("transformManDetail.alert4")%>');
|
|
return;
|
|
}
|
|
|
|
var srcItemIds = $('#srcItemComboDialog').val();
|
|
if (isNull(srcItemIds) || srcItemIds.length == 0){
|
|
alert('<%=localeMessage.getString("transformManDetail.alert5")%>');
|
|
return;
|
|
}
|
|
|
|
var targetRow = targetGrid.getRowData( tgtRowId ); // 타겟 그리드에서 선택된 ROW 값
|
|
|
|
var itemNames = srcItemIds.map(function (srcItemId) {
|
|
var sourceRow = sourceGrid.getRowData( srcItemId ); // 소스 항목 콤보에서 선택된 ROW 값
|
|
return addArrayTag(sourceRow['loutItemType'], addGroupTag(srcGroup, sourceRow['LOUTITEMPATH']));
|
|
});
|
|
|
|
var cnvsnCmdName = itemNames.join(", ");
|
|
if ($('#functionComboDialog').val() != "") {
|
|
cnvsnCmdName = $('#functionComboDialog').val() + "(" + cnvsnCmdName + ")";
|
|
}
|
|
|
|
$('textarea[name=CNVSNCMDNAME]').val(cnvsnCmdName);
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val(addArrayTag(targetRow['loutItemType'], addGroupTag(tgtGroup, targetRow['LOUTITEMPATH'])));
|
|
$('input[name=CNVSNITEMSERNO]').val(targetRow['loutItemSerno']);
|
|
|
|
setTgtCell();
|
|
});
|
|
|
|
$("#btn_delete").click(function(){
|
|
if(!confirm("삭제하시겠습니까?")){
|
|
return;
|
|
}
|
|
|
|
var postData = [];
|
|
const cnvsnName = $("select[name=transformForEaiSvcNameCombo]").val();
|
|
const cnvsnType = cnvsnName.slice(-3);
|
|
|
|
postData.push({ name: "cmd" , value:"DELETE"});
|
|
postData.push({ name: "eaiSvcName", value:$("input[name=eaiSvcName]").val()});
|
|
postData.push({ name: "cnvsnName" , value: cnvsnName});
|
|
postData.push({ name: "cnvsnType" , value: cnvsnType});
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
data:postData,
|
|
success:function(args){
|
|
alert("삭제 되었습니다.");
|
|
if(isPop == "true"){
|
|
window.close();
|
|
const transformName ="${param.cnvsnName}";
|
|
window.parent.postMessage({cmd:'DELETE', type: 'transform', transformName});
|
|
}else{
|
|
goNav(returnUrl);
|
|
}
|
|
},
|
|
error:function(e){
|
|
alert(e.responseText);
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#btn_initialize").click(function(){
|
|
$.ajax({
|
|
type : "POST",
|
|
url:url,
|
|
dataType:"json",
|
|
data:{cmd: 'INITIALIZE',cnvsnName:$("select[name=transformForEaiSvcNameCombo]").val()},
|
|
success:function(json){
|
|
alert(json.message);
|
|
},
|
|
error:function(e){
|
|
alert(e.responseText);
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
if(isPop){
|
|
$(".content_top").css('display', 'none');
|
|
$(".content_middle").css('margin-top', '0px');
|
|
$(".content_middle").css('padding', '20px');
|
|
$("#btn_previous").html('<i class="material-icons">close</i> 닫기');
|
|
// $("input[name=srcLayout]").attr("readonly",true);
|
|
// $("input[name=tgtLayout]").attr("readonly",true);
|
|
// $("input[name=cnvsnDesc]").attr("readonly",true);
|
|
// $("input[name=eaiSvcName]").attr("readonly",true);
|
|
// $("select[name=transformForEaiSvcNameCombo]").attr("disabled",true);
|
|
// $("input:checkbox[name=chk_eaiSvcName]").attr("disabled",true);
|
|
// $("#btn_search").css('pointer-events','none');
|
|
// $("#btn_searchSrcLout").hide();
|
|
// $("#btn_searchTgtLout").hide();
|
|
//$("input[name=srcLayout]").css('width','100%');
|
|
//$("input[name=tgtLayout]").css('width','100%');
|
|
}
|
|
|
|
buttonControl();
|
|
// setBtnHide(roleString, "admin", "btn_initialize");
|
|
});
|
|
|
|
function setTgtCell() {
|
|
var rowId = targetGrid.getGridParam( "selrow" );
|
|
if (isNull(rowId)) return;
|
|
|
|
targetGrid.jqGrid('setCell',rowId,'CNVSNRSULTITEMPATHNAME',$('textarea[name=CNVSNRSULTITEMPATHNAME]').val());
|
|
targetGrid.jqGrid('setCell',rowId,'CNVSNCMDNAME',$('textarea[name=CNVSNCMDNAME]').val());
|
|
targetGrid.jqGrid('setCell',rowId,'CNVSNITEMBASCVAL',$('input[name=CNVSNITEMBASCVAL]').val() == "" ? null : $('input[name=CNVSNITEMBASCVAL]').val());
|
|
targetGrid.jqGrid('setCell',rowId,'CNVSNITEMSERNO',$('input[name=CNVSNITEMSERNO]').val());
|
|
}
|
|
|
|
// treeGrid 에서 rowid 가 접혀있는 상위 노드 아래에 있으면 화면에 보이도록 상위 노드를 모두 펼친다
|
|
function expandAncestors(grid, rowid) {
|
|
var rowData = grid.jqGrid('getRowData', rowid);
|
|
var parentId = rowData ? rowData['parent_id'] : null;
|
|
while (parentId != null && parentId != '' && parentId != '#') {
|
|
var parentData = grid.jqGrid('getRowData', parentId);
|
|
if (!parentData || $.isEmptyObject(parentData)) break;
|
|
grid.jqGrid('expandNode', parentData);
|
|
grid.jqGrid('expandRow', parentData);
|
|
parentId = parentData['parent_id'];
|
|
}
|
|
}
|
|
|
|
function selectGridRow(grid, rowid) {
|
|
expandAncestors(grid, rowid);
|
|
grid.jqGrid('setSelection', rowid, false);
|
|
var rowEl = grid.find('#' + rowid);
|
|
if (rowEl.length > 0) {
|
|
rowEl[0].scrollIntoView({block: 'nearest'});
|
|
}
|
|
}
|
|
|
|
function isMappableItemType(loutItemType) {
|
|
return loutItemType == 'Field' || loutItemType == 'Attr' || loutItemType == 'Array';
|
|
}
|
|
|
|
// 소스 항목 선택 시, 이미 매핑된 타겟 항목(CNVSNCMDNAME에 해당 경로 포함)을 찾아 선택
|
|
function tgtGridSelect(loutItemPath, rowId) {
|
|
var matchPath = loutItemPath ? loutItemPath.replace(/\[\*\]/g, "") : '';
|
|
var bestId = null;
|
|
|
|
if (matchPath != '') {
|
|
var ids = targetGrid.jqGrid('getDataIDs');
|
|
for (var i = 0; i < ids.length; i++) {
|
|
// 그룹/그리드 노드는 매핑 대상이 아니므로 제외 (상위 노드 경로가 하위 경로의 접두어라 잘못 매칭되는 것을 방지)
|
|
if (!isMappableItemType(targetGrid.jqGrid('getCell', ids[i], 'loutItemType'))) continue;
|
|
|
|
var cmdName = targetGrid.jqGrid('getCell', ids[i], 'CNVSNCMDNAME');
|
|
if (cmdName && cmdName.replace(/\[\*\]/g, "").indexOf(matchPath) > -1) {
|
|
bestId = ids[i];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (bestId != null) {
|
|
// 매핑된 타겟 항목을 선택하고, 하단 입력값도 해당 타겟 데이터로 갱신
|
|
selectGridRow(targetGrid, bestId);
|
|
var rowData = targetGrid.getRowData(bestId);
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val(rowData['CNVSNRSULTITEMPATHNAME']);
|
|
$('textarea[name=CNVSNCMDNAME]').val(rowData['CNVSNCMDNAME']);
|
|
$('input[name=CNVSNITEMBASCVAL]').val(rowData['CNVSNITEMBASCVAL']);
|
|
$('input[name=CNVSNITEMSERNO]').val(rowData['CNVSNITEMSERNO']);
|
|
} else {
|
|
// 매핑되지 않은 소스면 하단 항목명 입력값을 초기화 (상대 그리드의 기존 선택은 그대로 둔다)
|
|
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val('');
|
|
$('textarea[name=CNVSNCMDNAME]').val('');
|
|
$('input[name=CNVSNITEMBASCVAL]').val('');
|
|
$('input[name=CNVSNITEMSERNO]').val('');
|
|
}
|
|
}
|
|
|
|
// 타겟 항목 선택 시, CNVSNCMDNAME에 포함된 소스 항목을 찾아 선택
|
|
function srcGridSelect(cnvsnCmdName, rowId) {
|
|
var matchCmd = cnvsnCmdName ? cnvsnCmdName.replace(/\[\*\]/g, "") : '';
|
|
var bestId = null;
|
|
var bestLen = -1;
|
|
|
|
if (matchCmd != '') {
|
|
var ids = sourceGrid.jqGrid('getDataIDs');
|
|
for (var i = 0; i < ids.length; i++) {
|
|
// 그룹/그리드 노드는 매핑 대상이 아니므로 제외 (상위 그룹 경로가 하위 필드 경로의 접두어라 잘못 매칭되는 것을 방지)
|
|
if (!isMappableItemType(sourceGrid.jqGrid('getCell', ids[i], 'loutItemType'))) continue;
|
|
|
|
var loutItemPath = sourceGrid.jqGrid('getCell', ids[i], 'LOUTITEMPATH');
|
|
var path = loutItemPath ? loutItemPath.replace(/\[\*\]/g, "") : '';
|
|
// 가장 구체적인(긴) 경로가 일치하는 항목을 선택 (짧은 경로가 우연히 부분 일치하는 경우 방지)
|
|
if (path != '' && matchCmd.indexOf(path) > -1 && path.length > bestLen) {
|
|
bestId = ids[i];
|
|
bestLen = path.length;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 매핑되지 않은 항목이면 상대 그리드의 기존 선택은 그대로 둔다
|
|
if (bestId != null) {
|
|
selectGridRow(sourceGrid, bestId);
|
|
}
|
|
}
|
|
|
|
function mouseoverJqgrid(loutItemName, grid) {
|
|
// 해당 row의 이름을 조회 하여 해당 row의 배경색을 강조
|
|
console.debug('mouseoverJqgrid loutItemName : ' + loutItemName);
|
|
const rowDatas = grid.findRowDatasByLayoutItemName(loutItemName);
|
|
// 기존의 row의 class를 모두 삭제
|
|
grid.find('tr').removeClass('div-hover');
|
|
// 신규 row의 class를 추가
|
|
$(rowDatas).each(function(i, rowData) {
|
|
grid.find('#' + rowData['id']).addClass('div-hover');
|
|
});
|
|
}
|
|
|
|
function mouseoutJqgrid(loutItemName, grid) {
|
|
if (!isContextMenuShow) {
|
|
// context menu 가 열려 있을 경우
|
|
console.debug('mouseoutJqgrid loutItemName : ' + loutItemName);
|
|
grid.find('tr').removeClass('div-hover');
|
|
}
|
|
}
|
|
|
|
|
|
function reloadSourceTargetGrid(cnvsnName) {
|
|
|
|
var conversionName = cnvsnName;
|
|
|
|
if(conversionName == undefined) {
|
|
conversionName = $("#transformForEaiSvcNameCombo").val();
|
|
} else {
|
|
$("#transformForEaiSvcNameCombo").val(cnvsnName).prop("selected", true);
|
|
}
|
|
|
|
getSourceResult(conversionName);
|
|
}
|
|
|
|
$(function () {
|
|
|
|
$("#transformForEaiSvcNameCombo").change(function() {
|
|
reloadSourceTargetGrid();
|
|
});
|
|
$("#btn_searchSrcLout").click(function(){
|
|
layoutListPop("srcLayout", "srcLayoutDesc", sourceGrid);
|
|
});
|
|
$("#btn_searchTgtLout").click(function(){
|
|
layoutListPop("tgtLayout", "tgtLayoutDesc", targetGrid);
|
|
});
|
|
|
|
$("#btn_search").click(function(){
|
|
var key = "";
|
|
var args = new Object();
|
|
args['eaiSvcName'] = $('input[name=eaiSvcName]').val();
|
|
var url=url_view; //'<c:url value="/onl/transaction/extnl/interfaceMan.view"/>';
|
|
url = url + "?cmd=API_POPUP";
|
|
var ret = showModal(url,args,1020,630, function(arg){
|
|
var args = null;
|
|
if(arg == null || arg == undefined ) {//chrome
|
|
args = this.dialogArguments;
|
|
args.returnValue = this.returnValue;
|
|
} else {//ie
|
|
args = arg;
|
|
}
|
|
|
|
if( !args || !args.returnValue ) return;
|
|
|
|
var ret = args.returnValue;
|
|
console.log("ret",ret);
|
|
key = ret['apiId'];
|
|
|
|
$("input[name=eaiSvcName]").val(key);
|
|
$("input[name=eaiSvcDesc]").val(ret['apiDesc']);
|
|
bzwkDstCd = ret['bizCode'];
|
|
|
|
$("input[name=eaiSvcName]").change();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
function layoutListPop(loutName, loutDesc, gridObj) {
|
|
|
|
var key = "";
|
|
var args = new Object();
|
|
args['loutName'] = $('input[name=' + loutName + ']').val();
|
|
args['selLoutName'] = loutName;
|
|
var urlLayout = url_view;
|
|
urlLayout = urlLayout + "?cmd=LAYOUT";
|
|
|
|
var result = showModal(urlLayout,args,800,708, function(arg){
|
|
var args = null;
|
|
if(arg == null || arg == undefined ) {//chrome
|
|
args = this.dialogArguments;
|
|
args.returnValue = this.returnValue;
|
|
} else {//ie
|
|
args = arg;
|
|
}
|
|
|
|
if( !args || !args.returnValue ) return;
|
|
|
|
var result = args.returnValue;
|
|
|
|
if( result ) {
|
|
$("input[name=" + loutName + "]").val(result.key);
|
|
$("input[name=" + loutDesc + "]").val(result.loutDesc);
|
|
|
|
//gridObj.setGridParam( {url :url ,postData: { cmd : 'LIST_LAYOUT_ITEM', loutName: result.key } }).trigger("reloadGrid");
|
|
if (loutName == "srcLayout") {
|
|
listLayoutItem(result.key, "", "");
|
|
} else {
|
|
listLayoutItemForTarget(result.key, "", "");
|
|
}
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
function reloadCnvsnDesc() {
|
|
var selectedCnvsnCode = $("#transformForEaiSvcNameCombo option:selected").val();
|
|
var cnvsnObj = transformRows.find(function (rows) {
|
|
return rows.CODE == selectedCnvsnCode;
|
|
});
|
|
if (cnvsnObj) {
|
|
console.debug(cnvsnObj);
|
|
$("#cnvsnDesc").val(cnvsnObj.NAME);
|
|
}
|
|
}
|
|
|
|
function removeNamespace(element) {
|
|
return element.replace(/\w+:/g, "");
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div class="right_box" id="right_box">
|
|
<div class="content_top">
|
|
<ul class="path">
|
|
<li><a href="#">${rmsMenuPath}</a></li>
|
|
</ul>
|
|
</div><!-- end content_top -->
|
|
<div class="content_middle" id="dropArea">
|
|
<div class="search_wrap">
|
|
<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL"><i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %></button>
|
|
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
|
|
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
|
<%-- <img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" /> --%>
|
|
<%-- <img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW" /> --%>
|
|
</div>
|
|
<div class="title"><%=localeMessage.getString("tran2ManDt.title")%></div>
|
|
<input type="hidden" name="cnvsnTypeCombo">
|
|
<table class="search_condition" cellspacing="0">
|
|
<tr>
|
|
<th style="width:13%; min-width:130px;"><%=localeMessage.getString("tran2ManDt.intfId")%></th>
|
|
<td style="width:*">
|
|
<input type="text" name="eaiSvcName" style="width:calc(100% - 220px);" readonly>
|
|
<button type="button" class="cssbtn smallBtn2" id="btn_search" style="vertical-align:middle; font-weight:bold;" level="R"><i class="material-icons">search</i><%= localeMessage.getString("button.search") %></button>
|
|
<input type="checkbox" name="chk_eaiSvcName" id="sub2_4_3_modify_1"><label for="sub2_4_3_modify_1"><%=localeMessage.getString("transformManDetail.ifSvcCdChk")%></label>
|
|
</td>
|
|
<th style="width:13%; min-width:130px;"><%=localeMessage.getString("tran2ManDt.verInfo")%></th>
|
|
<td style="width: 30%">
|
|
<input type="text" name="verInfo" value="0" readonly>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("tran2ManDt.intfNm")%></th>
|
|
<td>
|
|
<input type="text" name="eaiSvcDesc" readonly="readonly">
|
|
</td>
|
|
<th><%=localeMessage.getString("tran2ManDt.svrClaCd")%></th>
|
|
<td>
|
|
<div class="select-style">
|
|
<select id="eaiSevrDStcd" name="eaiSevrDStcd"></select>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("tran2ManDt.conRlCd")%></th>
|
|
<td>
|
|
<div class="select-style">
|
|
<select id="transformForEaiSvcNameCombo" name="transformForEaiSvcNameCombo" ></select>
|
|
</div>
|
|
</td>
|
|
<th><%=localeMessage.getString("tran2ManDt.useYn")%></th>
|
|
<td >
|
|
<div class="select-style" >
|
|
<select id="useYn" name="useYn"></select>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("tran2ManDt.conRlDesc")%></th>
|
|
<td>
|
|
<input type="text" id="cnvsnDesc" name="cnvsnDesc">
|
|
</td>
|
|
<th><%=localeMessage.getString("tran2ManDt.defConCom")%></th>
|
|
<td>
|
|
<div class="select-style" >
|
|
<select id="functionCombo" name="functionCombo"></select>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<!-- tree -->
|
|
<table style="width:100%; " >
|
|
<tr>
|
|
<td style="width:30%; vertical-align:top;">
|
|
<table class="table_row" cellspacing="0">
|
|
<tr>
|
|
<th style="width:15%; min-width:130px;"><%=localeMessage.getString("tran2ManDt.ioMsgIdBfCon")%></th>
|
|
<td>
|
|
<input type="text" name="srcLayout" style="width:85%" readonly="readonly" />
|
|
<button type="button" class="cssbtn smallBtn2" id="btn_searchSrcLout" style="vertical-align:middle; font-weight:bold;" level="R"><i class="material-icons">search</i><%= localeMessage.getString("button.search") %></button>
|
|
<input type="hidden" name="srcLoutIoId" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("tran2ManDt.ioMsgIdNmBfCon")%></th>
|
|
<td>
|
|
<input type="text" name="srcLayoutDesc" readonly="readonly">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<div id="sourceGridTd" style="margin-bottom:15px;">
|
|
<table id="sourceGrid"></table>
|
|
<div id="sourcePage"></div>
|
|
</div>
|
|
<table class="table_row" cellspacing="0">
|
|
<tr>
|
|
<th style="width:13%; min-width:130px;"><%=localeMessage.getString("transformManDetail.transCmdName")%></th>
|
|
<td>
|
|
<div class="select-style" style="display:inline-block; width:calc((100% - 70px)*0.3);">
|
|
<select id="functionComboDialog" name="functionComboDialog" style="width:100%; box-sizing:border-box; padding-right:15px;"></select>
|
|
</div>
|
|
<div class="select-style" style="display:inline-block; width:calc((100% - 70px)*0.7);">
|
|
<select id="srcItemComboDialog" name="srcItemComboDialog" multiple size="1" style="width:100%; box-sizing:border-box; padding-right:15px;"></select>
|
|
</div>
|
|
<button type="button" class="cssbtn smallBtn2" id="addCmd" name="addCmd" style="vertical-align:middle; font-weight:bold;"><i class="material-icons">add</i><%= localeMessage.getString("button.add") %></button>
|
|
</td>
|
|
</tr>
|
|
<tr height="40px">
|
|
<td colspan="2"><textarea name="CNVSNCMDNAME" style="height:100%"></textarea></td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("transformManDetail.default")%></th>
|
|
<td><input type="text" name="CNVSNITEMBASCVAL"/></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td style="width: 100px; text-align:center; vertical-align: middle; ">
|
|
<button type=button id="auto" name="auto" class="cssbtn btn_move" title="auto"> Auto </button><br />
|
|
<button type=button id="add" name="add" class="cssbtn btn_move" title="add"> > </button><br />
|
|
<button type=button id="addAll" name="addAll" class="cssbtn btn_move" title="add all"> >> </button><br />
|
|
<button type=button id="remove" name="remove" class="cssbtn btn_move" title="remove"><</button><br />
|
|
<button type=button id="removeAll" name="removeAll" class="cssbtn btn_move" title="remove all"> << </button>
|
|
</td>
|
|
<td style="vertical-align:top;">
|
|
<table class="table_row" cellspacing="0">
|
|
<tr>
|
|
<th style="width:13%; min-width:130px;"><%=localeMessage.getString("tran2ManDt.ioMsgIdAtCon")%></th>
|
|
<td>
|
|
<input type="text" name="tgtLayout" style="width:85%" readonly="readonly" >
|
|
<button type="button" class="cssbtn smallBtn2" id="btn_searchTgtLout" style="vertical-align:middle; font-weight:bold;" level="R"><i class="material-icons">search</i><%= localeMessage.getString("button.search") %></button>
|
|
<input type="hidden" name="tgtLoutIoId" value=""/>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("tran2ManDt.ioMsgIdNmAtCon")%></th>
|
|
<td>
|
|
<input type="text" name="tgtLayoutDesc" readonly="readonly">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div id="targetGridTd" style="margin-bottom:15px;">
|
|
<table id="targetGrid"></table>
|
|
<div id="targetPage"></div>
|
|
</div>
|
|
<table class="table_row" cellspacing="0">
|
|
<tr height="75px">
|
|
<th style="width:13%; min-width:130px;"><%=localeMessage.getString("transformManDetail.tgtItemName")%></th>
|
|
<td><textarea name="CNVSNRSULTITEMPATHNAME" readonly="readonly"></textarea></td>
|
|
</tr>
|
|
<tr>
|
|
<th><%=localeMessage.getString("transformManDetail.mappSerNo")%></th>
|
|
<td><input type="text" name="CNVSNITEMSERNO" readonly="readonly"/></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div><!-- end right_box -->
|
|
</div>
|
|
<div id="ajax_wait_modal" class="ajax_wait_modal">
|
|
</div>
|
|
</body>
|
|
</html> |