이호영 이호영 2024-09-09
주소록 수정중
@813ce808b978776ad2ff3f887b35b6777141ac4f
src/main/java/itn/let/fax/addr/web/FaxAddrController.java
--- src/main/java/itn/let/fax/addr/web/FaxAddrController.java
+++ src/main/java/itn/let/fax/addr/web/FaxAddrController.java
@@ -206,7 +206,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		List<FaxAddrVO> addrList = faxAddrService.selectFaxAddrList(addrVO);
@@ -263,7 +263,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		List<FaxAddrVO> addrDupliList = faxAddrService.selectFaxAddrDupliListByAll(addrVO);
@@ -856,7 +856,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
src/main/java/itn/let/fax/admin/web/FaxAdmController.java
--- src/main/java/itn/let/fax/admin/web/FaxAdmController.java
+++ src/main/java/itn/let/fax/admin/web/FaxAdmController.java
@@ -394,7 +394,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		
src/main/java/itn/let/mjo/addr/web/AddrController.java
--- src/main/java/itn/let/mjo/addr/web/AddrController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrController.java
@@ -115,7 +115,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		// 기간검색 설정
@@ -384,7 +384,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		List<AddrVO> addrList = addrService.selectAddrList(addrVO);
@@ -449,7 +449,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		List<AddrVO> addrDupliList = addrService.selectAddrDupliListByAll(addrVO);
@@ -1055,7 +1055,7 @@
 		
 		if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
 			addrVO.setSearchSortCnd("addrId");
-			addrVO.setSearchSortOrd("desc");
+			addrVO.setSearchSortOrd("asc");
 		}
 		
 		LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
--- src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
@@ -360,6 +360,11 @@
 	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");
 		
src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
@@ -233,7 +233,7 @@
 	listAddrGrp();
 	addrGroupLoadAjax();
 	addrLoadAjax();		
-	errorPopClean(); // 에러 팝업 초기화
+	fn_errorPopClean(); // 에러 팝업 초기화
 }
 
 // 주소록 탭마다 돌면서 총, 중복, 오류 건수 초기화
@@ -262,13 +262,13 @@
 
 
 // 주소록 그룹 중복체크
-function getAddrGroupDuplCheckAjax() {
+function getAddrGroupDuplCheckAjax(addrGrpNm) {
 	var isReturn = true;
 	
 	$.ajax({
 		url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />", 
 		type : 'POST', 
-		data : {"addrGrpNm" : $(tabluC+" #addrGrpNm").val()},
+		data : {"addrGrpNm" : addrGrpNm},
 		dataType:'json',
 		async: false,			// 동기
 		success : function(data, status){
@@ -286,6 +286,7 @@
 			//alert("주소록 중복체크에 실패했습니다.");
 		}
 	});
+	console.log('isReturn : ', isReturn);
 	
 	return isReturn;	
 }
@@ -293,18 +294,34 @@
 
 //저장
 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 @@
 	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 @@
 	  
     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 @@
 	$(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();
 }
 
 // 주소 대량등록 버튼 클릭 
src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp
@@ -289,6 +289,11 @@
 	//받는 사람 리스트 영역에 클립보드 데이터 가져와보기 
 	// 붙여넣기 기능
 	$('#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 @@
 	    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);
src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
@@ -314,7 +314,8 @@
 //파일 드래그앤드롭 종료
 
 function excelFileChange(file) {
-	errorPopClean(); // 에러 popup 초기화
+	console.log(' :: excelFileChange :: ');
+	fn_errorPopClean(); // 에러 popup 초기화
 	if (file) {
 		fn_loadAddActive();
 		var reader = new FileReader();
src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp
@@ -39,25 +39,50 @@
 });	
 
 
-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 @@
 	                <!-- 붙여넣기 -->
 	                <div class="popCont pop_more_cont" id="popCont_3">
 	                    <div class="titBox">
-	                        <p>- 엑셀(EXCEL), 텍스트(TXT) 파일로 작성된 주소록 내용을 복사하여 등록 가능합니다.</p>
-	                        <p>- 많은 양의 데이터를 입력하시려면 ‘주소록 복사(Ctrl+C) + 붙여넣기(Ctrl+V)’를 이용해주세요.</p>
-	                        <p>- 입력 내용은 (Tab) 또는 (,) 기호로 구분하여 입력하여야 합니다.</p>
+<!-- 	                        <p>- 엑셀(EXCEL), 텍스트(TXT) 파일로 작성된 주소록 내용을 복사하여 등록 가능합니다.</p> -->
+<!-- 	                        <p>- 많은 양의 데이터를 입력하시려면 ‘주소록 복사(Ctrl+C) + 붙여넣기(Ctrl+V)’를 이용해주세요.</p> -->
+	                        <p>- 셀간 이동은 Tab으로 가능합니다.</p>
+	                        <p>- 핸드폰 번호를 입력하지 않은 행은 저장되지 않습니다.</p>
 	                        <p>- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.</p>
 	                        <p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
 <!-- 	                        <button type="button" class="txt_btn" onclick="location.href='/download/addr/주소록_대량등록.zip'"><i></i>TXT샘플 다운로드</button>                         -->
src/main/webapp/js/kakao/at/addr.js
--- src/main/webapp/js/kakao/at/addr.js
+++ src/main/webapp/js/kakao/at/addr.js
@@ -60,13 +60,15 @@
 }
 
 //주소록 그룹 중복체크
-function getAddrGroupDuplCheckAjax() {
+function getAddrGroupDuplCheckAjax(addrGrpNm) {
+	console.log('addrGrpNm : ', addrGrpNm)
+	console.log('getAddrGroupDuplCheckAjax()')
 	var isReturn = true;
 	
 	$.ajax({
 		url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />", 
 		type : 'POST', 
-		data : {"addrGrpNm" : $("#addrGrpNm").val()},
+		data : {"addrGrpNm" : addrGrpNm},
 		dataType:'json',
 		async: false,			// 동기
 		success : function(data, status){
src/main/webapp/js/web/addr/event.js
--- src/main/webapp/js/web/addr/event.js
+++ src/main/webapp/js/web/addr/event.js
@@ -75,47 +75,39 @@
 		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 @@
 	    // 에러 카운트
 	    $("#errorPopErrorCnt").text(errorCount);
 	    // 
-	    $("#errorPopTotCnt").text(duplicateCount+errorCount);
+//	    $("#errorPopTotCnt").text(duplicateCount+errorCount);
 	    
 		// 수정된 데이터로 테이블 업데이트
 		$objTabul.setData(data);
@@ -141,6 +133,7 @@
 		$("#rowDupCnt").text(duplicateCount);
 
 	    $(tabluC+" #rowTotCnt").text($objTabul.getDataCount());
+	    $("#errorPopTotCnt").text($objTabul.getDataCount());
 	    
 	    var errorData = errors.concat(duplicates);
 		 // 오류 및 중복 데이터를 한 번에 추가
@@ -213,9 +206,11 @@
 			
 			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 @@
 
 
 // 주소록 에러결과 초기화
-function errorPopClean(){
+function fn_errorPopClean(){
+
+	var tabulNm = fn_utils_getTabulatorNm();
+	var tabluC = '.'+tabulNm
 
     // popup 영역
 	$tableError.clearData();
@@ -333,10 +331,61 @@
     $("#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);
+}
 
 
 
src/main/webapp/js/web/addr/init.js
--- src/main/webapp/js/web/addr/init.js
+++ src/main/webapp/js/web/addr/init.js
@@ -62,6 +62,7 @@
 
 	
 
+//	fn_ClipMakeTable();
 
 
 	$tableClip = new Tabulator("#tabulator_clip", {
@@ -98,51 +99,7 @@
 	});
 	
 	
-	
-	
-	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 "<span style='color:#3FB449; font-weight:bold;'>" + value + "</span>";
-//					}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 @@
 	 	]
 	});
 
+	// 직접입력 타블레이터
+	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 // 키보드 탐색 활성화
+	});
+}
Add a comment
List