1'use strict'; 2/*globals ACC, google */ 3ACC.storefinder = { 4 5 _autoload: [ 6 ["init", $(".js-store-finder").length !== 0], 7 ["bindStoreChange", $(".js-store-finder").length !== 0 && ACC.config.themName !== 'novelec'], 8 ["bindStoreChangeNovelec", $(".js-store-finder").length !== 0 && ACC.config.themName === 'novelec'], 9 ["bindSearch", $(".js-store-finder").length !== 0], 10 "bindPagination", 11 ["novelecGroupPageStorefinder", $(".js-novelec-group-page-storefinder").length !== 0], 12 ["novelecStoreListPageStorefinder", $(".js-novelec-store-list-page-storefinder").length !== 0], 13 "columnWidth" 14 15 16 ], 17 storeData:"", 18 storeId:"", 19 coords:{}, 20 storeSearchData:{}, 21 22 createListItemHtml: function (data,id){ 23 24 var item=""; 25 26 if(ACC.config.themName !== 'novelec'){ 27 item+='<li class="list__entry">'; 28 item+='<input type="radio" name="storeNamePost" value="'+data.displayName+'" id="store-filder-entry-'+id+'" class="js-store-finder-input" data-id="'+id+'">'; 29 item+='<label for="store-filder-entry-'+id+'" class="js-select-store-label">'; 30 item+='<span class="entry__info">'; 31 item+='<span class="entry__name">'+data.displayName.split("-")[0] +'</span>'; 32 item+='<span class="entry__address">'+data.line1+' '+data.line2+'</span>'; 33 item+='<span class="entry__city">'+data.town+'</span>'; 34 item+='</span>'; 35 item+='<span class="entry__distance">'; 36 item+='<span>'+data.formattedDistance+'</span>'; 37 item+='</span>'; 38 item+='</label>'; 39 item+='</li>'; 40 }else { 41 item+='<li class="list__entry">'; 42 item+='<input type="radio" name="storeNamePost" value="'+data.displayName+'" id="store-filder-entry-'+id+'" class="js-store-finder-input" data-id="'+id+'">'; 43 item+='<label for="store-filder-entry-'+id+'" class="js-select-store-label">'; 44 item+='<span class="entry__info">'; 45 item+='<span class="entry__name">'+data.displayName.split("-")[0] +'</span>'; 46 item+='<span class="entry__city">'+data.town+'</span>'; 47 item+='<span class="entry__address">'+data.line1+' '+data.line2+'</span>'; 48 item+='</span>'; 49 item+='<span class="entry__distance">'; 50 item+='<span>'+data.formattedDistance+'</span>'; 51 item+='</span>'; 52 item+='</label>'; 53 item+='</li>'; 54 } 55 56 return item; 57 }, 58 59 refreshNavigation: function (){ 60 var listitems = ""; 61 var data = ACC.storefinder.storeData; 62 63 if(data){ 64 for(var i = 0;i < data["data"].length;i++){ 65 listitems += ACC.storefinder.createListItemHtml(data["data"][i],i); 66 } 67 68 $(".js-store-finder-navigation-list").html(listitems); 69 70 // select the first store 71 var firstInput= $(".js-store-finder-input")[0]; 72 $(firstInput).click(); 73 } 74 75 76 var page = ACC.storefinder.storeSearchData.page; 77 $(".js-store-finder-pager-item-from").html(page*10+1); 78 79 var to = ((page*10+10)>ACC.storefinder.storeData.total)? ACC.storefinder.storeData.total : page*10+10 ; 80 $(".js-store-finder-pager-item-to").html(to); 81 $(".js-store-finder-pager-item-all").html(ACC.storefinder.storeData.total); 82 $(".js-store-finder").removeClass("show-store"); 83 84 }, 85 86 87 bindPagination:function () 88 { 89 90 91 92 $(document).on("click",".js-store-finder-details-back",function(e){ 93 e.preventDefault(); 94 95 $(".js-store-finder").removeClass("show-store"); 96 97 }); 98 99 100 101 102 $(document).on("click",".js-store-finder-pager-prev",function(e){ 103 e.preventDefault(); 104 var page = ACC.storefinder.storeSearchData.page; 105 ACC.storefinder.getStoreData(page-1); 106 checkStatus(page-1); 107 }); 108 109 $(document).on("click",".js-store-finder-pager-next",function(e){ 110 e.preventDefault(); 111 var page = ACC.storefinder.storeSearchData.page; 112 ACC.storefinder.getStoreData(page+1); 113 checkStatus(page+1); 114 }); 115 116 function checkStatus(page){ 117 if(page===0){ 118 $(".js-store-finder-pager-prev").attr("disabled","disabled"); 119 }else{ 120 $(".js-store-finder-pager-prev").removeAttr("disabled"); 121 } 122 123 if(page == Math.floor(ACC.storefinder.storeData.total/10)){ 124 $(".js-store-finder-pager-next").attr("disabled","disabled"); 125 }else{ 126 $(".js-store-finder-pager-next").removeAttr("disabled"); 127 } 128 } 129 130 }, 131 132 133 bindStoreChange:function() 134 { 135 $(document).on("change",".js-store-finder-input",function(e){ 136 e.preventDefault(); 137 138 var storeData=ACC.storefinder.storeData["data"]; 139 140 var storeId=$(this).data("id"); 141 142 var $ele = $(".js-store-finder-details"); 143 144 var $openele = $ele.find(".js-store-openings"); 145 $openele.html(''); 146 147 $.each(storeData[storeId],function(key,value){ 148 if(key=="image"){ 149 if(value!==""){ 150 $ele.find(".js-store-image").html('<img src="'+value+'" alt="" />'); 151 }else{ 152 $ele.find(".js-store-image").html(''); 153 } 154 }else if(key=="image1" && value!==""){ 155 $ele.find(".js-store-image").append('<img class="secondStoreFinderImg" src="'+value+'" alt="" />'); 156 }else if(key=="productcode"){ 157 $ele.find(".js-store-productcode").val(value); 158 }else if(key=="openings"){ 159 if(value!==""){
160 var $oele = $ele.find(".js-store-"+key); 161 var openings = ""; 162 $.each(value,function(key2,value2){ 163 openings += "<dt>"+key2+"</dt>"; 164 openings += "<dd>"+value2+"</dd>"; 165 }); 166 167 $oele.html(openings); 168 169 }else{ 170 var $oele = $ele.find(".js-store-"+key); 171 $oele.html(''); 172 } 173 174 } 175 else if(key=="festivos"){ 176 if(value!==""){ 177 var $oele = $ele.find(".js-store-"+key); 178 var festivos = value; 179 $oele.html(festivos); 180 181 }else{ 182 var $oele = $ele.find(".js-store-"+key); 183 $oele.html(''); 184 } 185 186 } 187 else if(key=="specialOpenings"){} 188 else if(key=="features"){ 189 var features=""; 190 $.each(value,function(key2,value2){ 191 features += "<li>"+value2+"</li>"; 192 }); 193 194 $ele.find(".js-store-"+key).html(features); 195 196 } 197 else{ 198 if(value!==""){ 199 $ele.find(".js-store-"+key).html(value); 200 }else{ 201 $ele.find(".js-store-"+key).html(''); 202 } 203 } 204 205 }); 206 207 208 ACC.storefinder.storeId = storeData[storeId]; 209 ACC.storefinder.initGoogleMap(); 210 211 }); 212 213 $(document).on("click",".js-select-store-label",function(){ 214 $(".js-store-finder").addClass("show-store"); 215 }); 216 217 $(document).on("click",".js-back-to-storelist",function(){ 218 $(".js-store-finder").removeClass("show-store"); 219 }); 220 221 }, 222 223 224 225 initGoogleMap:function(){ 226 227 if($(".js-store-finder-map").length > 0){ 228 ACC.global.addGoogleMapsApi("ACC.storefinder.loadGoogleMap"); 229 } 230 }, 231 232 loadGoogleMap: function(){ 233 234 var storeInformation = ACC.storefinder.storeId; 235 236 if($(".js-store-finder-map").length > 0) 237 { 238 $(".js-store-finder-map").attr("id","store-finder-map"); 239 var centerPoint = new google.maps.LatLng(storeInformation["latitude"], storeInformation["longitude"]); 240 241 var mapOptions = { 242 zoom: 14, 243 zoomControl: true, 244 panControl: true, 245 streetViewControl: false, 246 mapTypeId: google.maps.MapTypeId.ROADMAP, 247 center: centerPoint 248 }; 249 250 var map = new google.maps.Map(document.getElementById("store-finder-map"), mapOptions); 251 252 var marker = new google.maps.Marker({ 253 position: new google.maps.LatLng(storeInformation["latitude"], storeInformation["longitude"]), 254 map: map, 255 title: storeInformation["name"], 256 icon: "https://maps.google.com/mapfiles/marker" + 'A' + ".png" 257 }); 258 259 if(ACC.config.themName === 'novelec'){ 260 marker.icon = ACC.config.themeResourcePath + '/images/map-marker.png'; 261 } 262 263 var infowindow = new google.maps.InfoWindow({ 264 content: storeInformation["name"], 265 disableAutoPan: true 266 }); 267 google.maps.event.addListener(marker, 'click', function (){ 268 infowindow.open(map, marker); 269 }); 270 } 271 272 }, 273 274 275 bindSearch:function(){ 276 277 $(document).on("submit",'#storeFinderForm', function(e){ 278 e.preventDefault(); 279 var q = $(".js-store-finder-search-input").val(); 280 281 if(q.length>0){ 282 ACC.storefinder.getInitStoreData(q); 283 }else{ 284 if($(".js-storefinder-alert").length<1){ 285 var emptySearchMessage = $(".btn-primary").data("searchEmpty"); 286 emptySearchMessage = 'Verifique que haya ingresado un código postal o nombre de lugar válido.'; 287 $(".js-store-finder").hide(); 288 $("#storeFinder").before('<div class="js-storefinder-alert alert alert-danger alert-dismissable" ><button class="close" type="button" data-dismiss="alert" aria-hidden="true">Ã</button>' + emptySearchMessage + '</div>'); 289 } 290 } 291 }); 292 293 294 $(".js-store-finder").hide(); 295 $(document).on("click",'#findStoresNearMe', function(e){ 296 e.preventDefault(); 297 ACC.storefinder.getInitStoreData(null,ACC.storefinder.coords.latitude,ACC.storefinder.coords.longitude); 298 }); 299 300 301 }, 302 303 304 getStoreData: function(page){ 305 ACC.storefinder.storeSearchData.page = page; 306 var url= $(".js-store-finder").data("url"); 307 $.ajax({ 308 url: url, 309 data: ACC.storefinder.storeSearchData, 310 type: "get", 311 success: function (response){ 312 if (response.includes('<!DOCTYPE html>')) { 313 $(".store__finder--navigation-list, .store__finder--pagination").hide(); 314 $('.store__finder--panel .store__finder--navigation').append('<div class="noResults"><p>No se encontraron resultados para esta búsqueda</p></div>'); 315 316 }else{ 317 $(".store__finder--navigation-list, .store__finder--pagination").show(); 318 if($('.noResults').length > 0){ 319 $('.noResults').remove(); 320 } 321 ACC.storefinder.storeData = $.parseJSON(response); 322 ACC.storefinder.refreshNavigation(); 323 if(ACC.storefinder.storeData.total < 10){ 324 $(".js-store-finder-pager-next").attr("disabled","disabled"); 325 } 326 } 327 } 328 }); 329 }, 330 331 getInitStoreData: function(q,latitude,longitude){ 332 $(".alert").remove(); 333 var data ={ 334 "q":"" , 335 "page":0 336 }; 337 if(q !== null){ 338 data.q = q; 339 } 340 341 if(latitude !== null){ 342 data.latitude = latitude; 343 } 344 345 if(longitude !== null){ 346 data.longitude = longitude; 347 } 348 349 ACC.storefinder.storeSearchData = data; 350 ACC.storefinder.getStoreData(data.page); 351 $(".js-store-finder").show(); 352 $(".js-store-finder-pager-prev").attr("disabled","disabled"); 353 $(".js-store-finder-pager-next").removeAttr("disabled"); 354 }, 355 356 init:function(){ 357 $("#findStoresNearMe").attr("disabled","disabled"); 358 if(navigator.geolocation){ 359 navigator.geolocation.getCurrentPosition( 360 function (position){ 361 ACC.storefinder.coords = position.coords; 362 $('#findStoresNearMe').removeAttr("disabled"); 363 }, 364 function (error) 365 { 366 console.log("An error occurred... The error code and message are: " + error.code + "/"
366+ error.message); 367 } 368 ); 369 } 370 }, 371 372 bindStoreChangeNovelec:function() 373 { 374 375 $(document).on("change",".js-store-finder-input",function(e){ 376 e.preventDefault(); 377 378 var storeData=ACC.storefinder.storeData["data"]; 379 380 var storeId=$(this).data("id"); 381 382 var $ele = $(".js-store-finder-details").not('.js-store-finder-details--cloned'); 383 384 var $openele = $ele.find(".js-store-openings"); 385 $openele.html(''); 386 387 $.each(storeData[storeId],function(key,value){ 388 if(key=="image"){ 389 if(value!==""){ 390 $ele.find(".js-store-image").html('<img src="'+value+'" alt="" />'); 391 }else{ 392 $ele.find(".js-store-image").html(''); 393 } 394 }else if(key=="image1" && value!==""){ 395 $ele.find(".js-store-image").append('<img class="secondStoreFinderImg" src="'+value+'" alt="" />'); 396 }else if(key=="productcode"){ 397 $ele.find(".js-store-productcode").val(value); 398 } 399 else if(key=="displayName"){ 400 $ele.find(".js-store-"+key).html(value.split("-")[0]); 401 } 402 else if(key=="openings"){ 403 if(value!==""){ 404 var $oele = $ele.find(".js-store-"+key); 405 var openings = ""; 406 $.each(value,function(key2,value2){ 407 openings += "<dt>"+key2+"</dt>"; 408 openings += "<dd>"+value2+"</dd>"; 409 }); 410 411 $oele.html(openings); 412 413 }else{ 414 var $oele = $ele.find(".js-store-"+key); 415 $oele.html(''); 416 } 417 418 } 419 else if(key=="festivos"){ 420 if(value!==""){ 421 var $oele = $ele.find(".js-store-"+key); 422 var festivos = value; 423 424 $oele.html(festivos); 425 426 }else{ 427 var $oele = $ele.find(".js-store-"+key); 428 $oele.html(''); 429 } 430 } 431 else if (key=="ggMUrl") { 432 if (value!==""){ 433 $ele.find(".js-novelec-store-list-page-storefinder__url").attr('href', value); 434 console.log(value); 435 436 } else { 437 $ele.find(".js-novelec-store-list-page-storefinder__url").attr('href',''); 438 } 439 } 440 else if (key=="url_detail") { 441 if (value!==""){ 442 $ele.find(".js-novelec-store-list-page-storefinder__url_detail").attr('href', value); 443 console.log(value); 444 445 } else { 446 $ele.find(".js-novelec-store-list-page-storefinder__url_detail").attr('href',''); 447 } 448 } 449 else if(key=="specialOpenings"){} 450 else if(key=="features"){ 451 var features=""; 452 $.each(value,function(key2,value2){ 453 features += "<li>"+value2+"</li>"; 454 }); 455 456 $ele.find(".js-store-"+key).html(features); 457 458 }else if (key=="selfService") { 459 if(value){ 460 $ele.find(".js-store-" + key).show(); 461 }else{ 462 $ele.find(".js-store-" + key).hide(); 463 } 464 }else if (key=="genericInfo") { 465 if(value !== ""){ 466 $ele.find(".js-store-"+key).html(value); 467 $ele.find(".glyphicon-info-sign").show(); 468 $ele.find(".js-store-"+key).show(); 469 }else{ 470 $ele.find(".js-store-"+key).hide(); 471 $ele.find(".glyphicon-info-sign").hide(); 472 } 473 }else if(key=="mail"){ 474 if(value!==""){ 475 $ele.find(".js-store-"+key).attr('href', "mailto:"+value); 476 $ele.find(".js-store-"+key).attr('title', value); 477 $ele.find(".js-store-"+key).text(value); 478 $ele.find(".js-store-"+key).show(); 479 $ele.find(".glyphicon-envelope").show(); 480 }else{ 481 $ele.find(".js-store-"+key).hide(); 482 $ele.find(".glyphicon-envelope").hide(); 483 } 484 }else if(key=="phone"){ 485 if(value!==""){ 486 $ele.find(".js-store-"+key).attr('href', "tel:"+value.replace("Telf: ","")); 487 $ele.find(".js-store-"+key).attr('title', value); 488 $ele.find(".js-store-"+key).text(value); 489 $ele.find(".js-store-"+key).show(); 490 $ele.find(".glyphicon-earphone").show(); 491 }else{ 492 $ele.find(".js-store-"+key).hide(); 493 $ele.find(".glyphicon-earphone").hide(); 494 } 495 } 496 else{ 497 if(value!==""){ 498 $ele.find(".js-store-"+key).html(value); 499 } 500 else{ 501 $ele.find(".js-store-"+key).html(''); 502 } 503 } 504 }); 505 506 $('.js-store-finder-details--cloned').remove(); 507 508 if($(window).width() < 1024){ 509 $(this).parent().append($ele.clone().addClass('js-store-finder-details--cloned')); 510 } 511 512 513 514 ACC.storefinder.storeId = storeData[storeId]; 515 ACC.storefinder.initGoogleMap(); 516 517 }); 518 519 $(document).on("click",".js-select-store-label",function(){ 520 $(".js-store-finder").addClass("show-store"); 521 }); 522 523 $(document).on("click",".js-back-to-storelist",function(){ 524 $(".js-store-finder").removeClass("show-store"); 525 }); 526 527 }, 528 529 novelecGroupPageStorefinder:function(){ 530 var getPosition = function (options) { 531 return new Promise(function (resolve, reject) { 532 navigator.geolocation.getCurrentPosition(resolve, reject, options); 533 }); 534 }; 535 536 var getStores = function(position) { 537 var url= $(".js-novelec-group-page-storefinder").data("url"); 538 return $.ajax({ 539 url: url, 540 data: { 541 q : '', 542 show: 'All', 543 short: 'asc', 544 latitude : position.coords.latitude, 545 longitude : position.coords.longitude 546 }, 547 type: "get" 548 }); 549 }; 550 getPosition() 551 .then(function(position){ 552 getStores(position) 553 .then(function(response){ 554 ACC.storefinder.storeList = $.parseJSON(response); 555 ACC.global.addGoogleMapsApi("ACC.storefinder.novelecGroupPageStorefinderInitMap"); 556 }); 557 }) 558 .catch(function(err){ 559 var position = { 560 coords : { 561 latitude: 0, 562 longitude: 0 563 } 564 }; 565 getStores(position) 566 .then(function(response){ 567 ACC.storefinder.storeList = $.parseJSON(response); 568 ACC.global.addGoogleMapsApi("ACC.storefinder.novelecGroupPageStorefinderInitMap"); 569 }); 570 console.error(err.message); 571 572 //$(".js-store-finder-map").append($('div').text('Por favor')) 573 }); 574 575 576 }, 577 novelecGroupPageStorefinderInitMap : function(){ 578 var $container = $('.js-novelec-group-page-storefinder'); 579 $(".js-store-finder-map").attr("id","store-finder-map"); 580 var map; 581 var storeSearchData = ACC.storefinder.storeList.data; 582 var centerPoint = new google.maps.LatLng(storeSearchData[0].latitude, storeSearchData[0].longitude); 583 var mapOptions = { 584 zoom: 14, 585 zoomControl: true, 586 mapTypeControl: false, 587 scaleControl: false, 588 streetViewControl: false, 589 rotateControl: false, 590 fullscreenControl: false, 591 mapTypeId: google.maps.MapTypeId.ROADMAP, 592 center: centerPoint 593 }; 594 595 var $selectStore = $('.js-novelec-group-page-storefinder__select'); 596 $selectStore.on('change',function(){ 597 var shop = storeSearchData[this.value]; 598 var latLng = new google.maps.LatLng(shop.latitude, shop.longitude); 599 marker.setPosition( latLng ); 600 map.panTo( latLng ); 601 buildDetail(shop); 602 }); 603 map = new google.maps.Map(document.getElementById("store-finder-map"), mapOptions); 604 605 var marker = new google.maps.Marker({ 606 map: map, 607 position: centerPoint, 608 icon: ACC.config.themeResourcePath + '/images/map-marker.png' 609 }); 610 611 $selectStore.html(''); 612 storeSearchData.forEach(function(element, index) { 613 // LL000534012-111 614 //$selectStore.append($("<option>").attr('value',index).attr('selected', index === 0).text(element.displayName ? element.displayName : element.name)); 615 var aux = element.displayName ? element.displayName.split("-")[0] : element.name; 616 var aux2 = aux.replace("'","'"); 617 618 $selectStore.append($("<option>").attr('value',index).attr('selected', index === 0).text(aux2)); 619 }); 620 $selectStore.prop('disabled', false); 621 buildDetail(storeSearchData[0]); 622 623 function buildDetail(shop){ 624 $.each(shop, function(i, val) { 625 626 console.log(i, val); 627 var itemClass = '.js-novelec-group-page-storefinder__'+i; 628 var $element = $container.find(itemClass); 629 $element.find(".js-store-openings").html(''); 630 if (i == 'image') 631 { 632 var $img = $element.find('img'); 633 if($img.length !== 0){ 634 $img.attr('src', shop.image); 635 }else { 636 $element.append($("<img>").attr('src', shop.image)); 637 } 638 }else if(i=="image1" && val!==""){ 639 var $img = $element.find('img'); 640 if($img.length !== 0){ 641 $img.attr('src', val); 642 }else { 643 $element.append('<img src="'+val+'" alt="" />'); 644 } 645 } else if (i == 'url'){ 646 $element.attr('href', shop.ggMUrl); 647 }else if (i == 'url_detail'){ 648 $element.attr('href', shop.url_detail); 649 }else if (i == 'displayName'){ 650 $element.html(val.split("-")[0]); 651 } else if (i == 'openings'){ 652 if(val!==""){ 653 var $subelement = $element.find(".js-store-"+i); 654 var openings = ""; 655 $.each(val,function(key2,value2){ 656 openings += "<dt>"+key2+"</dt>"; 657 openings += "<dd>"+value2+"</dd>"; 658 }); 659 $subelement.html(openings); 660 661 }else{ 662 var $subelement = $element.find(".js-store-"+i); 663 $subelement.html(''); 664 } 665 666 }else if (i == 'festivos'){ 667 if(val!==""){ 668 var $subelement = $element.find(".js-store-"+i); 669 var festivos = val; 670 $subelement.html(festivos); 671 }else{ 672 var $subelement = $element.find(".js-store-"+i); 673 $subelement.html(''); 674 } 675 }else if (i == "selfService") { 676 if(val){ 677 $container.find(".js-store-"+i).show(); 678 }else{ 679 $container.find(".js-store-"+i).hide(); 680 } 681 }else if (i == "genericInfo") { 682 if(val !== ""){ 683 $element.text(val); 684 $container.find(".glyphicon-info-sign").show(); 685 $container.find(".js-store-"+i).show(); 686 }else{ 687 $container.find(".js-store-"+i).hide(); 688 } 689 }else if(i=="mail"){ 690 if(val!==""){ 691 $element.attr('href', "mailto:"+val); 692 $element.attr('title', val); 693 $element.text(val); 694 $container.find(".glyphicon-envelope").show(); 695 $element.show(); 696 }else{ 697 $element.hide(); 698 $container.find(".glyphicon-envelope").hide(); 699 } 700 }else if(i=="phone"){ 701 if(val!==""){ 702 $element.attr('href', "tel:"+val.replace("Telf: "),""); 703 $element.attr('title', val); 704 $element.text(val); 705 $element.show(); 706 $container.find(".glyphicon-earphone").show(); 707 }else{ 708 $element.hide(); 709 $container.find(".glyphicon-earphone").hide(); 710 } 711 }else { 712 // LL000534012-111 713 //$element.text(val); 714 var aux = val.replace("'","'"); 715 $element.text(aux); 716 } 717 }); 718 } 719 720 }, 721 novelecStoreListPageStorefinder:function(){ 722 var getPosition = function (options) { 723 return new Promise(function (resolve, reject) { 724 navigator.geolocation.getCurrentPosition(resolve, reject, options); 725 }); 726 }; 727 728 var getStores = function(position) { 729 var url= $(".js-novelec-store-list-page-storefinder").data("url"); 730 return $.ajax({ 731 url: url, 732 data: { 733 q : '', 734 show: 'All', 735 short: 'asc', 736 latitude : position.coords.latitude, 737 longitude : position.coords.longitude 738 }, 739 type: "get" 740 }); 741 }; 742 getPosition() 743 .then(function(position){ 744 getStores(position) 745 .then(function(response){ 746 ACC.storefinder.storeList = $.parseJSON(response); 747 ACC.global.addGoogleMapsApi("ACC.storefinder.novelecStoreListPageStorefinderInitMap"); 748 }); 749 }) 750 .catch(function(err){ 751 var position = { 752 coords : { 753 latitude: 0, 754 longitude: 0 755 } 756 }; 757 getStores(position) 758 .then(function(response){ 759 ACC.storefinder.storeList = $.parseJSON(response); 760 ACC.global.addGoogleMapsApi("ACC.storefinder.novelecStoreListPageStorefinderInitMap"); 761 }); 762 console.error(err.message); 763 764 //$(".js-store-finder-map").append($('div').text('Por favor')) 765 }); 766 767 }, 768 novelecStoreListPageStorefinderInitMap : function(){ 769 var $container = $('.js-novelec-store-list-page-storefinder'); 770 $(".js-store-finder-map").attr("id","store-finder-map"); 771 var map; 772 var storeSearchData = ACC.storefinder.storeList.data; 773 var centerPoint = new google.maps.LatLng(storeSearchData[0].latitude, storeSearchData[0].longitude); 774 var mapOptions = { 775 zoom: 14, 776 zoomControl: true, 777 mapTypeControl: false, 778 scaleControl: false, 779 streetViewControl: false, 780 rotateControl: false, 781 fullscreenControl: false, 782 mapTypeId: google.maps.MapTypeId.ROADMAP, 783 center: centerPoint 784 }; 785 786 var $inputStore = $('.js-select-store-input'); 787 $inputStore.on('change',function(){ 788 var shop = storeSearchData[this.value]; 789 var latLng = new google.maps.LatLng(shop.latitude, shop.longitude); 790 marker.setPosition( latLng ); 791 map.panTo( latLng ); 792 buildDetail(shop); 793 }); 794 795 map = new google.maps.Map(document.getElementById("store-finder-map"), mapOptions); 796 797 var marker = new google.maps.Marker({ 798 map: map, 799 position: centerPoint, 800 icon: ACC.config.themeResourcePath + '/images/map-marker.png' 801 }); 802 803 buildDetail(storeSearchData[0]); 804 805 function buildDetail(shop){ 806 $.each(shop, function(i, val) { 807 console.log(i, val); 808 var itemClass = '.js-novelec-store-list-page-storefinder__'+i; 809 var $element = $container.find(itemClass); 810 $element.find(".js-store-openings").html(''); 811 if (i == 'image') 812 { 813 var $img = $element.find('img'); 814 if($img.length !== 0){ 815 $img.attr('src', shop.image); 816 }else { 817 $element.append($("<img>").attr('src', shop.image)); 818 } 819 }else if(i=="image1" && val!==""){ 820 $element.append('<img src="'+val+'" alt="" />'); 821 } else if (i == 'url'){ 822 $element.attr('href', shop.ggMUrl); 823 } else if (i == 'url_detail'){ 824 $element.attr('href', shop.url_detail); 825 } else if (i == 'openings'){ 826 if(val!==""){ 827 var $subelement = $element.find(".js-store-"+i); 828 var openings = ""; 829 $.each(val,function(key2,value2){ 830 openings += "<dt>"+key2+"</dt>"; 831 openings += "<dd>"+value2+"</dd>"; 832 }); 833 $subelement.html(openings); 834 835 }else{ 836 var $subelement = $element.find(".js-store-"+i); 837 $subelement.html(''); 838 } 839 840 }else if(i=="festivos"){ 841 if(val!==""){ 842 var $subelement = $element.find(".js-store-"+i); 843 844 var festivos = val; 845 846 $subelement.html(festivos); 847 }else{ 848 var $subelement = $element.find(".js-store-"+i); 849 $subelement.html(''); 850 } 851 852 }else if(i=="mail"){ 853 if(val!==""){ 854 $element.attr('href', "mailto:"+val); 855 $element.attr('title', val); 856 $element.text(val); 857 $container.find(".glyphicon-envelope").show(); 858 $element.show(); 859 }else{ 860 $element.hide(); 861 $container.find(".glyphicon-envelope").hide(); 862 } 863 }else if(i=="phone"){ 864 if(val!==""){ 865 $element.attr('href', "tel:"+val.replace("Telf: ","")); 866 $element.attr('title', val); 867 $element.text(val); 868 $container.find(".glyphicon-earphone").show(); 869 $element.show(); 870 }else{ 871 $element.hide(); 872 $container.find(".glyphicon-earphone").hide(); 873 } 874 } else { 875 // LL000534012-111 876 //$element.text(val); 877 if (typeof val === 'string'){ 878 var aux = val.replace("'","'"); 879 $element.text(aux); 880 } 881 } 882 }); 883 } 884 885 }, 886 887 columnWidth: function () { 888 if (jQuery('.stores-list').children('li').length > 100){ 889 jQuery('.stores-list').css('column-width', '300px'); 890 } 891 } 892};
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.