전문레이아웃매핑 변환명령에 아이템 멀티선택 콤보 추가
eapim-admin CI / build (push) Has been cancelled

This commit is contained in:
eastargh
2026-08-12 17:04:04 +09:00
parent d1eecb4ee7
commit 2cdd321c39
@@ -33,6 +33,8 @@
const LAYOUT_ITEM_TYPE_FIELD = "Field"; const LAYOUT_ITEM_TYPE_FIELD = "Field";
const LAYOUT_ITEM_TYPE_ARRAY = "Array"; const LAYOUT_ITEM_TYPE_ARRAY = "Array";
var srcItemComboOptionFormat = '"["+this.data[index]["LOUTITEMPATH"]+"] "+this.data[index]["loutItemDesc"]';
var isDetail = false; var isDetail = false;
var srcGroup; var srcGroup;
@@ -230,6 +232,13 @@
} }
} }
// 변환명령에서 매핑 가능한(필드 유형) 소스 항목만 콤보로 표시
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) { sourceGrid.find('.jqgrow').mouseover(function (e) {
var rowId = $(this).attr('id'); var rowId = $(this).attr('id');
const loutItemName = sourceGrid.getRowData(rowId)['loutItemName'] const loutItemName = sourceGrid.getRowData(rowId)['loutItemName']
@@ -499,6 +508,17 @@
}, },
onSelectRow: function (rowId) { onSelectRow: function (rowId) {
var rowData = sourceGrid.getRowData(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); tgtGridSelect(rowData['LOUTITEMPATH'], rowId);
} }
@@ -576,6 +596,17 @@
}, },
onSelectRow: function (rowId) { onSelectRow: function (rowId) {
var rowData = targetGrid.getRowData(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=CNVSNRSULTITEMPATHNAME]').val(rowData['CNVSNRSULTITEMPATHNAME']);
$('textarea[name=CNVSNCMDNAME]').val(rowData['CNVSNCMDNAME']); $('textarea[name=CNVSNCMDNAME]').val(rowData['CNVSNCMDNAME']);
$('input[name=CNVSNITEMBASCVAL]').val(rowData['CNVSNITEMBASCVAL']); $('input[name=CNVSNITEMBASCVAL]').val(rowData['CNVSNITEMBASCVAL']);
@@ -703,9 +734,13 @@
return ; return ;
} }
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNCMDNAME',addArrayTag(sourceRow['loutItemType'], addGroupTag(srcGroup,sourceRow['LOUTITEMPATH']))); 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,'CNVSNRSULTITEMPATHNAME',addArrayTag(targetRow['loutItemType'], addGroupTag(tgtGroup,targetRow['LOUTITEMPATH'])));
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNITEMSERNO',targetRow['loutItemSerno']); targetGrid.jqGrid('setCell',tgtRowId,'CNVSNITEMSERNO',targetRow['loutItemSerno']);
// 하단 CNVSNCMDNAME 값 갱신 (함수 적용 상태로 남아있던 값이 그대로 표시되는 것 방지)
$('textarea[name=CNVSNCMDNAME]').val(cnvsnCmdName);
}); });
$("#remove").click(function(){ $("#remove").click(function(){
@@ -820,22 +855,25 @@
return; return;
} }
var srcRowId = sourceGrid.getGridParam( "selrow" ); var srcItemIds = $('#srcItemComboDialog').val();
if (isNull(srcRowId)){ if (isNull(srcItemIds) || srcItemIds.length == 0){
alert('<%=localeMessage.getString("transformManDetail.alert5")%>'); alert('<%=localeMessage.getString("transformManDetail.alert5")%>');
return; return;
} }
var targetRow = targetGrid.getRowData( tgtRowId ); // 타겟 그리드에서 선택된 ROW 값 var targetRow = targetGrid.getRowData( tgtRowId ); // 타겟 그리드에서 선택된 ROW 값
var sourceRow = sourceGrid.getRowData( srcRowId ); // 소스 그리드에서 선택된 ROW 값
var cnvsnCmdName = addArrayTag(sourceRow['loutItemType'], addGroupTag(srcGroup, sourceRow['LOUTITEMPATH'])); 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() != "") { if ($('#functionComboDialog').val() != "") {
cnvsnCmdName = $('#functionComboDialog').val() + "(" + cnvsnCmdName + ")"; cnvsnCmdName = $('#functionComboDialog').val() + "(" + cnvsnCmdName + ")";
} }
var existingCmdName = $('textarea[name=CNVSNCMDNAME]').val(); $('textarea[name=CNVSNCMDNAME]').val(cnvsnCmdName);
$('textarea[name=CNVSNCMDNAME]').val(existingCmdName ? existingCmdName + ' ' + cnvsnCmdName : cnvsnCmdName);
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val(addArrayTag(targetRow['loutItemType'], addGroupTag(tgtGroup, targetRow['LOUTITEMPATH']))); $('textarea[name=CNVSNRSULTITEMPATHNAME]').val(addArrayTag(targetRow['loutItemType'], addGroupTag(tgtGroup, targetRow['LOUTITEMPATH'])));
$('input[name=CNVSNITEMSERNO]').val(targetRow['loutItemSerno']); $('input[name=CNVSNITEMSERNO]').val(targetRow['loutItemSerno']);
@@ -1243,8 +1281,11 @@
<tr> <tr>
<th style="width:13%; min-width:130px;"><%=localeMessage.getString("transformManDetail.transCmdName")%></th> <th style="width:13%; min-width:130px;"><%=localeMessage.getString("transformManDetail.transCmdName")%></th>
<td> <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);"> <div class="select-style" style="display:inline-block; width:calc((100% - 70px)*0.7);">
<select id="functionComboDialog" name="functionComboDialog" style="width:120%;"></select> <select id="srcItemComboDialog" name="srcItemComboDialog" multiple size="1" style="width:100%; box-sizing:border-box; padding-right:15px;"></select>
</div> </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> <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> </td>