You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

695 lines
23 KiB
JavaScript

/**
*
* 날짜,시간 형식을 변환하여 준다.
* @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>" + service + "</service>";
var methodXml = "<method>" + method + "</method>";
var voXml = "<vo>" + paramVO + "</vo>";
var colsXml = "<cols>" + cols + "</cols>";
var paramXml = "<param>" + JSON.stringify(paramMap.getJSON()) + "</param>";
return "<data>" + serviceXml + methodXml + voXml + colsXml + paramXml + "</data>";
};
};
/**
* 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;
}
}
};