====== XTran 로깅 가이드 ======
===== 예시 =====
템플릿 위치: /STUDIO/SCRIPT/xtran_log
템플릿 파일
* [[xf5projecthome>template/screen/STUDIO/SCRIPT/xtran_log.xml|xtran_log.xml]]
* [[xf5projecthome>template/screen/STUDIO/SCRIPT/xtran_log.js|xtran_log.js]]
* [[xf5projecthome>template/template.html?xframe_screen_url=/STUDIO/SCRIPT/xtran_log|새창으로 실행]]
echo '';
echo '';
echo '';
==== 화면 스크립트 ====
/**
* 가정 사항
* SYSUtil이라는 공통 모듈에 아래의 CallbackXTranLog 함수 있음
* 현재 화면이 "XTRANLOG" 팝업으로 이름으로 모달리스 방식으로 로드됨
* 예시) factory.loadpopup("XTRANLOG", "/SYS/UTIL/XTranLog", "XTRANLOG", false, XFD_BORDER_RESIZE, 0, 0, true, bModal, screen);
* CALLBACK_XTRAN_DATALOG 실행 파라미터값: "SYSUtil.CallbackXTranLog"
* XTRAN_DATALOG_SHOWTYPE 실행 파라미터값: 2
* 예시) 0:console trace(default), 1:browser console, 2:callback
* objXTranLogInfo 파라미터 구조
* var objXTranLogInfo = {
* start_date: "20211014", // 거래 시작 일자
* start_time: "123456", // 거래 시작 시각
* screen_url: "screen_url", // 화면 URL
* screen_id: "screen_id", // 화면 ID
* xtran_mapid: "xtran_mapid", // XTRANMAP ID
* xtran_url: "xtran_url", // XTRANMAP URL
* xtran_result: "xtran_result", // XTRANMAP RESULT
* time_total: "ms", // 데이터 송신전 시간부터 데이터 수신, 처리, 콜백함수 처리 완료 시간 기준(단위: ms)
* // (time_server + time_engine + time_callback)
* time_server: "ms", // 데이터 송신전 시간부터 데이터 수신 완료 시간 기준(단위: ms)
* time_engine: "ms", // 데이터 수신 완료 시간부터 데이터 처리 완료 시간 기준(단위: ms)
* time_callback: "ms", // 데이터 처리 완료 시간부터 콜백함수 처리 완료 시간 기준(단위: ms)
* send_data: '{ "send_data": "send_data" }', // 송신 데이터
* recv_data: '{ "recv_data": "recv_data" }' // 수신 데이터
* };
*/
// SYUtil 공통 모듈에 추가될 함수 예시 시작
/*
function CallbackXTranLog(objXTranLogInfo) {
var objPopupScreen, objPopupMember;
objPopupScreen = factory.findpopup("XTRANLOG");
if (objPopupScreen) {
objPopupMember = objPopupScreen.getmembers();
if (objPopupMember) {
objPopupMember.process_xtranloginfo(objXTranLogInfo);
}
}
}
*/
// JSON 문자열을 트리형태로 표시처리
/**
* JSON 문자열을 트리형태로 표시처리
*/
function display_json_data(json_view_div, json_data_str, is_expand_tree) {
var json_data_tree;
json_view_div.innerHTML = '';
if (json_data_str.length == 0) { return; }
try {
json_data_tree = JsonView.createTree(json_data_str);
JsonView.render(json_data_tree, json_view_div);
if (is_expand_tree) {
JsonView.expandChildren(json_data_tree);
}
}
catch(error) {
alert(error.message);
}
}
function process_xtranloginfo(objXTranLogInfo) {
var row_index;
row_index = grd_list.addrow();
grd_list.setitemtext(row_index, 0, objXTranLogInfo.start_date);
grd_list.setitemtext(row_index, 1, objXTranLogInfo.start_time);
grd_list.setitemtext(row_index, 2, objXTranLogInfo.screen_url);
grd_list.setitemtext(row_index, 3, objXTranLogInfo.screen_id);
grd_list.setitemtext(row_index, 4, objXTranLogInfo.xtran_mapid);
grd_list.setitemtext(row_index, 5, objXTranLogInfo.xtran_url);
grd_list.setitemtext(row_index, 6, objXTranLogInfo.xtran_result);
grd_list.setitemtext(row_index, 7, objXTranLogInfo.time_total);
grd_list.setitemtext(row_index, 8, objXTranLogInfo.time_server);
grd_list.setitemtext(row_index, 9, objXTranLogInfo.time_engine);
grd_list.setitemtext(row_index, 10, objXTranLogInfo.time_callback);
// 송수신 데이터가 너무 큰 경우, 제외 처리 추가 필요함
if (objXTranLogInfo.send_data.length > 100000) { }
if (objXTranLogInfo.recv_data.length > 100000) { }
grd_list.setitemtext(row_index, 11, objXTranLogInfo.send_data);
grd_list.setitemtext(row_index, 12, objXTranLogInfo.recv_data);
}
// 화면 로드 이벤트
function screen_on_load()
{
// JSON 데이터 표시를 위한 CSS 및 JavaScript 로드
screen.loadcss("/xf5/html/jsonview.bundle.css");
screen.loadjs("/xf5/html/jsonview.bundle.js");
// 0:console trace(default), 1:browser console, 2:callback)
factory.setxtrandatalogshowtype(2);
cbo_datalog.setselectedcode(factory.getxtrandatalog());
}
// 그리드 아이템 클릭 이벤트
function grd_list_on_itemclick(objInst, nClickRow, nClickColumn, bBtnClick, nImgIndex, strImgUrl)
{
if (nClickRow < 0) { return; }
// 선택된 아이템에 해당하는 송수신 데이터를 표시
display_json_data(div_senddata.getdom(), grd_list.getitemtext(nClickRow, 11), true);
display_json_data(div_recvdata.getdom(), grd_list.getitemtext(nClickRow, 12), true);
}
// "체크행 삭제" 버튼 이벤트 처리
function btn_delete_check_on_mouseup(objInst)
{
grd_list.deletecheckedrow();
}
// "전체 삭제" 버튼 이벤트 처리
function btn_delete_all_on_mouseup(objInst)
{
grd_list.deleteall();
}
// "닫기" 버튼 이벤트 처리
function btn_close_on_mouseup(objInst)
{
screen.unload();
}
// "테스트" 버튼 이벤트 처리
function btn_test_on_mouseup(objInst)
{
var objXTranLogInfo = {
start_date: "20211014",
start_time: "123456",
screen_url: "screen_url",
screen_id: "screen_id",
xtran_mapid: "xtran_mapid",
xtran_url: "xtran_url",
xtran_result: "xtran_result",
time_total: "ms",
time_server: "ms",
time_engine: "ms",
time_callback: "ms",
send_data: '{ "send_data": "send_data" }',
recv_data: '{ "recv_data": "recv_data" }'
};
process_xtranloginfo(objXTranLogInfo);
}
function btn_setxtrandatalog_on_mouseup(objInst)
{
// xFrame5 콘솔창에 송수신 데이터 로깅 옵션 설정
factory.setxtrandatalog(cbo_datalog.getselectedcode());
}