no message

main
이범준 1 year ago
parent 6f81e5a945
commit eb350ef38e

@ -1,113 +1,5 @@
### VM options 추가
```text
[이클립스]
프로젝트 우클릭 > Run As > Run Configurations > Arguments 탭
> VM arguments에 -Dspring.config.activate.on-profile=local -Dfile.encoding=UTF8 추가
[인텔리제이]
1) 톰캣 vm 설정
서버설정 > VM options에 -Dspring.config.activate.on-profile=local -Dfile.encoding=UTF8 추가
2) 전역 vm 설정
Actions열기 > Edit Custom VM Options... 선택 > -Dfile.encoding=UTF8 추가
```
### Slf4j 사용시 log cannot be resolved 에러 처리
```text
[이클립스 설정]
1. 이클립스의 Maven Dependencies 에서 lombok-1.18.8.jar 파일을 찾는다.
2. lombok-1.18.8.jar 파일을 우클릭 -> run as -> java application -> 프로세스 진행
3. lombok jar 파일이 실행되며 install 창이 표시된다.
4. specify location -> 이클립스 위치의 eclipse.ini 를 선택 -> install/update 진행
5. install 이 정상적으로 실행 된다.
6. 이클립스로 돌아와 프로젝트를 clean -> restart 한다.
7. log 관련 에러가 사라진다.
* 에러가 사라지지 않을 경우 이클립스를 재실행한다.
```
### 메이븐 설정
```text
1) settings.xml 파일 경로 설정
[이클립스]
window > preferences > maven > User Settings
Global Settings, User Settings : settings.xml 파일 경로 입력
[인텔리제이]
file > settings > Build, Excecution, Deployment > Build Tools > Maven
User settings file : settings.xml 파일 경로 입력
2) settings.xml 파일 교체
로컬의 settins.xml을 프로젝트폴더/doc/conf/settings.xml 파일로 교체
3) 메이븐 버전 변경(내부망 https ssl 연결 불가 시)
메이븐 3.8.1 미만 버전으로 교체한다.
[이클립스]
window > preferences > maven > installations
add 클릭 > 메이븐 설치된 로컬 경로 지정
[인텔리제이]
file > settings > Build, Excecution, Deployment > Build Tools > Maven
maven home path 항목 : 메이븐 설치된 로컬 경로 지정
```
### commit message template
```text
--- COMMIT MESSAGE ---
타입: 제목 - 50 자 이내로 요약
본문 - 한 줄에 최대 72 글자까지만 입력 / 여러줄 입력시 '-' 로 구분
꼬릿말은 아래에 작성: ex) #123 / closed: #123
closed, fixed, resolved 예약어와 이슈번호를 함께 사용시 해당 이슈 자동 종료
--- COMMIT MESSAGE END ---
<타입> 리스트
feat : 기능(새로운 기능)
fix : 버그 수정
chore : 기타 변경 사항(빌드 혹은 패키지 매지저 등)
style : 비즈니스 로직에 영향을 주지 않는 변경 사항(코드 형식 등)
refactor : 리팩토링
test : 테스트(테스트 코드: 비즈니스 로직 변경 없음)
docs : 문서
build : 빌드 관련 파일 수정
ci : CI 관련 설정
-----------------------
제목 첫 글자를 대문자로
제목은 명령문으로
제목 끝에 마침표(.) 금지
제목과 본문을 한 줄 띄워 분리하기
본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
본문에 여러줄의 메시지를 작성할 땐 "-"로 구분
-----------------------
작성 예
--------------------------------------
feat: 관심지역 알림 ON/OFF 기능 추가
- 시군구의 알림을 각각 ON/OFF 할 수 있도록 기능을 추가함
- opnion0055: 구분 코드
이슈트래커 #123 - fix 타입 메세지등은 closed #123
---------------------------------------
1) 위 내용을 'gitmessage.txt'로 저장
2) git config --global commit.template {path}/gitmessage.txt
3) git config --list 명령으로 commit.template={path}/gitmessage.txt 확인
```
#### github
```text
http://xit.xit-git.com:3000/xit-java/fims.git
```
### 테스트 서버 기동 방법
```text
@ -116,7 +8,7 @@ http://xit.xit-git.com:3000/xit-java/fims.git
젠킨스 관리자 페이지 로그인 -> DEV-FIMS 빌드
3) 톰캣 직접 기동(2단계 실패시)
원격접속
-> 톰캣 디렉토리(/application/FIMS) 이동
-> 톰캣 디렉토리(/application/FIMS) 이동
-> ./stop.sh, ./deploy.sh, ./start.sh 순서로 실행
```
@ -125,7 +17,7 @@ http://xit.xit-git.com:3000/xit-java/fims.git
1) 표기법 변경
[인텔리제이]
CamelCase 플러그인 : kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case 또는 space case 간에 쉽게 전환
CamelCase 플러그인 : kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case 또는 space case 간에 쉽게 전환
(Shift + Alt + U)
2) Git 관련
[인텔리제이]
@ -148,7 +40,7 @@ http://xit.xit-git.com:3000/xit-java/fims.git
ColorZilla : 웹페이지 내 색상코드 확인 가능
```
#### 유틸 프로그램
```text
```text
1) 색상 확인
picpick : 화면캡처프로그램. 스포이드 툴로 색상코드 확인 가능
2) git 클라이언트 프로그램
@ -159,15 +51,15 @@ http://xit.xit-git.com:3000/xit-java/fims.git
```html
1) 변수 정의
<c:set var="isUpdate" value="${!empty 조건값}"/>
<c:set var="isUpdate" value="${!empty 조건값}"/>
<c:set var="bizName" value="권한"/>
2) title include
<div class="popup">
<div class="container-window1">
<!-- popup title -->
<%@include file="/WEB-INF/jsp/include/fims/title-biz-popup.jsp"%>
<div class="container-window-btn1">
<span colspan="4">
<a href="#" class="btn btn-blue" id="btnRegist">등록</a>
@ -176,7 +68,7 @@ http://xit.xit-git.com:3000/xit-java/fims.git
<a href="#" class="btn btn-lightgray" onclick="window.close()">닫기</a>
</span>
</div>
<!--팝업 버튼 -->
<%@include file="/WEB-INF/jsp/include/fims/btns-biz-popup.jsp"%>
@ -204,10 +96,10 @@ http://xit.xit-git.com:3000/xit-java/fims.git
}
```
## 참조 - 필수
[git 사용법 강좌](https://www.youtube.com/watch?v=1I3hMwQU6GU&t=4031s)
[css flex / grid 강좌1](https://www.youtube.com/watch?v=7neASrWEFEM)
[css flex / grid 강좌2](https://www.youtube.com/watch?v=eprXmC_j9A4)
[css flex / grid 강좌3](https://www.youtube.com/watch?v=DxwBN7vdr-A&list=PLFeNz2ojQZjso4ZJVeeMWR72l8s9V8Ym9)
[git 사용법 강좌](https://www.youtube.com/watch?v=1I3hMwQU6GU&t=4031s)
[css flex / grid 강좌1](https://www.youtube.com/watch?v=7neASrWEFEM)
[css flex / grid 강좌2](https://www.youtube.com/watch?v=eprXmC_j9A4)
[css flex / grid 강좌3](https://www.youtube.com/watch?v=DxwBN7vdr-A&list=PLFeNz2ojQZjso4ZJVeeMWR72l8s9V8Ym9)
## JSP에서 el태그(${})에 JSTL <c:out>을 사용해야 하는 이유
```text
@ -281,12 +173,12 @@ $("#btnClose").on('click', () => {
<jsp:include page="파일경로/파일명">
<jsp:param value="myValue" name="myKey"/>
</jsp:include>
</jsp:include>
전달받은 쪽 - 전달받은 값 : <%= request.getParameter("myKey") %>
<jsp:include> 액션 태그로 포함하는 페이지에서만 유효.
2-2. 코어태그(JSTL) 사용
- <c:param> 태그로 데이터 전송 가능
@ -296,26 +188,26 @@ $("#btnClose").on('click', () => {
scope="변수의 공유 범위"
varReader="리소스의 내용을 Reader 객체로 읽어올 때 사용"
charEncoding="읽어온 데이터의 캐릭터셋 지정">
<c:param name='' value='${}'/>
<c:param name='' value='${}'/>
</c:import>
```
## Mybatis select key 여러개
```xml
<selectKey keyColumn="aaaId,bbbId" keyProperty="aaaId,bbbId"
<selectKey keyColumn="aaaId,bbbId" keyProperty="aaaId,bbbId"
resultType="cokr.xit.fims.biz.ec.CctvCrackdownDTO$ExtrlRegltCntc" order="BEFORE">
SELECT LPAD(IFNULL(MAX(CAST(aaa_id AS UNSIGNED))+1, 1), 12, '0') AS aaaId
, LPAD(IFNULL(MAX(CAST(bbb_id AS UNSIGNED))+1, 1), 20, '0') AS bbbId
FROM tb_aaa
</selectKey>
<!--
주의사항
selectKey 여러개 가져올 때는 반드시,
<!--
주의사항
selectKey 여러개 가져올 때는 반드시,
콤마 한 다음 반드시 붙여줘야 한다(space가 있으면 오류 발생)
keyColumn="fileLinkId,crdnId" keyProperty="fileLinkId,crdnId"
-->
-->
```
## 상속 구조의 lombok builder 사용 -> @SuperBuilder 사용해야 한다

@ -41,8 +41,6 @@
<script type="text/javascript" src="${ctx}/resources/js/fims/framework/cmm/cmmUtil.js"></script>
<script type="text/javascript" src="${ctx}/resources/js/base/base-fims.js"></script>
<script type="text/javascript" src="${ctx}/resources/js/base/dataset-fims.js"></script>
<%--TODO: 보완 필요 : 공통 ajax 호출 모듈과 통합 필요 --%>
<script type="text/javascript">
var XitIncludeBase = {

@ -1,212 +0,0 @@
ComboCodeData = {
// 시스템구분코드 : FIM001
sysSeCd: [
{value: 'BPV', text: '전용차로위반'}
,{value: 'DPV', text: '장애인전용'}
,{value: 'ECA', text: '전기차주차'}
,{value: 'PVS', text: '주정차위반'}
]
// 기관코드 : XIT025
,sggCd: [
{value: '3650000', text: '대전광역시 중구'}
,{value: '3670000', text: '대전광역시 유성구'}
]
// 등록구분 : FIM026
,crdnRegSeCd: [
{value: '10', text: '자동등록'}
,{value: '20', text: '수기등록'}
]
// 단속구분코드 : FIM002
,crdnSeCd: [
{value: '01', text: '고정형CCTV'}
,{value: '02', text: '주행형CCTV'}
,{value: '03', text: '모바일'}
,{value: '05', text: '타기관이첩'}
,{value: '06', text: '수기보행등록'}
,{value: '07', text: '버스장착형CCTV'}
,{value: '08', text: '생황불편신고'}
,{value: '09', text: '국민신문고'}
,{value: '10', text: '안전신문고'}
,{value: '11', text: '새올민원'}
,{value: '12', text: '홈페이지'}
,{value: '13', text: 'PDA'}
,{value: '14', text: '경찰서이첩'}
,{value: '15', text: '소방서이첩'}
]
// 입력구분코드 : FIM003
,crdnInptSeCd: [
{value: '01', text: '시청'}
,{value: '02', text: '구청'}
,{value: '03', text: '시민'}
]
// 위반내역코드(주정차) : FIM004
,violtDtlsCode: [
{value: '01', text: '주정차 금지구역'}
,{value: '02', text: '보도(인도)위'}
,{value: '03', text: '어린이보호구역'}
,{value: '04', text: '주민신고'}
,{value: '05', text: '안전지대'}
,{value: '06', text: '횡단보도'}
,{value: '07', text: '택시,버스정류장'}
,{value: '08', text: '다리위'}
,{value: '09', text: '소화전앞'}
,{value: '10', text: '이중주차 및 대각.직각주차'}
,{value: '11', text: '터널안'}
,{value: '12', text: '공사구역'}
,{value: '13', text: '교차로'}
,{value: '14', text: '건널목'}
,{value: '15', text: '도로모퉁이'}
,{value: '99', text: '기타'}
]
// 위반내역코드(전용차로) : FIM005
,violtDtlsCode2: [
{value: '01', text: '버스전용차로'}
,{value: '02', text: '다인승전용차로'}
,{value: '03', text: '자전거전용차로'}
,{value: '04', text: '간선급행버스(BRT)전용주행로'}
]
// 장애인위반코드 : FIM006
,tempVioltCd: [
{value: '01', text: '주차위반'}
,{value: '02', text: '주차방해'}
,{value: '03', text: '표지위반'}
]
// 단속 특별 구역 구분 코드 : FIM007
,crdnSpareaCd: [
{value: '01', text: '어린이 보호구역'}
,{value: '02', text: '노인 보호구역'}
,{value: '03', text: '소방시설'}
,{value: '04', text: '자전거전용도로'}
,{value: '05', text: '장애인 보호구역'}
]
// 외부단속연계처리 : FIM008
,FIM008: [
{value: '0', text: '미처리'}
,{value: '1', text: '전송완료'}
,{value: '2', text: '전송실패'}
]
// 차종종별코드 : FIM009
,carCtgyCode: [
{value: '1', text: '승용'}
,{value: '2', text: '승합'}
,{value: '3', text: '화물'}
,{value: '4', text: '특수'}
,{value: '5', text: '이륜차'}
,{value: '6', text: '건설기계'}
]
// 단속처리상태코드 : FIM010
,crdnSttsCd: [
{value: '01', text: '초기상태'}
,{value: '10', text: '부과대상'}
,{value: '11', text: '서손'}
,{value: '12', text: '계도'}
,{value: '20', text: '부과'}
]
// 납부자구분코드 : FIM011
,rtpyrClassificationCode: [
{value: '01', text: '개인'}
,{value: '02', text: '법인'}
,{value: '03', text: '단체'}
,{value: '05', text: '외국인'}
]
// 납부자연락처구분 : FIM012
,rtpyrConnDivCode: [
{value: '01', text: '전화'}
,{value: '02', text: '휴대전화'}
]
// 지번도로주소구분 : FIM013
,addressDivCode: [
{value: '01', text: '지번'}
,{value: '02', text: '도로명'}
]
// 납부자상태코드 : FIM014
,rtpyrStsCode: [
{value: '10', text: '거주자'}
,{value: '11', text: '국외이주신고자'}
,{value: '15', text: '직권조치중'}
,{value: '40', text: '말소자'}
,{value: '41', text: '사망말소'}
,{value: '43', text: '거주불명등록자'}
,{value: '45', text: '현지이민자'}
,{value: '47', text: '국외이주자'}
,{value: '49', text: '국적이탈자'}
,{value: '99', text: '기타'}
]
// 납부자등록구분 : FIM015
,rtpyrRegDivCode: [
{value: '01', text: '자동차관리정보시스템'}
,{value: '02', text: '수기입력'}
]
// 민원구분 : FIM016
,cvlcptAplySeCd: [
{value: '140', text: '민원이송'}
,{value: '180', text: '답변'}
]
// 시민신고처리상태 : FIM017
,ctznSttemntProcessSttus: [
{value: '01', text: '미처리'}
,{value: '02', text: '답변가능'}
,{value: '03', text: '답변완료'}
]
// 시민신고상세처리상태 : FIM018
,ctznSttemntDetailProcessSttus: [
{value: '01', text: '미처리'}
,{value: '02', text: '수용'}
,{value: '03', text: '미수용'}
]
// 이미지구분코드 : FIM027
,imageSeCode: [
{value: '1', text: '이미지'}
,{value: '2', text: '동영상'}
]
, disallowAnswerSeCode: [
{value: '01', text: '번호판독불가'}
,{value: '02', text: '차적불명'}
,{value: '03', text: '착오단속'}
,{value: '04', text: '운전자복귀'}
,{value: '05', text: '차량번호변경'}
,{value: '06', text: '임차인부과'}
,{value: '07', text: '1일다중단속'}
,{value: '08', text: '재판독'}
,{value: '99', text: '기타'}
]
, enlightAnswerSeCode: [
{value: '00', text: '기본값'}
,{value: '01', text: '스마트제보'}
,{value: '02', text: '일반카메라'}
,{value: '03', text: '안전표시(교차로모퉁이)'}
,{value: '04', text: '안전표시(소방시설)'}
,{value: '05', text: '어린이보호구역'}
,{value: '06', text: '일반단속구간'}
,{value: '07', text: '신고대상'}
]
, answerSeCode: [
{value: 'FIM028', text: '부과'}
,{value: 'FIM021', text: '불수용(서손)'}
,{value: 'FIM025', text: '계도'}
]
}

@ -1,616 +0,0 @@
var DateUtil = {
/*============================
* 현재날짜로부터 단위로 계산된 날짜(yyyymmdd) 반환
* -addMonth가 0 이면 현재월
* -음의 숫자면 전월 (ex: -1 전월, -2 전전월, -3 ...)
* -양의 숫자면 차월 (ex: 1 차월, 2 차차월, 3 ...)
============================*/
getDate : function(){
var result = new Object();
switch (arguments.length) {
case 1:
result = calcDate(arguments[0]);
break;
case 2:
result = calcDate(arguments[0], arguments[1]);
break;
default:
result = calcDate();
break;
}
return result;
//날짜 계산
function calcDate(addMonth, stdDay){
if(addMonth!=undefined)
addMonth = addMonth + 1;
addMonth = addMonth==undefined?1:addMonth;
/*
* 필수값 설정
* -날짜 설정
* -ago OR after 여부 설정
*/
var date = new Date();
var yyyy = date.getFullYear();
var mm = ( date.getMonth() + (addMonth) );
var dd = date.getDate();
if(stdDay!=undefined){
stdDay = stdDay.replace(/[^0-9]/gi,'');
yyyy = stdDay.substring(0,4);
mm = stdDay.substring(4,6);
dd = stdDay.substring(6,8);
if(addMonth==13)
yyyy = Number(yyyy)+1;
}
var isAfter = false;
if((addMonth*1)>0)
isAfter = true;
/*
* 유효성 처리
* -(year) 넘김 처리
* -말일(last day) 처리
*/
var newYear = DateUtil.getNewYear(isAfter, yyyy, mm);
yyyy = newYear.yyyy;
mm = newYear.mm;
var ago_last_dd = DateUtil.getEndOfMonthDay(yyyy, mm);
dd = dd>ago_last_dd?ago_last_dd:dd;
/*
* format 설정
*/
if( (''+dd).length == 1 )
dd = "0"+ dd;
/*
* 결과 반환
*/
var obj = new Object();
obj.date = ""+yyyy+mm+dd;
obj.yyyy = ""+yyyy;
obj.mm = ""+mm;
obj.dd = ""+dd;
return obj;
}
},
//+ 한달 후 말일 계산
getAddMonth : function(stdDay){
//날짜 계산
var rtnVal = calcDate(0,stdDay);
return rtnVal;
function calcDate(addMonth, stdDay){
if(addMonth!=undefined)
addMonth = addMonth + 1;
addMonth = addMonth==undefined?1:addMonth;
/*
* 필수값 설정
* -날짜 설정
* -ago OR after 여부 설정
*/
stdDay = stdDay.replace(/[^0-9]/gi,'');
var yyyy = stdDay.substring(0,4);
var mm = stdDay.substring(4,6);
var dd = stdDay.substring(6,8);
mm = Number(mm)+addMonth;
if(addMonth==13)
yyyy = Number(yyyy)+1;
var isAfter = false;
if((addMonth*1)>0)
isAfter = true;
/*
* 유효성 처리
* -(year) 넘김 처리
* -말일(last day) 처리
*/
var newYear = DateUtil.getNewYear(isAfter, yyyy, mm);
yyyy = newYear.yyyy;
mm = newYear.mm;
var ago_last_dd = DateUtil.getEndOfMonthDay(yyyy, mm);
dd = ago_last_dd;
/*
* format 설정
*/
if( (''+dd).length == 1 )
dd = "0"+ dd;
/*
* 결과 반환
*/
var obj = new Object();
obj.date = ""+yyyy+mm+dd;
obj.yyyy = ""+yyyy;
obj.mm = ""+mm;
obj.dd = ""+dd;
return obj;
}
},
/*============================
* 현재날짜(or 기준일)로부터 단위로 계산된 날짜(yyyymmdd) 반환
* -addDay가 0 이면 금일
* -음의 숫자면 전일 (ex: -1 작일, -2 재작일, -3 ...)
* -양의 숫자면 차일 (ex: 1 명일, 2 재명일, 3 ...)
============================*/
getDateDay: function(addDay){
var result = new Object();
switch (arguments.length) {
case 1:
result = calcDate(arguments[0], DateUtil.getDate().date);
break;
default:
result = calcDate(0, DateUtil.getDate().date);
break;
}
return result;
//날짜 계산
function calcDate(addDay, stdDay){
addDay = addDay==undefined||addDay==null?0:addDay*1;
/*
* 필수값 설정
* -날짜 설정
* -ago OR after 여부 설정
*/
var yyyy = stdDay.substring(0,4);
var mm = stdDay.substring(4,6);
var dd = stdDay.substring(6,8);
var date = new Date(yyyy, (mm-1)*1, dd*1);
date.setDate(date.getDate()+(addDay));
yyyy = date.getFullYear();
mm = date.getMonth()+1;
dd = date.getDate();
if( (''+mm).length == 1 )
mm = "0"+ mm;
if( (''+dd).length == 1 )
dd = "0"+ dd;
/*
* 결과 반환
*/
var obj = new Object();
obj.date = ""+yyyy+"-"+mm+"-"+dd;
obj.yyyy = yyyy;
obj.mm = mm;
obj.dd = dd;
return obj;
}
},
/*============================
* 달의 마지막 날짜(dd) 반환
============================*/
getEndOfMonthDay : function(yy, mm){
var max_days=0;
if(mm == 1 || mm == '01') {
max_days = 31 ;
} else if(mm == 2 || mm == '02') {
if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0))
max_days = 29;
else
max_days = 28;
}
else if (mm == 3 || mm == '03') max_days = 31;
else if (mm == 4 || mm == '04') max_days = 30;
else if (mm == 5 || mm == '05') max_days = 31;
else if (mm == 6 || mm == '06') max_days = 30;
else if (mm == 7 || mm == '07') max_days = 31;
else if (mm == 8 || mm == '08') max_days = 31;
else if (mm == 9 || mm == '09') max_days = 30;
else if (mm == 10 || mm == '10') max_days = 31;
else if (mm == 11 || mm == '11') max_days = 30;
else if (mm == 12 || mm == '12') max_days = 31;
else return '';
return max_days;
},
/*============================
* (year) 넘김 처리
============================*/
getNewYear : function(isAfter, yyyy, mm){
/*
* (year) 넘김 처리
*/
if(isAfter){
if(mm>12){
var formula = Math.floor(mm/12);
yyyy = Number(yyyy)+(formula);
mm = mm - ((formula)*12);
}
}else{
if(mm<1){
var formula = Math.floor((mm*(-1))/12)+1;
yyyy = yyyy-(formula);
mm = mm + ((formula)*12);
}
}
/*
* 포맷 설정
* -(month) 두자리 설정
*/
if( (''+mm).length == 1 )
mm = "0"+ mm;
/*
* 결과 반환
*/
var obj = new Object();
obj.yyyy = ''+yyyy;
obj.mm = ''+mm;
return obj;
},
}
/**
* 입력일의 이전일 계산
*/
window.getPrevDay = function(datestr, days) {
if ( days == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
var dateObj = window.getDateObject(datestr);
dateObj.setDate(dateObj.getDate() - parseInt(days, 10));
return window.getDateString(dateObj);
};
/**
* 입력일의 다음일 계산
*/
window.getNextDay = function(datestr, days) {
if ( days == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
var dateObj = window.getDateObject(datestr);
dateObj.setDate(dateObj.getDate()+ parseInt(days, 10));
return window.getDateString(dateObj);
};
/**
* 해당월의 마지막날
*/
window.getLastDay = function(datestr) {
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
var strNextMonth = window.addMonth(datestr, 1);
strNextMonth = strNextMonth.replace(/-/g, "");
datestr = strNextMonth.substring(0, 6) + '01';
var strLastDay = window.addDate(datestr, -1);
strLastDay = strLastDay.replace(/-/g, "");
var dateObj = window.getDateObject(strLastDay);
return dateObj.getDate();
};
/**
* , , 일을 입력 받아 Date String으로 변환
*/
window.getDatetime = function(nYear, nMonth, nDate)
{
var objDate = null;
if (nYear.toString().trim().length >= 5) {
var sDate = new String(nYear);
var nYear = sDate.substr(0,4);
var nMonth = sDate.substr(4,2);
var nDate = ((sDate.substr(6,2) == "") ? 1 : sDate.substr(6,2));
var nHours = ((sDate.substr(8,2) == "") ? 0 : sDate.substr(8,2));
var nMinutes = ((sDate.substr(10,2) == "") ? 0 : sDate.substr(10,2));
var nSeconds = ((sDate.substr(12,2) == "") ? 0 : sDate.substr(12,2));
objDate = new Date(parseInt(nYear), parseInt(nMonth)-1, parseInt(nDate), parseInt(nHours), parseInt(nMinutes), parseInt(nSeconds));
} else {
objDate = new Date(parseInt(nYear), parseInt(nMonth)-1, parseInt(((nDate == null) ? 1 : nDate)));
}
var strYear = objDate.getFullYear().toString();
var strMonth = (objDate.getMonth() + 1).toString();
var strDate = objDate.getDate().toString();
if (strMonth.length == 1) strMonth = "0" + strMonth;
if (strDate.length == 1) strDate = "0" + strDate;
return strYear + "-" + strMonth + "-" + strDate;
};
/**
* 계산
*/
window.addYear = function(date, nOffSet)
{
date = date.replace(/-/g, "");
var nYear = parseInt(date.substr(0, 4), 10) + nOffSet;
var nMonth = parseInt(date.substr(4, 2), 10);
var nDate = parseInt(date.substr(6, 2), 10);
return window.getDatetime(nYear, nMonth, nDate);
};
/**
* 계산
*/
window.addMonth = function(date, nOffSet)
{
date = date.replace(/-/g, "");
var nYear = parseInt(date.substr(0, 4), 10);
var nMonth = parseInt(date.substr(4, 2), 10) + nOffSet;
var nDate = parseInt(date.substr(6, 2), 10);
return window.getDatetime(nYear, nMonth, nDate);
};
/**
* 계산
*/
window.addDate = function(date, nOffSet)
{
date = date.replace(/-/g, "");
var nYear = parseInt(date.substr(0, 4), 10);
var nMonth = parseInt(date.substr(4, 2), 10);
var nDate = parseInt(date.substr(6, 2), 10) + nOffSet;
return window.getDatetime(nYear, nMonth, nDate);
};
/**
* 이전해 계싼
*/
window.getPrevYear = function(datestr, year) {
if ( year == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
var dateObj = window.getDateObject(datestr);
dateObj.setYear(dateObj.getFullYear() - year);
return window.getDateString(dateObj);
};
/**
* 다음해 계산
*/
window.getNextYear = function(datestr, year) {
if ( year == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
var dateObj = window.getDateObject(datestr);
dateObj.setYear(dateObj.getFullYear() + year);
return window.getDateString(dateObj);
};
/**
* select 연도
*/
window.setYearCombo = function(id,isAll,isSelect,range){
var now = new Date();
var dayYear = now.getFullYear();
var str = "";
if(range == null || range <= 0){
range = 5;
}
if(isAll){
str += "<option value=''>선택</option>";
}
for(var year=dayYear-range; year<dayYear+range + 1 ; year++){
str += "<option value='"+year+"'>"+year+"</option>";
}
$("#"+id).append(str);
if(isSelect){
$("#"+id).val(dayYear).attr("selected", "selected");
}
};
/**
* select 연도(올해이후)
*/
window.setYearComboNext = function(id,isAll,isSelect,range){
var now = new Date();
var dayYear = now.getFullYear();
var str = "";
if(range == null || range <= 0){
range = 5;
}
if(isAll){
str += "<option value=''>선택</option>";
}
for(var year=dayYear; year<dayYear+range + 1 ; year++){
str += "<option value='"+year+"'>"+year+"</option>";
}
$("#"+id).append(str);
if(isSelect){
$("#"+id).val(dayYear).attr("selected", "selected");
}
};
/**
* select 년월
*/
window.setYearMonCombo = function(id,isAll,isSelect){
var day = new Date();
var dayYear = day.getFullYear().toString();
var now = day.getMonth()+1;
now = dayYear + (now < 10 ? "0" : "") + now;
var month = "";
var str = "";
if(isAll){
str += "<option value=''>선택</option>";
}
for(var i = 1; i <13 ; i++){
month = i < 10 ? "0" + i : "" + i;
str += "<option value='"+dayYear +"" + month +"'>"+ dayYear + "/" + month + "</option>";
}
$("#"+id).append(str);
if(isSelect){
$("#"+id).val(now).attr("selected", "selected");
}
};
/**
* 문자열 날짜 숫자로 변경
*/
window.stringDateToNum = function(paramStr){
var str = paramStr.replace(/-/g, "");
var dateNum = "";
for (var i=0; i<str.length;i++ ) {
if ((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))
dateNum = dateNum + str.charAt(i);
}
if (dateNum.length < 1) {
alert(J.getMessage("cmm.warning.001"));
return false;
}
//if ((dateNum.length != 6) && (dateNum.length != 8)) {
if (dateNum.length != 8) {
alert(J.getMessage("cmm.warning.001"));
return false;
}
if (dateNum.length == 6) {
if (parseInt(dateNum.substr(0, 2), 10) >= 50 )
dateNum = "19" + dateNum;
else
dateNum = "20" + dateNum;
}
return dateNum;
};
/**
* 일자간의 일수 계산
* @param1 day1 : 일자 8자리 - 'YYYYMMDD', 'YYYY-MM-DD', 'YYYY/MM/DD', etc
* @param2 day2 : 일자 8자리 - 'YYYYMMDD', 'YYYY-MM-DD', 'YYYY/MM/DD', etc
* @return 일자간의 일수
*/
window.calcDayCount = function(day1, day2) {
day1 = day1.replace(/-/g, "");
day2 = day2.replace(/-/g, "");
if (day1 == "" || day2 == "") return "";
var date1 = window.getDateObject(day1);
var date2 = window.getDateObject(day2);
if(date1 > date2) return ((date1.getTime() - date2.getTime()) / 1000 / 60 / 60 / 24) + 1;
else return ((date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24) + 1;
};
/**
* Get 요일
*/
window.getWeek = function(datestr, isConvert){
datestr = datestr.replace(/-/g, "");
var dateObj = window.getDateObject(datestr);
var week = dateObj.getDay() + 1;
if(!isConvert) return week;
if(week == 1) week = '일';
else if(week == 2) week = '월';
else if(week == 3) week = '화';
else if(week == 4) week = '수';
else if(week == 5) week = '목';
else if(week == 6) week = '금';
else if(week == 7) week = '토';
return week;
};
//-----------------------------------------------------------
// 현재년월 구하기
//-----------------------------------------------------------
window.getYearMonth = function() {
var today = getToday();
var yearMonth = today.substr(0, 7);
return yearMonth;
};
/**
* 날짜형식이 올바른지 검사
*
* @param astrValue 날짜포맷(yyyymmdd, yyyy/mm/dd, yyyy-mm-dd)
* @param astrNotNull: nn:not null, "": null 허용
* @return true/false
**/
function blnOkDate(astrValue, astrNotNull)
{
var arrDate;
if (astrValue=='')
{
if (astrNotNull == "nn")
return false;
else
return true;
}else{
if (astrValue.indexOf("-") != -1)
arrDate = astrValue.split("-");
else if (astrValue.indexOf("/") != -1)
arrDate = astrValue.split("/");
else
{
if (astrValue.length != 8) return false;
astrValue = astrValue.substring(0,4)+"/"+astrValue.substring(4,6)+"/" +astrValue.substring(6,8);
arrDate = astrValue.split("/");
}
if (arrDate.length != 3) return false;
var chkDate = new Date(arrDate[0] + "/" + arrDate[1] + "/" + arrDate[2]);
if (isNaN(chkDate) == true ||
(arrDate[1] != chkDate.getMonth() + 1 || arrDate[2] != chkDate.getDate()))
{
return false;
}
}
return true;
}
/**
* INPUT field에서 날짜를 입력받고서 유효한지 체크(yyyymmdd or yyyy-mm-dd or yyyy/mm/dd) 틀리면 Calendar Popup
*
* @param field INPUT 객체
**/
function openCalendar(dateField)
{
var obj = eval("document." + dateField);
if (obj.value == "")
return;
if (!blnOkDate(obj.value, "nn"))
{
obj.value = "";
showDateCalendar(dateField);
}
else
obj.value = dateFormat(obj.value, "YYYY-MM-DD");
}
Loading…
Cancel
Save