====== Global Callback 가이드 ====== 글로벌 콜백은 아래와 같은 기능을 제공한다. |< 100% 150px - >| ^ 구분 ^ 설명 ^ | 목적 | 각 화면에서 발생하는 이벤트를 전역적으로 처리하기 위한 공통 기능을 글로벌 모듈에서 개발하기 위한 기능을 제공한다. | | 용어 정의 | “콜백”은 특정 이벤트에 개발자가 지정한 이벤트 처리용 함수를 의미한다. | | 콜백 지정 | 해당 실행 파리미터에 콜백 함수 이름을 지정한다.\\ 예: CALLBACK_FOCUSMOVE_KEY: “SYSUtil.CallbackFocusMoveKey” | | 콜백 리턴값 | 콜백 리턴값에 따라 이벤트에 대한 기본 동작 수행 여부를 제어할 수 있다. | | 일반 글로벌 콜백 | 일반 글로벌 콜백은 실행 파라미터에 지정한 경우 발생시 호출되는 콜백이다. | | 이벤트 글로벌 콜백 | 이벤트 글로벌 콜백은 실행 파라미터에 지정한 xFrame5 이벤트에 대해서 호출되는 콜백이다. | | 샘플 소스 및 형식 | “화면”→”템플릿 화면” 팝업 창에서 “/HTML5/COMMON_MODULE/global_callback(글로벌 콜백)”을 선택하면 샘플소스를 확인할 수 있다. | 템플릿 위치: /HTML5/COMMON_MODULE/global_callback 템플릿 파일 * [[xf5projecthome>template/screen/HTML5/COMMON_MODULE/global_callback.xml|global_callback.xml]] * [[xf5projecthome>template/screen/HTML5/COMMON_MODULE/global_callback.js|global_callback.js]] * [[xf5projecthome>template/template.html?xframe_screen_url=/HTML5/COMMON_MODULE/global_callback|새창으로 실행]] ===== 일반 글로벌 콜백 ===== 일반 글로벌 콜백은 특정한 이벤트 발생시 호출되는 콜백으로 지정가능한 내용은 아래와 같다. (참고: 목록은 알파벳 순이다.) 상세 내용은 아래 실행 파라미터별 샘플 소스내 주석을 참조한다. ^ 구분 ^ 내용 ^ | CALLBACK_BROWSER_DOCKING | 전용브라우저가 런타임브라우저와 탭모드로 연동한 경우 탭모드에서 도킹상태가 변경되었을때 호출된다. | | CALLBACK_EXCEL_DOWNLOAD | 엑셀 다운로드 진행시, 다른 방식으로 수행하기 위한 콜백이다. | | CALLBACK_EXCEL_UPLOAD | 엑셀 업로드 진행시, 다른 방식으로 수행하기 위한 콜백이다. | | CALLBACK_FOCUSMOVE_KEY | 키 입력에 의해서 포커스 이동전에 호출되며 콜백 리턴값을 기준으로 포커스 이동을 제어한다. | | CALLBACK_META_DATA | 메타 데이터를 이용하여 컴포넌트 생성시 호출되는 콜백이다. | | CALLBACK_META_LOAD | 메타 데이터 로드시 호출되는 콜백이다. | | CALLBACK_GRID_DOWNLOADEXCEL | 그리드 컨텍스트 메뉴의 “엑셀 저장” 또는 그리드 downloadexcel API 호출시 호출된다. | | CALLBACK_GRID_DRMFILEREAD | 전용 브라우저 환경경서 DRM_APPLY_TYPE 실행 파라미터가 2인 경우, 그리드 DRM 파일 읽기 전/후 호출된다. | | CALLBACK_GRID_EXCEL_LOAD | 그리드에 엑셀 업로드 완료 후 호출된다. | | CALLBACK_GRID_PREKEYDOWN |그리드 키 처리 전에 호출되며, 리턴값을 기준으로 그리드 키 처리 여부를 결정된다. | | CALLBACK_GRID_UPLOADEXCEL | 그리드 컨텍스트 메뉴의 “엑셀 불러오기” 또는 그리드 uploadexcel API 호출시 호출된다. | | CALLBACK_GRID_SAVECSV | 그리드 컨텍스트 메뉴의 “CSV 저장” 또는 그리드 savecsv API 호출시 호출된다. | | CALLBACK_PICKLIST_URL | 픽리스트(공통코드) URL 호출전 호출되며, 조건에 따라 픽리스트 URL 을 변경해야 할 경우에 사용된다. | | CALLBACK_SCREEN_URL | 화면 URL 호출전 호출되며, 조건에 따라 화면 URL 을 변경해야 할 경우에 사용된다. | | CALLBACK_SCRIPT_ERROR | 화면내 스크립트 동작 오류 발생시 호출된다. 스크립트 실행시 try/catch 문으로 검출 가능한 오류에 대해서만 호출된다. | | CALLBACK_VALIDATION_ALERT | 값 검증 Alert 처리 전 호출되며, 값 검증 오류시 처리할 메시지박스 또는 내용을 제어한다. | | CALLBACK_XPLUS_FILEDOWNLOAD | 전용 브라우저환경에서 파일 다운로드 완료시 호출된다. | | CALLBACK_XTRAN_DATALOG | XTRAN_DATALOG를 0이 아닌 값을 설정하고, XTRAN_DATALOG_SHOWTYPE 실행 파라미터를 2로 지정한 경우, XDataSet 통신 데이터 로깅 처리시 호출된다.\\ 자세한 내용은 [[..:studio:script:xtran_log|XTran 로깅 가이드]]를 참조한다. | | CALLBACK_REQUESTTRAN_SENDDATAFUNC | screen requesttran API를 통해 송신 처리 전에 호출된다. | | CALLBACK_REQUESTTRAN_RECVDATAFUNC | screen requesttran API를 통해 수신된 데이터 처리 전에 호출된다. | ==== CALLBACK_BROWSER_DOCKING ==== /** * 실행 파라미터 - CALLBACK_BROWSER_DOCKING * 탭모드에서 도킹상태가 변경되었을때 호출된다. 런타임브라우저와 탭모드로 연동한 경우에 동작함 * @param objScreen 화면 오브젝트 * @param bDocking 도킹 여부 */ function CallbackBrowserDocking(objScreen, bDocking) { console.log("CallbackScriptError> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackScriptError> bDocking = " + bDocking); } ==== CALLBACK_EXCEL_DOWNLOAD ==== /** * 실행 파라미터 - CALLBACK_EXCEL_DOWNLOAD * 엑셀 다운로드전에 호출되는 콜백이다. * 엑셀 다운로드 진행시, 기본 방식인 xexcel5.jar 이용 방식을 사용하지 않고, 다른 방식으로 수행하기 위한 콜백이다. * (주로 XPlus5를 통한 로컬 방식의 엑셀 다운로드 수행시 사용된다.) * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 * @param objExcelDownloadInfo 엑셀 다운로드 정보 오브젝트 (데이터를 포함하고 있음) */ function CallbackExcelDownload(objScreen, objGrid, objExcelDownloadInfo) { console.log("CallbackExcelDownload> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackExcelDownload> objGrid.name = " + objGrid.getname()); console.log(objExcelDownloadInfo); } ==== CALLBACK_EXCEL_UPLOAD ==== /** * 실행 파라미터 - CALLBACK_EXCEL_UPLOAD * 엑셀 업로드전에 호출되는 콜백이다. * 엑셀 업로드 진행시, 기본 방식인 xexcel5.jar 이용 방식을 사용하지 않고 다른 방식으로 수행하기 위한 콜백이다. * (주로 XPlus5를 통한 로컬 방식의 엑셀 업로드 수행시 사용된다.) * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 * @param objExcelUploadInfo 엑셀 업로드 정보 오브젝트 (데이터를 포함하고 있음) */ function CallbackExcelUpload(objScreen, objGrid, objExcelUploadInfo) { console.log("CallbackExcelUpload> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackExcelUpload> objGrid.name = " + objGrid.getname()); console.log(objExcelUploadInfo); } ==== CALLBACK_FOCUSMOVE_KEY ==== /** * 실행 파라미터 - CALLBACK_FOCUSMOVE_KEY * 키보드 입력에 의한 포커스 이동 전 처리 콜백이다. * 포커스 이동 관련 키 정의는 KEYMAP_FOCUS_NEXT 실행 파라미터에서 정의한다. * @param objScreen 화면 오브젝트 * @param objComponent 컴포넌트 오브젝트 * @param nInputType 컴포넌트 input_type * @param strValue 컴포넌트 값 * @param isMoveNext 다음으로 이동 여부, false인 경우, 이전으로 이동 * @param nKeyCode 포커스 이동 발생 키 코드 * @returns * true - 포커스 이동 처리 진행 * false - 포커스 이동 처리 중지 */ function CallbackFocusMoveKey(objScreen, objComponent, nInputType, strValue, isMoveNext, nKeyCode) { console.log("CallbackFocusMoveKey> strValue = " + strValue); // 아래의 샘플은 소스는 키 값이 ENTER이고, 필수 필드이고, 값의 길이가 0인 경우, 포커스 이동 중지하는 예제임 if (nKeyCode == 13) { // 필수 필드이고, 값의 길이가 0인 경우, 포커스 이동 중지 if (nInputType == 1 && strValue.length == 0) { return false; // 포커스 이동 중지 } } // 포커스 이동 진행 return true; } ==== CALLBACK_GRID_DOWNLOADEXCEL ==== /** * 실행 파라미터 - CALLBACK_GRID_DOWNLOADEXCEL * 그리드 "엑셀 저장" 컨텍스트 메뉴 및 downloadexcel API 콜백으로 그리드 엑셀 다운로드 옵션 파라미터를 조정하기 위해 사용한다. * 콜백 함수내에서 파라미터를 설정하여 downloadexcelex API를 반드시 호출해야 함 * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 * @param strFileName 엑셀 파일 이름 */ function CallbackGridDownloadExcel(objScreen, objGrid, strFileName) { var is_save_onerow, is_include_pattern; console.log("CallbackGridDownloadExcel> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackGridDownloadExcel> objGrid.name = " + objGrid.getname()); console.log("CallbackGridDownloadExcel> strFileName = " + strFileName); is_save_onerow = false; is_include_pattern = true; return objGrid.downloadexcelex(strFileName, true, is_save_onerow, is_include_pattern, true, true, false, true, false, false); } ==== CALLBACK_GRID_DRMFILEREAD ==== /** * 실행 파라미터 - CALLBACK_GRID_DRMFILEREAD * 전용 브라우저 환경경서 DRM_APPLY_TYPE 실행 파라미터가 2인 경우, 그리드 DRM 파일 읽기 전/후 콜백함수 * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 * @param bIsBeforeRead 파일 읽기 전 여부 * @param strFilePath 파일 경로 * @param strCallbackFilePath bIsBeforeRead 파라미터가 true로 호출시 콜백 함수에서 리턴한 경로 * @returns strReturnFilePath bIsBeforeRead 파라미터가 true로 호출된 경우, DRM 해제된 파일 경로 또는 공백문자열 */ function CallbackGridDrmFileRead(objScreen, objGrid, bIsBeforeRead, strFilePath, strCallbackFilePath) { var strReturnFilePath; factory.consoleprint("CallbackGridDrmFileRead> Start"); factory.consoleprint("CallbackGridDrmFileRead> Screen URL = " + objScreen.getscreenurl()); factory.consoleprint("CallbackGridDrmFileRead> Grid Name = " + objGrid.getname()); factory.consoleprint("CallbackGridDrmFileRead> bIsBeforeRead = " + bIsBeforeRead); factory.consoleprint("CallbackGridDrmFileRead> strFilePath = " + strFilePath); factory.consoleprint("CallbackGridDrmFileRead> strCallbackFilePath = " + strCallbackFilePath); if (bIsBeforeRead) { // TODO: // strFilePath 파라미터 값을 기준으로 DRM 해제 처리하고, // DRM 해제된 파일 경로 리턴, 공백 문자열 리턴시 그리드에서 strFilePath 파라미터 값을 사용함 strReturnFilePath = ""; return strReturnFilePath; } else { // TODO: strCallbackFilePath 파라미터에 해당하는 파일 삭제 처리 return; } } ==== CALLBACK_GRID_EXCEL_LOAD ==== /** * 실행 파라미터 - CALLBACK_GRID_EXCEL_LOAD * 엑셀 업로드 완료후 호출되는 콜백이다. * 주로 로드된 데이터를 검증하거나, 부가적인 기능을 처리하기 위한 공통 기능을 구현하기 위해 사용된다. * 그리드의 getexceluploadresultinfo API를 사용하여 엑셀 업로드 상세 결과 정보를 구할 수 있다. * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 */ function CallbackGridExcelLoad(objScreen, objGrid) { var objResult; console.log("CallbackGridExcelLoad> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackGridExcelLoad> objGrid.name = " + objGrid.getname()); objResult = objGrid.getexceluploadresultinfo(); console.log(objResult); return; } ==== CALLBACK_GRID_PREKEYDOWN ==== /** * 실행 파라미터 - CALLBACK_GRID_PREKEYDOWN * 그리드 키 전처리 콜백이다. * 그리드 단축키 처리를 위한 동작을 주로 구현한다. 반드시 1 또는 0 값을 리턴해야 한다. * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 * @param keycode 키 코드 * @param bctrldown CTLR 키 눌림 상태 여부 * @param bshiftdown SHIFT 키 눌림 상태 여부 * @param baltdown ALT 키 눌림 상태 여부 * @param bnumpadkey 숫자패드 키 여부 * @param beditmode 편집모드 상태에서의 키 이벤트 발생 여부 (undefined/true/false) * @returns * 1 - 그리드에서 키 이벤트 처리 동작을 수행하지 않음 * 0 - 그리드에서 키 이벤트 처리 동작을 수행 */ function CallbackGridPreKeydown(objScreen, objGrid, keycode, bctrldown, bshiftdown, baltdown, bnumpadkey, beditmode) { var row; if (beditmode === undefined) { beditmode = false; } console.log("CallbackGridPreKeydown> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackGridPreKeydown> objGrid.name = " + objGrid.getname()); console.log("CallbackGridPreKeydown> keycode = " + keycode); console.log("CallbackGridPreKeydown> bctrldown = " + bctrldown); console.log("CallbackGridPreKeydown> bshiftdown = " + bshiftdown); console.log("CallbackGridPreKeydown> baltdown = " + baltdown); console.log("CallbackGridPreKeydown> bnumpadkey = " + bnumpadkey); console.log("CallbackGridPreKeydown> beditmode = " + beditmode); // 아래는 아래의 키 처리를 위한 예시 소스임 // Ctrl + i : 그리드 row 추가 // Ctr + Alt + i : 선택된 row 위에 추가 if (bctrldown && keycode == 73) { if (baltdown) { row = objGrid.getselectrow(); row = row - 1; if (row < 0) { row = 0; } objGrid.insertitemtext(row, 0, ""); } else { objGrid.addrow(); } return 1; } return 0; } ==== CALLBACK_GRID_SAVECSV ==== /** * 실행 파라미터 - CALLBACK_GRID_SAVECSV * 그리드 "CSV 저장" 컨텍스트 메뉴 및 savecsv API 콜백으로 그리드 CSV 다운로드 옵션 파라미터를 조정하기 위해 사용한다. * 콜백 함수내에서 파라미터를 설정하여 savecsvex API를 반드시 호출해야 함 * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 */ function CallbackGridSaveCsv(objScreen, objGrid, strFileName) { var csv_file_name, is_include_pattern, is_include_header, is_close_savewnd, is_open_excel, is_prompt_overwrite, is_show_savewnd, str_data_delimiter, is_check_data, is_include_statdata, is_save_onerow; console.log("CallbackGridSaveCsv> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackGridSaveCsv> objGrid.name = " + objGrid.getname()); csv_file_name = ""; is_include_pattern = false; is_include_header = true; is_close_savewnd = true; is_open_excel = false; is_prompt_overwrite = true; is_show_savewnd = true; str_data_delimiter = ","; is_check_data = true; is_include_statdata = true; is_save_onerow = true; return objGrid.savecsvex(csv_file_name, is_include_pattern, is_include_header, is_close_savewnd, is_open_excel, is_prompt_overwrite, is_show_savewnd, str_data_delimiter, is_check_data, is_include_statdata, is_save_onerow); } ==== CALLBACK_GRID_UPLOADEXCEL ==== /** * 실행 파라미터 - CALLBACK_GRID_UPLOADEXCEL * 그리드 "엑셀 불러오기" 컨텍스트 메뉴 및 uploadexcel API 콜백으로 그리드 엑셀 업로드 옵션 파라미터를 조장하기 위해 사용한다. * 콜백 함수내에서 파라미터를 설정하여 uploadexcelex API를 반드시 호출해야 함 * @param objScreen 화면 오브젝트 * @param objGrid 그리드 컴포넌트 오브젝트 * @param bAppendMode [옵션] 데이터 Append 모드 (기본값: false) * @param objFile [옵션] 업로드할 엑셀 파일에 대한 File 오브젝트 (기본값: null) * @param strAccept [옵션] 선택 파일 유형 문자열 (기본값: 공백문자열) */ function CallbackGridUploadExcel(objScreen, objGrid, bAppendMode, objFile, strAccept) { var is_save_onerow, is_include_pattern; console.log("CallbackGridUploadExcel> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackGridUploadExcel> objGrid.name = " + objGrid.getname()); console.log("CallbackGridUploadExcel> bAppendMode = " + bAppendMode); console.log("CallbackGridUploadExcel> strAccept = " + strAccept); return objGrid.uploadexcelex(1, 1, 1, "A", 1, bAppendMode, "", objFile, strAccept, true); } ==== CALLBACK_META_DATA ==== /** * 실행 파라미터 - CALLBACK_META_DATA * 컴포넌트 생성시 메타 처리 콜백 * 자세한 내용은 doc 폴더내 다국어 개발을 위한 가이드 문서를 참조한다. * @param strMetaId 메타 ID * @param objMetaValue 메타 ID에 해당하는 값 * @param strScreenUrl 화면 URL * @param strScreenId 화면 ID * @param nObjectKind 오브젝트 유형 (XFD_OBJKIND_CONTROL/XFD_OBJKIND_SHAPE) * @param nComponentKind 오브젝트 유형 (getcontrolkind, getshapekind) * 또는 XFD_CTRLKIND_TABITEM/XFD_CTRLKIND_GRIDCOLUMNHEAD/XFD_CTRLKIND_GRIDCOLUMNDATA * @param objPropInfo 컴포넌트 속성 정보 오브젝트 (key: 속성명, value: 속성값) * @param strUserLanguage 사용자 실행 환경 언어 * @param strUserCountry 사용자 실행 환경 국가 * @returns * 1 - 메타 정보 처리함 * 0 - 메타 정보 처리 하지 않음(엔진 기본 동작 수행) */ function CallbackMetaData(strMetaId, objMetaValue, strScreenUrl, strScreenId, nObjectKind, nComponentKind, objPropInfo, strUserLanguage, strUserCountry) { if (nObjectKind == XFD_OBJKIND_CONTROL) { switch (nComponentKind) { case XFD_CTRLKIND_HYPERTEXT: case XFD_CTRLKIND_PUSHBUTTON: case XFD_CTRLKIND_CHECKBOX: case XFD_CTRLKIND_RADIOBUTTON: if (objMetaValue["text_or_title"]) { objPropInfo["text"] = objMetaValue["text_or_title"]; } if (objMetaValue["tooltip"]) { objPropInfo["tooltip"] = objMetaValue["tooltip"]; } if (objMetaValue["hint_text"]) { objPropInfo["hint_text"] = objMetaValue["hint_text"]; } if (objMetaValue["description"]) { objPropInfo["description"] = objMetaValue["description"]; } break; case XFD_CTRLKIND_FIELD: case XFD_CTRLKIND_COMBOBOX: case XFD_CTRLKIND_DATE: if (objMetaValue["tooltip"]) { objPropInfo["text"] = objMetaValue["tooltip"]; } if (objMetaValue["hint_text"]) { objPropInfo["hint_text"] = objMetaValue["hint_text"]; } if (objMetaValue["description"]) { objPropInfo["description"] = objMetaValue["description"]; } break; case XFD_CTRLKIND_MULTILINE: if (objMetaValue["tooltip"]) { objPropInfo["tooltip"] = objMetaValue["tooltip"]; } if (objMetaValue["description"]) { objPropInfo["description"] = objMetaValue["description"]; } break; case XFD_CTRLKIND_GRID: if (objMetaValue["description"]) { objPropInfo["description"] = objMetaValue["description"]; } break; case XFD_CTRLKIND_TABITEM: if (objMetaValue["text_or_title"]) { objPropInfo["title"] = objMetaValue["text_or_title"]; } if (objMetaValue["tooltip"]) { objPropInfo["tooltip"] = objMetaValue["tooltip"]; } if (objMetaValue["description"]) { objPropInfo["description"] = objMetaValue["description"]; } break; case XFD_CTRLKIND_GRIDCOLUMNHEAD: if (objMetaValue["text_or_title"]) { objPropInfo["title"] = objMetaValue["text_or_title"]; } if (objMetaValue["tooltip"]) { objPropInfo["tooltip"] = objMetaValue["tooltip"]; } break; case XFD_CTRLKIND_GRIDCOLUMNDATA: if (objMetaValue["hint_text"]) { objPropInfo["hint_text"] = objMetaValue["hint_text"]; } if (objMetaValue["description"]) { objPropInfo["description"] = objMetaValue["description"]; } break; default: break; } } else if (nObjectKind == XFD_OBJKIND_SHAPE) { switch (nComponentKind) { case XFD_SHAPEKIND_CAPTION: if (objMetaValue["text_or_title"]) { prop_info["text"] = objMetaValue["text_or_title"]; } break; default: break; } } return 1; } ==== CALLBACK_META_LOAD ==== /** * 실행 파라미터 - CALLBACK_META_LOAD * 메타 데이터 로드시 호출되는 콜백 * @param strMetaUrl 메타 URL * @param strMetaId 메타 ID * @param strMetaValue 메타 ID에 해당하는 값 * @param strUserLanguage 사용자 실행 환경 언어 * @param strUserCountry 사용자 실행 환경 국가 * @returns 메타 정보 오브젝트 */ function CallbackMetaLoad(strMetaUrl, strMetaId, strMetaValue, strUserLanguage, strUserCountry) { var meta_value_item_arr, meta_value_obj; // text/title, tooltip, hint_text, description으로 되어 있는 경우 if (strMetaValue.indexOf("^$;") != -1) { meta_value_item_arr = strMetaValue.split("^$;"); } else { meta_value_item_arr = strMetaValue.split(";"); } meta_value_obj = {}; // undefined 및 공백문자열이 아닌 경우 true if (meta_value_item_arr[0]) { meta_value_obj["text_or_title"] = meta_value_item_arr[0]; } if (meta_value_item_arr[1]) { meta_value_obj["tooltip"] = meta_value_item_arr[1]; } if (meta_value_item_arr[2]) { meta_value_obj["hint_text"] = meta_value_item_arr[2]; } if (meta_value_item_arr[3]) { meta_value_obj["description"] = meta_value_item_arr[3]; } return meta_value_obj; } ==== CALLBACK_PICKLIST_URL ==== /** * 실행 파라미터 - CALLBACK_PICKLIST_URL * 코드 파일을 로드하기 전에 코드 파일 URL에 대한 전 처리 콜백이다. * 조건에 따라 코드 파일 URL을 변경해야 할 경우에 사용된다. * @param strPicklistUrl 로드할 픽리스트 URL * @returns * strReturnPicklistUrl - 로드할 픽리스트 URL (1글자 이상의 문자열) * undefined | '' - 화면 URL 변경없이 사용 */ function CallbackPicklistUrl(strPicklistUrl) { console.log("strPicklistUrl = " + strPicklistUrl); return; } ==== CALLBACK_SCREEN_URL ==== /** * 실행 파라미터 - CALLBACK_SCREEN_URL * 화면 파일을 로드하기 전에 화면 파일 URL에 대한 전 처리 콜백이다. * 조건에 따라 화면 파일 URL을 변경해야 할 경우에 사용된다. * @param strScreenUrl 로드할 화면 URL * @param nLoadType 화면 URL을 로드 하는 유형 (0: tab link screen/portlet, 1:load popup, 2:load menu, 3:load portlet) * @param objParentScreen 로드할 화면의 부모 화면 인스턴스 (null 또는 undefined 값일 수 있음) * @param strParentScreenUrl 로드할 화면의 부모 화면 URL ("" 또는 부모 화면 URL) * @param objParentComponent 로드할 화면이 표시될 컴포넌트 (null 또는 부모 컴포넌트 오브젝트) * @returns * strReturnScreenUrl 로드할 화면 URL (1글자 이상의 문자열) * undefined | '' 화면 URL 변경없이 사용 */ function CallbackScreenUrl(strScreenUrl, nLoadType, strParentScreenUrl, objParentScreen, objParentComponent) { console.log("CallbackScreenUrl> strScreenUrl = " + strScreenUrl); console.log("CallbackScreenUrl> nLoadType = " + nLoadType); console.log("CallbackScreenUrl> strParentScreenUrl = " + strParentScreenUrl); if (objParentScreen !== undefined && objParentScreen !== null) { console.log("CallbackScreenUrl> strParentScreenId = " + objParentScreen.getscreenid()); } if (objParentComponent !== undefined && objParentComponent !== null) { console.log("CallbackScreenUrl> strParentComponentName = " + objParentComponent.getname()); } return; } ==== CALLBACK_SCRIPT_ERROR ==== /** * 실행 파라미터 - CALLBACK_SCRIPT_ERROR * 스크립트 오류 처리 콜백 * 스크립트 실행시 try/catch 문으로 검출 가능한 오류에 대해서만 호출됨 * @param objScreen 화면 오브젝트 * @param strEventName 이벤트 이름 * @param strFuncName 함수 이름 * @param strErrorName 에러 이름 * @param strErrMsg 에러 메시지 * @returns * 1 - 엔진에서 스크립트 오류 메시지 박스를 표시하지 않음 * 그외 - 엔진에서 오류 메시지 박스 표시 */ function CallbackScriptError(objScreen, strEventName, strFuncName, strErrorName, strErrMsg) { console.log("CallbackScriptError> objScreen.url = " + objScreen.getscreenurl()); console.log("CallbackScriptError> strEventName = " + strEventName); console.log("CallbackScriptError> strFuncName = " + strFuncName); console.log("CallbackScriptError> strErrorName = " + strErrorName); console.log("CallbackScriptError> strErrMsg = " + strErrMsg); // 1 - 엔진에서 스크립트 오류 메시지 박스를 표시하지 않음, 그외 - 엔진에서 오류 메시지 박스 표시 // return 1; } ==== CALLBACK_VALIDATION_ALERT ==== /** * 실행 파라미터 - CALLBACK_VALIDATION_ALERT * 값 검증 Alert 처리 전 호출되며, 값 검증 오류시 처리할 메시지박스 또는 내용을 제어한다. * @param objScreen 화면 오브젝트 * @param objComponent 컴포넌트 오브젝트 * @param strComponentValue 컴포넌트 값 * @param strValidType 검증 유형 이름 * 'required': 필수 항목에 값이 없는 경우 * 'length_min': 최소 길이보다 짧은 경우 * 'length_max': 최소 길이보다 긴 경우 * 'value_min': 최소 값보다 작은 경우 * 'value_max': 최대 값보다 큰 경우 * 'invalid_number': 값이 숫자가 아닌 경우 * 'invalid_code': 유효한 코드 값이 아닌 경우 * 'invalid_date': 유효하지 않는 날짜 * 'invalid_keyin': 유효하지 않는 글자 입력 * 'move_before': 첫번재 페이지 이전으로 이동시 * 'move_after': 마지막 페이지 이후로 이동시 * 'date_before': 유효기간 이전 날짜 선택시 * 'date_after': 유효기간 이후 날짜 선택시 * 'date_saturday': 토요일을 선택한 경우 * 'date_sunday': 일요일을 선택한 경우 * 'date_holiday': 공휴일을 선택한 경우 * 'date_unknown': 알 수 없는 날짜 관련 오류 * @param nEventType 검증 이벤트 유형 (2: API, 5: 포커스아웃(BLUR)) * @returns * undefined 기본 값 검증 메시지 박스 표시 (예시: 단순 return; 호출시) * objRetInfo 메시지 박스 제어용 오브젝트로 아래와 같은 속성을 가짐 * { * show_alert: alert 표시 여부 (true(기본값)/false) * alert_title: alert 박스 타이틀 (변경하지 않을 경우, 공백문자열 지정) * alert_message: alert 메시지 (변경하기 않을 경우, 공백 문자열 지정) * } */ function CallbackValidationAlert(objScreen, objComponent, strComponentValue, strValidType) { var i, nObjectKind, objRetetInfo; objRetInfo = { show_alert: true, alert_title: "", alert_message: "" }; console.log("CallbackValidationAlert> Screen URL = [" + objScreen.getscreenurl() + "]"); console.log("CallbackValidationAlert> Component Name = [" + objComponent.getname() + "]"); console.log("CallbackValidationAlert> strComponentValue = [" + strComponentValue + "]"); console.log("CallbackValidationAlert> strValidType = [" + strValidType + "]"); console.log("CallbackValidationAlert> nEventType = [" + nEventType + "]"); // 아래 예시 소스는 유효하지 않은 날짜에 대한 값 검증인 경우, 값을 지우는 예시 소스입니다. if (strValidType == "invalid_date") { objComponent.settext(""); } return objRetInfo; } ==== CALLBACK_XPLUS_FILEDOWNLOAD ==== /** * 실행 파라미터 - CALLBACK_XPLUS_FILEDOWNLOAD * 전용 브라우저환경에서 파일 다운로드 완료 콜백함수 * @param strFilePath 파일 경로 */ function CallbackXPlusFileDownload(strFilePath) { factory.consoleprint("CallbackXPlusFileDownload> Start"); factory.consoleprint("CallbackXPlusFileDownload> strFilePath = " + strFilePath); } ==== CALLBACK_REQUESTTRAN_SENDDATAFUNC ==== /** * 실행 파라미터 - CALLBACK_REQUESTTRAN_SENDDATAFUNC * 화면 requesttran 송신 데이터 처리 콜백 * 화면 requesttran API 함수 호출시 AJAX로 데이터를 송신하기 전에 호출됨 * 화면내에서 settranmaptraninfo 함수를 통해서 송신 데이터 및 부가 정보를 설정해야 함 * @param objScreen 화면 오브젝트 * @param strTranMapId 트랜맵 ID */ function CallbackTranSendDataFunc(objScreen, strTranMapId) { var send_data_str, optionInfo; console.log(this); console.log("CallbackTranSendDataFunc> Screen URL = " + objScreen.getscreenurl()); console.log("CallbackTranSendDataFunc> strTranMapId = " + strTranMapId); // TODO: strTranMapId에 대한 송신 데이터 문자열 생성 send_data_str = "senddata_" + strTranMapId; optionInfo = { tran_url: "terminal/jsp/" + strTranMapId + ".jsp", is_async: true, is_encode_url: true, http_header_str: "", timeout: 0, http_method: "POST" }; // requesttran 송신 데이터 및 옵션 설정 objScreen.settranmaptraninfo(strTranMapId, send_data_str, optionInfo); } ==== CALLBACK_REQUESTTRAN_RECVDATAFUNC ==== /** * 실행 파라미터 - CALLBACK_REQUESTTRAN_RECVDATAFUNC * 화면 requesttran 수신 데이터 처리 콜백 * 화면 on_trancomplete 이벤트가 호출된기 전에 호출됨 * @param objScreen 화면 오브젝트 * @param strTranMapId 트랜맵 ID * @param result 처리 결과 (1: 성공, 그외 오류) * @param recv_userheader 서버에서 수신된 사용자 정의 데이터 (기본값: "") * @param recv_code 서버에서 수신된 처리 결과 코드 (기본값: "") * @param recv_msg 서버에서 수신된 처리 결과 메시지 (기본값: "") * @param recv_data 서버에서 수신된 데이터 */ function CallbackTranRecvDataFunc(objScreen, strTranMapId, result, recv_userheader, recv_code, recv_msg, recv_data) { var tran_url, is_async, is_encode_url, http_header_str, send_data_str, timeout, http_method; console.log(this); console.log("CallbackTranRecvDataFunc> Screen URL = " + objScreen.getscreenurl()); console.log("CallbackTranRecvDataFunc> strTranMapId = " + strTranMapId); console.log("CallbackTranRecvDataFunc> result = " + result); console.log("CallbackTranRecvDataFunc> recv_userheader = " + recv_userheader); console.log("CallbackTranRecvDataFunc> recv_code = " + recv_code); console.log("CallbackTranRecvDataFunc> recv_msg = " + recv_msg); console.log("CallbackTranRecvDataFunc> recv_data = " + recv_data); // TODO: recv_data 파라미터 값을 기준으로 수신 데이터를 파싱하여 화면에 표시 처리 } ===== 이벤트 글로벌 콜백 ===== 이벤트 글로벌 콜백은 이벤트 이름을 지정하여 해당 이벤트 발생시 지정된 콜백 이전에 호출되는 콜백이다. |< 100% 250px - >| ^ 구분 ^ 내용 ^ | CALLBACK_EVENT_NAME | * 콜백 호출 대상 이벤트 이름 배열을 지정한다. * 예시: ['on_fileloadstart', 'on_fileload'] | | CALLBACK_EVENT_BEFORE | CALLBACK_EVENT_NAME 에 지정된 이벤트 발생시 호출될 함수 이름 | ==== 이벤트 글로벌 콜백 예시 ==== /** * 실행 파라미터 - CALLBACK_EVENT_BEFORE, CALLBACK_EVENT_NAME * CALLBACK_EVENT_NAME 실행 파라미터에 지정된 이벤트 발생시, 화면에서 지정한 이벤트 콜백이 호출되기 전에 호출된다. * 콜백 함수 호출시 전달되는 파라미터는 화면, 컴포넌트, 이벤트 이름, 원래 이벤트 콜백 파라미터들(가변적임)로 구성된다. * 이벤트에 따라서 콜백 함수 개발시 파라미터로 전달되는 파라미터가 가변적이기 때문에, * 함수 내에서 arguments 오브젝트를 통해서 가변 파라미터를 처리해야 한다. * arguments 오브젝트는 자바스크립트 언어에서 제공하는 기본 오브젝트로, * 함수에 전달된 파라미터에 접근하기 위한 기능을 수행하는 특별한 배열과 비슷한 기능을 제공하는 오브젝트이다. * @param objScreen 화면 오브젝트 * @param objComponent 컴포넌트 오브젝트 * @param strEventName 이벤트 이름 * @param ... 이벤트 발생시 전달되는 파라미터들 * @returns * 함수의 리턴값이 있는 경우, 화면에 지정한 이벤트 콜백이 호출되지 않고, 리턴값이 엔진에 전달된다. */ function CallbackEventBefore(objScreen, objComponent, strEventName) { var i, argument_count; console.log("CallbackEventBefore> Screen URL = [" + objScreen.getscreenurl() + "]"); // 화면인 경우, 화면 ID console.log("CallbackEventBefore> Component Name = [" + objComponent.getname() + "]"); console.log("CallbackEventBefore> strEventName = [" + strEventName + "]"); console.log("CallbackEventBefore> object_kind = [" + objComponent.getobjectkind() + "]"); // 기본 파라미터 이외에 실제 이벤트 콜백 함수 파라미터를 arguments 오브젝트를 이용하여 콘솔에 출력 argument_count = arguments.length; for (i = 3; i < argument_count; i++) { console.log("CallbackEventBefore> arguments[" + i + "] = " + arguments[i]); } } ==== 이벤트 글로벌 콜백 특징 ==== 이벤트 글로벌 콜백은 아래와 같은 특징을 가진다. |< 100% 150px - >| ^ 구분 ^ 내용 ^ | 콜백 파리미터 | * 콜백 함수 호출시 전달되는 파라미터는 화면, 컴포넌트, 이벤트 이름, 원래 이벤트 콜백 파라미터로 구성된다. * 따라서 콜백 함수 개발시 파라미터로 전달되는 파라미터가 가변적이기 때문에, 함수 내에서 arguments 오브젝트를 통해서 가변 파라미터를 처리해야한다. * arguments 오브젝트는 함수에 전달된 파라미터에 접근하기 위한 기능을 수행하는 특별한 오브젝트이며 * 자세한 설명은 “https://developer.mozilla.org”에서 arguments 를 검색하여 참고한다. | | 콜백 함수 호출 | 이벤트 글로벌 콜백은 해당 이벤트에 대한 콜백 지정 여부와 상관없이 이벤트에 지정된 콜백이 호출되기 이전에 호출됨 | | 적용 대상 | * 이벤트 이름을 기준으로 처리되기 때문에, 모든 화면에 적용된다. * //**성능에 영향을 줄 수 있는 이벤트 (예: on_keydown)에 대해서는 글로벌콜백 함수내 동작 시간 부분에 주의해야 한다.**// |