/**
* quick 지점코드 업데이트
* @param obj
*/
function setQuickCstrInfo(obj) {
let cstrInfo = [obj.cstrCd, obj.cstrLrclsCd, obj.cstrMdclsCd, encodeURIComponent(obj.cstrDspNm), encodeURIComponent(obj.lrclsDtlCdNm), encodeURIComponent(obj.mdclsDtlCdNm), encodeURIComponent(obj.grpClsNm), obj.selCstrCd];
$.cookie("quickCstrInfo", cstrInfo.join("_"), lddi.COOKIE_OPTION);
cstrDataLoad(obj.selCstrCd == obj.cstrCd ? obj.cstrCd : obj.selCstrCd);
}
/**
* 지점코드 기준
*/
function getCstrPageType() {
// 현재 경로
const path = $('#quickPath').val();
// true: 지점코드 페이지 기준 , false: 지점코드 선택 기준
switch (path) {
case "/store/main": return true; // 지점정보
case "/store/floor": return true; // 층별 안내
case "/store/type": return true; // 유형별 안내
case "/store/convenience": return true; // 편의시설
case "/store/dining": return true; // F&B
case "/contents/shpgInfo": return true; // 쇼핑정보
case "/shpgnews/shpgnewsDetail": return true; // 쇼핑뉴스 상세
case "/thku/thkuDetail": return true; // 사은 상세
case "/cpn/cpnDetail": return true; // 쿠폰 상세
case "/cuterent/cuterentDetail": return true; // 문화/이벤트 상세
case "/shopnow/cntsList": return true; // Shop Now
default: return false;
}
}
/**
* quick 메뉴 열기
* @param
*/
let quickMenuSync;
let quickMenuFlag = false;
function quickMenuOpen() {
quickMenuSync = setInterval(function() {
if (quickMenuFlag) {
window.__openSelectBranch({type:'quick', zIndex:true});
clearInterval(quickMenuSync);
setTimeout(function() {
let i = 1;
let quickHeight = 0;
let heightArr = [18, 23, 10, 10, 10, 44];
for (let j in heightArr) {
quickHeight += $('.quick-height'+i).height()+heightArr[j];
i++;
}
$('.quickContent').height(quickHeight);
}, 500);
}
}, 100);
}
/**
* quick 메뉴 닫기
* @param cstrCd
*/
function quickCstrClose(cstrCd) {
// quick 지점정보
const quickCstrInfo = setCstrObj($.cookie("quickCstrInfo"), true);
// 지점코드
const result = getCstrPageType() == true ? cstrCd : quickCstrInfo.selCstrCd;
// 데이터 로드
cstrDataLoad(result);
}
/**
* 지점정보 데이터 로드
* @param param
*/
function cstrDataLoad(param) {
$.ajax({
url: _CONTEXT_PATH_ + "/main/cstrInfo",
type: 'POST',
cache : false,
dataType: 'json',
data: { cstrCd : param }
})
.done(function(response) {
dataInit(response);
})
.fail(function(response) {
console.log("error dataLoad()");
});
}
function goUrl(cstrCd) {
// 월드몰 예외처리
if (confirm('월드점 홈페이지로 이동합니다.')) {
window.open('https://www.lwt.co.kr/main/main.do', 'newWindow');
}
}
/**
* quick 메뉴 생성
* @param data
*/
function dataInit(data) {
// 초기화
const noData = '-';
var cstrInfo= setCstrObj($.cookie("cstrInfo"), true);
var activeCstrCd = cstrInfo.selCstrCd;
// 모자점 생성
let brancTypeHtml = '';
$.each(data.sibilingList, function(idx, sibiling) {
let active = (activeCstrCd == sibiling.cstrCd) ? "active" : "";
if(sibiling.cstrCd != "0370"){ // #10005 영플라자 미노출
brancTypeHtml += '
' + sibiling.cstrDspNm + '';
}
});
if (data.sibilingList.length == 0) {
brancTypeHtml += '';
}
$('.branch-type').empty();
$('.branch-type').append(brancTypeHtml);
// 지점 상세 생성
let onFlag = false, offFlag = false, halfFlag = false;
let subBranchHtml = '';
let brancAreaHtml = '';
let brancStoreHtml = '';
$.each(data.cstrInfoList, function(i, cstrInfo) {
// 초기화
let active = i==0 ? "active" : "";
let holidayArr = new Array(), runningStateArr = new Array();
let operationTm = '', restaurantTm = '', lastOrderTm = '', holiday = '', rpsntTelno = '', holidayTxt = '', runningState = '';
const dyofClCd = cstrInfo.dyofClCd, eosStDt = cstrInfo.eosStDt;
// 영업시간
operationTm = (!lddi.util.string.isEmpty(cstrInfo.stTm) && !lddi.util.string.isEmpty(cstrInfo.endTm)) ? cstrInfo.stTm+"~"+cstrInfo.endTm : noData;
// 식당영업시간
restaurantTm = (!lddi.util.string.isEmpty(cstrInfo.resBsleStTm) && !lddi.util.string.isEmpty(cstrInfo.resBsleEndTm)) ? cstrInfo.resBsleStTm+"~"+cstrInfo.resBsleEndTm : noData;
(restaurantTm == "00:00~00:00") ? restaurantTm = noData : '';
// 라스트오더시간
if (!lddi.util.string.isEmpty(cstrInfo.resLastOrdTm)) {
lastOrderHour = cstrInfo.resLastOrdTm.substring(0,2);
lastOrderMinute = cstrInfo.resLastOrdTm.substring(3,5);
}
(cstrInfo.resLastOrdTm == "00:00") ? cstrInfo.resLastOrdTm = "" : '';
// 휴일날짜
let quickDateFlag = false;
const now = lddi.util.date.format(new Date(), "yyyyMMdd");
$.each(cstrInfo.holidayList, function(j, item) {
let caledarDt = new Date(item.calendarDt.substring(0, 4)+"-"+item.calendarDt.substring(4, 6)+"-"+item.calendarDt.substring(6, 8));
holidayArr[j] = lddi.util.date.format(new Date(item.calendarDt.substring(0, 4)+"-"+item.calendarDt.substring(4, 6)+"-"+item.calendarDt.substring(6, 8)), 'M.d(E)');
if (now == item.calendarDt) {
quickDateFlag = true;
halfFlag = true;
}
});
holidayArr = $.grep(holidayArr,function(n){ return n == " " || n; });
holiday = (!lddi.util.string.isEmpty(holidayArr)) ? holidayArr.join(", ") : noData;
if(dyofClCd != '9') {
holidayTxt = '';
// 지점별 휴일
if (!quickDateFlag) {
onFlag = true;
if(dyofClCd == '1')
holidayTxt += '오늘은 정상영업 중';
else if(dyofClCd == '3')
holidayTxt += '오늘은 연장영업 중';
else if(dyofClCd == '4' || dyofClCd == '7')
holidayTxt += '오늘은 단축영업 중';
else if(dyofClCd == '5')
holidayTxt += '명절당일 영업 중';
else if(dyofClCd == '6')
holidayTxt += '오늘은 ' + cstrInfo.bsleNm + ' 중';
runningState = 'on';
} else {
offFlag = true;
holidayTxt += '휴점일 입니다';
runningState = 'off';
operationTm = holidayTxt; // 영업시간
restaurantTm = holidayTxt; // 식당가
cstrInfo.resLastOrdTm = ''; // 라스트오더시간
}
if(cstrInfo.cstrCd != '0354')
subBranchHtml += ''+holidayTxt+'
';
} else {
subBranchHtml += '' + eosStDt + '부 영업종료
';
}
// 대표전화
rpsntTelno = (!lddi.util.string.isEmpty(cstrInfo.rpsntTelno)) ? cstrInfo.rpsntTelno : noData;
// 상세
brancAreaHtml += '';
// 스토어
brancStoreHtml += '';
brancStoreHtml += '
';
brancStoreHtml += ' - 층별 안내
';
brancStoreHtml += ' - 편의시설
';
cstrInfo.diningYn === 'Y' ? brancStoreHtml += ' - F&B
' : '';
brancStoreHtml += '
';
brancStoreHtml += '
';
});
$('.branch-area').empty();
$('.branch-area').append(brancAreaHtml);
$('.branch-store').empty();
$('.branch-store').append(brancStoreHtml);
// 지점정보 obj
const cstrInfoObj = setCstrObj(data.cstrInfoList[0], false);
// 지점정보 대분류, 중분류 설정
let branchHtml = '';
branchHtml += '';
branchHtml += subBranchHtml;
branchHtml += '
';
branchHtml += '';
branchHtml += '
'+cstrPrefix(cstrInfoObj)+'
';
branchHtml += '
';
branchHtml += ' '+data.cstrInfoList[0].cstrNm+'';
branchHtml += ' ';
branchHtml += '
';
branchHtml += '
';
$('.branch-current').empty();
$('.branch-current').append(branchHtml);
// 지점 영업상태 표시
if (onFlag && !offFlag && !halfFlag) {
document.querySelector('.menu__quick').setAttribute('running-state' , 'on');
} else if(!onFlag && offFlag && halfFlag) {
document.querySelector('.menu__quick').setAttribute('running-state' , 'off');
} else {
document.querySelector('.menu__quick').setAttribute('running-state' , 'both');
}
// 날씨 생성
let brancWeatherHtml = '';
$.each(data.wthrInfoList, function(i, wthrInfo) {
let active = i == 0 ? "active" : "";
const address1 = !lddi.util.string.isEmpty(wthrInfo.strAddr1) ? wthrInfo.strAddr1 : '';
const address2 = !lddi.util.string.isEmpty(wthrInfo.strAddr2) ? wthrInfo.strAddr2 : '';
let address;
if (lddi.util.string.isEmpty(address1) && lddi.util.string.isEmpty(address2)) {
address = noData;
} else if (!lddi.util.string.isEmpty(address1) && lddi.util.string.isEmpty(address2)) {
address = address1;
} else {
address = address1 + ' ' +address2;
}
brancWeatherHtml += '';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
brancWeatherHtml += '
'+address+'
';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
brancWeatherHtml += '

';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
brancWeatherHtml += ' '+wthrInfo.tmprVal+'';
brancWeatherHtml += ' °';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
brancWeatherHtml += '
';
});
$('.branch-weather').empty();
$('.branch-weather').append(brancWeatherHtml);
// 지점 쇼핑뉴스 생성
let branchNewsHtml = '';
branchNewsHtml += '';
branchNewsHtml += ' 쇼핑뉴스 보러가기
';
branchNewsHtml += '
';
$('.branch-news').empty();
$('.branch-news').append(branchNewsHtml);
// 쇼핑뉴스 클릭 이벤트
$('.news'+data.cstrInfoList[0].cstrCd).on('click', function() {
ga4.event('click_event', 'PC_공통', '퀵UI_하단메뉴', '쇼핑뉴스 보러가기', '');
changeCstrInfo(data.cstrInfoList[0]);
});
// 데이터 로드 완료
quickMenuFlag = true;
}
/**
* quick > gnb 지점변경
* @param e
* @param cstrLrclsCd
* @param cstrCd
*/
function closeQuickAndOpenBranch(e, cstrLrclsCd, cstrCd) {
// quick hide
window.__selectBranch.hide(e);
// 클래스명
const classNm = cstrLrclsCd == 'C00110' ? 'dept' : (cstrLrclsCd == 'C00130' ? 'outlet' : (cstrLrclsCd == 'C00150' ? 'timevillas' : 'shoppingmall'));
// 활성화 초기화
$('.branchClear').removeClass('active');
// 지점 타이틀 활성화
$('._'+classNm).addClass('active');
// 세부지점 영역 활성화
$('.__'+classNm).addClass('active');
// 선택지점 활성화 (cstrLrclsCd: 자점대분류코드, cstrCd: 자점코드)
var quickGnbSelectCstr = $("li[class*='_"+cstrCd+"'");
quickGnbSelectCstr.addClass('active');
//$('.'+cstrLrclsCd+'_'+cstrCd).addClass('active');
//$('.'+'_'+cstrCd).addClass('active');
// gnb open
window.__openSelectBranch({type:'gnb', zIndex:true, select:classNm});
}
/**
* gnb > quick 지점변경
* @param e
* @param obj
*/
function hideBranchPopup(e, obj) {
// gnb hide
window.__selectBranch.hide(e);
$("#quickSearch").val('');
let isContent = e.closest('.select-branch-popup').classList.contains('__content');
if(isContent) return;
const _value = e.querySelector('button').innerHTML;
const _quickMenu = document.querySelector('.menu__quick');
_quickMenu.setAttribute('select-branch', _value);
quickMenuOpen();
}
/**
* 지점정보 오브젝트 생성
* @param param
* @param flag
*/
function setCstrObj(param, flag) {
let _splitData = '';
if (flag) _splitData = (lddi.util.string.isEmpty(param)) ? $.cookie("cstrInfo").split("_") : param.split("_");
// obj 생성
const obj = {
lrclsDtlCdNm : flag == true ? decodeURIComponent(_splitData[4]) : param.lrclsDtlCdNm,
cstrLrclsCd : flag == true ? _splitData[1] : param.cstrLrclsCd,
cstrCd : flag == true ? _splitData[0] : param.cstrCd,
cstrMdclsCd : flag == true ? _splitData[2] : param.cstrMdclsCd,
cstrDspNm : flag == true ? decodeURIComponent(_splitData[3]) : param.cstrDspNm,
mdclsDtlCdNm : flag == true ? decodeURIComponent(_splitData[5]) : param.mdclsDtlCdNm,
grpClsNm : flag == true ? decodeURIComponent(_splitData[6]) : param.grpClsNm,
selCstrCd : flag == true ? decodeURIComponent(_splitData[7]) : "",
cstrLrclsDspNm : flag == true ? "" : param.cstrLrclsDspNm
}
return obj;
}
/**
* 지점대분류명 표기 예외처리
* @param obj
*/
function cstrPrefix(obj) {
//let result = obj.cstrLrclsCd == "C00110" ? obj.lrclsDtlCdNm : obj.mdclsDtlCdNm;
let result = obj.cstrLrclsDspNm;
$.each(obj.sibilingList, function(idx, sibiling) {
result = sibiling.grpDspNm;
});
return result;
}
/**
* quick 검색 유효성 검사
*/
function searchValid() {
const quickSearchTxt = $('#quickSearch').val();
if (quickSearchTxt) {
ga4.event('click_event', 'PC_공통', '퀵UI_검색', quickSearchTxt, '');
lddi.ButtonLink.searchTotal(quickSearchTxt);
} else {
alert('브랜드, 서비스 검색어를 입력하세요.');
}
}
/**
* quick 메뉴 초기화
*/
function quickBranchInit() {
// 검색 button 이벤트
$("#btnQuickSearch").on("click", function() {
searchValid();
});
// 검색 input 이벤트
$("#quickSearch").keyup(function(event) {
if (event.which === 13) {
searchValid();
}
});
// gnb 선택 이후
if (!lddi.util.string.isEmpty($.cookie("quickCstrInfo"))) {
// 지점정보
const cstrInfo = setCstrObj($.cookie("cstrInfo"), true);
// 지점정보 대분류명
const _quickMenu = document.querySelector('.menu__quick');
_quickMenu.setAttribute('select-branch', cstrInfo.cstrDspNm);
// 지점코드
getCstrPageType() == true ? cstrDataLoad(cstrInfo.selCstrCd == cstrInfo.cstrCd ? cstrInfo.cstrCd : cstrInfo.selCstrCd) : setQuickCstrInfo(cstrInfo);
}
}
document.addEventListener("DOMContentLoaded", function() {
quickBranchInit();
})