1function formatDate_(date) { 2 var year = date.getFullYear(); 3 var month = String(date.getMonth() + 1).padStart(2, '0'); 4 var day = String(date.getDate()).padStart(2, '0'); 5 return `${year}${month}${day}`; 6} 7 8function getQueryParams() { 9 const params = {}; 10 const queryString = window.location.search.substring(1); 11 const regex = /([^&=]+)=([^&]*)/g; 12 let match; 13 while (match = regex.exec(queryString)) { 14 params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]); 15 } 16 return params; 17} 18 19 20function location_callback(res, category_num, path, theme_num, iskoreacoupon){ 21 var result = JSON.parse(res); 22 var group = result.location_list.group; 23 var group_html = ``; 24 var area_con = `` 25 var arr_detail_area = []; 26 27 var path = path ? path : '/service/list_l'; 28 29 // Get today's and tomorrow's date 30 var today = new Date(); 31 var tomorrow = new Date(today); 32 tomorrow.setDate(today.getDate() + 1); 33 34 let start_date = formatDate_(today); 35 let end_date = formatDate_(tomorrow); 36 37 var queryParams = getQueryParams(); 38 if (queryParams.startdate) { 39 startDate = queryParams.startdate; 40 } 41 if (queryParams.enddate) { 42 endDate = queryParams.enddate; 43 } 44 45 for(var i=0; i<group.length; i++){ 46 group_html += ` 47 <li> 48 <button type="button" data-id='`+i+`'>`+group[i].area+`</button> 49 </li> 50 `; 51 area_con += ` 52 <div id="tab-`+i+`" class="area_con" style="display: none"> 53 <ul class="erea_list"> 54 `; 55 var detail_area = group[i].child_list.child; 56 var code_list = group[i].code_list.code; 57 var bold_list = group[i].bold_list.bold; 58 59 if(!Array.isArray(detail_area)){ 60 detail_area = [detail_area]; 61 code_list = [code_list]; 62 } 63 64 for(var j=0; j<detail_area.length; j++){ 65 var classes = ""; 66 var icon = ""; 67 if(bold_list[j] == 'T'){ 68 classes = "all_in"; 69 70 } 71 72 var theme_num_param = ''; 73 if(theme_num){ 74 theme_num_param = '&theme='+theme_num; 75 } 76 77 var params = ''; 78 if(iskoreacoupon){ 79 params += '&is_koreacoupon='+iskoreacoupon; 80 } 81 82 var active = ""; 83 if(i == 0){ 84 active = "active"; 85 } 86 87 area_con += ` 88 <li class="`+classes+`"><a href="`+path+`?category_num=`+ category_num + code_list[j] +`&startdate=`+start_date+`&enddate=`+end_date+`&ppnum=2&limit=20`+theme_num_param + params +` ">`+detail_area[j]+`</a></li>`; 89 } 90 area_con += `</ul></div>`; 91 } 92 var html = `<ul class="tab">`+group_html+`</ul>`+ area_con; 93 $(".area_nav .tabs").html(html); 94 $(".area_nav .tabs #tab-0").css("display","block"); 95 $(".area_nav .tabs .tab li").eq(0).addClass("active"); 96 $(".area_nav .tabs .tab button").click(function(){ 97 for(var i=0; i<this.parentNode.parentNode.querySelectorAll('li').length; i++){ 98 this.parentNode.parentNode.querySelectorAll('li')[i].classList.remove("active"); 99 } 100 this.parentNode.classList.add("active"); 101 $(".area_nav .tabs .area_con").css("display","none"); 102 $(".area_nav .tabs #tab-"+this.dataset.id).css("display","block"); 103 }); 104} 105 106function createKakaoMapObj(container){ 107 return { 108 lat: null, 109 lng: null, 110 map: null, 111 data: null, 112 mapContainer: container, 113 markers: [], 114 mapOption: function(opt){ 115 var baseOpt = { 116 center: new kakao.maps.LatLng(this.lat, this.lng), 117 level: 8 118 } 119 return Object.assign({}, baseOpt, opt); 120 }, 121 createMap: function(opt){ 122 return new kakao.maps.Map(this.mapContainer, opt); 123 124 }, 125 initMap: function(lat, lng, opt){ 126 this.lat = lat; 127 this.lng = lng; 128 this.map = this.createMap(this.mapOption(opt)); 129 var mapTypeControl = new kakao.maps.MapTypeControl(); 130 this.map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT); 131 var zoomControl = new kakao.maps.ZoomControl(); 132 this.map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT); 133 // this.fetchItem(); 134 // this.addMarker(this.lat, this.lng); 135 // this.addInfoWindow(this.lat, this.lng); 136 }, 137 makeLatLng: function(lat, lng){ 138 return new kakao.maps.LatLng(lat, lng); 139 }, 140 addMarker: function(lat, lng){ 141 var markerPosition = new kakao.maps.LatLng(lat, lng); 142 var marker = new kakao.maps.Marker({ 143 position: markerPosition 144 }); 145 marker.setMap(this.map); 146 return marker; 147 }, 148 removeMarker: function(marker){ 149 marker.setMap(null); 150 }, 151 fetchItem: async function(){ 152 // var response = await axios.get('/service/add_list'); 153 // console.log(response); 154 }, 155 addInfoWindow: function(lat, lng, data){ 156 var price = data.sale_price ? this.addCommas(data.sale_price) + 'ì ~' : this.addCommas(data.org_price) + 'ì ~'; 157 if(data.stock_yn != 'y'){ 158 price = 'ë¹ì¼ë§ê°'; 159 } 160 var url = this.getDetailUrl(data.p_id); 161 var iwContent = 162 `<div class="infowindowbox" onclick="location.href='`+url+`'"> 163 <div class="ps_name">`+data.ps_name+`</div> 164 <div class="ps_price">`+price+`</div> 165 </div>`; 166 var iwPosition = new kakao.maps.LatLng(lat, lng); 167 var iwRemoveable = false;
168 169 // ì¸í¬ìëì°ë¥¼ ìì±íê³ ì§ëì íìí©ëë¤ 170 var infowindow = new kakao.maps.CustomOverlay({ 171 map: this.map, 172 clickable: true, 173 position : iwPosition, 174 content : iwContent, 175 removable : iwRemoveable, 176 yAnchor: 1.5, 177 }); 178 179 return infowindow; 180 }, 181 addInfoWindow2: function(lat, lng, data){ 182 var url = '/goods/view?no='+data['goods_seq']; 183 var iwContent = 184 `<div class="infowindowbox" onclick="location.href='`+url+`'"> 185 <div class="ps_name">`+data.goods_name+`</div> 186 <div class="ps_price">`+data.tour_address+`</div> 187 </div>`; 188 var iwPosition = new kakao.maps.LatLng(lat, lng); 189 var iwRemoveable = false; 190 191 // ì¸í¬ìëì°ë¥¼ ìì±íê³ ì§ëì íìí©ëë¤ 192 var infowindow = new kakao.maps.CustomOverlay({ 193 map: this.map, 194 clickable: true, 195 position : iwPosition, 196 content : iwContent, 197 removable : iwRemoveable, 198 yAnchor: 1.5, 199 }); 200 201 return infowindow; 202 }, 203 getDetailUrl: function(p_id){ 204 const queryString = window.location.search; 205 const params = new URLSearchParams(queryString); 206 var startDate = params.get('startdate'); 207 var endDate = params.get('enddate'); 208 var ppnum = params.get('ppnum'); 209 return '/service/list_detail?p_id='+p_id+'&startdate='+startDate+'&enddate='+endDate+'&ppnum='+ppnum; 210 }, 211 addCommas: function(number) { 212 // ì«ì를 문ìì´ë¡ ë³íí©ëë¤. 213 let strNumber = String(number); 214 215 // ììì ì´ ìë ê²½ì° ì ìë¶ì ììë¶ë¥¼ ë¶ë¦¬í©ëë¤. 216 let parts = strNumber.split("."); 217 let integerPart = parts[0]; 218 let decimalPart = parts.length > 1 ? "." + parts[1] : ""; 219 220 // 3ì리ë§ë¤ 콤ë§ë¥¼ ì¶ê°í©ëë¤. 221 let pattern = /(\d)(?=(\d{3})+$)/g; 222 integerPart = integerPart.replace(pattern, "$1,"); 223 224 // ì ìë¶ì ììë¶ë¥¼ ê²°í©í ìµì¢ 결과를 ë°íí©ëë¤. 225 return integerPart + decimalPart; 226 }, 227 } 228} 229 230function getSalePercent(price, salePrice){ 231 price = parseFloat(price.replace(/,/g, '')); 232 salePrice = parseFloat(salePrice.replace(/,/g, '')); 233 234 if (isNaN(price) || isNaN(salePrice) || price <= 0 || salePrice <= 0) { 235 return false; 236 } 237 238 const discount = price - salePrice; 239 const percent = (discount / price) * 100; 240 241 return Math.round(percent); 242} 243 244function themeNameToArray(ps_theme_name) { 245 // ë³ìì íì ì´ ë¬¸ìì´ì¸ì§ íì¸ 246 if (typeof ps_theme_name === 'string') { 247 // "|"를 기ì¤ì¼ë¡ 문ìì´ì ë¶ë¦¬íì¬ ë°°ì´ë¡ ë§ëëë¤. 248 let array = ps_theme_name.split('|'); 249 250 // ë°°ì´ì ê° ììì ì ì©í í¨ì를 ì ìí©ëë¤. 251 function trimElement(element) { 252 return element.trim(); 253 } 254 255 // ë°°ì´ì 모ë ììì trimElement í¨ì를 ì ì©íì¬ ë¬¸ìì´ ì쪽ì 공백ì ì ê±°í©ëë¤. 256 array = array.map(trimElement); 257 258 // ë¹ ë¬¸ìì´ì ì ê±°íì¬ ì 리ë ë°°ì´ì ë°íí©ëë¤. 259 return array.filter(element => element !== ""); 260 } else { 261 // 문ìì´ì´ ìë ê²½ì°ìë ë¹ ë°°ì´ì ë°ííê±°ë ë¤ë¥¸ ì²ë¦¬ë¥¼ ìíí ì ììµëë¤. 262 return []; 263 } 264} 265 266function printPsThemeName(ps_theme_name, max) { 267 const themeArray = this.themeNameToArray(ps_theme_name); 268 269 if (themeArray.length <= max) { 270 return themeArray.join(', '); 271 } else { 272 var maxThemeArray = themeArray.slice(0, max); 273 var extraCount = themeArray.length - max; 274 return maxThemeArray.join(', ') + '...'; 275 } 276} 277 278function removeLastCharacterIfEndsWith(str, ending) { 279 const endingLength = ending.length; 280 281 if (str === "" || str.slice(-endingLength) !== ending) { 282 return str; 283 } else { 284 return str.slice(0, -endingLength); 285 } 286} 287 288function getCurrentDateTime() { 289 var now = new Date(); 290 var year = now.getFullYear(); 291 var month = String(now.getMonth() + 1).padStart(2, '0'); 292 var day = String(now.getDate()).padStart(2, '0'); 293 var hours = String(now.getHours()).padStart(2, '0'); 294 var minutes = String(now.getMinutes()).padStart(2, '0'); 295 var seconds = String(now.getSeconds()).padStart(2, '0'); 296 297 var formattedDateTime = year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+seconds; 298 return formattedDateTime; 299} 300 301$(document).ready(function(){ 302 303 $("html").on("click", ".btn-location", function(){ 304 event.preventDefault(); 305 pushState("location"); 306 $(".area_nav .tabs").html(''); 307 $(".link_area").trigger('click'); 308 309 // if ($(".link_area").hasClass("show")) { 310 // $(".link_area, .area_popup, .layer_popup_bg06, .area_popup .btn_close").removeClass('show'); 311 // } else { 312 // $(".link_area, .area_popup, .layer_popup_bg06, .area_popup .btn_close").addClass('show'); 313 // $("#layout_side").html(); 314 // } 315 316 317 var category_num = $(this).data("categorynum") ? $(this).data("categorynum") : 0; 318 var theme_num = $(this).data("theme") ? $(this).data("theme") : 0; 319 var iskoreacoupon = $(this).data("iskoreacoupon") ? $(this).data("iskoreacoupon") : null; 320 321 $.ajax({ 322 type : "POST", // HTTP method type(GET, POST) íìì´ë¤. 323 url : "/service/location_list_", // 컨í¸ë¡¤ë¬ìì ë기ì¤ì¸ URL 주ìì´ë¤. 324 data : { 325 category_num : $(this).data("categorynum") ? $(this).data("categorynum") : 0, 326 }, 327 success : function(res){ 328 location_callback(res, category_num, null, theme_num, iskoreacoupon); 329 loadingStop($("#ajaxLoadingLayer")); 330 }, 331 error : function(XMLHttpRequest, textStatus, errorThrown){ // ë¹ë기 íµì ì´ ì¤í¨í ê²½ì° error ì½ë°±ì¼ë¡ ë¤ì´ìµëë¤. 332 alert("ì§ìì 보를 ë¶ë¬ì¬ ì ììµëë¤. ê´ë¦¬ì
332ìê² ë¬¸ì íì¸ì"); 333 } 334 }); 335 }); 336}); 337 338function pushState(title) { 339 // íì ìí ë³ê²½ 340 history.pushState({ title: title }, title, '#'+title); 341} 342 343function closeAllModal(){ 344 $(".layer_popup").removeClass("show"); 345 $(".layer_popup02").removeClass("show"); 346 $(".layer_popup_bg").removeClass("show"); 347 $(".link_area, .area_popup, .layer_popup_bg06, .area_popup .btn_close").removeClass('show'); 348 $(".btn_roomInfo, .room_guide, .layer_popup_bg05, .room_guide .close_popup").removeClass('show'); 349 $("button.filter_term, .calender_wrapper, .layer_popup_bg04, .calender_wrapper .close_popup").removeClass('show'); 350 $(".filter_num, .search_num_wrapper, .layer_popup_bg03, .search_num_wrapper .close_popup, .search_num_wrapper .oneul_btn").removeClass('show'); 351 $(".common_history, .latest_search, .layer_popup_bg02, .latest_search .close_popup").removeClass('show'); 352 $(".button_search, .search_wrapper, .layer_popup_bg01, .search_wrapper .close_popup").removeClass('show'); 353 354 if($("#side_close").hasClass('on')){ 355 //$("#side_close").trigger('click'); 356 side_menu_onoff(); 357 } 358 359 if($(".gallery_wrapper").hasClass("show")){ 360 $(".gallery_wrapper .btn_close").trigger('click'); 361 } 362 363 $("#room_filter_box").removeClass("open"); 364 $(".list_l").removeClass("filter_open"); 365 $(".list_l2").removeClass("filter_open"); 366} 367 368window.addEventListener('popstate', function(event) { 369 console.log("closeAllModal"); 370 closeAllModal(); 371 if(Swal !== undefined){ 372 Swal.close(); 373 } 374});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.