var $fn = { sanitizeInput : (str)=>{ if(!str) { return ''; } return str.replace(/[&<>"']/g,(match)=>{ const escapeMap = {'&':'&','<':'<','>':'>','"':'"',"'":'''}; return escapeMap[match]; }); }, sanitize : (str)=>{ if(!str) { return ''; } const parse = new DOMParser(); const doc = parse.parseFromString(str, 'text/html'); return doc.body.textContent || ""; }, createComponent : (element, attr) => { let component = document.createElement(tag); for(i in attr){ switch(i){ case 'childTXT': component.appendChild(document.createTextNode(attr[i])); break; case 'childDOM': component.appendChild(attr[i]); break; case 'childHTML': component.innerHTML=attr[i]; break; default: component.setAttribute(i, attr[i]); break } } return component; }, concatText : (arr,separator) => { let text = ''; for(let i in arr ){ let id = arr[i].replace(/ /g, ''); text += id+(i{ if(!services){ return null; } let _service = services; return { get: (key)=>{ return _service[key]; }, set: (key,val)=>{ _service[key]=val; } } } }; // Declaracion de Variables auxiliares var provDefault = 'ProvinciadeBuenosAires'; var provinciaActual = provinciaMapping[provDefault.toLowerCase()]; var categorias; var localidades; var nucleadores; // Declaracion de Variables auxiliares para URL de servicios let urlServicios = { url_servicio_categoria: "", url_servicio_promociones_lista: "", url_servicio_localidades: "", url_servicio_predictivo: "", url_servicio_logo: "", url_servicio_client_id: "", url_servicio_promocion_detalle: "", url_servicio_host: "", url_endpoint: "", urlServicios: "" } let htmlDecode = (str) => { var e = document.createElement('div'); e.innerHTML = str; return e.childNodes[0].nodeValue; } let removeAcentos = (str) => { const vocales = { 'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u', 'ñ': 'n', 'Á': 'A', 'É': 'E', 'Í': 'I', 'Ó': 'O', 'Ú': 'U','Ñ': 'N' }; return str.replace(/[áéíóúÁÉÍÓÚñÑ]/g, m => vocales[m]); } // Obtiene el Key de la provincia var getProvinciaKey = provincia => { let keyProvincia; for (let i in provinciaMapping) { if (provinciaMapping[i].provinceNeutral == provincia) { keyProvincia = i; } } return keyProvincia; } // Inserta Provincia var setProvincia = (key) => { let auxkey; if (key == null) { auxkey = 'BuenosAires'; } else { auxkey = key; } let keyProvincia = auxkey.replace(/ /g, ''); keyProvincia = keyProvincia.replaceAll(" ", "").toLowerCase(); provinciaActual = provinciaMapping[keyProvincia.normalize("NFD").replace(/[\u0300-\u036f]/g, "")]; } // Obtiene Provincias var getProvincias = () => { let provincesArray = []; for (let i in provinciaMapping) { provincesArray.push($.parseHTML(provinciaMapping[i].provinceNeutral)[0].data); } return provincesArray; } // Obtiene Categorias var getCategorias = () => { return $.ajax({ url: urlServicios.url_servicio_categoria, type: "GET", async: false, dataType: 'json', contentType: 'application/json; charset=utf-8', headers: { // Host:urlServicios.url_api_host, apikey: urlServicios.url_servicio_client_id } }); } // Obtiene Nombres de Provincias para predictrivo var getNamesProvincia = () => { let provincesArray = []; for (let i in provinciaMapping) { provincesArray.push($.parseHTML(provinciaMapping[i].provinceNeutral)[0].data); } return provincesArray; }; var getProvinceNameByCode = (code) => { for (let i in provinciaMapping) { if (provinciaMapping[i].provinceIsoCode === code) { return $.parseHTML(provinciaMapping[i].provinceDisplayName); } } } // Obtiene Localidades var getLocalidades = () => { let auxkey; if (provinciaActual == null) { auxkey = 'CABA'; } else { auxkey = provinciaActual.provinceIsoCode; } let servicioURL = urlServicios.url_servicio_localidades + auxkey + "/localities"; return $.ajax({ url: servicioURL, type: "GET", async: false, headers: { // Host:urlServicios.url_api_host, apikey: urlServicios.url_servicio_client_id } }); }; // Obtiene Nombre de Localidades para predictivo var getLocalidadName = () => { let getLocalidades = localidades.localities; let localidadesArray = []; for (let i in getLocalidades) { localidadesArray.push(getLocalidades[i]['name']); } return localidadesArray; }; var createContainerGenerico = (clase) => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", clase); return contenedor; }; var createContainerMasBeneficios = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "collapse"); contenedor.setAttribute("id", "mas-beneficios"); return contenedor; }; var createBtnMas = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "row justify-content-center"); let boton = document.createElement("a"); boton.setAttribute("class", "btn bg-color-18"); boton.setAttribute("data-toggle", "collapse"); boton.setAttribute("href", "#mas-beneficios"); boton.setAttribute("role", "button"); boton.setAttribute("aria-expanded", "false"); boton.setAttribute("aria-controls", "mas-categorias"); boton.innerHTML = "Ver más beneficios"; contenedor.appendChild(boton); return contenedor; } var createContainerDesktop = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "cards-beneficios d-md-block d-sm-none"); return contenedor; }; var createContainercollapse = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "cards-beneficios d-md-block d-sm-block"); return contenedor; }; var createContainerMovile = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "cards-beneficios mx-auto my-auto d-md-none d-sm-block"); return contenedor; }; var createSlider = (id) => { let contenedor = document.createElement("div"); contenedor.setAttribute("id", id); contenedor.setAttribute("class", "carousel slide carousel-multi-item carousel-beneficios"); contenedor.setAttribute("data-ride", "carousel"); contenedor.setAttribute("wrap", "true"); return contenedor; } var createContainerSlides = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "carousel-inner row w-100 mx-auto"); return contenedor; } var createContainerCard = (id, type) => { let contenedor = document.createElement("div"); contenedor.setAttribute("id", id); contenedor.setAttribute("class", "card"); if (type != "slider") { contenedor.setAttribute("class", "card card-hide"); //contenedor.setAttribute("style","width: 15rem;"); } return contenedor; }; var createCardBody = () => { let contenedor = document.createElement("div"); contenedor.setAttribute("class", "card-body"); return contenedor; } var setImageCategoria = (data) => { let urlImg = getUrlImageCategoria(data, urlServicios.url_servicio_logo); let categoria = document.createElement("div"); categoria.setAttribute("class", "card-tag-rubro bg-color-22"); let image = document.createElement("img"); image.setAttribute("src", urlImg); image.setAttribute("style", "max-width: 33px;"); image.setAttribute("alt", data); categoria.appendChild(image); return categoria; } var setImageComercio = (data) => { if (validateLogo(data.logo) && data.logo != "") { let urlImg = getUrlImage(data, urlServicios.url_servicio_logo); let comercio = document.createElement("div"); comercio.setAttribute("class", "card-logo-comercio"); let image = document.createElement("img"); image.setAttribute("src", urlImg); image.setAttribute("alt", data.name); image.setAttribute("style", "max-width:100%; height:100px;") comercio.appendChild(image); return comercio; } else { let h5 = document.createElement("h5"); h5.setAttribute("class", "card-title"); h5.setAttribute("style", "max-width: 100%; height: 100px; margin-top: 10px; padding-top: 45px; color: #092f57;font-weight: bold;font-size: 1.0rem;"); h5.innerHTML = data.name; return h5; } } var setTitulo = (text) => { let titulo = document.createElement("h6"); titulo.setAttribute("class", "card-title"); titulo.innerHTML = text; return titulo; } var setDescuento = (text) => { let descuento = document.createElement("h5"); descuento.setAttribute("class", "card-subtitle mb-2 text-muted"); descuento.innerHTML = text; return descuento; } var setTexto = (clase, text) => { let texto = document.createElement("p"); texto.setAttribute("class", clase); texto.innerHTML = text; return texto; } var setDestacado = () => { let destacado = document.createElement("div"); destacado.setAttribute("class", "tag bg-color-18"); destacado.innerHTML = "Destacado"; let icono = document.createElement("i"); let img = document.createElement("img"); img.setAttribute("src", "/imagen/exclamation.png"); icono.appendChild(img); destacado.appendChild(icono); return destacado; } var setDestacadoFondoAzul = (card) => { card.setAttribute("class", "card back-grad-sky"); return card; } var setDestacadoBadge = () => { let destacado = document.createElement("div"); destacado.setAttribute("class", "badge"); let icono = document.createElement("i"); let img = document.createElement("img"); img.setAttribute("src", "/imagen/badge-card.png"); icono.appendChild(img); destacado.appendChild(icono); return destacado; } var setControls = (id) => { let prev = 'AnteriorAnterior'; let next = 'SiguienteSiguiente'; return prev + next; } var setSegmento = (segmento) => { let segment = document.createElement("div"); let s = ""; if (segmento != null || segmento != "" || segmento == undefined) { s = segmento.toLowerCase(); } switch (s) { case 'selecta': segment.setAttribute("class", "card-cartera bg-color-0"); segment.innerHTML = 'Cartera Selecta'; break; default: segment.setAttribute("class", "card-cartera"); break; } return segment; } var setVerMas = (comercio,path) => { let contenedor = document.createElement("a"); contenedor.setAttribute("class", "card-link"); contenedor.setAttribute("href", (path?path:urlServicios.url_servicio_pagina_detalle) + "?id=" + comercio); contenedor.innerHTML = "VER MÁS"; return contenedor; } var setPromo = (clase, element) => { let promo = document.createElement(clase); let cuotas = element.payment.maximum ? parseInt(element.payment.maximum) : 0; let descuento = element.discount ? parseInt(element.discount) : 0; let cft = element.cft ? parseInt(element.cft):0; if (clase != "h3") { promo.setAttribute("class", "card-title") } if (descuento == 0 && cft == 0) { promo.innerHTML = "" + cuotas + " cuotas
sin interés"; } if (descuento == 0 && cft > 0) { promo.innerHTML = "" + cuotas + " cuotas"; } if (descuento > 0 && cft == -1) { promo.innerHTML = "" + descuento + "%
de ahorro"; } if (descuento > 0 && cft > 0) { promo.innerHTML = "" + descuento + "% de ahorro y
" + cuotas + " cuotas"; } if (descuento > 0 && cft == 0) { promo.innerHTML = "" + descuento + "% de ahorro y
" + cuotas + " cuotas sin interés"; } return promo; } var setPromoDetalle = (element) => { let promo = document.createElement("h3"); let cMax = element.payment.maximum ? parseInt(element.payment.maximum): 0; let cMin = element.payment.minimum ? parseInt(element.payment.minimum): 0; let disc = element.discount.maximum ? parseInt(element.discount.maximum): 0; let cft = element.cft ? parseInt(element.cft):0; let leyenda = ""; if (cMin == 0 && cMax == 0 && disc > 0 && cft == -1) { leyenda = "" + disc + "% de ahorro"; } if ((cMax > 0 && cMin == cMax) && (cMin > 0 && cMin == cMax) && disc == 0 && cft == 0) { leyenda = "" + cMax + " cuotas
sin interés"; } if ((cMax > 0 && cMin == cMax) && (cMin > 0 && cMin == cMax) && disc == 0 && cft > 0) { leyenda = "" + cMax + " cuotas"; } if ((cMax > 0 && cMin != cMax) && (cMin > 0 && cMin != cMax) && disc == 0 && cft > 0) { leyenda = "" + cMin + " a " + cMax + " cuotas
sin interés"; } if ((cMax > 0 && cMin != cMax) && (cMin > 0 && cMin != cMax) && disc == 0 && cft == -1) { leyenda = "" + cMin + " a " + cMax + " cuotas"; } if ((cMax > 0 && cMin != cMax) && (cMin > 0 && cMin != cMax) && disc == 0 && cft > -1) { leyenda = "" + cMin + " a " + cMax + " cuotas"; } if ((cMax > 0 && cMin == cMax) && (cMin > 0 && cMin == cMax) && disc > 0 && cft == 0) { leyenda = "" + disc + "% de ahorro y
"; leyenda += "" + cMax + " cuotas
sin interés"; } if ((cMax > 0 && cMin == cMax) && (cMin > 0 && cMin == cMax) && disc > 0 && cft > 0) { leyenda = "" + disc + "% de ahorro y
"; leyenda += "" + cMax + " cuotas "; } if ((cMax > 0 && cMin != cMax) && (cMin > 0 && cMin != cMax) && disc > 0 && cft == 0) { leyenda = "" + disc + "% de ahorro y
"; leyenda += "" + cMin + " a " + cMax + " cuotas
sin interés"; } if ((cMax > 0 && cMin != cMax) && (cMin > 0 && cMin != cMax) && disc > 0 && cft == -1) { leyenda = "" + disc + "% de ahorro y
"; leyenda += "" + cMin + " a " + cMax + " cuotas"; } if ((cMax > 0 && cMin != cMax) && (cMin > 0 && cMin != cMax) && disc > 0 && cft > 0) { leyenda = "" + disc + "% de ahorro y
"; leyenda += "" + cMin + " a " + cMax + " cuotas"; } promo.innerHTML = leyenda; if (element.segment == 'Selecta') { promo.setAttribute("class", "selecta"); } return promo; } var setCompartir = (id, type) => { var compID = id.uclass + "-" + Math.floor(Math.random() * 1000); var shareItems = { share: { image: "/imagen/share-card.png", imageDetail: "/imagen/share-card@2x.png", alt: "compartir", txt: "Compartir" }, redes: [ { image: "/imagen/icon-fb.svg", alt: "Compartir en Facebook", class: "mc-share-btn mc-share-fb" + compID }, { image: "/imagen/icon-li.svg", alt: "Compartir en LinkedIn", class: "mc-share-btn mc-share-li" + compID }, { image: "/imagen/icon-twt.svg", alt: "Compartir en Twitter", class: "mc-share-btn mc-share-tw" + compID }, { image: "/imagen/icon-envelop.svg", alt: "Compartir por Email", class: "mc-share-btn mc-share-mail" + compID }, { image: "/imagen/whatsapp.svg", alt: "Compartir por Whatsapp", class: "mc-share-btn hidden-sm-up mc-share-wsp" + compID } ] }; let compartir = document.createElement("a"); compartir.setAttribute("class", "card-share"); compartir.setAttribute("data-toggle", "collapse"); compartir.setAttribute("href", "#share-box-" + compID); compartir.setAttribute("role", "button"); compartir.setAttribute("aria-expanded", "false"); compartir.setAttribute("aria-controls", "share-box-" + compID); let icon = document.createElement("i"); let imgShare = document.createElement("img"); if (type == "detail") { imgShare.setAttribute("src", shareItems.share.imageDetail); } else { imgShare.setAttribute("src", shareItems.share.image); } imgShare.setAttribute("alt", shareItems.share.alt); icon.appendChild(imgShare); compartir.appendChild(icon); if (type != "detail") { let spanShare = document.createElement("span"); spanShare.setAttribute("style", "margin-right:20px"); spanShare.innerHTML = (shareItems.share.txt); compartir.appendChild(spanShare); } let shareContainer = document.createElement("div"); shareContainer.setAttribute("class", "collapse share-box"); shareContainer.setAttribute("id", "share-box-" + compID); for (let i in shareItems.redes) { let a = document.createElement("a"); a.setAttribute("class", shareItems.redes[i].class); a.setAttribute("href", "#"); let img = document.createElement("img"); img.setAttribute("src", shareItems.redes[i].image); img.setAttribute("alt", shareItems.redes[i].alt); a.appendChild(img); shareContainer.appendChild(a); } compartir.appendChild(shareContainer); var detalleCompartirURL = ""; if (urlServicios.url_endpoint) { detalleCompartirURL = urlServicios.url_endpoint + "?id=" + id.id; } else { detalleCompartirURL = window.location.href; } $('body').on('click', 'a.mc-share-fb' + compID, function () { window.open('https://www.facebook.com/sharer/sharer.php?u=' + detalleCompartirURL, 'popup', 'width=650,height=425'); return false; }); $('body').on('click', 'a.mc-share-li' + compID, function () { var URL2Share = encodeURIComponent(detalleCompartirURL); window.open("https://www.linkedin.com/shareArticle?url=" + URL2Share, 'popup', 'width=650,height=425'); }); $('body').on('click', 'a.mc-share-mail' + compID, function () { window.location.href = "mailto:?subject=MacroBeneficios&body=" + encodeURIComponent("P\u00E1gina a compartir: ") + detalleCompartirURL; }); $('body').on('click', 'a.mc-share-tw' + compID, function () { var sharedURL = detalleCompartirURL; window.open("https://twitter.com/intent/tweet?url=" + sharedURL, 'popup', 'width=650,height=425'); }); return compartir; }; var getUrlImage = (data, url) => { let urlImagen = url + 'default.png'; if (data.logo != "") { urlImagen = url + data.logo; } return urlImagen; } var validateLogo = (logo) => { for (let i in categorias) { if (categorias[i].logo == logo) { return false; } } return true; } var getUrlImageCategoria = (data, url) => { //var getCategories = categorias.categories; //var urlImagen = ''; var urlfixed = '/imagen/rubro_'; /*for (let i in getCategories) { if (getCategories[i]['display-name'] == data) { urlImagen = urlfixed + getCategories[i].logo.toLowerCase() + '/' + getCategories[i].logo.toLowerCase() + ".png"; } }*/ return urlfixed + data.toLowerCase() + '/' + data.toLowerCase() + ".png";; } // Crea Card para Beneficio var renderCard = (element, type) => { let card = createContainerCard(element.name, type); let cardBody = createCardBody(); card.appendChild(cardBody); let shareId = { id: element.name, uclass: element.logo.replace(/ /g, "") }; cardBody.appendChild(setCompartir(shareId)); cardBody.appendChild(setImageCategoria(element['sector-list'])); cardBody.appendChild(setImageComercio(element)); cardBody.appendChild(setTitulo(element.sector.toUpperCase())); cardBody.appendChild(setPromo("h5", element)); cardBody.appendChild(setVerMas(element.city,element.detailsPath)); cardBody.appendChild(setSegmento(element.segment)); return card; } var renderSlide = (element, isActive) => { let slide = document.createElement("div"); if (isActive) { slide.setAttribute("class", "carousel-item active"); } else { slide.setAttribute("class", "carousel-item"); } let slideCont; if (element.length) { for (let i in element) { slideCont = document.createElement("div"); slideCont.setAttribute("class", "col-md-3"); slideCont.appendChild(renderCard(element[i], "slider")); slide.appendChild(slideCont); } } else { slideCont = document.createElement("div"); slideCont.setAttribute("class", "col-md-3"); slideCont.appendChild(renderCard(element, "slider")); slide.appendChild(slideCont); } return slide; } let addSliderFunctions = (id) => { $('#' + id).on('touchstart', function (event) { const xClick = event.originalEvent.touches[0].pageX; $(this).one('touchmove', function (event) { const xMove = event.originalEvent.touches[0].pageX; const sensitivityInPx = 5; if (Math.floor(xClick - xMove) > sensitivityInPx) { $(this).carousel('next'); } else if (Math.floor(xClick - xMove) < -sensitivityInPx) { $(this).carousel('prev'); } }); $(this).on('touchend', function () { $(this).off('touchmove'); }); }); } // Renderiza Slider Beneficios var drawSlider = (id, list, cardsInSlide) => { let slider = createSlider(id); let slides = createContainerSlides(); $("#waitcards").remove(); slider.innerHTML = setControls(id); slider.appendChild(slides); if (cardsInSlide == 1) { for (let i in list) { if (i < 1) { slides.appendChild(renderSlide(list[i], true)); } else { slides.appendChild(renderSlide(list[i], false)); } } } else { let start = 0; let end = cardsInSlide; let total = Math.ceil(list.length / cardsInSlide); for (let i = 0; i < total; i++) { if (i < 1) { slides.appendChild(renderSlide(list.slice(start, end), true)); } else { slides.appendChild(renderSlide(list.slice(start, end), false)); } start += cardsInSlide; end += cardsInSlide; } } return slider; }; // Renderiza Beneficios var drawBeneficios = (list, contenedor) => { contenedor.innerHTML = ""; // Crea Contenedor Principal let containerMain = createContainerDesktop(); let principales = createContainerGenerico("row"); principales.setAttribute("style", "align-items:center;justify-content:center;"); // Crea vista Movile let containerMovile = createContainerMovile(); containerMovile.appendChild(drawSlider("carousel-beneficios-00", list.slice(0, 12), 1)); contenedor.appendChild(containerMovile); addSliderFunctions("carousel-beneficios-00"); for (let i in list) { principales.appendChild(renderCard(list[i], "")); } containerMain.appendChild(principales); contenedor.appendChild(containerMain); $('#beneficioswait').removeClass('d-md-block'); $('#beneficioswaitMovile').removeClass('d-sm-block'); } var drawNull = (message, contenedor) => { contenedor.innerHTML = ""; // Crea Contenedor Principal let containerMain = createContainerDesktop(); let principales = createContainerGenerico("row"); principales.setAttribute("style", "align-items:center;justify-content:center;"); let msg = document.createElement("h2"); msg.setAttribute("style", "margin: 50px 0px;") msg.innerHTML = message; principales.appendChild(msg); containerMain.appendChild(principales); contenedor.appendChild(containerMain); $('#beneficioswait').removeClass('d-md-block'); $('#beneficioswaitMovile').removeClass('d-sm-block'); } // var setPaginador = (id, data, criteria, list = null, nucleador = null) => { // let mainPag = document.getElementById("Paginador"); // mainPag.innerHTML = ""; // if (data["total-pages"] > 1) { // let contPages = document.createElement("div"); // contPages.setAttribute("class", "bm-pagination"); // for (let p = 1; p <= data['total-pages']; p++) { // let idPag = "pag-" + p; // let pag = document.createElement('a'); // pag.setAttribute("id", idPag) // if (data.offset == p) { // pag.setAttribute("class", "bm-pagination_active"); // } // pag.innerHTML = p; // pag.setAttribute("data-id", id); // pag.setAttribute("data-pag", p); // pag.setAttribute("data-criteria", JSON.stringify(criteria)); // if (list != null) { // pag.setAttribute("data-list", list); // } // if (nucleador != null) { // pag.setAttribute("data-nucleador", nucleador); // } // pag.setAttribute("onclick", "changePage('" + idPag + "')"); // contPages.appendChild(pag); // } // mainPag.appendChild(contPages); // mainPag.removeAttribute("style"); // } // } var setPaginador = (id, data, criteria, list = null, nucleador = null) => { let mainPag = document.getElementById("Paginador"); mainPag.innerHTML = ""; if (data["total-pages"] > 1) { let out = enable(data.offset,data['total-pages']); let contPages = document.createElement("div"); contPages.setAttribute("class", "bm-pagination"); for (let p = 0; p < out.items.length; p++) { let idPag = "pag-" + out.items[p]; let pag = document.createElement('a'); pag.setAttribute("id", idPag); if (data.offset == out.items[p]) { pag.setAttribute("class", "bm-pagination_active"); } pag.innerHTML = out.items[p]; pag.setAttribute("data-id", id); pag.setAttribute("data-pag", out.items[p]); pag.setAttribute("data-criteria", JSON.stringify(criteria)); if (list != null) { pag.setAttribute("data-list", list); } if (nucleador != null) { pag.setAttribute("data-nucleador", nucleador); } pag.setAttribute("onclick", "changePage('" + idPag + "')"); if(out.isDotO && p == out.items.length-1){ contPages.appendChild(paginadorDot()); } contPages.appendChild(pag); if(out.isDotI && p == 0){ contPages.appendChild(paginadorDot()); } } mainPag.appendChild(paginadorControl('left',data['total-pages'],data.offset==1)); mainPag.appendChild(contPages); mainPag.appendChild(paginadorControl('right',data['total-pages'],data.offset==data['total-pages'])); mainPag.removeAttribute("style"); } }; let paginadorControl = (type,size,active)=> { let div = document.createElement('div'); let item = {}; let items = {}; switch(type){ case 'left': item = {src:"/imagen/arrow-prev.png",alt:"Volver",clase:"bm-pagination_prev",total:size,active:active}; items = {src:"/imagen/arrow-prev.png",alt:"Volver al comienzo",clase:"bm-pagination_first",total:size,active:active}; div.appendChild(paginadorControlTpl(1,items)); div.appendChild(paginadorControlTpl(0,item)); break; case 'right': item = {src:"/imagen/arrow-next.png",alt:"Continuar",clase:"bm-pagination_next",total:size,active:active}; items = {src:"/imagen/arrow-next.png",alt:"Volver al final",clase:"bm-pagination_last",total:size,active:active}; div.appendChild(paginadorControlTpl(0,item)); div.appendChild(paginadorControlTpl(size,items)); break; } div.setAttribute("class", "control-"+type); return div; }; let paginadorControlTpl = (page,data)=> { let img = document.createElement('img'); img.setAttribute("src", data.src); img.setAttribute("alt", data.alt); let pag = document.createElement('a'); pag.setAttribute("class", data.clase); pag.setAttribute("onclick", "paginadorEvent(" + page + "," + data.total + ",'" + data.clase + "')"); if(data.active){ pag.setAttribute("disabled", "disabled"); pag.setAttribute("href","javascript:void(0)"); } if(page>0){ let img2 = document.createElement('img'); img2.setAttribute("src", data.src); img2.setAttribute("alt", data.alt); pag.appendChild(img2); } pag.appendChild(img); return pag; }; let paginadorEvent = (idPag,pages,clase) => { let parents = document.getElementById("Paginador"); if(idPag == 0){ let item = parents.querySelector('.bm-pagination_active'); let index = item.getAttribute('data-pag') if(index){ idPag = parseInt(index); if(clase == 'bm-pagination_prev' && idPag>1 ){ idPag -= 1; } if(clase == 'bm-pagination_next' && idPag { let data = {start:0,item:0,items:[], isDotI:false, isDotO:false}; if(pages > 5){ if(page == 1 || page == 2 || page == 3){ data = {start:2,item:4,items:[], isDotI:false, isDotO:(pages>5)}; } else if( pages-2 == page || pages-1 == page || pages == page ){ data = {start:pages-3,item:pages-1,items:[], isDotI:(pages>5), isDotO:false}; } else { data = {start:page-1,item:page+1,items:[], isDotI:true, isDotO:true}; } for(let i = data.start; i <= data.item; i++){ data.items.push(i); } data.items.unshift(1); data.items.push(pages); } else { data = {start:1,item:pages,items:[], isDotI:false, isDotO:false}; for(let i = data.start; i <= data.item; i++){ data.items.push(i); } } return data; } let paginadorDot = ()=> { let span = document.createElement('span'); let text = document.createTextNode('...'); span.appendChild(text); return span; }; var changePage = (idPag) => { document.getElementById('buscador-beneficios').scrollIntoView();; $('#beneficioswait').addClass('d-md-block'); $('#beneficioswaitMovile').addClass('d-sm-block'); let e = document.getElementById(idPag); let d = e.dataset; if (d.list) { initBeneficiosLista(d.id, d.list, JSON.parse(d.criteria), d.pag); } else if (d.nucleador) { initBeneficiosNucleadores(d.id, JSON.parse(d.criteria), d.pag); } else { initBeneficios(d.id, JSON.parse(d.criteria), d.pag); } } var segmentClass = (segmento) => { let s = ""; if (segmento != null || segmento != "" || segmento == undefined) { s = segmento.toLowerCase(); } let aux; switch (s) { case "general": aux = "blue"; break; case "selecta": aux = "black"; break; default: aux = "blue"; break; } return aux; } var getFormattedDate = (date) => { let year = date.getFullYear(); let month = (1 + date.getMonth()).toString().padStart(2, '0'); let day = date.getDate().toString().padStart(2, '0'); return day + '/' + month + '/' + year; } var createListaHeader = (data) => { let lista = document.createElement("ul"); lista.setAttribute("class", "nav nav-pills mb-3 list"); lista.setAttribute("id", "pills-tab"); lista.setAttribute("role", "tablist"); for (let i in data) { let item = document.createElement("li"); let tabName = data[i]; item.setAttribute("class", "nav-item"); item.setAttribute("role", "presentation"); let link = document.createElement("a"); if (i < 1) { link.setAttribute("class", "nav-link active " + segmentClass(data[i])); } else { link.setAttribute("class", "nav-link " + segmentClass(data[i])); } link.setAttribute("id", "pills-" + data[i] + "-tab"); link.setAttribute("data-toggle", "pill"); link.setAttribute("href", "#pills-" + data[i]); link.setAttribute("role", "tab"); link.setAttribute("aria-controls", "pills-" + data[i]); link.setAttribute("aria-selected", "true"); link.innerHTML = tabName.charAt(0).toUpperCase() + tabName.slice(1); item.appendChild(link); lista.appendChild(item); } return lista; } var createCardDetail = (element) => { let card = createContainerGenerico("card detail"); let nomenclatura = createContainerGenerico(""); let body = createContainerGenerico("row card-body"); let col4 = createContainerGenerico("col-md-4"); let cPic = createContainerGenerico("pic-comercio"); let img = document.createElement("img"); img.setAttribute("src", getUrlImage(element, urlServicios.url_servicio_logo)); img.setAttribute("alt", "comercio"); cPic.appendChild(img); col4.appendChild(cPic); let h1nomenclatura = document.createElement("h1"); h1nomenclatura.innerHTML = element.name.toUpperCase(); nomenclatura.appendChild(h1nomenclatura); let col8 = createContainerGenerico("col-md-8"); let shareId = { id: element.name, // uclass: element.promLogo.replace(/ /g, "") }; col8.appendChild(setCompartir(shareId, "detail")); if (element['day-week'] != "") { let h4 = document.createElement("h4"); h4.innerHTML = element['day-week'].toUpperCase(); col8.appendChild(h4); } if (element['sector-list'] != "") { let span = document.createElement("span"); span.innerHTML = "EN " + element['sector-list'].toUpperCase(); col8.appendChild(span); } col8.appendChild(setPromoDetalle(element)); col8.appendChild(setTexto("", "Válido desde " + getFormattedDate(new Date(element['valid-date-from'])) + " hasta " + getFormattedDate(new Date(element['valid-date-to'])))); if (element.website != "") { // let website = element.onlineSalesWebsite.substring(0, 4).includes("http") ? element.onlineSalesWebsite : "//" + element.onlineSalesWebsite; let website = element.website.substring(0, 4).includes("http") ? element.website : "//" + element.website; col8.appendChild(setTexto("compra-online", 'Compra Online: ' + website + ' ')); } if (element.payment.method != "") { col8.appendChild(setTexto("", "Aplica a las tarjetas: " + element.payment.method)); } if (element.phase != "") { col8.appendChild(setTexto("", htmlDecode(element.phase))); } body.appendChild(col4); body.appendChild(col8); card.appendChild(nomenclatura); card.appendChild(body); let desplegar = createContainerGenerico("row"); desplegar.appendChild(createDetailsBtn(element)); desplegar.appendChild(createTyc(element)); card.setAttribute("style", "background:#fff;"); card.appendChild(desplegar); if (element.details.length > 0) { card.appendChild(createMap(element)); } return card; } var createDetailsBtn = (element) => { let id = element.code.replace(/ /g, ''); let name = element.name.replace(/ /g, ''); let segment = element.segment.replace(/ /g, ''); let info = createContainerGenerico("info-extendida"); let a = ''; if (element.details.length > 0) { a += ''; } info.innerHTML = a; return info; } var createMap = (element) => { let id = element.code.replace(/ /g, ''); let name = element.name.replace(/ /g, ''); let segment = element.segment.replace(/ /g, ''); let map = document.createElement("div"); map.setAttribute("class", "collapse"); map.setAttribute("id", "map_" + segment + '_' + name + '_' + id); let cont = createContainerGenerico("mc-map-beneficio"); let titulo = createContainerGenerico("mc-map-beneficio-title"); titulo.innerHTML = "Comercios Adheridos"; cont.appendChild(titulo); let row = createContainerGenerico("mc-map-beneficio-map row"); let col9 = createContainerGenerico("col-md-12"); let mapa = setMap(id, name, segment); col9.appendChild(mapa); row.appendChild(col9); cont.appendChild(row); // Listado de comercios bajo el mapa let tituloListado = createContainerGenerico(" "); tituloListado.setAttribute("style", "font-size:12px;line-height:30px;height:30px;font-weight:bold;"); tituloListado.innerHTML = "Comercios Adheridos: " + element.details.length; cont.appendChild(tituloListado); for (var j = 0; j < element.details.length; j++) { listadoComercios = createContainerGenerico(" "); listadoComercios.setAttribute("style", "font-size:12px;line-height:30px;height:30px;"); comercio = element.details[j].location; listadoComercios.innerHTML = '' + comercio.name + '' + ': ' + comercio.street + ', ' + comercio.city; // + ', ' + getProvinceNameByCode(comercio.provinceISOCode).toUpperCase(); cont.appendChild(listadoComercios); } // Fin del listado de comercios bajo el mapa map.appendChild(cont); return map; } var setMap = (id, name, segment) => { let mapContainer = document.createElement("div"); mapContainer.setAttribute("id", "map-" + segment + "-" + name + "-" + id); mapContainer.setAttribute("class", "mc-map-beneficio-map-item"); mapContainer.setAttribute("style", "height:400px"); return mapContainer; } var initMap = (id, data) => { if (data.length > 0) { try { let center_long = -63.61702; let center_lat = -38.41354; let zoom = 4; if (data[0].location.longitude != null && data[0].location.latitude != null && data[0].location.longitude != 0 && data[0].location.latitude != 0) { center_long = data[0].location.longitude; center_lat = data[0].location.latitude; zoom = 13; } let map = new google.maps.Map(document.getElementById(id), { zoom: zoom, center: new google.maps.LatLng(center_lat, center_long), mapTypeId: google.maps.MapTypeId.ROADMAP }); var infowindow = new google.maps.InfoWindow(); var markers = []; for (var j = 0; j < data.length; j++) { if (data[j].location.latitude != null && data[j].location.longitude != null && data[j].location.latitude != 0 && data[j].location.longitude != 0) { var marker = new google.maps.Marker({ position: new google.maps.LatLng(data[j].location.latitude, data[j].location.longitude), map: map }); google.maps.event.addListener(marker, 'click', (function (marker, j) { return function () { // infowindow.setContent(data[j].locNombre + ': ' + data[j].streetAddress + ', ' + data[j].locCity + ', ' + getProvinceNameByCode(data[j].provinceISOCode).toUpperCase()); // sin la provincia infowindow.setContent(data[j].location.name + '
' + data[j].location.street + ', ' + data[j].location.city); infowindow.open(map, marker); } })(marker, j)); markers.push(marker); } } var markerCluster = new MarkerClusterer(map, markers, { imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m' }); //console.log("Libreria google.maps.Geocoder() se ha cargado correctamente"); } catch (err) { console.log("No se ha podido cargar google.maps.Geocoder(). " + err.message); } } } var createTyc = (element) => { let id = element.code.replace(/ /g, ''); let name = element.name.replace(/ /g, ''); let segment = element.segment.replace(/ /g, ''); let tyc = document.createElement("div"); tyc.setAttribute("class", "collapse"); tyc.setAttribute("id", 'tyc_' + segment + '_' + name + '_' + id); let row = createContainerGenerico("row"); tyc.appendChild(row); let text = ""; let footer = createContainerGenerico("mc-cft-beneficios"); if(parseInt(element['fixed-term']['annual-nominal-rate']) >= 0){ text += 'TNA: ' + element['fixed-term']['annual-nominal-rate'] + '% '; } if(parseInt(element['fixed-term']['annual-effective-rate']) >= 0){ text += ' CFTNA: ' + element['fixed-term']['annual-effective-rate'] + '%'; } footer.appendChild(setTexto("mc-cft-beneficios-value", text)); footer.appendChild(setTexto("mc-cft-beneficios-copy", element['terms-conditions'])); row.appendChild(footer); return tyc; } var createContainerTabs = (header, data) => { let tab = document.createElement("div"); tab.setAttribute("class", "tab-content"); tab.setAttribute("id", "pills-tabContent"); for (let i = 0; i < header.length; i++) { let tabBody = document.createElement("div"); if (i == 0) { tabBody.setAttribute("class", "tab-pane fade show active"); } else { tabBody.setAttribute("class", "tab-pane fade show"); } tabBody.setAttribute("id", "pills-" + header[i]); tabBody.setAttribute("role", "tabpanel"); tabBody.setAttribute("aria-labelledby", "pills-" + header[i] + "-tab"); for (let j in data[i]) { tabBody.appendChild(createCardDetail(data[i][j])); } tab.appendChild(tabBody); } return tab; } // Renderiza Detalle Beneficios var drawBeneficiosDetalle = (contenedor, header, data) => { let tabs = createContainerGenerico("scroll-tabs"); let wrap = createContainerGenerico("wrapper"); tabs.appendChild(wrap); wrap.appendChild(createListaHeader(header)); contenedor.appendChild(tabs); contenedor.appendChild(createContainerTabs(header, data)); } var getSegment = (data) => { let segment = []; for (let i in data) { let flag = true; if (segment.length > 0) { for (let j in segment) { if (segment[j] === data[i].segment) { flag = false; } } } if (flag) { segment.push(data[i].segment) } } return segment; } var filterBySegment = (segments, data) => { let filtered = []; for (let i in segments) { let sData = []; for (let j in data) { if (segments[i] === data[j].segment) { sData.push(data[j]); } } filtered.push(sData); } return filtered; } var validateParams = () => { let queryString = window.location.search; let urlParams; if (queryString.trim() != "" && queryString.trim().toLowerCase().indexOf("d=any") < 0) { urlParams = new URLSearchParams(queryString); console.log(urlParams); return { is: true, params: urlParams }; } return { is: false }; } let checkParams = (p) => { let f; if (p.is) { f = p.params } else { f = { categoria: p.get("categoria"), beneficios: p.get("beneficios"), localidad: p.get("localidad"), dia: p.get("dia-semana"), tarjeta: p.get("tarjeta"), } } let qs = ''; if (f.beneficios != null && f.beneficios != '') { qs += formatParam('keyword',f.beneficios); } if (f.categoria != "All" && f.categoria != null && f.categoria != '') { qs += formatParam('sector-web',removeAcentos(f.categoria)); } if (f.localidad != null && f.localidad != '') { qs += formatParam('locality-id',removeAcentos(f.localidad)); } if ( f.dia != null && f.dia != '') { let dia_ = f.dia; if(dia_ == '8'){ dia_ = new Date().getDay().toString(); } switch(dia_){ case '0': dia_ = 'sunday'; break; case '1': dia_ = 'monday'; break; case '2': dia_ = 'tuesday'; break; case '3': dia_ = 'wednesday'; break; case '4': dia_ = 'thursday'; break; case '5': dia_ = 'friday'; break; case '6': dia_ = 'saturday'; break; case '7': dia_ = 'all-day'; break; } qs += formatParam(dia_,(dia_ == 'all-day'?true:1)); } if (f.tarjeta != null && f.tarjeta != '') { if(f.tarjeta == 'TD'){ qs += formatParam('debit-card',1); } else if(f.tarjeta == 'TC'){ let tc_ = ['visa','amex','master-card']; for(let i of tc_){ qs += formatParam(i,1); } } else { qs += formatParam('all-credit-card',1); } } if(qs.charAt(0) == '&'){ qs = qs.slice(1, qs.length); } return removeAcentos(qs); } let formatParam = (clave,valor) => { return `&${clave}=${valor}`; } var addPathDetails = (data, id) =>{ let _id = document.getElementById(id); let _path = _id.getAttribute('data-details') if(!_path){ path = urlServicios.url_servicio_pagina_detalle; } for(let i in data){ data[i].detailsPath = _path; } return data; }; // Inicializa Beneficios var initBeneficios = (id, criteria, pag = 1) => { let urlParams; if (!provinciaActual) { return; } if (!criteria.is) { urlParams = validateParams(); } if ($("#ubicacion").length && provinciaActual) { $("#ubicacion").val(provinciaActual.provinceNeutral); //Obtiene Localidades por provincia getLocalidades().then(res => { return localidades = res; }); // Inserta Predictivo Localidades $("#localidad").autocomplete({ source: getLocalidadName() }); } let url = urlServicios.url_servicio_promociones + provinciaActual.provinceIsoCode + "?"; let parameter = ''; if (criteria.is) { parameter = checkParams(criteria); } else if (urlParams.is) { parameter = checkParams(urlParams.params); } url += parameter + ( parameter != '' ? '&' : '' ) + 'offset=' + pag; $.ajax({ url: url, type: "GET", async: false, dataType: 'json', contentType: 'application/json; charset=utf-8', headers: { //Host:urlServicios.url_api_host, apikey: urlServicios.url_servicio_client_id }, success: function (data) { let getBenefits = data.promotions; let pagination = data.pagination; let beneficios = []; beneficios = addPathDetails(getBenefits,id); drawBeneficios(beneficios, document.getElementById(id)); setPaginador(id, pagination, criteria); }, error: function (e) { drawNull("No se obtuvieron beneficios", document.getElementById(id)); } }); } var initBeneficiosLista = (id, idLista, criteria, pag = 1) => { let urlParams; if (!provinciaActual) { return; } if (!criteria.is) { urlParams = validateParams(); } if ($("#ubicacion").length && provinciaActual) { $("#ubicacion").val(provinciaActual.provinceNeutral); //Obtiene Localidades por provincia getLocalidades().then(res => { return localidades = res; }); // Inserta Predictivo Localidades $("#localidad").autocomplete({ source: getLocalidadName() }); } let province_ = (provinciaActual.provinceIsoCode ? provinciaActual.provinceIsoCode : 'AR-0'); var url = urlServicios.url_servicio_promociones_lista + province_ + '?list-code=' + idLista + "&"; let parameter = ''; if (criteria.is) { parameter = checkParams(criteria); } else if (urlParams.is) { parameter = checkParams(urlParams.params); } url += parameter + ( parameter != '' ? '&' : '' ) + 'offset=' + pag; $.ajax({ url: url, type: "GET", headers: { // Host:urlServicios.url_servicio_host, apikey: urlServicios.url_servicio_client_id }, success: function (data) { let getBeneficiosList = data.promotions; let getListData = data.list; let pagination = data.pagination; let beneficios = []; beneficios = addPathDetails(getBeneficiosList,id); if ($(".TituloLista").length > 0) { $(".TituloLista").text(getListData.name); } drawBeneficios(beneficios, document.getElementById(id)); setPaginador(id, pagination, criteria, idLista); }, error: function (e) { drawNull("No se obtuvieron beneficios en la lista", document.getElementById(id)); } }); } var initBeneficioDetalle = (contenedor, id) => { $.ajax({ url: urlServicios.url_servicio_promocion_detalle + id, type: "GET", headers: { // Host:urlServicios.url_servicio_host, apikey: urlServicios.url_servicio_client_id }, success: function (data) { let promotions = data.promotions; let segments = getSegment(promotions); let filtered = filterBySegment(segments, promotions); $("#cards-beneficios").empty(); drawBeneficiosDetalle(document.getElementById(contenedor), segments, filtered); for (let i in promotions) { if (promotions[i].details.length > 0) { let id = promotions[i].code.replace(/ /g, ''); let name = promotions[i].name.replace(/ /g, ''); let segment = promotions[i].segment.replace(/ /g, ''); initMap("map-" + segment + "-" + name + "-" + id, promotions[i].details); } } }, error: function (e) { drawNull("No se obtuvieron beneficios", document.getElementById(contenedor)); } }); } var initSlider = (id, idLista) => { if (idLista == null || idLista == "") { return id; } var url = urlServicios.url_servicio_promociones_lista + 'AR-0?list-code=' + idLista + "&offset=1"; $.ajax({ url: url, type: "GET", headers: { //host:urlServicios.url_api_host, apikey: urlServicios.url_servicio_client_id }, success: function (data) { let getBeneficiosList = addPathDetails(data.promotions,id); let contenedor = document.getElementById(id); contenedor.appendChild(drawSlider("slider" + id, getBeneficiosList, 4)); addSliderFunctions("slider" + id); }, error: function (e) { console.log("No se obtuvieron beneficios"); } }); } var initSliderGeo = (id) => { if (!provinciaActual) { return; } $.ajax({ url: urlServicios.url_servicio_promociones + provinciaActual.provinceIsoCode, type: "GET", headers: { // Host:urlServicios.url_api_host, apikey: urlServicios.url_servicio_client_id }, success: function (data) { let contenedor = document.getElementById(id); data.promotions = addPathDetails(data.promotions,id); contenedor.appendChild(drawSlider("slider" + id, data, 4)); addSliderFunctions("slider" + id); }, error: function (e) { console.log("No se obtuvieron beneficios"); } }); } // Inicializa Beneficios Nucleadores var initBeneficiosNucleadores = (id, criteria, pag = 1) => { let urlParams; if (!provinciaActual) { return; } if (!criteria.is) { urlParams = validateParams(); } if ($("#ubicacion").length && provinciaActual) { $("#ubicacion").val(provinciaActual.provinceNeutral); //Obtiene Localidades por provincia getLocalidades().then(res => { return localidades = res; }); // Inserta Predictivo Localidades $("#localidad").autocomplete({ source: getLocalidadName() }); } let url = urlServicios.url_servicio_promociones + provinciaActual.provinceIsoCode + "?"; if (criteria.is) { url = url + checkParams(criteria); } else if (urlParams.is) { url = url + checkParams(urlParams.params); } else { url = url + "keyword=;;" + removeAcentos(criteria.nucleadores); } url = url + "&offset=" + pag; $.ajax({ url: url, type: "GET", async: false, dataType: 'json', contentType: 'application/json; charset=utf-8', headers: { //Host:urlServicios.url_api_host, apikey: urlServicios.url_servicio_client_id }, success: function (data) { let getBenefits = data.promotions; let pagination = data.pagination; let beneficios = []; beneficios = addPathDetails(getBenefits,id); drawBeneficios(beneficios, document.getElementById(id)); setPaginador(id, pagination, criteria, null, criteria.nucleadores); }, error: function (e) { drawNull("No se obtuvieron beneficios para Nucleadores", document.getElementById(id)); } }); }