// 상단탭메뉴 // function show_leemocon(tabnum){ var i; var d = new Array(3); //메뉴갯수를 넣어주세요 var tm = document.getElementById("tabmenu").getElementsByTagName("li"); for(i=0; i<=2; i++){ //메뉴갯수보다 하나 작은수를 넣어주세요 d[i] = document.getElementById("tabcontent"+i); d[i].style.display = "none"; tm[i].className = ""; }; switch(tabnum){ case tabnum: d[tabnum].style.display = ""; tm[tabnum].className = "on"; break; }; }; //COMMON함수 //달력팝업 function fn_CalPopup(id,top,left){ var topIndex = 0; //스크린 중간보다 아래일경우 var size = top -screen.height/2; if(size > 0){ topIndex = top - 200 + size; }else{ topIndex = top; } var option =",toobar=no,location=no,menubar=no,scrollbars=no,status=no,resizable=no,fullscreen=no"; window.open("/web/popup/cal.jsp?id="+id,"Calendar","width=100px, height=190px, top="+topIndex+"px, left="+left+"px "+option); } //달력팝업 function fn_CalPopupDiv(id,calId,divId){ var cal = $("#"+calId); var calPosition = cal.position(); $.ajax({ type : 'post', url : '/web/popup/calender.jsp?id='+id, async : false, data : {}, error : function(xhr, status) { alert('Unknown error ' + status); }, success : function(data) { $("#"+ divId).css({'top' : calPosition.top - 25, 'left' : calPosition.left + 170}); $("#"+ divId).removeClass("trViewOff"); $("#"+ divId).html(data); } }); } //공급자 상세정보 팝업 function fn_ProviderInfoPopupDiv(id,divId){ $.ajax({ type : 'get', url : '/provider_info.do?PRO_USERID='+id, async : false, // data : {}, error:function(request,status,error){ alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); }, success : function(data) { $("#"+ divId).css({'top' : 46, 'left' : 305}); $("#"+ divId).removeClass("trViewOff"); $("#"+ divId).html(data); } }); } //기타 공통으로 팝업 - 열려야 하는 팝업 URL, 필요한 Param function fn_openPopup(popUrl, param, width, height){ var option =",toobar=no,location=no,menubar=no,status=no, scrollbars=yes"; var popWin = window.open(popUrl + "?"+param+"&width="+width+"&height="+height,"popup","width="+width+", height="+height+", top=50px, left=100px "+option); if(popWin != null) popWin.focus(); } //10보다 작은 수 0붙이기 function fn_setZero(num){ var no = Number(num); var retValue = num; if(no < 10){ retValue = "0"+no; } return retValue; } //Selectbox selected -- 2중이상 콤보 포함 function fn_SelectedData(frm, value, comm, type, conType, frm02, value02, comm02 , Depth ){ //alert("fn_selectedData"); frm.value = value; if(type=="multi"){ //공통 if(conType == "comm"){ fn_onSelChange(comm,comm02,frm,frm02); frm02.value = value02; } //발주처 if(conType == "GDis" ){ fn_onSelChangeGDis(comm,comm02,frm,frm02,Depth); frm02.value = value02; } //지자체 if(conType == "Dis"){ fn_onSelChangeDis(comm,comm02,frm,frm02); frm02.value = value02; } } } //숫자만 입력 가능 function isNumberKey(evt) { if ((evt.keyCode<48) || (evt.keyCode>57)) { evt.returnValue = false; return false; }else{ return true; } } //필수체크 확인 시 사용 (널확인, 빈칸확인) function fn_isNull(str){ var reStr = ""; if(str == null){ reStr = ""; }else{ reStr = fn_trim(str); } return reStr; } //필수 입력 체크 function fn_notNullValid(frm){ var formObj = frm; for(var i=0; i"+changedDataXML+"")); pUrl = rUrl; } //모든 데이터 저장하기 (파일첨부) var xmlHttpAll; function fn_submitToServerAll(strUrl, rUrl, dataGrid, gridRoot, colCount, rowCount , frm, startIndex) { var changedDataXML = fn_allDataXml(gridRoot, colCount, rowCount, startIndex); document.getElementById("dataAll").value = ""+changedDataXML+""; var $form = $(frm); $form.append(""); frm.action = strUrl; frm.method = "POST"; frm.submit(); } //2개의 그리드 (파일첨부포함) function fn_submitToServer02(strUrl, rUrl, dataGrid, dataGrid2, data1, data2, frm) { document.getElementById("data1").value = ""+data1+""; document.getElementById("data2").value = ""+data2+""; var $form = $(frm); $form.append(""); frm.action = strUrl; frm.method = "POST"; frm.submit(); } function fn_isNullGrid(str){ if(str == null){ return ""; }else{ if($.trim(str) == ""){ return ""; }else{ return str; } } } //저장 데이터 만들기 function fn_allDataXml(gridRoot, colCount, rowCount, startIndex){ var s = ""; var m = ""; for(var i=0; i"; for(var j=startIndex; j"+fn_isNullGrid(gridRoot.getItemFieldAt(i, dataField))+""; } m = m+ ""+fn_isNullGrid(gridRoot.getItemFieldAt(i, "COLUMN"))+""; m = m + ""; } var e = ""; return s+m+e; } //저장 데이터 만들기 function fn_allDataXml02(gridRoot, colCount, rowCount, startIndex, dataGrid){ var s = ""; var m = ""; for(var i=0; i"; for(var j=startIndex; j"+fn_isNullGrid(gridRoot.getItemFieldAt(i, dataField))+""; } m = m+ ""+fn_isNullGrid(gridRoot.getItemFieldAt(i, "COLUMN"))+""; m = m + ""; } var e = ""; return s+m+e; } function handleStateChange() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { if(fn_trim(xmlHttp.responseText) != ""){ alert(fn_trim(xmlHttp.responseText)); } window.location.href=pUrl; } else { // 로컬에서 수행시 접속할 서버가 없어 3이 반환됩니다. 서버에서 실행하며 serverUrl 의 url이 실제 수행가능해야 정상적으로 작동합니다. alert("서버 오류 status:"+xmlHttp.status); } } } function handleStateChangeAll() { if (xmlHttpAll.readyState == 4) { if (xmlHttpAll.status == 200) { alert(fn_trim(xmlHttpAll.responseText)); window.location.href=pUrl; } else { // 로컬에서 수행시 접속할 서버가 없어 3이 반환됩니다. 서버에서 실행하며 serverUrl 의 url이 실제 수행가능해야 정상적으로 작동합니다. alert("서버 오류 status:"+xmlHttpAll.status); } } } //그리드 필수입력 저장시 function fn_saveGridValid(cnt, item, gridRoot, dataGrid, grid){ for (var i = 0; i Number(value02)){ return false; }else{ return true; } } //FROM TO 문장 만들기 function fn_fromToCheckDesc(title01, title02){ return title01+"값이 "+title02+"보다 큽니다."; } //날짜 체크 function fn_fromToCheckAlert(value01, value02, title01, title02, focusid){ if(fn_fromToCheck(value01,value02) == false){ alert(fn_fromToCheckDesc(title01,title02)); fn_progressbarHide(); //ProgressbarHide if(focusid != ""){ $("#"+focusid).focus(); } return false; } return true; } //------------------------------------------------------------------------------------------------------------ 파일 체크관련 시작 //파일사이즈, 확장자 검사 function fn_fileCheck(gridRoot, rowCount, colCount, seqID1, seqID2, fileId, gubun, startCount){ if(gubun == "R" && rowCount > 0){ for(var f = 0; f < rowCount; f++){ var seq = gridRoot.getItemFieldAt(f, seqID1); //seq 두개의 조합으로 생길 때-----------------------------add if(seqID2 != "") seq += "_" + gridRoot.getItemFieldAt(f, seqID2); //seq 두개의 조합으로 생길 때-----------------------------add if(!fn_fileTotalCheck(fileId+seq)){ fn_fileClear(fileId+seq); return false; } } } if(startCount == null || startCount == "" || startCount == "undefined"){ startCount = 999; } if(gubun == "C" && colCount >= startCount){ //alert("CV"); //첨부파일이 있을경우 확장자 체크 for(var f = 1; f < (colCount - (startCount-1)); f++){ var seq = gridRoot.getItemFieldAt(0, seqID1+f); //seq 두개의 조합으로 생길 때-----------------------------add if(seqID2 != "") seq += "_" + gridRoot.getItemFieldAt(0, seqID2+f); //seq 두개의 조합으로 생길 때-----------------------------add // 테스트 //alert("fileId : " + fileId + seq); if(!fn_fileTotalCheck(fileId+seq)){ return false; } } } return true; } //파일 사이즈, 확장자 토탈 검사 function fn_fileTotalCheck(fileId) { if($("#"+fileId).val() != ""){ //alert(field); if(fn_fileExtCheck(fileId,"jpg,jpeg,gif,bmp,tiff,png") == true){ fn_fileClear(fileId); return false; } if(fn_fileSizeCheck(fileId, (1024 * 5000)) == false ){ fn_fileClear(fileId); return false; } } return true; } // 2018-09-10 파일 사이즈, 확장자 토탈 검사 function fn_fileTotalCheck2(fileId, ext) { if($("#"+fileId).val() != ""){ if(fn_fileExtCheck2(fileId,ext) == true){ fn_fileClear(fileId); return false; } if(fn_fileSizeCheck(fileId, (1024 * 500)) == false ){ fn_fileClear(fileId); return false; } } return true; } //파일 사이즈, 확장자 토탈 검사 function fn_fileImgTotalCheck(fileId, ext) { if($("#"+fileId).val() != ""){ if(fn_fileExtImgCheck(fileId,ext) == true){ fn_fileClear(fileId); return false; } if(fn_fileSizeCheck(fileId, (1024 * 500)) == false ){ fn_fileClear(fileId); return false; } } return true; } //파일 사이즈, 확장자 토탈 검사 function fn_fileZipTotalCheck(fileId, ext) { if($("#"+fileId).val() != ""){ if(fn_fileExtImgCheck(fileId,ext) == true){ fn_fileClear(fileId); return false; } if(fn_fileSizeCheck(fileId, (1024 * 500)) == false ){ fn_fileClear(fileId); return false; } } return true; } //파일사이즈 검사 function fn_fileSizeCheck(id, maxSize) { if(fn_getInternetExplorerVersion() > 9){ if($("#"+id)[0].files[0].size > maxSize){ alert("첨부 파일 크기는 "+byteConvertor(maxSize)+"보다 작아야 합니다."); fn_progressbarHide(); //ProgressbarHide return false; } } return true; } //단위 변환 function byteConvertor(bytes) { bytes = parseInt(bytes); var s = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']; var e = Math.floor(Math.log(bytes)/Math.log(1024)); if(e >= s.length) e = s.length - 1;//s의 마지막 단위로 표시할 수 없이 크다면, 마지막 단위로 처리 if(e == "-Infinity") return "0 " + s[0]; else return (bytes/Math.pow(1024, Math.floor(e)))+""+s[e]; } //파일확장자 검사 function fn_fileExtCheck(id, ext){ var re = true; var thumbext = document.getElementById(id).value; //파일을 추가한 input 박스의 값 thumbext = thumbext.slice(thumbext.lastIndexOf(".") + 1).toLowerCase(); //파일 확장자를 잘라내고, 비교를 위해 소문자로 만듬 var arr = ext.split(","); //20191211 추가 KYS // var fileExtChk = thumbext.split('.'); for(var a=0; a eValue){ alert(title+"값의 범위는 "+sValue+"~"+eValue+"입니다."); return title+"값의 범위는 "+sValue+"~"+eValue+"입니다."; setEditedItemPosition(colIndex, rowIndex , grid); }else{ return null; } } //열추가 function fn_ColAdd(layoutStart, layoutEnd, colCount, rowCount, startIndex, gridApp, gridRoot, type){ var layoutStr = ""; if(colCount>=startIndex){ layoutStr = ""; //layout for(var i=1; i<=colCount-(startIndex-1); i++){ layoutStr = layoutStr + '\\ '; } //data if(type == "number"){ changeItem(colCount-(startIndex-1), 0, "VALUE"+(colCount-(startIndex-1)), gridRoot); } for(var i=1; istartIndex){ layoutStr = ""; //layout for(var i=1; i<=colCount-(startIndex+1); i++){ layoutStr = layoutStr + '\\ '; } //data for(var i=0; i"; strHtml += " "+desc+""; strHtml += " "; strHtml += "";*/ var strHtml = "
"; strHtml += "
"+desc+"를(을) 입력하세요. (최대크기: 500KB)
"; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += "
첨부파일입력"; strHtml += " "; strHtml += "
    "; strHtml += "
  • "+desc+"는(은) 필수입력입니다. 그래프는 이미지파일(JPEG, PNG) 형태로 올려주셔야 합니다.
  • "; strHtml += "
  • 파일크기는 \"최대 500KB\" 입니다.
  • "; strHtml += "
"; strHtml += "
"; strHtml += "
"; $("#"+tableId).append(strHtml); } //첨부파일 row 동적삭제 function fn_FileRemoveRow(tableId, rowIndex, num){ debugger; var objTable = document.getElementById(tableId); //현재 로우가 있을경우만 삭제 가능 if(objTable.rows.length > 0){ for(var i=1; i<=num; i++){ objTable.deleteRow(rowIndex-i); } } } //첨부파일 row 동적생성 function fn_FileAddRow2(tableId, file_key, file_id, tr_id, desc, rowCount, reNameYN){ var beforeTrId = tr_id+(file_key-1); var trId = tr_id+file_key; //TR ID var fileId = file_id+file_key; //FILE ID var strHtml = "
"; strHtml += "
"+desc+"를(을) 입력하세요. (최대크기: 500KB) !그래프는 시험코드별로 각각 등록해야 합니다.
"; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += "
첨부파일입력"; strHtml += " "; strHtml += " "; strHtml += " "; /*strHtml += " ";*/ strHtml += "
    "; strHtml += "
  • "+desc+"는(은) 필수입력입니다. 그래프는 이미지파일(JPEG, PNG) 형태로 올려주셔야 합니다.
  • "; strHtml += "
  • 파일크기는 \"최대 500KB\" 입니다.
  • "; strHtml += "
"; strHtml += "
"; strHtml += "
"; // 그리드에서도 추가는 선택한 row 다음에 추가 되어야 하므로. 파일도 동일하게 적용. if((file_key-1) > 0){ $("#"+tableId).find("#"+beforeTrId).eq(0).after(strHtml); }else{ $("#"+tableId).eq(-1).append(strHtml); // 처음 추가 했을 때 추가. } if(reNameYN == null || reNameYN == "undefined" || reNameYN == ""){ // ID 재정의 fn_FileReName(); } // display controll fn_FileDisplayRow(file_key, tableId); } //실제 물리적인 파일 삭제 하기 위해 파일명 Arr var rowDelFileArr = ""; //첨부파일 row 동적삭제 function fn_FileRemoveRow2(tableId, scode, rowCount, reNameYN){ //실제 물리적인 파일 삭제 하기 위해 파일명 Arr rowDelFileArr += $("#OLD_GRAPH_IMAGE_"+scode).val() + ","; $("#TR_GRAPH_IMAGE_"+scode).remove(); if(rowCount > 0){ $("#"+tableId).find(".table-file-wrapper").addClass("trViewOff"); //일단 모두 안보이게 if(reNameYN == null || reNameYN == "undefined" || reNameYN == ""){ // ID 재정의 fn_FileReName(); } $("#"+tableId).find(".table-file-wrapper").eq(0).removeClass("trViewOff"); //처음 Row에 해당하는 파일첨부 보이기. } } //이미지 파일업로드 display관리 (행추가일 경우) function fn_FileDisplayRow(scode, tableId){ if(tableId == null || tableId == "undefined" || tableId == ""){ $("#table_file").find(".table-file-wrapper").addClass("trViewOff"); //일단 모두 안보이게 }else{ $("#"+tableId).find(".table-file-wrapper").addClass("trViewOff"); //일단 모두 안보이게 } $("#TR_GRAPH_IMAGE_"+scode).removeClass("trViewOff"); //Row에 해당하는 파일첨부 보이기. } function fn_FileReName(){ // tr ID 재정의 $("#table_file").find("tr").attr("id", function (arr) { return "TR_GRAPH_IMAGE_" + (arr+1); }); //Input file명에도 Id Name 변경. $("input:file").attr({ "id" : function (arr) { return "GRAPH_IMAGE_" + (arr+1); } ,"name" : function (arr) { return "GRAPH_IMAGE_" + (arr+1); } }); //Input Delete명에도 Id Name 변경. $("input:checkbox").attr({ "id" : function (arr) { return "FILE_DEL_" + (arr+1); } ,"name" : function (arr) { return "FILE_DEL_" + (arr+1); } }); //기존파일명에도 Id Name 변경. $('input[name^="OLD_GRAPH_IMAGE_"]').attr({ "id" : function (arr) { return "OLD_GRAPH_IMAGE_" + (arr+1); } ,"name" : function (arr) { return "OLD_GRAPH_IMAGE_" + (arr+1); } }); $('input[name^="OLD_GRAPH_LOCAL_"]').attr({ "id" : function (arr) { return "OLD_GRAPH_LOCAL_" + (arr+1); } ,"name" : function (arr) { return "OLD_GRAPH_LOCAL_" + (arr+1); } }); } //그리드 변경여부 function Is_GridUpdate(gridRoot){ var changedDataXML = gridRoot.getChangedDataXML(); if (changedDataXML == null) { return false; }else{ return true; } } //SEQ 큰번호 추출 function fn_getMaxSeq(gridRoot, id){ //row수 var col = gridRoot.getCollection(); var rowCount = col.getLength(); var key1 = ""; var key2 = ""; var maxkey = 0; if(rowCount > 0){ maxkey = gridRoot.getItemFieldAt(0, id); for(var j=0; j= Number(key2)){ maxkey = maxkey; }else{ maxkey = key2; } } } return maxkey; } //TR 추가 (행추가) (SEQ) function fn_gridAddRow(trId, fileId, seq, desc){ var strHtml = "
"+desc+"
"; strHtml += ""; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += "
첨부파일입력"; strHtml += " "; strHtml += "
    "; strHtml += "
  • 시험결과 그래프는 필수입력입니다.
  • "; strHtml += "
  • 파일크기는 \"최대 500KB\" 입니다.
  • "; strHtml += "
"; strHtml += " "; strHtml += " "; strHtml += " "; strHtml += "
"; $("#table_file").append(strHtml); } //TR 삭제 (행삭제) (SEQ) function fn_gridDelRow(seq){ //실제 물리적인 파일 삭제 하기 위해 파일명 Arr rowDelFileArr += $("#OLD_GRAPH_IMAGE_"+seq).val() + ","; $("#TR_GRAPH_IMAGE_"+seq).remove(); } //KEY 중복 막기 function fn_checkKey(gridRoot,id, columnNm, columnIndex, gridNm, dataGrid){ //row수 var col = gridRoot.getCollection(); var rowCount = col.getLength(); var key1 = ""; var key2 = ""; var status = ""; if(rowCount > 0){ key1 = gridRoot.getItemFieldAt(0, id); for(var i=0; i 0){ topIndex = top - 500 + size; }else{ topIndex = top; } var option =",toobar=no,location=no,menubar=no,status=no, scrollbars=yes"; var graphWin = window.open("/com/graphPopup.do?imgPath="+path,"Calendar","width=500, height=500px, top=50px, left=100px "+option); if(graphWin != null) graphWin.focus(); } //숫자 function fn_onkeyNumber(id, mode){ $("#"+id).keyup(function(event){ if (!(event.keyCode >=37 && event.keyCode<=40)) { var inputVal = $(this).val(); if(mode == "int"){ $(this).val(inputVal.replace(/[^0-9]/gi,'')); }else if(mode=="float"){ $(this).val(inputVal.replace(/[^0-9.]/gi,'')); }else if(mode=="float02"){ $(this).val(inputVal.replace(/[^0-9.-]/gi,'')); }else if(mode=="phone"){ $(this).val(inputVal.replace(/[^0-9-]/gi,'')); } } }); } //KEY 중복 막기 function fn_checkKeyHtml(id, keyid, columnNm){ //row수 var objTable = document.getElementById(id); var rowCount = objTable.rows.length; var key1 = ""; var key2 = ""; var status = ""; if(rowCount > 0){ key1 = $("#"+keyid+"1").val(); for(var i=1; i<=rowCount; i++){ key1 = $("#"+keyid+(i)).val(); for(var j=1; j 450){ $("#"+ divId).css("height","450px"); }else{ $("#"+ divId).css("height",divHeight); } } //저장클릭 시, 숫자관련 길이 제한 (GRID) //type : COL, ROW 종류 //fn_saveNumberCheck("ROW",gridRoot, dataGrid, "grid1", 0, rowInfo(배열)); //fn_saveNumberCheck("COL",gridRoot, dataGrid, "grid1", 1, colInfo(배열)); function fn_saveNumberCheck(type, gridRoot, dataGrid, grid, startIndex, item){ //RowCount var collection = gridRoot.getCollection(); var rowCount = collection.getLength(); //ColCount var colCount = dataGrid.getColumnCount(); //COL if(type == "COL"){ //Row 검사 for(var r=0; r -1) || (item[r+"_title"].indexOf("From") > -1) ){ if( val == '' || val == null || val == 'null' ){ if( isNaN(val) ){ alert(item[r+"_title"] + "의 값이 입력되지 않았습니다 입력후 저장 바랍니다."); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; } } } // 2017.10.17 dhlee 심도값 중복여부 확인 추가 // 현재 검사하는 심도의 from 값과 이전 심도의 To 값을 비교하여 현재의from값이 이전심도의 To값보다 작다면 에러 if(item[r+"_title"].indexOf("From") > -1 && i > startIndex){ var column = dataGrid.getColumns()[i-1]; var dataField = column.getDataField(); var val2 = gridRoot.getItemFieldAt(r+1, dataField); if(fn_isNull(val) == "" || fn_isNull(val2) == "" || Number(val2) > Number(val) ){ alert(item[r+"_title"] + "에 입력값이 이전에 입력된 심도(To)(m) 값보다 크거나 잘못된 값이 입력되었습니다. 확인바랍니다. "); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; break; } } // To의 값이 From의 값보다 클 경우 if(item[r+"_title"].indexOf("To") > -1){ var column = dataGrid.getColumns()[i]; var dataField = column.getDataField(); var val2 = gridRoot.getItemFieldAt(r-1, dataField); if(fn_isNull(val) == "" || fn_isNull(val2) == "" || Number(val2) >= Number(val) ){ alert(item[r+"_title"]+"에 입력된 값이 이전에 입력된 심도(From)(m) 값보다 크거나 잘못된 값이 입력되었습니다. 확인바랍니다. "); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; break; } } } } } } //ROW if(type == "ROW"){ for(var i=0; i",""); //헤더 텍스트 //자리수 체크 var val = gridRoot.getItemFieldAt(r, dataField); if(fn_isNull(val) != "" && (is_float(val,Number(item[i+"_start_num"]),Number(item[i+"_end_num"])) == false || is_numberRange(val,Number(item[i+"_start_num"]),Number(item[i+"_end_num"])) == false )){ alert(title + "값의 범위를 확인하시기 바랍니다. ([2]정수 : "+item[i+"_start_num"]+"자리, 소수점 이하 : "+ item[i+"_end_num"]+"자리)"); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; break; } // From(m) 경우, var temp = dataField.toUpperCase(); if( temp.indexOf("DEPTH") > -1 && temp.indexOf("FROM") > -1){ val = fn_isNull(val); if( val == '' || val == null || val == 'null' ){ //if( val == 0 ) // continue; alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다."); fn_progressbarHide(); //ProgressbarHide if( r == 0){ setEditedItemPosition2(i, r , grid, dataGrid); } else { setEditedItemPosition2(i+1, r-1 , grid, dataGrid); } return false; break; } /* var column = dataGrid.getColumns()[i-1]; var dataField = column.getDataField(); var val2 = gridRoot.getItemFieldAt(r+1, dataField); if( val != '' && val != null && val != 'null' ){ // 2017.10.17 dhlee 심도값 중복여부 확인 추가 // 현재 검사하는 심도의 from 값과 이전 심도의 To 값을 비교하여 현재의from값이 이전심도의 To값보다 작다면 에러 if( Number(val2) > Number(val) ){ alert(item[r+"_title"] + "에 입력값이 이전에 입력된 심도(To)(m) 값보다 크거나 잘못된 값이 입력되었습니다. 확인바랍니다. "); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; } }*/ } // 2017.10.17 dhlee 공백검사 // To(m) 경우, if( temp.indexOf("DEPTH") > -1 && temp.indexOf("TO") > -1){ val = fn_isNull(val); if( val == '' || val == null || val == 'null' ){ //if( val == 0 ) // continue; alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다."); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; break; } /* var column = dataGrid.getColumns()[i]; var dataField = column.getDataField(); var val2 = gridRoot.getItemFieldAt(r-1, dataField); // To의 값이 From의 값보다 클 경우 if(fn_isNull(val) == "" || fn_isNull(val2) == "" || Number(val2) >= Number(val) ){ alert(item[r+"_title"]+"에 입력된 값이 이전에 입력된 심도(From)(m) 값보다 크거나 잘못된 값이 입력되었습니다. 확인바랍니다. "); fn_progressbarHide(); //ProgressbarHide setEditedItemPosition2(i, r , grid, dataGrid); return false; }*/ } } } } } } return true; } //자리수 체크 함수 function is_float(v,start_num, end_num) { //var reg=new RegExp("^[0-9]{1,"+start_num+"}(.[0-9]{0,"+end_num+"})$"); //return reg.test(v); var reg=new RegExp("^\-{0,1}[0-9]{1,"+start_num+"}(.[0-9]{0,"+end_num+"})?$"); var returnState = false; var arr_v; v = v.toString(); if(v.search("1e-") == 0 || v.search("1e-") == 1){ sV = v.split("1e-"); cV = Number(v).toFixed(sV[1]); v = cV.toString(); arr_v = cV.toString().split('.'); } else { arr_v = v.toString().split('.'); } var fixedNum = end_num; if (arr_v[1]) { fixedNum = arr_v[1].length; } else { fixedNum = 0; } if (reg.test(v)) { var _tmp = parseFloat(v).toFixed(fixedNum); if (_tmp.toString() == v){ returnState = true; } } return returnState; } //값의 범위 체크 function is_numberRange(v,start_num, end_num) { var t = Number(fn_setNine(start_num)+"."+fn_setNine(end_num)); if(v > t){ return false; } return true; } //숫자 생성 function fn_setNine(num){ var a = ""; if(num == 0)a="0"; for(var i=0; i",""); //헤더 텍스트 var totitle = gridRoot.getObjectById(toDataField).getHeaderText().replace("
",""); //헤더 텍스트 //값 var fromval = gridRoot.getItemFieldAt(r, fromDataField); var toval = gridRoot.getItemFieldAt(r, toDataField); //from to 비교 if(fn_fromToCheckAlert(fromval, toval, fromtitle, totitle, "") == false){ setEditedItemPosition2(fromIndex, r , grid, dataGrid); return false; } } } return true; } //실수 체크 function is_RegexFloat(v) { var pattern = /^[+-]?\d*(\.?\d*)$/ ; var reg=new RegExp(pattern); return reg.test(v); } //실수체크 function fn_saveFloatCheck(type, gridRoot, dataGrid, grid, startIndex, dataIndex){ //RowCount var collection = gridRoot.getCollection(); var rowCount = collection.getLength(); //ColCount var colCount = dataGrid.getColumnCount(); //COL if(type == "COL"){ //Row 검사 for(var r=0; r'; progressbarHtml += '



Data Uploading...'; progressbarHtml += ''; progressbarHtml += ''; progressbarHtml += ''; progressbarHtml +=''; $("#progressbarDiv").html(progressbarHtml); $("#progressbarDiv").css({'top' : 0, 'left' : 0}); $("#progressbarDiv").css({'width' : '100%', 'height' : '100%' }); $("#progressbarDiv").removeClass("trViewOff"); } //프로그래스바 이미지로 생성. function fn_progressbarLoding_img(){ var progressbarHtml = ''; progressbarHtml += ''; progressbarHtml += ''; progressbarHtml += ''; progressbarHtml +='
'; progressbarHtml += ''; progressbarHtml += '
Data Uploading...'; progressbarHtml += '
'; progressbarHtml += '
'; $("#progressbarDiv").html(progressbarHtml); $("#progressbarImg").attr('src', '/home/images/upload.gif'); $("#progressbarDiv").css({'top' : 0, 'left' : 0}); $("#progressbarDiv").css({'width' : '100%', 'height' : '100%' }); $("#progressbarDiv").removeClass("trViewOff"); } //프로그래스바 그리드일때 생성. function fn_progressbarLoding_grid(){ var progressbarHtml = ''; progressbarHtml += ''; progressbarHtml += ''; progressbarHtml += ''; progressbarHtml +='
'; progressbarHtml += ''; progressbarHtml += '
Data Uploading...'; progressbarHtml += '
'; progressbarHtml += '
'; $("#progressbarDiv").html(progressbarHtml); $("#progressbarImg").attr('src', '/home/images/upload.gif'); $("#progressbarDiv").css({'top' : 0, 'left' : 0}); $("#progressbarDiv").css({'width' : '100%', 'height' : '100%' }); $("#progressbarDiv").removeClass("trViewOff"); } //로딩바 숨김, 막은 그리드 해제 function fn_progressbarHide(){ $("#progressbarDiv").addClass("trViewOff"); if( typeof(dataGrid) != 'undefined' ){ dataGrid.setEditable(true); dataGrid.setPasteEnabled(true); } if( typeof(dataGrid1) != 'undefined' ){ dataGrid1.setEditable(true); dataGrid1.setPasteEnabled(true); } if( typeof(dataGrid2) != 'undefined' ){ dataGrid2.setEditable(true); dataGrid2.setPasteEnabled(true); } } //그리드 있을 경우 Loading Bar때문에 미리 실행. //그리드 막음. function fn_save_loading(rUrl) { fn_progressbarLoding_grid(); if( typeof(dataGrid) != 'undefined' ){ dataGrid.setEditable(false); dataGrid.setPasteEnabled(false); } if( typeof(dataGrid1) != 'undefined' ){ dataGrid1.setEditable(false); dataGrid1.setPasteEnabled(false); } if( typeof(dataGrid2) != 'undefined' ){ dataGrid2.setEditable(false); dataGrid2.setPasteEnabled(false); } setTimeout(function(){ /*var result = fn_save(rUrl);*/ if(confirm("저장하시겠습니까?")){ var result = fn_save(rUrl); } else{ fn_progressbarHide(); } if (result === false) { // progressbar 해제 fn_progressbarHide(); } }, 100); //setTimeout("fn_save('"+rUrl+"');",0.1); } // 그리드 추가 할때 textbox에서 enter체크 function fn_gridAddEnterKey(evt){ if ( evt.keyCode == 13) { fn_rowChange(); } } // Clip Report 화면호출 (유통자료 Reoprt 이미지 생성 관련 화면에 띄우기 위함) function fn_openClipReport(table,project,hole,sample,etc1,etc2,gbn){ var msg = "수정한 내용이 있다면 저장후에 다시 실행바랍니다. \n\n미리보기를 진행할까요?"; if( confirm(msg) != 0 ){ var w = 880; var h = 800; var left = (screen.width)/2 -(w/2); var top = (screen.height)/2 -(h/2); var table_code = table; var project_code = project; var hole_code = hole; var sample_code = sample; var etc_code1 = etc1; var etc_code2 = etc2; var gbn = gbn; var temp = "?table_code=" + table_code + "&project_code=" + project_code + "&hole_code=" + hole_code + "&sample_code=" + sample_code + "&etc_code1=" + etc_code1 + "&etc_code2=" + etc_code2 + "&gbn=" + gbn; window.open("/com/openClipReport.do" + temp, "clipReport","title=yes,toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h+",left=" + left + ",top=" + top); } } function shakeAndHighlight(targetEle, message) { // var originalStyle = targetEle.style.border; // 원래 스타일 저장 // 빨간색 테두리 설정 // targetEle.style.border = "2px solid red"; targetEle.classList.add("error"); // 흔들리는 애니메이션 추가 targetEle.classList.add("shake-animation"); //alert setTimeout(function() { if( typeof message != 'undefined' ) { //alert(message); var snackbarEle = document.getElementById("snackbar"); if( typeof snackbarEle === 'undefined' || snackbarEle === null ) { //snackbar 엘리먼트 생성 snackbarEle = createSnackBarEle(); } snackbarEle.innerHTML = message; } }, 1); // 3초 후 원래 스타일로 복원 setTimeout(function() { // targetEle.style.border = originalStyle; targetEle.classList.remove("error"); targetEle.classList.remove("shake-animation"); //targetEle.focus(); showSnackbar(); }, 700); } function createSnackBarEle () { const snackbar = document.createElement('div'); snackbar.id = 'snackbar'; // 2. body 태그 가져오기 const body = document.body; // 3. body 태그 맨 아래에 snackbar 추가 body.appendChild(snackbar); return snackbar; } function showSnackbar() { // Get the snackbar DIV var snackbar = document.getElementById("snackbar"); if( typeof snackbar === 'undefined' || snackbar === null ) { //snackbar 엘리먼트 생성 snackbar = createSnackBarEle(); } // Add the "show" class to DIV snackbar.className = "show"; var innerText = snackbar.innerText; innerText = String(innerText); // After some seconds, remove the show class from DIV const totalShowDuration = 4000 + innerText.length * 86; setTimeout(function(){ snackbar.className = snackbar.className.replace("show", ""); }, totalShowDuration); setTimeout(function(){ snackbar.style.visibility = 'hidden'; }, totalShowDuration - 500); const remainingDuration = totalShowDuration / 1000 - (0.5 * 2); // CSS 스타일을 JavaScript로 추가합니다. snackbar.style.visibility = 'visible'; snackbar.style.animation = 'fadein 0.5s, fadeout 0.5s ' + String(remainingDuration) + 's'; snackbar.style.webkitAnimation = 'fadein 0.5s, fadeout 0.5s ' + String(remainingDuration) + 's'; } /** * 한글 은/는 return 함수 */ function getKoreanParticle(word) { // 입력받은 문자열의 마지막 글자를 추출합니다. const lastChar = word.slice(-1); // 자음으로 끝나는 경우 '은'을, 모음으로 끝나는 경우 '는'을 반환합니다. const consonants = 'ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ'; if (consonants.includes(lastChar)) { return '은'; } else { return '는'; } } /** * 한글 로/으로 return 함수 */ function getKoreanParticle2(word) { word = String(word); const lastChar = word.slice(-1); const consonants = 'ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ'; const numberConsonantsNeun = '036'; // 0, 3, 6만 으로 로 이어진다/ if (numberConsonantsNeun.includes(lastChar)) { return '으로'; } if ( hasNonNumericCharacters(lastChar) == false ) { return '로'; } // 1. 'ㄹ'로 끝나는 경우 '로'를 사용합니다. if (lastChar === 'ㄹ') { return '로'; } // 2. 그 외 자음으로 끝나는 경우 '으로'를 사용합니다. if (consonants.includes(lastChar)) { return '으로'; } // 3. 모음으로 끝나는 경우 '로'를 사용합니다. return '로'; } function hasNonNumericCharacters(str) { return /[^0-9]/.test(str); } function removeNonNumeric(str) { let inputValue = String(str); return inputValue.replace(/[^0-9]/g, ''); } /** 프로젝트 명 중복 체크 */ function duplicateCheckProjectName( projectNameInput, projectCode ) { if( typeof projectCode === 'undefined' || projectCode ==="null") { projectCode = null; } projectName = projectNameInput.value; $.ajax({ type : "GET", data : { projectName : projectName, projectCode : projectCode, isProjectNameChecking : "true" }, url : "/project-duplicate-check.json", dataType : "json", success : function( json ){ resultData = json.result; if(resultData == "false"){ shakeAndHighlight(projectNameInput, json.message); return false; } else { return true; } }, error: function(xhr, option, error){ alert(xhr.status); //오류코드 alert(error); //오류내용 } }); } /** * 프로젝트 명 중복 체크 * 동기처리 * 응답 받은 후 호출한 부분에서 처리 */ function projNmDuplChkResult( projectNameInput, projectCode) { if( typeof projectCode === 'undefined' || projectCode ==="null") { projectCode = null; } projectName = projectNameInput.value; let result = {result:"false", msg: ''}; $.ajax({ type : "GET", data : { projectName : projectName, projectCode : projectCode, isProjectNameChecking : "true" }, url : "/project-duplicate-check.json", dataType : "json", async: false, success : function( json ){ resultData = json.result; if(resultData == "false"){ // shakeAndHighlight(projectNameInput, json.message); result.result = "false"; result.msg= json.message; } else { result.result = "true"; } }, error: function(xhr, option, error){ alert(xhr.status); // 오류코드 alert(error); // 오류내용 } }); return result; }