목차

XTran 로깅 가이드

예시

템플릿 위치: /STUDIO/SCRIPT/xtran_log

템플릿 파일

화면 스크립트

/**
 * 가정 사항
 * 	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());
}