/** * * 날짜,시간 형식을 변환하여 준다. * @date 2019. 4. 28. * @memberOf member * @param param * @returns returns * @author NOHEART * @example * @since */ com.fmtDateDtime = function(data, formattedData, rowIndex, colIndex) { // 날짜 표시 형식 (yyyy-MM-dd 24HH:mm:ss) var rtn = data; if (data.length == 4) { rtn = data.substr(0,4); } else if (data.length == 6) { rtn = data.substr(0,4)+'-'+data.substr(4,2); } else if (data.length == 8) { rtn = data.substr(0,4)+'-'+data.substr(4,2)+'-'+data.substr(6,2); } else if (data.length == 14) { rtn = data.substr(0,4)+'-'+data.substr(4,2)+'-'+data.substr(6,2)+' '+data.substr(8,2)+":"+data.substr(10,2)+":"+data.substr(12,2); } return rtn; }; com.fmtDateDtimeKor = function(data, formattedData, rowIndex, colIndex) { // 날짜 표시 형식 (yyyy년 MM월 dd일 24HH시 mm분 ss초) var rtn = data; if (data.length == 4) { rtn = data.substr(0,4)+'년'; } else if (data.length == 6) { rtn = data.substr(0,4)+'년 '+data.substr(4,2)+'월'; } else if (data.length == 8) { rtn = data.substr(0,4)+'년 '+data.substr(4,2)+'월 '+data.substr(6,2)+'일'; } else if (data.length == 14) { rtn = data.substr(0,4)+'년 '+data.substr(4,2)+'월 '+data.substr(6,2)+'일 '+data.substr(8,2)+"시 "+data.substr(10,2)+"분 "+data.substr(12,2)+"초"; } return rtn; }; com.fmtDtime = function(data, formattedData, rowIndex, colIndex) { // 시간 표시 형식 var rtn = data; if (data.length == 6) { rtn = data.substr(0,2)+':'+data.substr(2,2)+':'+data.substr(4,2); } return rtn; }; com.fmtDtimeToYm = function(data, formattedData, rowIndex, colIndex) { // 시간 표시 형식 var rtn = data; if (data.length == 6) { rtn = data.substr(0,2)+':'+data.substr(2,2); } return rtn; }; com.fmtSecondsToYmd = function(data, formattedData, rowIndex, colIndex) { var hour = parseInt(data / 3600); var min = parseInt((data % 3600) / 60); var sec = data % 60; return com.fillZero(hour,2)+":"+com.fillZero(min,2)+":"+com.fillZero(sec,2); }; com.fmtSecondsToYm = function(data, formattedData, rowIndex, colIndex) { var hour = parseInt(data / 3600); var min = parseInt((data % 3600) / 60); var sec = data % 60; if (sec >= 30) { min = min +1 } //반올림 return com.fillZero(hour,2)+":"+com.fillZero(min,2); }; com.fmtSecondsToYmKor = function(data, formattedData, rowIndex, colIndex) { var hour = parseInt(data / 3600); var min = parseInt((data % 3600) / 60); var sec = data % 60; if (sec >= 30) { min++; } //반올림 if (min >= 60) { hour++; min = min - 60;} return String(com.fillZero(hour,2)+"시간"+com.fillZero(min,2)+"분"); }; /** * * 요금소, 차로명 표시 형식을 변환하여 준다. * @date 2019. 4. 28. * @memberOf member * @param param * @returns returns * @author NOHEART * @example * @since */ com.fmtFareOfficeNm = function(data, formattedData, rowIndex, colIndex) { // 차로명 표시 형식 var rtn = data; if (Number(data) > 0) { rtn = Number(data) + '호'; } return rtn; }; com.fmtBoothNm = function(data, formattedData, rowIndex, colIndex) { // 차로명 표시 형식 var rtn = data; if (Number(data) > 0) { rtn = Number(data) + '차'; } return rtn; }; com.fmtWeekdayKbnNm = function(data, formattedData, rowIndex, colIndex) { // 평일/토요일 표시 형식 var rtn = data; if (data == '1') { rtn = '평일'; } else if (data == '2') { rtn = '토요일'; } return rtn; }; com.fmtWorkTimeKbnNm = function(data, formattedData, rowIndex, colIndex) { // 시간대 표시 형식 (07:00 ~ 08:00 형태) var hour = data; var rtn = com.fillZero(Number(hour),2) + ":00 ~ " + com.fillZero((Number(hour)+1),2) + ":00"; return rtn; }; /** * 오늘 날짜를 가져온다. * * @date 2019. 4. 12. * @memberOf member * @param param * @returns returns * @author NOHEART * @example * @since */ com.getToday = function( fmt ) { if (fmt == null) { fmt = "yyyyMMdd"; } var curYMD = $p.getCurrentServerDate( fmt ); var date = new Date(); var year = new String(date.getFullYear()); var month = new String(date.getMonth()+1); if(month.length == 1){ month = "0"+month; } var day = new String(date.getDate()); if(day.length == 1){ day = "0"+day; } //개발용임시 if (fmt == "yyyyMMdd") { curYMD = year+month+day; } else if (fmt == "yyyyMM") { curYMD = year+month; } else if (fmt == "yyyy") { curYMD = year; } return curYMD; }; /** * 현재시간을 가져온다. * * @date 2019. 7. 8. * @memberOf member * @param param * @returns returns * @author NOHEART * @example * @since */ com.getCurDtime = function( fmt ) { if (fmt == null) { fmt = "yyyyMMddHHmmss"; } var curDtime = $p.getCurrentServerDate( fmt ); return curDtime; }; com.getDateFormat = function( date ) { var year = date.substr(0, 4); var month = date.substr(4, 2); var day = date.substr(6, 2); return year+'-'+month+'-'+day; }; com.getDateDay = function(date) { var year = date.substr(0, 4); var month = date.substr(4, 2); var day = date.substr(6, 2); var week = ['일', '월', '화', '수', '목', '금', '토']; var dayOfWeek = week[new Date(year+'-'+month+'-'+day).getDay()]; return dayOfWeek; }; com.lpad = function(n, width, pad) { n = n + ''; return n.length >= width ? n : new Array(width - n.length + 1).join(pad) + n; }; /** * 코드성 데이터와 컴포넌트의 nodeSet(아이템 리스트)연동 기능을 제공한다. * code별로 JSON객체를 생성하여 array에 담아 첫번째 파라메터로 넘겨준다. * * @date 2018.04.13 * @param {Object} codeOptions {"code" : "코드넘버", "compID" : "적용할 컴포넌트명"} * @param {requestCallback} callbackFunc 콜백 함수 * @memberOf com * @author InswaveSystems * @example * // 공통코드 조회시 * var codeOptions = [ { code : "00001", compID : "sbx_Duty" }, * { code : "00002", compID : "sbx_Postion" }, * { code : "00021", compID : "sbx_JoinClass" }, * { code : "00005", compID : "sbx_CommCodePart1, sbx_CommCodePart2"}, * { code : "00024", compID :"grd_CommCodeSample:JOB_CD"} ]; * com.setCfsCommonCode(codeOptions); */ com.setCfsCommonCode = function(codeOptions, callbackFunc) { var codeOptionsLen = 0; if (codeOptions) { codeOptionsLen = codeOptions.length; } else { $p.log("=== com.setCfsCommonCode Parameter Type Error ===\nex) com.setCfsCommonCode([{\"code:\":\"04\",\"compID\":\"sbx_Gender\"}],\"scwin.callbackFunction\")\n==================================="); return; } var i, j, codeObj, dltId, dltIdArr = [], paramCode = "", fareOfficeId = "", compArr, compArrLen, tmpIdArr, codeOption = ""; var dataListOption = _getCodeDataListOptions(gcm.COMMON_CODE_INFO.FILED_ARR); for (i = 0; i < codeOptionsLen; i++) { codeObj = codeOptions[i]; try { dltId = gcm.DATA_PREFIX + codeObj.code; dltIdArr.push(dltId); if (i > 0) { paramCode += ","; fareOfficeId += ","; if(typeof codeObj.option != "undefined"){ codeOption += ","; } } paramCode += codeObj.code; fareOfficeId += codeObj.fareOfficeId; if(typeof codeObj.option != "undefined"){ codeOption += codeObj.option; } dataListOption.id = dltId; $p.data.create(dataListOption); if (codeObj.compID) { compArr = (codeObj.compID).replaceAll(" ", "").split(","); compArrLen = compArr.length; for (j = 0; j < compArrLen; j++) { tmpIdArr = compArr[j].split(":"); // 기본 컴포넌트에 대한 Node Setting 설정 if (tmpIdArr.length === 1) { var comp = $p.getComponentById(tmpIdArr[0]); comp.setNodeSet("data:" + dltId, gcm.COMMON_CODE_INFO.LABEL, gcm.COMMON_CODE_INFO.VALUE); // gridView 컴포넌트에 대한 Node Setting 설정 } else { var gridObj = $p.getComponentById(tmpIdArr[0]); gridObj.setColumnNodeSet(tmpIdArr[1], "data:" + dltId, gcm.COMMON_CODE_INFO.LABEL, gcm.COMMON_CODE_INFO.VALUE); } } if (typeof $p.top().scwin.commonCodeList[dltId] === "undefined") { } else { if (typeof callbackFunc === "function") { callbackFunc(); } } } } catch (ex) { $p.log("com.setCfsCommonCode Error"); $p.log(JSON.stringify(codeObj)); $p.log(ex); continue; } } var searchCodeGrpOption = { id : "sbm_searchCode", action : "/cfs/com/code/findComCodeList.do", target : "data:json," + com.strSerialize(dltIdArr), isShowMeg : false }; searchCodeGrpOption.submitDoneHandler = function(e) { for (codeGrpDataListId in e.responseJSON) { if (codeGrpDataListId.indexOf(gcm.DATA_PREFIX) > -1) { $p.top().scwin.commonCodeList[codeGrpDataListId] = com.strSerialize(e.responseJSON[codeGrpDataListId]); } } for (i = 0; i < codeOptionsLen; i++) { codeObj = codeOptions[i]; if (codeObj.code) { if (codeObj.code == 'cfs01') { var comp = $p.getComponentById(codeObj.compID); if(codeObj.option == "-전체-"){ comp.showChooseOption( true ); comp.setReadOnly( false ); }else{ if (comp.getItemCount() <= 2) { comp.showChooseOption( false ); comp.setReadOnly( true ); } else { comp.showChooseOption( true ); comp.setReadOnly( false ); } } } } } if (typeof callbackFunc === "function") { callbackFunc(); } } if (paramCode !== "") { if (paramCode.indexOf("cfs01") > -1) { fareOfficeId = com.getLoginFareOfficeId(); if (fareOfficeId == "00") { fareOfficeId = ""; //로그인사용자의 요금소 구분이 00 이면 전체 요금소를 조회하는 사용자로 처리 } } if (fareOfficeId == "undefined") { fareOfficeId = ""; } if(codeOption != ""){ if(codeOption.indexOf("-전체-") > -1){ fareOfficeId = ""; } } var codeParam = {"dma_commonCode":{"GRP_CD":paramCode, "DATA_PREFIX":gcm.DATA_PREFIX, "FARE_OFFICE_ID":fareOfficeId}}; com.executeSubmission_dynamic(searchCodeGrpOption, codeParam); } // dataList를 동적으로 생성하기 위한 옵션 정보를 반환한다. function _getCodeDataListOptions(infoArr) { var option = { "type" : "dataList", "option":{ "baseNode": "list", "repeatNode": "map"}, "columnInfo":[] }; for (var idx in infoArr) { option.columnInfo.push({ "id" : infoArr[idx] }); } return option; }; }; /** * 코드성 데이터와 컴포넌트의 nodeSet(아이템 리스트)연동 기능을 제공한다. * code별로 JSON객체를 생성하여 array에 담아 첫번째 파라메터로 넘겨준다. * * @date 2018.04.13 * @param {Object} codeOptions {"code" : "코드넘버", "compID" : "적용할 컴포넌트명"} * @param {requestCallback} callbackFunc 콜백 함수 * @memberOf com * @author InswaveSystems * @example * // 공통코드 조회시 * var codeOptions = [ { code : "00001", compID : "sbx_Duty" }, * { code : "00002", compID : "sbx_Postion" }, * { code : "00021", compID : "sbx_JoinClass" }, * { code : "00005", compID : "sbx_CommCodePart1, sbx_CommCodePart2"}, * { code : "00024", compID :"grd_CommCodeSample:JOB_CD"} ]; * com.setCfsCommonCode(codeOptions); */ com.setCfsWorkerWorkCode = function(codeOptions, callbackFunc) { var codeOptionsLen = 0; if (codeOptions) { codeOptionsLen = codeOptions.length; } else { $p.log("=== com.setCfsWorkerWorkCode Parameter Type Error ===\nex) com.setCfsWorkerWorkCode([{\"code:\":\"04\",\"compID\":\"sbx_Gender\"}],\"scwin.callbackFunction\")\n==================================="); return; } var i, j, codeObj, dltId, dltIdArr = [], paramCode = "", fareOfficeId = "", inStDate = "", inEdDate = "", compArr, compArrLen, tmpIdArr; var dataListOption = _getWorkerDataListOptions(gcm.COMMON_CODE_INFO.FILED_ARR); for (i = 0; i < codeOptionsLen; i++) { codeObj = codeOptions[i]; try { dltId = codeObj.code; dltIdArr.push(dltId); if (i > 0) { paramCode += ","; fareOfficeId += ","; inStDate += ","; inEdDate += ","; } paramCode += codeObj.code; fareOfficeId += codeObj.fareOfficeId; inStDate += codeObj.inStDate; inEdDate += codeObj.inEdDate; dataListOption.id = dltId; // 동일한 id의 DataCollection이 존재할 경우, 삭제 후 재생성함 $p.data.create(dataListOption); if (codeObj.compID) { compArr = (codeObj.compID).replaceAll(" ", "").split(","); compArrLen = compArr.length; for (j = 0; j < compArrLen; j++) { tmpIdArr = compArr[j].split(":"); // 기본 컴포넌트에 대한 Node Setting 설정 if (tmpIdArr.length === 1) { var comp = $p.getComponentById(tmpIdArr[0]); comp.setNodeSet("data:" + dltId, gcm.COMMON_CODE_INFO.LABEL, gcm.COMMON_CODE_INFO.VALUE); // gridView 컴포넌트에 대한 Node Setting 설정 } else { var gridObj = $p.getComponentById(tmpIdArr[0]); gridObj.setColumnNodeSet(tmpIdArr[1], "data:" + dltId, gcm.COMMON_CODE_INFO.LABEL, gcm.COMMON_CODE_INFO.VALUE); } } } } catch (ex) { $p.log("com.setCfsWorkerWorkCode Error"); $p.log(JSON.stringify(codeObj)); $p.log(ex); continue; } } var searchCodeGrpOption = { id : "sbm_workerWorkCode", action : "/cfs/com/code/findWorkerWorkInfoList.do", target : "data:json," + com.strSerialize(dltIdArr), isShowMeg : false }; searchCodeGrpOption.submitDoneHandler = function(e) { for (codeGrpDataListId in e.responseJSON) { if (codeGrpDataListId.indexOf(gcm.DATA_PREFIX) > -1) { $p.top().scwin.commonCodeList[codeGrpDataListId] = com.strSerialize(e.responseJSON[codeGrpDataListId]); } } if (typeof callbackFunc === "function") { callbackFunc(); } } if (paramCode !== "") { var codeParam = {"dma_workerCode":{"fareOfficeId":fareOfficeId, "inStDate":inStDate, "inEdDate":inEdDate}}; com.executeSubmission_dynamic(searchCodeGrpOption, codeParam); } // dataList를 동적으로 생성하기 위한 옵션 정보를 반환한다. function _getWorkerDataListOptions(infoArr) { var option = { "type" : "dataList", "option":{ "baseNode": "list", "repeatNode": "map"}, "columnInfo":[] }; for (var idx in infoArr) { option.columnInfo.push({ "id" : infoArr[idx] }); } return option; }; }; /** * 엑셀파일을 생성한다. * * @date 2019. 4. 17. * @memberOf member * @param {String} service 서비스ID * @param {String} method 서비스 조회 메서드 * @param {String} paramVO 조회시 파라메터로 전달되는 객체 (맵을 매핑할 도메인) * @param {String} paramMap 조회시 파라메터로 전달하는 맵 * @param {Object} gridViewObj 조회결과를 보여주는 그리드 객체 (gridview 의 id) * @param {Object} options 엑셀생성옵션 * @param {Object} info 엑셀생성정보 * @returns returns * @author NOHEART * @example com.fncMakeExcelProvider("incomeService", "findIncomeQuantityStatList", "cfs.income.vo.IncomeParamsVO", statMap, grd_statList, {}, {}); * @since */ com.fncMakeExcelProvider = function(service, method, paramVO, paramMap, gridViewObj, options, info) { var totalCnt = gridViewObj.getTotalRow(); if (totalCnt > 0) { //엑셀다운로드 실행 } else { com.alert("엑셀다운로드할 정보가 없습니다."); return false; } //그리드뷰에서 보여주는 컬럼목록을 획득한다. var totalCol = gridViewObj.getTotalCol(); var cols = ""; var hidCols = ""; for (var i = 0; i < totalCol; i++) { // 그리드에 표시된 항목중 열숨기기 되어있는 컬럼은 엑셀파일에 저장시키지 않도록 함. if ((!gridViewObj.getColumnVisible(i)) || (gridViewObj.getColumnType(i)=='checkbox') ) { if (hidCols != '') { hidCols += ","+i; } else { hidCols = ''+i; } } if (i > 0) { cols += ","; } cols += gridViewObj.getColumnID(i); } if (options.ismap == 'true') { options.splitProvider = "cfs.common.provider.MapExcelSplitDown"; } else { options.splitProvider = "cfs.common.provider.ExcelSplitDown"; } //엑셀저장 요청 XML 정보 생성 options.providerRequestXml = _setProviderData(service, method, paramVO, paramMap, cols); options.useFooterData = "true"; //footer 값을 서식없이 그대로 올린다. options.useSubTotalData = "true"; //subtotal 값을 서식없이 그대로 올린다. options.useStyle = "true"; //화면의 서식을 그대로 사용한다. options.removeColumns = hidCols; //엑셀저장에서 제외할 컬럼 //엑셀저장 gridViewObj.advancedExcelDownload(options, info); /** * 엑셀저장 요청 XML 정보 생성 */ function _setProviderData(service, method, paramVO, paramMap, cols) { var serviceXml = "" + service + ""; var methodXml = "" + method + ""; var voXml = "" + paramVO + ""; var colsXml = "" + cols + ""; var paramXml = "" + JSON.stringify(paramMap.getJSON()) + ""; return "" + serviceXml + methodXml + voXml + colsXml + paramXml + ""; }; }; /** * Choice 메시지 창을 호출한다. * * @date 2019.05.12 * @memberOf com * @param {String} messageStr 메시지 * @param {String} closeCallbackFncName 콜백 함수명 * @author Neighbor System * @example * com.choice("선택하세요. 예/아니오/취소", "scwin.userChoiceCallback"); */ com.choice = function(messageStr, closeCallbackFncName) { com.messagBox("choice", messageStr, closeCallbackFncName); }; /** * DataCollection 의 DataList 를 생성한다. * Function description... * @date 2019. 5. 13. * @memberOf member * @param param * @returns returns * @author NOHEART * @example * @since */ com.makeDataList = function(id, columnArr) { if(WebSquare.util.getComponentById(id) != undefined){ $w.data.remove(id); } $w.data.create({ "id": id , "type": "dataList" , "option": { "useData": false } , "columnInfo": columnArr }); }; Array.prototype.contains = function(element) { for (var i = 0; i < this.length; i++) { if (this[i] == element) { return true; } } return false; } String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,""); } String.prototype.ltrim = function() { return this.replace(/^\s+/,""); } String.prototype.rtrim = function() { return this.replace(/\s+$/,""); } var etaxMsg = { MESSAGE_CODE : { ALREADY_IN : "이미 시세입 처리하였습니다. 수정 불가능합니다.", NON_ETAX : "ETAX파일생성 이후 시세입 등록이 가능합니다.", SELECT_IN : "시세입 등록할 데이터를 선택해 주세요", SELECT_DEL : "시세입 삭제할 데이터를 선택해 주세요", NON_DATA : "대상이 존재하지 않습니다." } }; gcm.progress = { wait : false, intervalID : null, dataCount : 0, successCount : 0, funcWhenDone : null, processMsgs : [] }; gcm.ajaxReqs = []; gcm.ajaxStart = function(ajaxReqArray, processMsgArray, funcWhenDone){ if(ajaxReqArray.length == 0 || ajaxReqArray.length != processMsgArray.length){ return; } gcm.ajaxReqs = ajaxReqArray; gcm.progress.dataCount = ajaxReqArray.length; gcm.progress.successCount = 0; gcm.progress.intervalID = null; gcm.progress.wait = false; gcm.progress.funcWhenDone = null; gcm.progress.processMsgs = processMsgArray; if(funcWhenDone != null){ gcm.progress.funcWhenDone = funcWhenDone; } gcm.progress.intervalID = setInterval(gcm.ajaxStep, 100); }; gcm.ajaxStep = function(){ if(!(gcm.progress.wait)){ gcm.progress.wait = true; if(gcm.ajaxReqs.length > 0){ let pureAjaxReq = gcm.ajaxReqs.shift(); let msg = gcm.progress.processMsgs.shift(); WebSquare.layer.showProcessMessage(msg); $.ajax( pureAjaxReq ); } else { let dataCount = gcm.progress.dataCount; let successCount = gcm.progress.successCount; clearInterval(gcm.progress.intervalID); gcm.progress.dataCount = 0; gcm.progress.successCount = 0; gcm.progress.intervalID = null; gcm.progress.wait = false; WebSquare.layer.hideProcessMessage(); if(gcm.progress.funcWhenDone != null){ gcm.progress.funcWhenDone(successCount, dataCount); } gcm.progress.funcWhenDone = null; } } };