/* odaeri/js/quickOrderControl.js */ var now = Date.now(); var date = new Date(); var now = Math.floor(date.getTime()/1000); console.log("now : "+now); // 목적지 Div 선택 클릭시 대응... $(document).on("click", ".destSelectTrigger", function() { ajaxLoadingScreenOn(); // 버블 가이드 삭제하고, $(".quickOrderDestCookieSelectDiv > .speech-bubble").remove(); // .parent().attr(id) var destDivId = $(this).parent().attr("id"); // 초기화..... // 다른 .card-body 접어주고.. $(".destSelectCardDiv .card-body").slideUp(); $(".destSelectCardDiv").not("#"+destDivId).slideUp(); // .card-body 디스플레이 //console.log( "이거 속성..... " + $(this).siblings(".card-body").css("display") ); // 비선택 상태의 DIV 를 클릭했을 때... 선택 활성화 프로세스,.,. if( $(this).siblings(".card-body").css("display") !="block" ) { $(this).siblings(".card-body").slideDown(); //$("#loadingPopUpDiv").removeClass("display-none"); // 선택 Div 의 destPointId ... var selectedPointId = $(this).parent().attr("data-dpId"); // 도탁지선택 Div 를 slideUp() 해주고, $("#destGeoId").val( $(this).parent().attr("data-geoId") ); $("#destPointId").val( $(this).parent().attr("data-dpId") ); $("#destFullAddr").val( $(this).siblings(".card-body").find(".addrString").text() ); console.log("카드의 풀어드레스는.... " +$(this).siblings(".card-body").find(".addrString").text()); // .destFullAddress 출력내용 변경 //$(".destFullAddress").text( $(this).find(".addrString").text() ); var priceRangeStr =""; // 캐쉬를 활용해서 불필요한 서버 쿼리가 남발되지 않도록 방어해준다. // $window.sessionStorage.inquiryJSON[selectedPointId] = jsonObj.stringify(); // var selectedInquiryJSON = JSON.parse($window.sessionStorage.inquiryJSON[selectedPointId]); // 서버에서 받아온 JSON 은 캐쉬해서 서버자원을 경제적으로 사용하도록 하자. 캐쉬 유효기간은 20분... // JSON 서버발행 기준시각 : JSON.issueTime // 캐쉬된 JSON 이 존재하면 캐쉬된 JSON 을 사용하되, 유효시간을 엄격히 적용해준다. sessionStorage.clear(); var selectedJSONStr = sessionStorage.getItem(selectedPointId); var selectedJSON = JSON.parse(selectedJSONStr); if( sessionStorage.getItem(selectedPointId) && Number(selectedJSON.issueTime)+1200 > now ) { console.log( "스토리지에 저장된 제이슨이 유효하다..." );//+ sessionStorage.getItem(selectedPointId) fillQuickOrderFromJSON(selectedJSON); } else { // 인콰이어리 form.serialize // 대리비조회 getJSON 을 실행.. var serverPHP = $("#quickOrderInquiryForm").attr("action"); var inquiryFormSerialized = $("#quickOrderInquiryForm").serialize(); console.log("inquiryFormSerialized : "+inquiryFormSerialized); $.getJSON( serverPHP+"?"+inquiryFormSerialized+"&callback=?", function(jsonObj) { sessionStorage.setItem(selectedPointId, JSON.stringify(jsonObj) ); fillQuickOrderFromJSON(jsonObj); }); } // 대리요청 Summary 블럭을 구성해준다. } // 선택을 취소... 초기화 프로세스... else { $(".destSelectCardDiv").not("#"+destDivId).slideDown(); // 선택대상 리스트(목록만) 다시 출력... //$("#deptGeoId").val(""); // deptGeoId 는 초기화 할 필요없다. //$("#deptPointId").val(""); // deptPointId 는 필요한 경우에만 초기화한다. $("#driveDistance").val(""); $("#destGeoId").val(""); $(".priceRangeStorage").attr("data-value", ""); $("#inquiryResultSelectesCharge").attr("data-value", 0); $("#defaultPrice, #selectedPrice").val(0); $("#quickOrderSummaryBlackDiv, .quickOrderSummaryBlackDiv").slideUp(); $(".quickOrderHpAuthDiv").slideUp(); } ajaxLoadingScreenOff(); }); // undoIconDiv 선택을 취소... 초기화 프로세스... $(document).on("click",".undoIconDiv", function() { console.log("UNdo 시작....."); $(".destSelectCardDiv .card-body").slideUp(); //$(".destSelectCardDiv").not("#"+destDivId).slideUp(); $(".destSelectCardDiv").slideDown(); // 선택대상 리스트(목록만) 다시 출력... //$("#deptGeoId").val(""); // deptGeoId 는 초기화 할 필요없다. //$("#deptPointId").val(""); // deptPointId 는 필요한 경우에만 초기화한다. $("#driveDistance").val(""); $("#destGeoId").val(""); $(".priceRangeStorage").attr("data-value", ""); $("#inquiryResultSelectesCharge").attr("data-value", 0); $("#defaultPrice, #selectedPrice").val(0); $("#quickOrderSummaryBlackDiv, .quickOrderSummaryBlackDiv").slideUp(); $(".quickOrderHpAuthDiv").slideUp(); }); // 도착지 추가버튼 클릭 대응... $(document).on("click","#addNewDestinationCookieBtn", function() { console.log("#addNewDestinationCookieBtn 클릭...." + $("#quickOrderDestInputDiv").css("display") ); if( $("#quickOrderDestInputDiv").css("display") == "none" ) { $("#quickOrderDestInputDiv").slideDown(); //$(document).scrollTop("#quickOrderDestInputDiv"); $('html, body').animate({ scrollTop: $("#quickOrderDestInputDiv").offset().top -80 }, 500); } else $("#quickOrderDestInputDiv").slideUp(); //$("#quickOrderDestInputDiv").slideToggle(); }); // 도착지 제거 버튼 클릭 대응... $(document).on("click",".cardControllerDiv > .divClose", function(e) { //$(".cardControllerDiv").off("click"); //e.preventDefault(); var delDpId = $(this).parents(".destSelectCardDiv").attr("data-dpId"); var priceRangeStr = ""; console.log("delDpId : " +delDpId); if( confirm("도착지를 삭제합니다.") ) { // 해당 Div 만 디스플레이에서 제거.. console.log( "제거 아이디 : #destCardDiv_"+delDpId ); $("#destCardDiv_"+delDpId).remove(); // JS 레벨에서의 쿠키 핸들링 좌절...2018-04-03오후 10:52 // 브라우저마다 제각각인 쿠키 핸들링을 믿을 수 없어서 서버 데이터를 사용하기로 함.. $.getJSON("/ajax/cookieDestinations.php?delPointId="+delDpId+"&callback=?", function(jsonObj) { //if(typeof jsonObj == "object") $("#quickOrderDestinationDiv").html(""); //console.log("jsonObj......" + jsonObj[0].pointName); /* $.each( jsonObj.JSON, function( ind, eachObj) { console.log("여기 루프ㅡㅡㅡㅡ"); var addDestination = "
"+eachObj.pointName+""+eachObj.addrString+""+eachObj.doroString+"
"; $("#quickOrderDestinationDiv").append(addDestination); }); */ }); // 디스플레이에서 제거한다. //$(".cookieDestinationsDiv").filter("[data-dpId='"+delDpId+"']").remove(); } }); // quickOrderSelectDestAgainBtn 버튼 클릭 대응.. $(document).on("click","#quickOrderSelectDestAgainBtn", function() { // 오더 서머리 Div 를 출력하고, $("#quickOrderSummaryBlackDiv").slideUp(); // #quickOrderDestHeadDiv 을 on $("#quickOrderDestHeadDiv").slideUp(); // #quickOrderSelectDestFrameDiv 를 히든.. $("#quickOrderSelectDestFrameDiv").slideDown(); // HPAuth 블럭을 디스플레이 off $(".quickOrderHpAuthDiv").slideUp(); }); function fillQuickOrderFromJSON(jsonObj) { // 출력 데이터를 채워준다. //console.log("fillDriveChargeDigits 호출함... 1" ); //console.log("제이슨 오브젝트의 defaultPrice... "+ jsonObj.defaultPrice ); // priceRangeStr 를 구성.. priceRangeStr = jsonObj.priceRange0+":"+jsonObj.priceRange1+":"+jsonObj.priceRange2+":"+jsonObj.priceRange3; if(jsonObj.priceRange4) priceRangeStr+=":"+jsonObj.priceRange4; if(jsonObj.priceRange5) priceRangeStr+=":"+jsonObj.priceRange5; fillDriveChargeDigits(jsonObj); // #deptPointId 에 밸류 넣어주고, $("#deptPointId").val(jsonObj.deptPointId); $("#driveDistance").val(jsonObj.driveDistance); $("#deptGeoId").val(jsonObj.deptGeoId); $("#destGeoId").val(jsonObj.destGeoId); // span.priceRangeStorage 에 밸류를 넣어주고, $(".priceRangeStorage").attr("data-value", priceRangeStr); // jsonObj.defaultPrice 를 data-value 항목에도 넣어줘야 한다. $("#inquiryResultSelectesCharge").attr("data-value", jsonObj.defaultPrice); // quickOrderMainForm 에 인콰이어리 결과 밸류를 넣어준다. $("#defaultPrice, #selectedPrice, #finalCharge").val(jsonObj.defaultPrice); refreshOdometerSingle( $("#finalCharge"), jsonObj.defaultPrice ); // 오더 서머리 Div 를 출력하고, $("#quickOrderSummaryBlackDiv, .quickOrderSummaryBlackDiv").slideDown(); // #quickOrderSelectDestFrameDiv 를 히든.. //$("#quickOrderSelectDestFrameDiv").slideUp(); // #quickOrderDestHeadDiv 을 on //$("#quickOrderDestHeadDiv").slideDown(); // HPAuth 블럭을 디스플레이온 $(".quickOrderHpAuthDiv").slideDown(); //$("#quickOrderSelectDestAgainBtnDiv").slideDown(); } // 자동완성 지명 목록 클릭시 익스큐트 되는 콜백 펑션.. // 대상 도착지가 단일할 경우, 온로드에도 익스큐트 되어야 한다. // 대리비 조회도 완료시키고, addCart 까지 완료시켜야 한다. //var destSelectCallBackFunc = "quickOrderProcessFunc"; function quickOrderProcessFunc() { ajaxLoadingScreenOn(); console.log( "대리비 조회도 완료시키고, addCart 까지 완료시켜야 한다." ); var serialized = $("#quickOrderInquiryForm").serialize(); var actioner = $("#quickOrderInquiryForm").attr("action") ; $.getJSON( actioner+"?" + serialized +"&callback=?" , function(jsonObj) { console.log("driveChargeAction ... actioned..."); // OK //$(".searchResultDiv").slideDown(); //swapDisplay( ".inquiryUndoneDiv", ".inquiryDoneDiv" ); // 출력 데이터를 채워준다. fillDriveChargeDigits(jsonObj); jsonSerialized = serializeFirstDimJSON(jsonObj); // 원시 셀 #destSelectCardPrimitiveDiv 를 클론 카피해서 append() 해주고, var appendingCellId = "destCardDiv_"+jsonObj.destPointId; $("#destSelectCardPrimitiveDiv").clone().attr("id", appendingCellId).removeClass("display-none").attr("data-dpId",jsonObj.destPointId).attr("data-geoId",jsonObj.destGeoId).appendTo("#quickOrderDestinationDiv"); // #id 를 부여하고, 출력속성을 바꿔준다. $("#"+appendingCellId).find(".destPointName").text(jsonObj.destPointName); $("#"+appendingCellId).find(".destSelectTrigger").attr("id","destSelectTrigger_"+jsonObj.destPointId); $("#"+appendingCellId).find(".addrString").text(jsonObj.destFullAddr); if( jsonObj.destDoroString !="undefined") $("#"+appendingCellId).find(".doroString").text(jsonObj.destDoroString); /* // 대리바구니담기 액션 ... 바구니 담기 실패시... duplicate 는 무시한다. */ ajaxLoadingScreenOff(); $('html, body').animate({ scrollTop: $("#quickOrderDestInputDiv").offset().top -80 }, 500); }); } function addDrivePointCookie( delDpId ) { var oldCookieVal = getCookie("ODAERI_DPID"); oldCookieVal.replace("%7C","|"); console.log("읽어온 쿠키밸류: " +oldCookieVal); var cArr = oldCookieVal.split("|"); var newDpId = delDpId+"|"; cArr.forEach( function(ea) { console.log("포인트 각각: "+ea); if( ea != delDpId && ea.length>2 ) newDpId += ea+"|"; }); console.log("새로운 쿠키 밸류 : "+newDpId); setCookieValue("ODAERI_DPID", newDpId, 60); } function deleteDrivePointCookie( delDpId ) { var oldCookieVal = getCookie("ODAERI_DPID"); oldCookieVal.replace(/%7C/gi,"|"); console.log("읽어온 쿠키밸류: " +oldCookieVal); var cArr = oldCookieVal.split("|"); var newDpId = ""; cArr.forEach( function(ea) { //console.log("포인트 각각: "+ea); if( ea != delDpId && ea.length>2 ) newDpId += ea+"|"; }); console.log("새로운 쿠키 밸류 : "+newDpId); //setCookie("ODAERI_DPID", newDpId, 60); setCookieValue("ODAERI_DPID", newDpId, 60); console.log( "document.cookie : " + document.cookie ); } /* function deleteDrivePointCookie_( delDpId ) { var cookieStr = document.cookie; var newCookieStr = ""; var cArr = cookieStr.split(";"); cArr.forEach( function(ea) { if( ea.match( /ODAERI_DPID/ ) ) { var cArr2 = ea.split("="); var cArr3 = cArr2[1].split("%7C"); var newDpId = ""; cArr3.forEach( function(ea2) { if( ea2 != delDpId ) newDpId += ea2+"%7C"; }); newCookieStr += newDpId+"; "; } else newCookieStr += ea+"; "; }); console.log("올드쿠키 : "+cookieStr); console.log("뉴쿠키 : "+newCookieStr); // 쿠키를 덮어쓴다. setCookie("ODAERI_DPID", newDpId, 60); } */ // geoActionGateWay() 펑션의 콜백 펑션... 단말기 주소를 읽어오는 펑션이 완료되면, 바로 이어서 호출된다. // 검색 도착지 -- 쿠키 기준은 폐기되었고, 서버 DB.WholeInquiries 에서 firstSesssionId 기준 Inquiries Rows 정보를 받아온다. function getCookieDestinations() { console.log("여기와ㅏㅏㅏㅏㅏ~~~~~"); $.getJSON("/ajax/cookieDestinations.php?callback=?", function(jsonObj) { //console.log("jsonObj.JSON.length......" + jsonObj.JSON.length ); var jsonLength = jsonObj.JSON.length; $.each( jsonObj.JSON, function( ind, eachObj) { //console.log("여기 루프ㅡㅡㅡㅡ"); /* var addDestination = "
"+eachObj.pointName+""+eachObj.addrString+""+eachObj.doroString+"
"; $("#quickOrderDestinationDiv").append(addDestination); */ // #destSelectCardPrimitiveDiv 를 클론 카피해서 append() 해주고, var appendingCellId = "destCardDiv_"+eachObj.pointId; $("#destSelectCardPrimitiveDiv").clone().attr("id", appendingCellId).removeClass("display-none").attr("data-dpId",eachObj.pointId).attr("data-geoId",eachObj.geoId).appendTo("#quickOrderDestinationDiv"); // #id 를 부여하고, 출력속성을 바꿔준다. $("#"+appendingCellId).find(".destPointName").text(eachObj.pointName); $("#"+appendingCellId).find(".destSelectTrigger").attr("id","destSelectTrigger_"+eachObj.pointId); $("#"+appendingCellId).find(".addrString").text(eachObj.addrString); if( eachObj.doroString !="undefined") $("#"+appendingCellId).find(".doroString").text(eachObj.doroString); // 찾아진 목적지가 단일 인 경우, 선택상태로 바꿔주는 펑션을 호출해준다. var paramVal = findGetParameter("mode"); console.log( "파라메터 mode : " +paramVal ); // 검색 도착지가 1개로 유일 할 때.... 해당 도착지를 선택상태로 인콰이어리 결과를 구성해준다. if( jsonLength == 1 ) { // #quickOrderInquiryForm 의 deptPointId,geoId 를 채워준다. makeSingleDestinationSelected( eachObj.pointId ); } }); ajaxLoadingScreenOff(); }); } // 2018-05-15오후 4:47 // 검색도착지가 단일한 경우, 단일 도착지를 선택상태로 바꿔준다. function makeSingleDestinationSelected( pointId ) { console.log(" 펑션 호출됨... makeSingleDestinationSelected() "+pointId ); ajaxLoadingScreenOn(); // 버블 가이드 삭제하고, $(".quickOrderDestCookieSelectDiv > .speech-bubble").remove(); // .parent().attr(id) var destDivId = "destCardDiv_"+pointId; // 초기화..... // 다른 .card-body 접어주고.. //$(".destSelectCardDiv .card-body").slideUp(); //$(".destSelectCardDiv").not("#"+destDivId).slideUp(); // .card-body 디스플레이 //console.log( "이거 속성..... " + $(this).siblings(".card-body").css("display") ); // 비선택 상태의 DIV 를 클릭했을 때... 선택 활성화 프로세스,.,. if( $("#"+destDivId).children(".card-body").css("display") !="block" ) { console.log("카드바디를 디스플레이하자....."); console.log("Vorhandene ID..... #"+destDivId ); console.log("풀어드레스는...... " +$("#"+destDivId).find("p.addrString").text()); $("#"+destDivId).children(".card-body").slideDown(); //$("#loadingPopUpDiv").removeClass("display-none"); // 선택 Div 의 destPointId ... var selectedPointId = $("#"+destDivId).attr("data-dpId"); // 도탁지선택 Div 를 slideUp() 해주고, $("#destGeoId").val( $("#"+destDivId).attr("data-geoId") ); $("#destPointId").val( $("#"+destDivId).attr("data-dpId") ); $("#destFullAddr").val( $("#"+destDivId).find("p.addrString").text() ); // .destFullAddress 출력내용 변경 //$(".destFullAddress").text( $("#"+destDivId).find(".autoSuggestAddress").text() ); var priceRangeStr =""; // 캐쉬를 활용해서 불필요한 서버 쿼리가 남발되지 않도록 방어해준다. // $window.sessionStorage.inquiryJSON[selectedPointId] = jsonObj.stringify(); // var selectedInquiryJSON = JSON.parse($window.sessionStorage.inquiryJSON[selectedPointId]); // 서버에서 받아온 JSON 은 캐쉬해서 서버자원을 경제적으로 사용하도록 하자. 캐쉬 유효기간은 20분... // JSON 서버발행 기준시각 : JSON.issueTime // 캐쉬된 JSON 이 존재하면 캐쉬된 JSON 을 사용하되, 유효시간을 엄격히 적용해준다. sessionStorage.clear(); var selectedJSONStr = sessionStorage.getItem(selectedPointId); var selectedJSON = JSON.parse(selectedJSONStr); //console.log( " 셀렉티드 제이슨은. ........ " + selectedJSONStr ); if( sessionStorage.getItem(selectedPointId) && Number(selectedJSON.issueTime)+1200 > now ) { console.log( "스토리지에 저장된 제이슨이 유효하다..." );//+ sessionStorage.getItem(selectedPointId) fillQuickOrderFromJSON(selectedJSON); } else { // 인콰이어리 form.serialize // 대리비조회 getJSON 을 실행.. var serverPHP = $("#quickOrderInquiryForm").attr("action"); var inquiryFormSerialized = $("#quickOrderInquiryForm").serialize(); console.log("inquiryFormSerialized : "+inquiryFormSerialized); // 서버에 인콰이어리 결과 JSON 을 요청해 받아온 뒤, 폼 요소들에 데이터를 채워준다. $.getJSON( serverPHP+"?"+inquiryFormSerialized+"&callback=?", function(jsonObj) { sessionStorage.setItem(selectedPointId, JSON.stringify(jsonObj) ); fillQuickOrderFromJSON(jsonObj); }); } // 대리요청 Summary 블럭을 구성해준다. } } // 선택된 목적지 ID 를 쿠키에 담고, 출력내용에 쿠키 블럭을 추가해준다. function quickOrderAddDestination(geoId, pointId, insertLIHtml) { //addDrivePointCookie( pointId ); //var addDestination = "
"+insertLIHtml+"
"; //$("#quickOrderDestinationDiv").append(addDestination); }