소스 정리
parent
465ddfb6c7
commit
24dfdfe189
@ -1,667 +0,0 @@
|
||||
/**************************************************************************
|
||||
* 동기식 대화상자
|
||||
**************************************************************************/
|
||||
async function confirm2(msg){
|
||||
return await dialog2(msg, "confirm");
|
||||
}
|
||||
|
||||
async function alert2(msg){
|
||||
return await dialog2(msg, "alert");
|
||||
}
|
||||
|
||||
async function prompt2(msg){
|
||||
return await dialog2(msg, "prompt");
|
||||
}
|
||||
|
||||
async function dialog2(msg, type, buttons){
|
||||
var dlgId = "dlg-" + uuid();
|
||||
var resp = await fetch(wctx.url("/webjars/html/dialog.html"));
|
||||
var template = await resp.text();
|
||||
var container = "<div class='container-fluid text-center fs-4'>{content}</div>";
|
||||
if(type == "prompt"){
|
||||
var rsn = '<br/><textarea type="text" id="rsn" class="form-control w-100"></textarea>';
|
||||
content = container.replace(/{content}/g, msg + rsn);
|
||||
} else {
|
||||
content = container.replace(/{content}/g, msg);
|
||||
}
|
||||
var backdropID = dlgId + "-backdrop";
|
||||
var tmpl = template.replace(/{id}/g, dlgId).replace(/{title}/g, "").replace(/{size}/, "").replace("","");
|
||||
tmpl = tmpl.replace("modal-dialog", "modal-dialog-centered modal-dialog");
|
||||
tmpl = tmpl.replace("data-bs-backdrop=\"static\"", "data-bs-backdrop=\"static\" data-bs-keyboard=\"false\"");
|
||||
tmpl = tmpl.replace("text-end hidden","text-end");
|
||||
tmpl = tmpl.replace("btn-primary","btn-primary btn-ok");
|
||||
var dlg = $(tmpl).appendTo("body");
|
||||
if(type == "confirm" || type == "alert" || type == "prompt"){
|
||||
if(type == "confirm" || type == "prompt"){
|
||||
dlg.find(".modal-footer").append('<button type="button" class="btn btn-primary btn-cancel">취소</button>');
|
||||
}
|
||||
} else {
|
||||
dlg.find(".modal-footer").find(".btn-ok").remove();
|
||||
|
||||
for(var i=0; i < buttons.length; i++){
|
||||
dlg.find(".modal-footer").append(
|
||||
'<button type="button" class="btn btn-primary btn-custom" data-key="'+buttons[i].key+'" >'
|
||||
+buttons[i].value
|
||||
+'</button>');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dlg.find(".modal-header").remove();
|
||||
dlg.find(".modal-body").html(content).fadeIn();
|
||||
dlg.on("hidden.bs.modal", function() {
|
||||
$("#" + dlgId +",#" + backdropID).remove();
|
||||
});
|
||||
dlg.modal("show");
|
||||
$(".modal-backdrop").each(function() {
|
||||
var backdrop = $(this);
|
||||
if (!backdrop.prop("id")){
|
||||
backdrop.prop("id", backdropID);
|
||||
}
|
||||
});
|
||||
|
||||
setDialogZindex();
|
||||
|
||||
return new Promise(resolve => {
|
||||
if(type == "confirm" || type == "alert" || type == "prompt"){
|
||||
if(type == "prompt"){
|
||||
dlg[0].querySelector(".btn-ok").addEventListener("click", () => {
|
||||
dlg.modal("hide");
|
||||
resolve($("#rsn").val());
|
||||
});
|
||||
} else {
|
||||
dlg[0].querySelector(".btn-ok").addEventListener("click", () => {
|
||||
dlg.modal("hide");
|
||||
resolve(true);
|
||||
});
|
||||
}
|
||||
|
||||
if(type == "confirm"){
|
||||
dlg[0].querySelector(".btn-cancel").addEventListener("click", () => {
|
||||
dlg.modal("hide");
|
||||
resolve(false);
|
||||
});
|
||||
}
|
||||
if(type == "prompt"){
|
||||
dlg[0].querySelector(".btn-cancel").addEventListener("click", () => {
|
||||
dlg.modal("hide");
|
||||
resolve(null);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
dlg.find(".btn-custom").each(function(){
|
||||
this.addEventListener("click", () => {
|
||||
dlg.modal("hide");
|
||||
resolve(this.dataset.key);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* 모달창 z-index 초기화
|
||||
**************************************************************************/
|
||||
function setDialogZindex(){
|
||||
var parentDialog = getLastOpenDialog();
|
||||
var childDialog = getLastDialog();
|
||||
|
||||
if($(parentDialog).length == 0 || parentDialog == childDialog){
|
||||
return;
|
||||
}
|
||||
|
||||
var parentZ = $(parentDialog).css("z-index");
|
||||
$(childDialog).css("z-index", Number(parentZ)+10);
|
||||
|
||||
var backdrop = $(childDialog).next();
|
||||
if(backdrop.hasClass("modal-backdrop")){
|
||||
backdrop.css("z-index", Number(parentZ)+9);
|
||||
};
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* 모달창 닫기 버튼 포커스
|
||||
**************************************************************************/
|
||||
function focusClose() {
|
||||
$(document).find("div.modal").last().on('shown.bs.modal', function () {
|
||||
$(this).find(".btn-close").trigger('focus');
|
||||
});
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* 모달창 확인 버튼 포커스
|
||||
**************************************************************************/
|
||||
function focusOK() {
|
||||
$(document).find("div.modal").last().on('shown.bs.modal', function () {
|
||||
$(this).find(".modal-footer").find("button").each(function(){
|
||||
if($(this).text() == "확인"){
|
||||
$(this).trigger('focus');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* pdf파일 미리보기 창
|
||||
**************************************************************************/
|
||||
function openPDF(blob, windowName){
|
||||
|
||||
var popup = window.open(
|
||||
wctx.url("/resources/html/pdf.html")
|
||||
,windowName
|
||||
,'top=10, left=10'
|
||||
);
|
||||
popup.onload = () => {
|
||||
popup.makePdfFromBlob(blob);
|
||||
};
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* validation
|
||||
**************************************************************************/
|
||||
function customValidate(targetArr) {
|
||||
var handler = validationFailureHandler();
|
||||
for(var i=0;i<targetArr.length;i++){
|
||||
var input = targetArr[i];
|
||||
|
||||
if(!validInput(input)){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!input.required && input.value == ""){
|
||||
continue;
|
||||
}
|
||||
|
||||
//입력값의 최대 바이트 수 체크
|
||||
if(input.dataset.maxlengthb){
|
||||
if(!isMaxByte(input.value, input.dataset.maxlengthb)){
|
||||
handler.tooLong(input);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//입력값의 포맷형식 체크
|
||||
if(input.dataset.fmtType){
|
||||
if(input.dataset.fmtType == "day"){
|
||||
if(!isDate(input.value)){
|
||||
handler.typeMismatch(input);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(input.dataset.fmtType == "time"){
|
||||
if(!isTime(input.value)){
|
||||
handler.typeMismatch(input);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(input.dataset.fmtType == "zeroLpadNumber"){
|
||||
if(!isDigitString(input.value)){
|
||||
handler.typeMismatch(input);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열이 숫자형인지의 여부를 반환한다.
|
||||
* @param exceptChar - 추가 허용할 문자
|
||||
* @return 숫자형여부
|
||||
*/
|
||||
function isNumber(str, exceptChar) {
|
||||
return (/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/).test(str.replaceAll(exceptChar,"")) ? true : false;
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열이 숫자형문자 인지의 여부를 반환한다.(0~9만 허용)
|
||||
* @param
|
||||
* @return 숫자형문자 여부
|
||||
*/
|
||||
function isDigitString(str) {
|
||||
return (/^[0-9]+$/).test(str) ? true : false;
|
||||
};
|
||||
|
||||
// 시간체크
|
||||
function isTime(str) {
|
||||
|
||||
str = str.replaceAll(":","");
|
||||
|
||||
if(str.length != 6){
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isNumber(str, "")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var hour = str.substring(0,2);
|
||||
var minute = str.substring(2,4);
|
||||
var second = str.substring(4,6);
|
||||
|
||||
if(hour>="00" && hour<="23"){
|
||||
if(minute>="00" && minute<="59"){
|
||||
if(second>="00" && second<="59"){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// 날짜체크
|
||||
function isDate(str) {
|
||||
|
||||
str = str.replaceAll("-","");
|
||||
|
||||
if(str.length != 8){
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isNumber(str, "")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 숫자, length 확인
|
||||
var year = str.substring(0,4);
|
||||
var month = str.substring(4,6);
|
||||
var day = str.substring(6,8);
|
||||
|
||||
// 유효날짜 확인
|
||||
if (year>="0001" && year<="9999" && month>="01" && month<="12") {
|
||||
febDays = "29";
|
||||
if ((parseInt(year,10) % 4) == 0) {
|
||||
if ((parseInt(year,10) % 100) == 0 && (parseInt(year,10) % 400) != 0){
|
||||
febDays = "28";
|
||||
}
|
||||
}else{
|
||||
febDays = "28";
|
||||
}
|
||||
if (month=="01" && day>="01" && day<="31") return true;
|
||||
if (month=="02" && day>="01" && day<=febDays) return true;
|
||||
if (month=="03" && day>="01" && day<="31") return true;
|
||||
if (month=="04" && day>="01" && day<="30") return true;
|
||||
if (month=="05" && day>="01" && day<="31") return true;
|
||||
if (month=="06" && day>="01" && day<="30") return true;
|
||||
if (month=="07" && day>="01" && day<="31") return true;
|
||||
if (month=="08" && day>="01" && day<="31") return true;
|
||||
if (month=="09" && day>="01" && day<="30") return true;
|
||||
if (month=="10" && day>="01" && day<="31") return true;
|
||||
if (month=="11" && day>="01" && day<="30") return true;
|
||||
if (month=="12" && day>="01" && day<="31") return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 문자열이 지정한 최소길이 이상인지의 여부를 반환한다.
|
||||
* @param minLen - 최소길이
|
||||
* @return 최소길이 이상인지의 여부
|
||||
*/
|
||||
function isMin(str, minLen) {
|
||||
return str.length >= minLen;
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열이 지정한 최대길이 이하인지의 여부를 반환한다.
|
||||
* @param maxLen - 최대길이
|
||||
* @return 최대길이 이하인지의 여부
|
||||
*/
|
||||
function isMax(str, maxLen) {
|
||||
return str.length <= maxLen;
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열이 지정한 최소바이트수 이상인지의 여부를 반환한다.
|
||||
* @param minByte - 최소바이트수
|
||||
* @return 최소바이트수 이상인지의 여부
|
||||
*/
|
||||
function isMinByte(str, minByte) {
|
||||
return getByte(str) >= minByte;
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열이 지정한 최대바이트수 이하인지의 여부를 반환한다.
|
||||
* @param maxByte - 최대바이트수
|
||||
* @return 최대바이트수 이하인지의 여부
|
||||
*/
|
||||
function isMaxByte(str, maxByte) {
|
||||
return getByte(str) <= maxByte;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 문자열이 영어만으로 구성되어 있는지의 여부를 반환한다.
|
||||
* @param exceptChar - 추가 허용할 문자
|
||||
* @return 영어만으로 구성되어 있는지의 여부
|
||||
*/
|
||||
function isEng(str, exceptChar) {
|
||||
return (/^[a-zA-Z]+$/).test(str.replaceAll(exceptChar,"")) ? true : false;
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열이 숫자와 영어만으로 구성되어 있는지의 여부를 반환한다.
|
||||
* @param exceptChar - 추가 허용할 문자
|
||||
* @return 숫자와 영어만으로 구성되어 있는지의 여부
|
||||
*/
|
||||
function isEngNum(str, exceptChar) {
|
||||
return (/^[0-9a-zA-Z]+$/).test(str.replaceAll(exceptChar,"")) ? true : false;
|
||||
};
|
||||
|
||||
/**
|
||||
* 이메일 주소의 유효성 여부를 반환한다.
|
||||
* @return 유효성 여부
|
||||
*/
|
||||
function isEmail(str) {
|
||||
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(str);
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* 엑셀 파일 작성 정보 생성
|
||||
**************************************************************************/
|
||||
function getCellDefs($th, $td){
|
||||
var cellDefs = [];
|
||||
|
||||
for(var i=0; i < $th.length; i++){
|
||||
|
||||
var label = $th.eq(i).text();
|
||||
label = label.replace("\n", "");
|
||||
label = label.replace("\t", "");
|
||||
label = label.replace(" ", "");
|
||||
|
||||
if(label != ""){
|
||||
|
||||
var width = $th.eq(i).outerWidth();
|
||||
width = Math.ceil(width/10) + 2;
|
||||
|
||||
var field = "";
|
||||
if($td.eq(i).hasClass("privacy-cell")){
|
||||
field = $td.eq(i).find("span:eq(0)").text();
|
||||
} else {
|
||||
field = $td.eq(i).text();
|
||||
}
|
||||
field = field.replace("{", "");
|
||||
field = field.replace("}", "");
|
||||
field = field.replace("\n", "");
|
||||
field = field.replace("\t", "");
|
||||
field = field.replace(" ", "");
|
||||
|
||||
var cellDef = {
|
||||
label : label,
|
||||
width : width,
|
||||
field : field
|
||||
};
|
||||
|
||||
cellDefs.push(cellDef);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return JSON.stringify(cellDefs);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* UI요소 값 세팅
|
||||
**************************************************************************/
|
||||
$.fn.set = function(value) {
|
||||
return this.each(function(){
|
||||
if($(this).hasClass('form-date')){
|
||||
if(value != null && value.length == 8 && value.indexOf("-") == -1){
|
||||
value = value.substring(0,4) + "-" + value.substring(4,6) + "-" + value.substring(6,8);
|
||||
}
|
||||
$(this).datepicker("setDate", value);
|
||||
} else if($(this).hasClass('option-style-select')){
|
||||
$(this).val(value);
|
||||
this.changeUI();
|
||||
} else if(this.type == "checkbox" || this.type == "radio"){
|
||||
if(this.value == value){
|
||||
$(this).prop("checked", true);
|
||||
} else {
|
||||
$(this).prop("checked", false);
|
||||
}
|
||||
} else {
|
||||
if(this.dataset.fmtType == "number"){
|
||||
$(this).val(numberFormat.format(value));
|
||||
} else {
|
||||
$(this).val(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* FimsFormFields
|
||||
**************************************************************************/
|
||||
class FimsFormFields extends FormFields {
|
||||
|
||||
/**
|
||||
* form 에 json data set
|
||||
* element tag에 data-fmt-type 으로 데이타 format이 지정된 경우 해당 포맷으로 출력
|
||||
* @param {object} formObj document.querySelector('form')
|
||||
* @param {object} jsonData json type data
|
||||
*/
|
||||
set(ctrl,obj){
|
||||
|
||||
document.querySelectorAll(this.children).forEach(input => {
|
||||
|
||||
let prop = input.getAttribute("data-map")
|
||||
|| input.name
|
||||
|| input.id;
|
||||
if (!prop) return;
|
||||
|
||||
let dataItem = obj instanceof DataItem,
|
||||
value = dataItem ? obj.getValue(prop) : obj[prop];
|
||||
|
||||
if ("radio" == input.type) {
|
||||
if (value && value == input.value)
|
||||
input.checked = true;
|
||||
} else if("checkbox" == input.type) {
|
||||
if (value && value == input.value)
|
||||
input.checked = ("Y" === value);
|
||||
} else if(input.tagName == "SELECT") {
|
||||
for(let option of input.options) {
|
||||
if(option.value == value){
|
||||
option.selected = true;
|
||||
} else {
|
||||
option.selected = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(value == null){
|
||||
value = "";
|
||||
}
|
||||
// element data-fmt-type에 정의된 format 적용
|
||||
// dt - yyyy-mm-dd HH:mm:ss, day - yyyy-mm-dd, time - HH:mm:ss, number - #,###
|
||||
if(input.dataset.fmtType){
|
||||
const fmtType = input.dataset.fmtType;
|
||||
switch (fmtType) {
|
||||
case 'dt' :
|
||||
value = datetimeFormat.format(value);
|
||||
break;
|
||||
case 'day' :
|
||||
value = dateFormat.format(value);
|
||||
break;
|
||||
case 'time' :
|
||||
value = timeFormat.format(value);
|
||||
break;
|
||||
case 'number' :
|
||||
value = numberFormat.format(value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(input.name){
|
||||
if($(input).hasClass('form-date')){
|
||||
$(input).datepicker("setDate", value);
|
||||
} else {
|
||||
input.value = value;
|
||||
}
|
||||
|
||||
//보안모드 마스킹 항목
|
||||
if(input.tagName === 'INPUT' && input.id && input.classList.contains("privacy")){
|
||||
let maskVal = value.replace(/./g, "*");
|
||||
document.getElementById("mask-"+input.id).value = maskVal;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
get() {
|
||||
let obj = {};
|
||||
document.querySelectorAll(this.children).forEach(input => {
|
||||
let property = input.name || input.id;
|
||||
let value = input.value;
|
||||
if("radio" == input.type) {
|
||||
if(input.checked)
|
||||
obj[property] = value;
|
||||
} else if("checkbox" == input.type) {
|
||||
if(input.checked){
|
||||
if(obj[property]){
|
||||
obj[property] += ","+value;
|
||||
} else {
|
||||
obj[property] = value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(input.dataset.fmtType){
|
||||
const fmtType = input.dataset.fmtType;
|
||||
switch (fmtType) {
|
||||
case 'dt' :
|
||||
value = value.replaceAll("-","").replaceAll(":","").replaceAll(" ","");
|
||||
break;
|
||||
case 'day' :
|
||||
value = value.replaceAll("-","");
|
||||
break;
|
||||
case 'time' :
|
||||
value = value.replaceAll(":","");
|
||||
break;
|
||||
case 'number' :
|
||||
value = value.replaceAll(",","");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
obj[property] = value;
|
||||
}
|
||||
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const Apply = {
|
||||
fromDataset : {
|
||||
gridCheckbox : function(dataset, tbody, colIndex, checkedArr){
|
||||
|
||||
var keys = checkedArr.map(item => dataset.getKey(item));
|
||||
|
||||
$(tbody).find("tr").each(function() {
|
||||
var cb = $(this).find("td").eq(colIndex).find(":checkbox");
|
||||
cb.prop("checked", keys.includes(cb.val()));
|
||||
});
|
||||
|
||||
},
|
||||
gridButton : function(dataset, button, checkedArr){
|
||||
var keys = checkedArr.map(item => dataset.getKey(item));
|
||||
$(button).prop("disabled", keys.length < 1);
|
||||
},
|
||||
currentRow : function(dataset, dataItem, tbody){
|
||||
if(!dataItem){
|
||||
return;
|
||||
}
|
||||
$(tbody).setCurrentRow(dataset.getKey(dataItem));
|
||||
},
|
||||
paging : function(dataset, resp, navId){
|
||||
|
||||
$("#"+navId).setPagingInfo({
|
||||
list : dataset,
|
||||
prefix : navId,
|
||||
totalSize : resp["Total"]
|
||||
});
|
||||
|
||||
},
|
||||
getTbody : function(dataset, found, notFound, replacer){
|
||||
var empty = dataset.empty;
|
||||
var trs = empty ? notFound : dataset.inStrings(found, replacer);
|
||||
return trs.join();
|
||||
}
|
||||
},
|
||||
toDataset : {
|
||||
current : function(dataset, dataKey){
|
||||
dataset.setCurrent(dataKey, false);
|
||||
},
|
||||
selection : function(dataset, checkbox, bool){
|
||||
|
||||
var parentEl = $(checkbox).parent()[0];
|
||||
var isTH = parentEl.tagName == "TH" ? true : false;
|
||||
|
||||
if(isTH) {
|
||||
var dataItems = dataset.getDataset("item");
|
||||
|
||||
for(var i=0; i < dataItems.length; i++){
|
||||
dataItems[i].select(bool);
|
||||
}
|
||||
} else {
|
||||
var dataItem = dataset.getData(checkbox.value, "item");
|
||||
dataItem.select(bool);
|
||||
}
|
||||
},
|
||||
set : function(dataset, resp){
|
||||
dataset._byKeys = {};
|
||||
dataset._current = null;
|
||||
|
||||
var data = dataset._getDataItems(resp = resp || {});
|
||||
dataset._items = data.items;
|
||||
dataset._byKeys = data.byKeys;
|
||||
},
|
||||
add : function(dataset, resp){
|
||||
if (dataset.empty){
|
||||
this.set(dataset, resp);
|
||||
return;
|
||||
}
|
||||
var state = dataset.state;
|
||||
var data = dataset._getDataItems(resp = resp || {});
|
||||
dataset._items = this._items.concat(data.items);
|
||||
dataset._byKeys = {
|
||||
...this._byKeys,
|
||||
...data.byKeys
|
||||
};
|
||||
}
|
||||
},
|
||||
fromDatasetControl : {
|
||||
load : async function(control, pageNum){
|
||||
return new Promise((resolve, reject) => {
|
||||
control.query.pageNum = pageNum;
|
||||
if (!control.query.pageNum){
|
||||
control.query.pageNum = 1;
|
||||
}
|
||||
ajax.get({
|
||||
url:control.urls.load,
|
||||
data:control.query,
|
||||
success:(resp) => {
|
||||
resolve(resp);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
@ -0,0 +1,128 @@
|
||||
/**************************************************************************
|
||||
* FimsFormFields
|
||||
**************************************************************************/
|
||||
class FimsFormFields extends FormFields {
|
||||
|
||||
/**
|
||||
* form 에 json data set
|
||||
* element tag에 data-fmt-type 으로 데이타 format이 지정된 경우 해당 포맷으로 출력
|
||||
* @param {object} formObj document.querySelector('form')
|
||||
* @param {object} jsonData json type data
|
||||
*/
|
||||
set(ctrl,obj){
|
||||
|
||||
document.querySelectorAll(this.children).forEach(input => {
|
||||
|
||||
let prop = input.getAttribute("data-map")
|
||||
|| input.name
|
||||
|| input.id;
|
||||
if (!prop) return;
|
||||
|
||||
let dataItem = obj instanceof DataItem,
|
||||
value = dataItem ? obj.getValue(prop) : obj[prop];
|
||||
|
||||
if ("radio" == input.type) {
|
||||
if (value && value == input.value)
|
||||
input.checked = true;
|
||||
} else if("checkbox" == input.type) {
|
||||
if (value && value == input.value)
|
||||
input.checked = ("Y" === value);
|
||||
} else if(input.tagName == "SELECT") {
|
||||
for(let option of input.options) {
|
||||
if(option.value == value){
|
||||
option.selected = true;
|
||||
} else {
|
||||
option.selected = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(value == null){
|
||||
value = "";
|
||||
}
|
||||
// element data-fmt-type에 정의된 format 적용
|
||||
// dt - yyyy-mm-dd HH:mm:ss, day - yyyy-mm-dd, time - HH:mm:ss, number - #,###
|
||||
if(input.dataset.fmtType){
|
||||
const fmtType = input.dataset.fmtType;
|
||||
switch (fmtType) {
|
||||
case 'dt' :
|
||||
value = datetimeFormat.format(value);
|
||||
break;
|
||||
case 'day' :
|
||||
value = dateFormat.format(value);
|
||||
break;
|
||||
case 'time' :
|
||||
value = timeFormat.format(value);
|
||||
break;
|
||||
case 'number' :
|
||||
value = numberFormat.format(value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(input.name){
|
||||
if($(input).hasClass('form-date')){
|
||||
$(input).datepicker("setDate", value);
|
||||
} else {
|
||||
input.value = value;
|
||||
}
|
||||
|
||||
//보안모드 마스킹 항목
|
||||
if(input.tagName === 'INPUT' && input.id && input.classList.contains("privacy")){
|
||||
let maskVal = value.replace(/./g, "*");
|
||||
document.getElementById("mask-"+input.id).value = maskVal;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
get() {
|
||||
let obj = {};
|
||||
document.querySelectorAll(this.children).forEach(input => {
|
||||
let property = input.name || input.id;
|
||||
let value = input.value;
|
||||
if("radio" == input.type) {
|
||||
if(input.checked)
|
||||
obj[property] = value;
|
||||
} else if("checkbox" == input.type) {
|
||||
if(input.checked){
|
||||
if(obj[property]){
|
||||
obj[property] += ","+value;
|
||||
} else {
|
||||
obj[property] = value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(input.dataset.fmtType){
|
||||
const fmtType = input.dataset.fmtType;
|
||||
switch (fmtType) {
|
||||
case 'dt' :
|
||||
value = value.replaceAll("-","").replaceAll(":","").replaceAll(" ","");
|
||||
break;
|
||||
case 'day' :
|
||||
value = value.replaceAll("-","");
|
||||
break;
|
||||
case 'time' :
|
||||
value = value.replaceAll(":","");
|
||||
break;
|
||||
case 'number' :
|
||||
value = value.replaceAll(",","");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
obj[property] = value;
|
||||
}
|
||||
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,624 +0,0 @@
|
||||
/*
|
||||
* 현재날짜를 YYYY-MM-DD 포맷으로 반환
|
||||
*/
|
||||
function TODAY(){
|
||||
return dateFormat.format(new Date());
|
||||
}
|
||||
|
||||
function inputDateComparison(sndngYmd, sndngEndYmd) {
|
||||
let startDate = inputDateSplit(sndngYmd); // 시작일
|
||||
let endDate = inputDateSplit(sndngEndYmd); // 종료일
|
||||
|
||||
if (typeof startDate == "undefined" || startDate == null || startDate == "") {
|
||||
alert("시작일이 입력되지 않았습니다.\n시작일을 입력해주세요.");
|
||||
$("#sndngYmd").focus();
|
||||
|
||||
return false;
|
||||
}
|
||||
if (typeof endDate == "undefined" || endDate == null || endDate == "") {
|
||||
alert("종료일이 입력되지 않았습니다.\n종료일을 입력해주세요.");
|
||||
$("#sndngEndYmd").focus();
|
||||
|
||||
return false;
|
||||
}
|
||||
// 입력일을 확인하는 이유는 현재 작성한 일자가 시작일인지 종료일인지 확인하기 위해서이다.
|
||||
if (startDate > endDate) {
|
||||
alert("시작일이 종료일보다 이 후 일수는 없습니다.\n다시 선택하여 주시기 바랍니다.");
|
||||
$("#sndngYmd").focus();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 날짜형식에 "-"이 사용된 경우에 한하여 날짜값에서 "-" 기호를 제거한다.
|
||||
function inputDateSplit(obj) {
|
||||
if (obj == "") {
|
||||
return obj;
|
||||
} else {
|
||||
let dateArray = obj.split("-");
|
||||
|
||||
return dateArray[0] + dateArray[1] + dateArray[2];
|
||||
}
|
||||
}
|
||||
|
||||
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 dateObj = new Date(yyyy, (mm-1)*1, dd*1);
|
||||
dateObj.setDate(dateObj.getDate()+(addDay));
|
||||
|
||||
yyyy = dateObj.getFullYear();
|
||||
mm = dateObj.getMonth()+1;
|
||||
dd = dateObj.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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getDateObject(dateStr){
|
||||
var year = dateStr.substr(0,4);
|
||||
var month = dateStr.substr(4,2) - 1;
|
||||
var day = dateStr.substr(6,2);
|
||||
|
||||
return new Date(year,month,day);
|
||||
}
|
||||
|
||||
function getDateString(dateObj) {
|
||||
var result = "";
|
||||
|
||||
var dateFormat = "YYYYMMDD";
|
||||
|
||||
for (var i = 0; i < dateFormat.length; i++) {
|
||||
result += dateFormat.indexOf("YYYY", i) == i ? (i+=3, dateObj.getFullYear() ) :
|
||||
dateFormat.indexOf("MM", i) == i ? (i+=1, to2(dateObj.getMonth()+1) ) :
|
||||
dateFormat.indexOf("DD", i) == i ? (i+=1, to2(dateObj.getDate()) ) :
|
||||
(dateFormat.charAt(i) );
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
function to2(numberObj) {
|
||||
return (numberObj > 9 ? "" : "0") + numberObj;
|
||||
};
|
||||
|
||||
/**
|
||||
* 입력일의 이전일 계산
|
||||
*/
|
||||
function getPrevDay(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);
|
||||
};
|
||||
|
||||
/**
|
||||
* 입력일의 다음일 계산
|
||||
*/
|
||||
function getNextDay(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);
|
||||
};
|
||||
|
||||
/**
|
||||
* 해당월의 마지막날
|
||||
*/
|
||||
function getLastDay(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으로 변환
|
||||
*/
|
||||
function getDatetime(nYear, nMonth, nDate){
|
||||
var dateObj = 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));
|
||||
|
||||
dateObj = new Date(parseInt(nYear), parseInt(nMonth)-1, parseInt(nDate), parseInt(nHours), parseInt(nMinutes), parseInt(nSeconds));
|
||||
} else {
|
||||
dateObj = new Date(parseInt(nYear), parseInt(nMonth)-1, parseInt(((nDate == null) ? 1 : nDate)));
|
||||
}
|
||||
|
||||
var strYear = dateObj.getFullYear().toString();
|
||||
var strMonth = (dateObj.getMonth() + 1).toString();
|
||||
var strDate = dateObj.getDate().toString();
|
||||
if (strMonth.length == 1) strMonth = "0" + strMonth;
|
||||
if (strDate.length == 1) strDate = "0" + strDate;
|
||||
return strYear + "-" + strMonth + "-" + strDate;
|
||||
};
|
||||
|
||||
/**
|
||||
* 년 계산
|
||||
*/
|
||||
function addYear(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);
|
||||
};
|
||||
|
||||
/**
|
||||
* 월 계산
|
||||
*/
|
||||
function addMonth(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);
|
||||
};
|
||||
|
||||
/**
|
||||
* 일 계산
|
||||
*/
|
||||
function addDate(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);
|
||||
};
|
||||
|
||||
/**
|
||||
* 이전해 계산
|
||||
*/
|
||||
function getPrevYear(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);
|
||||
};
|
||||
|
||||
/**
|
||||
* 다음해 계산
|
||||
*/
|
||||
function getNextYear(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 연도
|
||||
*/
|
||||
function setYearCombo(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 연도(올해이후)
|
||||
*/
|
||||
function setYearComboNext(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 년월
|
||||
*/
|
||||
function setYearMonCombo(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");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 두 일자간의 일수 계산
|
||||
* @param1 day1 : 일자 8자리 - 'YYYYMMDD', 'YYYY-MM-DD', 'YYYY/MM/DD', etc
|
||||
* @param2 day2 : 일자 8자리 - 'YYYYMMDD', 'YYYY-MM-DD', 'YYYY/MM/DD', etc
|
||||
* @return 두 일자간의 일수
|
||||
*/
|
||||
function calcDayCount(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 요일
|
||||
*/
|
||||
function getWeek(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;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 날짜형식이 올바른지 검사
|
||||
*
|
||||
* @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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1,19 +0,0 @@
|
||||
function initDatepicker(elementId){
|
||||
|
||||
var executionArea = $("#"+elementId);
|
||||
|
||||
executionArea.find(".form-date").datePicker();
|
||||
|
||||
}
|
||||
|
||||
function initDetailSearchButton(elementId){
|
||||
|
||||
var executionArea = $("#"+elementId);
|
||||
|
||||
/*--------------------- 상세검색 버튼 제어 ---------------------*/
|
||||
executionArea.find(".btn-open-detail").on("click", function() {
|
||||
$(this).find('i').toggleClass('bx-chevron-down');
|
||||
$(this).find('i').toggleClass('bx-chevron-up');
|
||||
});
|
||||
|
||||
}
|
Loading…
Reference in New Issue