From 813ce808b978776ad2ff3f887b35b6777141ac4f Mon Sep 17 00:00:00 2001 From: hylee Date: Mon, 9 Sep 2024 18:28:57 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A3=BC=EC=86=8C=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/fax/addr/web/FaxAddrController.java | 6 +- .../let/fax/admin/web/FaxAdmController.java | 2 +- .../itn/let/mjo/addr/web/AddrController.java | 8 +- .../let/mjo/addr/web/AddrGroupController.java | 5 + .../webapp/WEB-INF/jsp/web/addr/AddrList.jsp | 66 +++++++-- .../web/addr/include/addrListforClipboard.jsp | 8 + .../jsp/web/addr/include/addrListforExcel.jsp | 3 +- .../jsp/web/addr/include/addrListforSelf.jsp | 56 +++++-- src/main/webapp/js/kakao/at/addr.js | 6 +- src/main/webapp/js/web/addr/event.js | 139 ++++++++++++------ src/main/webapp/js/web/addr/init.js | 106 +++++++------ 11 files changed, 275 insertions(+), 130 deletions(-) diff --git a/src/main/java/itn/let/fax/addr/web/FaxAddrController.java b/src/main/java/itn/let/fax/addr/web/FaxAddrController.java index ea055b4b..d0e79818 100644 --- a/src/main/java/itn/let/fax/addr/web/FaxAddrController.java +++ b/src/main/java/itn/let/fax/addr/web/FaxAddrController.java @@ -206,7 +206,7 @@ public class FaxAddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } List addrList = faxAddrService.selectFaxAddrList(addrVO); @@ -263,7 +263,7 @@ public class FaxAddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } List addrDupliList = faxAddrService.selectFaxAddrDupliListByAll(addrVO); @@ -856,7 +856,7 @@ public class FaxAddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); diff --git a/src/main/java/itn/let/fax/admin/web/FaxAdmController.java b/src/main/java/itn/let/fax/admin/web/FaxAdmController.java index 8076da3c..ead0b553 100644 --- a/src/main/java/itn/let/fax/admin/web/FaxAdmController.java +++ b/src/main/java/itn/let/fax/admin/web/FaxAdmController.java @@ -394,7 +394,7 @@ public class FaxAdmController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } diff --git a/src/main/java/itn/let/mjo/addr/web/AddrController.java b/src/main/java/itn/let/mjo/addr/web/AddrController.java index aacdd411..c71f3d42 100644 --- a/src/main/java/itn/let/mjo/addr/web/AddrController.java +++ b/src/main/java/itn/let/mjo/addr/web/AddrController.java @@ -115,7 +115,7 @@ public class AddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } // 기간검색 설정 @@ -384,7 +384,7 @@ public class AddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } List addrList = addrService.selectAddrList(addrVO); @@ -449,7 +449,7 @@ public class AddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } List addrDupliList = addrService.selectAddrDupliListByAll(addrVO); @@ -1055,7 +1055,7 @@ public class AddrController { if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List addrVO.setSearchSortCnd("addrId"); - addrVO.setSearchSortOrd("desc"); + addrVO.setSearchSortOrd("asc"); } LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); diff --git a/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java b/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java index 9465cd0a..b8462e74 100644 --- a/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java +++ b/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java @@ -360,6 +360,11 @@ public class AddrGroupController { public ModelAndView getAddrGroupDuplCheckAjax(HttpServletRequest request, ModelMap model, AddrGroupVO addrGroupVO ) throws Exception { + System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: "); + System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: "); + System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: "); + System.out.println(" :: addrGrpNm :: "+ addrGroupVO.getAddrGrpNm()); + ModelAndView mv = new ModelAndView(); mv.setViewName("jsonView"); diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp index fe6cb94e..a2ef16ee 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp @@ -233,7 +233,7 @@ function setAddrMassClose() { listAddrGrp(); addrGroupLoadAjax(); addrLoadAjax(); - errorPopClean(); // 에러 팝업 초기화 + fn_errorPopClean(); // 에러 팝업 초기화 } // 주소록 탭마다 돌면서 총, 중복, 오류 건수 초기화 @@ -262,13 +262,13 @@ function fn_rowDataClear(){ // 주소록 그룹 중복체크 -function getAddrGroupDuplCheckAjax() { +function getAddrGroupDuplCheckAjax(addrGrpNm) { var isReturn = true; $.ajax({ url : "", type : 'POST', - data : {"addrGrpNm" : $(tabluC+" #addrGrpNm").val()}, + data : {"addrGrpNm" : addrGrpNm}, dataType:'json', async: false, // 동기 success : function(data, status){ @@ -286,6 +286,7 @@ function getAddrGroupDuplCheckAjax() { //alert("주소록 중복체크에 실패했습니다."); } }); + console.log('isReturn : ', isReturn); return isReturn; } @@ -293,18 +294,34 @@ function getAddrGroupDuplCheckAjax() { //저장 function SetAddrMassSave(){ -// gArrRestartIndex = 0; //배열 재시작카운드 -// gNameList = []; //치환문자 이름 -// gPhoneList = []; //받는사람 -// gInfo1List = []; //치환문자1 -// gInfo2List = []; //치환문자2 -// gInfo3List = []; //치환문자3 -// gInfo4List = []; //치환문자4 -// gMemoList = []; //메모 + + + + + + + + var $objTabul = fn_utils_getTabulator(); var tabulNm = fn_utils_getTabulatorNm(); var tabluC = '.'+tabulNm + + /* console.log('$objTabul : ', $objTabul.getData()); + if(tabulNm == 'tableSelf'){ + console.log('????'); + + var allRows = $objTabul.getData(); // 테이블의 모든 데이터를 가져옴 + + // addrPhoneNo 값이 있는 행만 필터링 + var rowsWithPhoneNumbers = allRows.filter(function(row) { + return row.addrPhoneNo && row.addrPhoneNo.trim() !== ''; // 값이 존재하고 공백이 아닌 경우 + }); + $objTabul = rowsWithPhoneNumbers; + console.log('rowsWithPhoneNumbers : ', rowsWithPhoneNumbers); + console.log('$objTabul : ', $objTabul.getData()); + return false; + } */ if($objTabul.getData().length < 1){ alert("한 개 이상의 연락처를 입력하세요"); @@ -350,8 +367,10 @@ function SetAddrMassSave(){ if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW" && $(tabluC+" #addrGrpNm").val() != "") { + var addrGrpNm = $(tabluC+" #addrGrpNm").val(); + console.log('addrGrpNm : ', addrGrpNm); //주소록 중복체크 - if (getAddrGroupDuplCheckAjax() == false) { + if (getAddrGroupDuplCheckAjax(addrGrpNm) == false) { alert("중복된 그룹명입니다. 새 그룹명을 입력해주세요."); return false; } @@ -433,6 +452,7 @@ function setSenderList_advc(){ var $objTabul = fn_utils_getTabulator(); var dataToSend = $objTabul.getData(); + console.log('dataToSend : ', dataToSend); var addrGrpIdInfo = $(tabluC+" #addrGrpIdInfo option:selected").val(); var addrGrpNmInfo = $(tabluC+" #addrGrpNm").val(); @@ -524,11 +544,29 @@ function SetClear($objTabul) { $(tabluC+" #addrGrpNm").val(""); // 새그룹명 Clear; // 주소록 그룹정보 불러오기 getAddrGroupList(); + + + + if (tabulNm === 'tableSelf') { + var tableData = []; + for (var i = 0; i < 1000; i++) { + tableData.push({addrNm: "", addrPhoneNo: "", addrInfo1: "", addrInfo2: "", addrInfo3: "", addrInfo4: "", addrComment: ""}); + } + console.log(tableData); // 데이터 출력 확인 + fn_selfmakeTable() + }else{ + $objTabul.clearData(); // clearData는 동기 방식이므로 바로 실행 + + } +// console.log('tabulNm : ', tabulNm); +// console.log('tabulNm : ', tabulNm.trim()); + - $objTabul.clearData(); $(tabluC+" #rowTotCnt").text(0); //총건수 수정 $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 -// dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 + + // popup 영역 + fn_errorPopClean(); } // 주소 대량등록 버튼 클릭 diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp index eb01063e..61a2c171 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp @@ -289,6 +289,11 @@ $(document).ready(function(){ //받는 사람 리스트 영역에 클립보드 데이터 가져와보기 // 붙여넣기 기능 $('#tabulator_clip').off('paste').on('paste', function (e) { +// fn_ClipMakeTable(); + fn_errorPopClean(); + fn_rowCntInit(); + resetTableFieldsToDefault(); + var element = e.originalEvent.clipboardData.getData('text'); var elmSplit = element.split("\n"); var realPhone = []; @@ -318,6 +323,9 @@ $(document).ready(function(){ console.log('Parsed data:', realPhone); console.log('Tabulator data before getData:', $tableClip.getData()); // $tableClip.clearData(); + $tableClip.setData([{ + A: "", B: "", C: "", D: "", E: "", F: "", G: "" + }]); // 초기 데이터로 복원 $tableClip.setData(realPhone); var totRows = $tableClip.getDataCount(); updateTotCnt(totRows); diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp index bfc3c014..4e7408d2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp @@ -314,7 +314,8 @@ $(document).on('drop', function (e){ //파일 드래그앤드롭 종료 function excelFileChange(file) { - errorPopClean(); // 에러 popup 초기화 + console.log(' :: excelFileChange :: '); + fn_errorPopClean(); // 에러 popup 초기화 if (file) { fn_loadAddActive(); var reader = new FileReader(); diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp index 83cb0195..0fb5f2b8 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp @@ -39,25 +39,50 @@ $(document).on("click", "#duplicationChkAll", function(e) { }); -function fn_selfUpdataCount(){ +function fn_selfUpdataCount(value){ + + ////////////////////////////////////////////////////////////////////////// + + console.log('fn_selfUpdataCount(value) : ', value); + let errorCount = 0; // 중복 오류 + + const number = value; + const formattedNumber = formatPhoneNumber(number); // 번호 표준화 + const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 - // '휴대폰' 필드의 셀들 가져오기 - var cells = $tableSelf.getColumn("addrPhoneNo").getCells(); + var existingNumbers = []; // 중복 번호를 저장할 배열 - // 값이 있는 셀만 필터링하여 개수 카운트 - var count = cells.filter(function(cell) { - var value = cell.getValue(); - console.log('cell value: ', value); - return value !== "" && value !== undefined; // 빈 문자열과 undefined가 아닌 경우 - }).length; + // 모든 행의 'addrPhoneNo' 값을 배열에 추가 + var allRows = $tableSelf.getData(); // 테이블의 모든 데이터를 가져옴 + allRows.forEach(function(row) { + if (row.addrPhoneNo) { + const cleanedExistingNumber = row.addrPhoneNo.replace(/[^0-9]/g, ''); // 숫자만 남김 + existingNumbers.push(cleanedExistingNumber); // 기존 번호를 배열에 추가 + } + }); - console.log("휴대폰 번호가 있는 행 수: " + count); + // 중복제거한 데이터 구하기 + var dataList = new Set(existingNumbers); var tabulNm = fn_utils_getTabulatorNm(); var tabluC = '.'+tabulNm + $(tabluC+" #rowTotCnt").text(dataList.size); - $(tabluC+" #rowTotCnt").text(count); - return ; + + // 중복체크 + var hasDuplicates = existingNumbers.length !== dataList.size; + if (hasDuplicates) { + alert('중복된 값입니다 다시 입력해주세요.'); + console.log('중복'); + return ''; + } + + if (!isValidPhoneNumber(formattedNumber)) { // 유효성 검사 + alert('휴대폰 형식에 맞지 않는 데이터입니다.\nex) 발송불가 특수문자, 자릿수 오류 등'); + console.log('유효성 실패'); + return ''; + } + return formattedNumber; } @@ -67,9 +92,10 @@ function fn_selfUpdataCount(){
-

- 엑셀(EXCEL), 텍스트(TXT) 파일로 작성된 주소록 내용을 복사하여 등록 가능합니다.

-

- 많은 양의 데이터를 입력하시려면 ‘주소록 복사(Ctrl+C) + 붙여넣기(Ctrl+V)’를 이용해주세요.

-

- 입력 내용은 (Tab) 또는 (,) 기호로 구분하여 입력하여야 합니다.

+ + +

- 셀간 이동은 Tab으로 가능합니다.

+

- 핸드폰 번호를 입력하지 않은 행은 저장되지 않습니다.

- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

diff --git a/src/main/webapp/js/kakao/at/addr.js b/src/main/webapp/js/kakao/at/addr.js index 06366830..b8987c8b 100644 --- a/src/main/webapp/js/kakao/at/addr.js +++ b/src/main/webapp/js/kakao/at/addr.js @@ -60,13 +60,15 @@ function getAddrGroupListShow(jsonList) { } //주소록 그룹 중복체크 -function getAddrGroupDuplCheckAjax() { +function getAddrGroupDuplCheckAjax(addrGrpNm) { + console.log('addrGrpNm : ', addrGrpNm) + console.log('getAddrGroupDuplCheckAjax()') var isReturn = true; $.ajax({ url : "", type : 'POST', - data : {"addrGrpNm" : $("#addrGrpNm").val()}, + data : {"addrGrpNm" : addrGrpNm}, dataType:'json', async: false, // 동기 success : function(data, status){ diff --git a/src/main/webapp/js/web/addr/event.js b/src/main/webapp/js/web/addr/event.js index 69480e73..0497b06f 100644 --- a/src/main/webapp/js/web/addr/event.js +++ b/src/main/webapp/js/web/addr/event.js @@ -75,47 +75,39 @@ $(document).ready(function(){ const newData = []; // 유효한 데이터만 저장할 새로운 배열 data.forEach((row, index) => { - if (index % 10000 === 0) { - console.log('i : ', index); - } +// if (index % 10000 === 0) { +// console.log('i : ', index); +// } - const number = row.addrPhoneNo; - const formattedNumber = formatPhoneNumber(number); // 번호 표준화 - const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 - - if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크 - if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사 - row.addrPhoneNo = formattedNumber; - existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 - newData.push(row); // 유효한 데이터만 새로운 배열에 추가 - } else { - // 오류: 유효성 통과 못함 - errorCount++; -// $tableError.addRow({ -// name: row.addrNm, // 이름 -// phone: row.addrPhoneNo, // 폰번호 -// result: "오류" // 결과 메시지 추가 -// }); - errors.push({ - name: row.addrNm, // 이름 - phone: row.addrPhoneNo, // 폰번호 - result: "오류" // 결과 메시지 추가 - }); - } - } else { - // 중복 - duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가 -// $tableError.addRow({ -// name: row.addrNm, // 이름 -// phone: row.addrPhoneNo, // 폰번호 -// result: "중복" // 결과 메시지 추가 -// }); - duplicates.push({ - name: row.addrNm, // 이름 - phone: row.addrPhoneNo, // 폰번호 - result: "중복" // 결과 메시지 추가 - }); - } + const number = row.addrPhoneNo; + const formattedNumber = formatPhoneNumber(number); // 번호 표준화 + const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 + + if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크 + if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사 + row.addrPhoneNo = formattedNumber; + existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 + newData.push(row); // 유효한 데이터만 새로운 배열에 추가 + } else { + // 오류: 유효성 통과 못함 + errorCount++; + + errors.push({ + name: row.addrNm, // 이름 + phone: row.addrPhoneNo, // 폰번호 + result: "오류" // 결과 메시지 추가 + }); + } + } else { + // 중복 + duplicateCount++; + + errors.push({ + name: row.addrNm, // 이름 + phone: row.addrPhoneNo, // 폰번호 + result: "중복" // 결과 메시지 추가 + }); + } }); // data 배열을 newData 배열로 대체 @@ -132,7 +124,7 @@ $(document).ready(function(){ // 에러 카운트 $("#errorPopErrorCnt").text(errorCount); // - $("#errorPopTotCnt").text(duplicateCount+errorCount); +// $("#errorPopTotCnt").text(duplicateCount+errorCount); // 수정된 데이터로 테이블 업데이트 $objTabul.setData(data); @@ -141,6 +133,7 @@ $(document).ready(function(){ $("#rowDupCnt").text(duplicateCount); $(tabluC+" #rowTotCnt").text($objTabul.getDataCount()); + $("#errorPopTotCnt").text($objTabul.getDataCount()); var errorData = errors.concat(duplicates); // 오류 및 중복 데이터를 한 번에 추가 @@ -213,9 +206,11 @@ $(document).ready(function(){ var data = $objTabul.getRows(); $objTabul.clearData(); - $(tabluC+" #rowTotCnt").text(0); //총건수 수정 - $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 - dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 + fn_rowCntInit(); +// dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 + + // select box 초기화 + $('.field-selector').each(function() { $(this).val(''); }); }); // 받는사람 선택삭제 버튼 처리해주기 @@ -321,7 +316,10 @@ $(document).ready(function(){ // 주소록 에러결과 초기화 -function errorPopClean(){ +function fn_errorPopClean(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm // popup 영역 $tableError.clearData(); @@ -333,10 +331,61 @@ function errorPopClean(){ $("#errorPopErrorCnt").text(0); // $("#errorPopTotCnt").text(0); + + // select box 초기화 + $(tabluC+' .field-selector').each(function() { $(this).val(''); }); +} + +function fn_rowCntInit(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + $(tabluC+" #rowTotCnt").text(0); //총건수 수정 + $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 + $(tabluC+" #rowErrorCnt").text(0); //중복건수 수정 } +//1. 필드 초기화 함수 +function resetTableFieldsToDefault() { + + // 타불 객체 가져오기 + var $objTabul = fn_utils_getTabulator(); + + // 필드를 A, B, C, D로 초기화 + var defaultFields = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; + + // 테이블의 기존 데이터를 가져옵니다. + var currentData = $objTabul.getData(); + + // 초기 필드(A, B, C, D 등)를 위한 열 설정 + var columns = [ + {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) { + cell.getRow().toggleSelect(); + }}, + {formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", width:40} + ]; + + // 기본 필드로 열 구성 + defaultFields.forEach(field => { + columns.push({ + title: field, + field: field, + hozAlign: "center", + headerHozAlign: "center", + editor: false, // 편집 비활성화 + width: 125, + validator: ["maxLength:100", "string"] + }); + }); + + // 테이블을 기본 필드로 업데이트 + $objTabul.setColumns(columns); +// $objTabul.setData(updatedData); +} + + diff --git a/src/main/webapp/js/web/addr/init.js b/src/main/webapp/js/web/addr/init.js index bc9d9b57..807759da 100644 --- a/src/main/webapp/js/web/addr/init.js +++ b/src/main/webapp/js/web/addr/init.js @@ -62,6 +62,7 @@ $(document).ready(function(){ +// fn_ClipMakeTable(); $tableClip = new Tabulator("#tabulator_clip", { @@ -98,51 +99,7 @@ $(document).ready(function(){ }); - - - var tableData = []; - for (var i = 0; i < 1000; i++) { - tableData.push({A: "", B: "", C: "", D: "", E: "", F: "", G: ""}); - } - // 테이블 초기화 - $tableSelf = new Tabulator("#tabulator_self", { - height: "255px", - width: "100%", - layout: "fitColumns", - clipboardPasteAction: "update", - keybindings: { - "navRight": "tab", // Tab 키를 누르면 오른쪽 셀로 이동 - "navLeft": "shift+tab", - "editNext": false // Tab 키를 누를 때 편집 모드를 종료하지 않도록 설정 - }, - data: tableData, - columns: [ - {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) { - cell.getRow().toggleSelect(); - }}, - {formatter:"rownum", hozAlign:"center" ,title:"No", headerHozAlign:"center", width:40}, - {title:"이름", field:"addrNm", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, - {title:"휴대폰", field:"addrPhoneNo", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input" - , formatter:function(cell, formatterParams){ - var value = cell.getValue(); - - fn_selfUpdataCount(); -// if(value.indexOf("o") > 0){ -// return "" + value + ""; -// }else{ -// return value; -// } - return value; - }}, - {title:"[*1*]", field:"addrInfo1", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, - {title:"[*2*]", field:"addrInfo2", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, - {title:"[*3*]", field:"addrInfo3", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, - {title:"[*4*]", field:"addrInfo4", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, - {title:"메모", field:"addrComment", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"} - ], - navigation: true // 키보드 탐색 활성화 - }); // 사용자 정의 필터 설정: addrPhoneNo가 빈 값이나 undefined가 아닌 경우 // $tableSelf.setFilter(function(data, filterParams) { // var value = data.addrPhoneNo; @@ -192,8 +149,67 @@ $(document).ready(function(){ ] }); + // 직접입력 타블레이터 + fn_selfmakeTable() +}); + + +function fn_ClipMakeTable(){ +} + + +function fn_selfmakeTable(){ -}); \ No newline at end of file + var tableData = []; + for (var i = 0; i < 1000; i++) { + tableData.push({addrNm: "", addrPhoneNo: "", addrInfo1: "", addrInfo2: "", addrInfo3: "", addrInfo4: "", addrComment: ""}); + } + + // 테이블 초기화 + $tableSelf = new Tabulator("#tabulator_self", { + height: "255px", + width: "100%", + layout: "fitColumns", + clipboardPasteAction: "update", + keybindings: { + "navRight": "tab", // Tab 키를 누르면 오른쪽 셀로 이동 + "navLeft": "shift+tab", + "editNext": false // Tab 키를 누를 때 편집 모드를 종료하지 않도록 설정 + }, + data: tableData, + columns: [ + {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) { + cell.getRow().toggleSelect(); + }}, + {formatter:"rownum", hozAlign:"center" ,title:"No", headerHozAlign:"center", width:40}, + {title:"이름", field:"addrNm", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, + {title:"휴대폰", field:"addrPhoneNo", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input" + , cellEdited:function(cell){ + var currentValue = cell.getValue(); + console.log('cell.getValue() : ', currentValue); + + // 현재 값이 null 또는 undefined가 아니고, 값이 변경된 경우에만 처리 + if (currentValue !== null + && currentValue !== '' + ) { + var newValue = fn_selfUpdataCount(currentValue); + + // 값이 실제로 변경된 경우에만 setValue 호출 + if (currentValue !== newValue) { + cell.setValue(newValue); + } + } + } + }, + {title:"[*1*]", field:"addrInfo1", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, + {title:"[*2*]", field:"addrInfo2", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, + {title:"[*3*]", field:"addrInfo3", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, + {title:"[*4*]", field:"addrInfo4", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"}, + {title:"메모", field:"addrComment", hozAlign:"center", headerHozAlign: "center", width:119, validator:["maxLength:100"], editor:"input"} + ], + navigation: true // 키보드 탐색 활성화 + }); +}