친구톡 전송결과 프로그래스바 생성

This commit is contained in:
hehihoho3@gmail.com 2025-04-25 18:20:47 +09:00
parent 5b98807cad
commit b3c25e021e
2 changed files with 111 additions and 17 deletions

View File

@ -700,7 +700,7 @@ function sendTemplateInfo(){
success: function (data) {
console.log('data : ', data);
/* var status = data.status;
var status = data.status;
if("OK" == status){
var resultSts = data.object.resultSts;
var reserYn = data.object.reserYn;
@ -715,7 +715,7 @@ function sendTemplateInfo(){
}else{
alert(data.message);
return false;
} */
}
// if(data == 'success'){
@ -762,7 +762,7 @@ function sendTemplateInfo(){
// $('.loading_layer').removeClass('active');
// 프로그래스 바 종료
progressComplete();;
progressComplete();
}
,error: function (e) {
console.log("ERROR : ", e);

View File

@ -962,7 +962,9 @@ function fn_sendMsgData(){
// JSON 데이터 확인
console.log("최종 formData:", JSON.stringify(formData));
// 프로그래스파 시간을 위한 계산
var estimtedTime = calculateEstimatedTime(tableL.getRows().length);
$.ajax({
@ -971,10 +973,25 @@ function fn_sendMsgData(){
, data: JSON.stringify(formData)
, contentType: 'application/json'
, dataType: 'json'
, success: function (returnData) {
console.log('returnData : ', returnData);
, success: function (data) {
console.log('data : ', data);
var status = data.status;
if("OK" == status){
var resultSts = data.object.resultSts;
var reserYn = data.object.reserYn;
var resText = (reserYn === 'Y') ? '예약' : '발송';
$('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
$('.pop_msg_success .msg_text').html(resText+" 성공 : <strong>"+ resultSts + "</strong>건의<br>친구톡이 " + resText + " 되었습니다.");
}else if("UNAUTHORIZED" == status){
alert(data.message);
location.reload();
}else{
alert(data.message);
return false;
}
/*
if(status == 'success'){
@ -1012,11 +1029,13 @@ function fn_sendMsgData(){
}
,beforeSend : function(xmlHttpRequest) {
//로딩창 show
$('.loading_layer').addClass('active');
// $('.loading_layer').addClass('active');
progressStart(estimtedTime);
}
,complete : function(xhr, textStatus) {
//로딩창 hide
$('.loading_layer').removeClass('active');
// $('.loading_layer').removeClass('active');
progressComplete();
}
,error: function (e) {
console.log("ERROR : ", e);
@ -1026,6 +1045,74 @@ function fn_sendMsgData(){
}
//프로그레스바
var start, change;
var progressInterval = null; // 전역 변수로 타이머 ID 관리
function progressStart(time) {
// 기존 타이머 정지 및 초기화
if (progressInterval !== null) {
clearInterval(progressInterval); // 이전 타이머 정지
progressInterval = null; // 타이머 ID 초기화
}
resetProgressBar(); // 프로그레스바 초기화
// 프로그레스바 보이기
$(".progress_bar_wrap").css("display", "flex");
// 프로그레스바 요소 가져오기
var timeText = document.querySelector(".time_text");
var bar = document.querySelector(".change_bar");
// 초기 상태 설정
var width = 1;
var totalTime = time * 1000; // 총 실행 시간 (밀리초)
var cmpWid = totalTime / 100; // width 증가 간격 (밀리초)
// 새 타이머 시작
progressInterval = setInterval(changeWidth, cmpWid);
function changeWidth() {
if (width >= 100) {
// 프로그레스바 100% 도달
clearInterval(progressInterval); // 타이머 종료
progressInterval = null; // 타이머 ID 초기화
timeText.innerHTML = "100%";
setTimeout(function () {
// 100% 표시 후 "잠시만 기다려주세요" 변경
timeText.innerHTML = "잠시만 기다려주세요...";
$(".time_text").addClass("animation");
}, 1000);
} else {
// 프로그레스바 진행
width++;
bar.style.width = width + "%";
timeText.innerHTML = width + "%";
}
}
}
//선택된 데이터의 길이에 따라 예상 시간 계산 함수
function calculateEstimatedTime(selectedCount) {
//기준값
// const processTimePerBatch = 130; // 130초
// 30만건 기준 10분으로 기준을 잡아서
// 시간계산함
const processTimePerBatch = 600;
const batchSize = 300000;
// 1건당 처리 시간
const timePerRecord = processTimePerBatch / batchSize;
// 예상 시간 계산
const estimatedTimeInSeconds = selectedCount * timePerRecord;
return estimatedTimeInSeconds.toFixed(2);
}
//빈 값이나 null 값을 제거하는 함수
function removeEmptyValues(obj) {
Object.keys(obj).forEach(function(key) {
@ -1247,13 +1334,7 @@ function goToKakaoTestPopUp(){
function msgResultLink(){
var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
if(reserYn == 'Y'){
location.href="/web/mjon/reservmsg/selectReservKaKaoView.do";
}else{
location.href="/web/kakao/sent/selectKakaoSentView.do";
}
location.href="/web/kakao/sent/selectKakaoSentView.do";
}
function updateButtons(){
@ -1270,6 +1351,19 @@ function updateButtons(){
</div>
</div>
<div class="progress_bar_wrap">
<div class="progress_box">
<p class="time_text">0%</p>
<div class="bar">
<span class="change_bar"></span>
</div>
</div>
<div class="btn_wrap">
</div>
</div>
<div class="inner">
<div class="send_top">
<!-- tab button -->