주소록관리 > 클립보드 입력 진행중

This commit is contained in:
hylee 2024-08-19 12:30:30 +09:00
parent 5482ac94fb
commit 3e6ca8d7dd
7 changed files with 235 additions and 155 deletions

View File

@ -333,6 +333,8 @@ function SetAddrMassSave(){
setSenderList_advc();
}
}
// 주소록 등록 advc
function setSenderList_advc(){
// tab에 해당하는 타블레이터 가져오기

View File

@ -159,11 +159,6 @@ function linkPage(pageNo){
$(document).ready(function(){
//Tabulator AJAX Data Loading
// 파일 선택 버튼 클릭 이벤트
$("#file-load-trigger").on("click", function() {
$("#excelFile").click();
});
//받는사람 전체삭제 버튼 처리
$('.all_del').click(function(){
var data = $tableClip.getRows();
@ -180,33 +175,7 @@ $(document).ready(function(){
});
// 받는사람 선택삭제 버튼 처리해주기
$('.select_del').click(function(){
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
if($tableClip == null || $tableClip == ""){
alert("받는사람을 추가해 주세요.");
return false;
}
var selectedData = $tableClip.getSelectedRows();
if(selectedData == "" || selectedData == null){
alert("받는 사람을 선택해 주세요.");
return false;
}else{ // 선택한 Row 데이터 삭제하기
for(var i=0; i < selectedData.length; i++){
selectedData[i].delete();
}
}
totRows = $tableClip.getRows().length;
updateTotCnt(totRows);
});
//받는사람 오류번호 삭제 처리해주기
// 받는사람 오류번호 삭제 처리해주기
$('.chkVali_del').click(function(){
//기존 연락처 모두 불러오기
var data = $tableClip.getRows();
@ -234,6 +203,7 @@ $(document).ready(function(){
//총 받는사람 수 계산
totRows = $tableClip.getRows().length;
console.log('totRows : ', totRows);
updateTotCnt(totRows);
if(errCnt > 0){
@ -249,7 +219,15 @@ $(document).ready(function(){
}
});
//전체 데이터 갯수 구하는 함수
function updateTotCnt(data){
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
$(tabluC+" #rowTotCnt").text(data);
}
@ -382,6 +360,84 @@ $(document).ready(function(){
});
//받는 사람 리스트 영역에 클립보드 데이터 가져와보기
// 붙여넣기 기능
$('#tabulator_clip').on('paste', function (e) {
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
var elmSplit = element.split("\n");
var elmLen = elmSplit.length;
console.log('elmSplit : ', elmSplit);
if(elmLen < 0){
alert("붙여넣을 연락처를 복사해주세요.");
return false;
}
if (elmLen > 20001) {
alert("2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.");
return false;
}
tableErrorData.length = 0; // 오류 번호 배열 초기화
var realPhone = [];
for(var i = 0; i < elmLen; i++){
var splitStr = elmSplit[i];
var tabData = splitStr.split("\t"); // 탭 구분으로 데이터 분할
var comData = splitStr.split(","); // 콤마 구분으로 데이터 분할
var splitData = (tabData.length >= 2) ? tabData : comData;
if(splitData.length == 0){ // 데이터가 없는 경우
alert("탭으로 구분하여 데이터를 복사해 주세요.");
return false;
}
if(splitData.length == 1){
realPhone.push({ A: splitData[0].trim() });
} else {
let keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
let data = {};
splitData.forEach((item, index) => {
data[keys[index]] = item.trim();
});
realPhone.push(data);
}
}
console.log('realPhone : ', realPhone);
var recTableData = $tableClip.getRows().map(row => createDataObject(row.getData()));
console.log('recTableData : ', recTableData);
var tableData = recTableData.concat(realPhone);
// 중복 연락처 제거 작업 (필요에 따라 적용)
// var removeDuplPhone = dupliPhoneData(tableData);
var removeDuplPhone = tableData; // 현재 중복 제거하지 않음
// 기존 데이터를 유지하고 새 데이터를 추가한 결과를 테이블에 반영
$tableClip.setData(removeDuplPhone);
var totRows = $tableClip.getRows().length;
updateTotCnt(totRows); // 전체 데이터 갯수 구하기
if (tableErrorData.length > 0) {
alert("데이터를 확인해 주세요.");
}
});
});
@ -396,6 +452,19 @@ $(document).on("click", "#duplicationChkAll", function(e) {
$("input[name=addrCheck]:checkbox").prop("checked", isChecked);
});
//데이터 객체를 생성하는 함수
function createDataObject(data) {
console.log('createDataObject : ', data);
return {
A: data.A,
B: data.B,
C: data.C,
D: data.D,
E: data.E,
F: data.F,
G: data.G
};
}
// 중복 연락처

View File

@ -80,52 +80,14 @@ $(document).ready(function(){
$("#excelFile").on("change", function(event) {
var fileInfo = event.target.files;
if(fileInfo.length > 0){
// fn_loadAddActive();
excelFileChange(fileInfo[0]);
}
} else {
fn_loadRemoveActive(); // 파일이 선택되지 않은 경우 로딩 상태 제거
setTimeout(() => { $(this).val(''); }, 0); // 파일 선택 초기화
}
});
//받는사람 전체삭제 버튼 처리
$('.all_del').click(function(){
var data = $tableExcel.getRows();
if(data == null || data == ""){
alert("받는사람을 추가해 주세요.");
return false;
}else{
$tableExcel.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
}
});
// 받는사람 선택삭제 버튼 처리해주기
$('.select_del').click(function(){
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
if($tableExcel == null || $tableExcel == ""){
alert("받는사람을 추가해 주세요.");
return false;
}
var selectedData = $tableExcel.getSelectedRows();
if(selectedData == "" || selectedData == null){
alert("받는 사람을 선택해 주세요.");
return false;
}else{ // 선택한 Row 데이터 삭제하기
for(var i=0; i < selectedData.length; i++){
selectedData[i].delete();
}
}
totRows = $tableExcel.getRows().length;
updateTotCnt(totRows);
});
//받는사람 오류번호 삭제 처리해주기
$('.chkVali_del').click(function(){
@ -315,18 +277,6 @@ $(document).ready(function(){
// 데이터 객체를 생성하는 함수
function createDataObject(data) {
return {
A: data.A,
B: data.B,
C: data.C,
D: data.D,
E: data.E,
F: data.F,
G: data.G
};
}
//#############################################################################################
//파일업로드 드래그앤 드롭
@ -400,8 +350,8 @@ function processExcelData(data) {
var totalRows = data.length - 2; // 전체 데이터 수 (1, 2행 제외)
// 3번째 행부터 입력
data.slice(2).forEach((row, index) => {
// 1번째 행부터 입력
data.forEach((row, index) => {
var rowData = {};
keys.forEach((key, idx) => { // index 변수명 변경 (내부와 외부에서 사용되므로 충돌 방지)
rowData[key] = row[idx] ? row[idx].trim() : ""; // 각 컬럼에 대해 기본값을 설정

View File

@ -187,48 +187,6 @@ $(document).ready(function(){
});
//받는사람 전체삭제 버튼 처리
$('.all_del').click(function(){
var data = $tableClip.getRows();
if(data == null || data == ""){
alert("받는사람을 추가해 주세요.");
return false;
}else{
$tableClip.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
}
});
// 받는사람 선택삭제 버튼 처리해주기
$('.select_del').click(function(){
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
if($tableClip == null || $tableClip == ""){
alert("받는사람을 추가해 주세요.");
return false;
}
var selectedData = $tableClip.getSelectedRows();
if(selectedData == "" || selectedData == null){
alert("받는 사람을 선택해 주세요.");
return false;
}else{ // 선택한 Row 데이터 삭제하기
for(var i=0; i < selectedData.length; i++){
selectedData[i].delete();
}
}
totRows = $tableClip.getRows().length;
updateTotCnt(totRows);
});
//받는사람 오류번호 삭제 처리해주기
$('.chkVali_del').click(function(){
//기존 연락처 모두 불러오기

View File

@ -54,12 +54,11 @@ $(document).ready(function(){
$("#excelFile").on("change", function(event) {
var fileInfo = event.target.files;
console.log('fileInfo.length : ', fileInfo.length);
if(fileInfo.length > 0){
excelFileChange(fileInfo[0]);
} else {
fn_loadRemoveActive(); // 파일이 선택되지 않은 경우 로딩 상태 제거
$(this).val(''); // 파일 선택 초기화
setTimeout(() => { $(this).val(''); }, 0); // 파일 선택 초기화
}
});
@ -407,10 +406,28 @@ function updateTableFields($objTabul) {
// ASCII 문자 코드 사용 - 65=A, 66=B ...
var field = String.fromCharCode(65 + index);
if (selectedField) {
columns.push({title: field, field: selectedField, hozAlign: "center", headerHozAlign: "center", editor: "input", width: 125, validator: ["maxLength:100", "string"]});
columns.push({
title: field
, field: selectedField
, hozAlign: "center"
, headerHozAlign: "center"
// , editor: "input"
, editor: false
, width: 125
, validator: ["maxLength:100", "string"]
});
fieldMapping.push(selectedField);
} else {
columns.push({title: field, field: field, hozAlign: "center", headerHozAlign: "center", editor: "input", width: 125, validator: ["maxLength:100", "string"]});
columns.push({
title: field
, field: field
, hozAlign: "center"
, headerHozAlign: "center"
, editor: false
// , editor: "input"
, width: 125
, validator: ["maxLength:100", "string"]
});
fieldMapping.push(field);
}
});

View File

@ -105,6 +105,57 @@ $(document).ready(function(){
$(tabluC+" #rowTotCnt").text(rowsToKeep.length);
}
//받는사람 전체삭제 버튼 처리
$('.all_del').click(function(){
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
var $objTabul = fn_utils_getTabulator();
var data = $objTabul.getRows();
$objTabul.clearData();
$(tabluC+" #rowTotCnt").text(0); //총건수 수정
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
});
// 받는사람 선택삭제 버튼 처리해주기
$('.select_del').click(function(){
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
var $objTabul = fn_utils_getTabulator();
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
var selectedData = $objTabul.getSelectedRows();
if(selectedData == "" || selectedData == null){
alert("삭제할 데이터를 선택해 주세요.");
return false;
}else{ // 선택한 Row 데이터 삭제하기
for(var i=0; i < selectedData.length; i++){
selectedData[i].delete();
}
}
totRows = $objTabul.getRows().length;
updateTotCnt(totRows);
});
//전체 데이터 갯수 구하는 함수
function updateTotCnt(data){
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
$(tabluC+" #rowTotCnt").text(data);
}
/*
* 타이틀 select 선택할때마다 실행해서
* 데이터테이블 필드값 수정
@ -124,10 +175,28 @@ $(document).ready(function(){
// ASCII 문자 코드 사용 - 65=A, 66=B ...
var field = String.fromCharCode(65 + index);
if (selectedField) {
columns.push({title: field, field: selectedField, hozAlign: "center", headerHozAlign: "center", editor: "input", width: 125, validator: ["maxLength:100", "string"]});
columns.push({
title: field
, field: selectedField
, hozAlign: "center"
, headerHozAlign: "center"
// , editor: "input"
, editor: false
, width: 125
, validator: ["maxLength:100", "string"]
});
fieldMapping.push(selectedField);
} else {
columns.push({title: field, field: field, hozAlign: "center", headerHozAlign: "center", editor: "input", width: 125, validator: ["maxLength:100", "string"]});
columns.push({
title: field
, field: field
, hozAlign: "center"
, headerHozAlign: "center"
// , editor: "input"
, editor: false
, width: 125
, validator: ["maxLength:100", "string"]
});
fieldMapping.push(field);
}
});

View File

@ -71,30 +71,45 @@ $(document).ready(function(){
validationMode:"highlight",
placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional)
clipboard:true, // 클립보드 기능 활성화
clipboardPasteAction:"insert", // insert, update, replace
clipboardPasteAction:"update", // insert, update, replace
clipboardPasteParser: function(clipboard) {
// clipboard 기능
var rows = clipboard.split('\n').map(row => row.split(/[\t,]+/).map(cell => cell.trim()));
console.log('rows : ', rows);
var tableData = rows.map(row => {
return {
A: row[0] || "",
B: row[1] || "",
C: row[2] || "",
D: row[3] || "",
E: row[4] || "",
F: row[5] || "",
G: row[6] || ""
};
});
return tableData;
},
/*console.log('clipboard: ', clipboard); // 클립보드의 원본 내용 확인
var rows = clipboard.split('\n').map(row => {
var cells = row.split(/[\t,]+/).map(cell => cell.trim());
return cells;
}).filter(row => Array.isArray(row) && row.some(cell => cell !== ""));
console.log('파싱된 rows: ', rows); // 파싱된 행 데이터 확인
var tableData = rows.map(row => {
return {
A: row[0] || "",
B: row[1] || "",
C: row[2] || "",
D: row[3] || "",
E: row[4] || "",
F: row[5] || "",
G: row[6] || ""
};
});
console.log('새로 추가될 데이터: ', tableData); // 추가될 데이터 확인
// 기존 테이블 데이터를 가져와서 병합
var existingData = $tableClip.getData(); // 기존 데이터를 가져옴
console.log('기존 : ', existingData);
var combinedData = existingData.concat(tableData); // 기존 데이터에 새로운 데이터 추가
console.log('병합 : ', combinedData);
return combinedData; // 병합된 데이터를 반환하여 기존 데이터 아래에 추가되도록 함
*/ },
columns: [
{formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) {
cell.getRow().toggleSelect();
}},
{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
{title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
{title:"C", field:"C", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
{title:"D", field:"D", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},