1function filtroletra(input) { 2 const codigo = input.charCodeAt(0); 3 if ((codigo >= 65 && codigo <= 90) || (codigo >= 97 && codigo <= 122)) { 4 return codigo >= 97 ? String.fromCharCode(codigo - 32) : input.substring(0, 1); 5 } 6 return "#"; 7} 8 9function gerafiltroramo(input) { 10 if (!input) return ""; 11 return input.split(",") 12 .map(ramo => "ramofiltro-" + removerCaracteresEspeciais(ramo)) 13 .join(" "); 14} 15 16function removerCaracteresEspeciais(input) { 17 const mapCaracteresEspeciais = { 18 'á': 'a', 19 'à ': 'a', 20 'ã': 'a', 21 'â': 'a', 22 'é': 'e', 23 'ê': 'e', 24 'è': 'e', 25 'Ã': 'i', 26 'ì': 'i', 27 'ó': 'o', 28 'ô': 'o', 29 'õ': 'o', 30 'ö': 'o', 31 'ú': 'u', 32 'ü': 'u', 33 'ù': 'u', 34 'ç': 'c', 35 'ñ': 'n', 36 '´': '', 37 '"': '', 38 '\'': '', 39 '-': '', 40 '_': '', 41 '*': '' 42 }; 43 44 return input 45 .replace(/[^\w\s]/gi, char => mapCaracteresEspeciais[char] || char) 46 .replace(/\s+/g, '-'); 47} 48 49function corrigewhatsapp(input, http) { 50 const retorno = input.replace(/[\s\-()]/g, ""); 51 return http.includes("http") ? "https://wa.me/55" + retorno.trim() : input; 52} 53 54// Lojas 55let tipo; 56if (pagina ?.includes("lojas")) tipo = '1'; 57if (pagina ?.includes("alimentacao")) tipo = '2'; 58 59function lojas(ramo_id, letra) { 60 const url_loja = `https://sal.madnezz.com.br/api/site/json/loja.asp?tipo=${tipo}&shopping_id=${shopping_id}${letra && letra !== 'Todos' ? "&filtro_letra=" + letra : ""}&filtro_loja=${loja_id}${ramo_id ? "&filtro_ramo=" + ramo_id : ""}&llj=true&full=true&jsoncallback=?`; 61 62 $('.lojas_lista').html('<div class="loader"><span class="loader-1"></span></div>'); 63 64 $.ajax({ 65 url: url_loja, 66 dataType: "json" 67 }).done(function (data) { 68 if (loja_id) return; 69 70 let array_aux = ramo_id || (letra && letra !== 'Todos') ? data : data.loja; 71 72 if (!array_aux ?.length) { 73 $('.lojas_lista').html('<div class="loja_empty">Nenhuma loja encontrada</div>'); 74 return; 75 } 76 77 // Ordenação alfabética após remover prefixos 78 array_aux = array_aux.map(loja => { 79 const nomeSemPrefixo = loja.loja_nome.replace(/^BUT[-\s]*/i, '').trim(); 80 return { 81 ...loja, 82 nomeSemPrefixo, 83 nomeOrdenacao: nomeSemPrefixo.toLowerCase() 84 }; 85 }).sort((a, b) => a.nomeOrdenacao.localeCompare(b.nomeOrdenacao)); 86 87 if (!loja_url) { 88 $(".mostralojas").show(); 89 $(".mostraloja").hide(); 90 } 91 92 $('.lojas_lista').empty(); 93 94 array_aux.forEach(loja => { 95 const nome = loja.nomeSemPrefixo; 96 const nomeNormalizado = nome.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); 97 const nomeUrl = nome.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "").replace(/\s+/g, '-'); 98 const logo = loja.loja_logo ? 99 `https://sites.madnezz.com.br/api/site/upload/loja/${loja.loja_logo}` : 100 "./img/default/home_loja.png"; 101 const ramo = loja.ramo_nome || 'Não informado'; 102 103 $('.lojas_lista').append(` 104 <li data-url="${nomeUrl}" data-id="${loja.id}" id="${nomeNormalizado}" 105 data-nome="${nome.trim().toLowerCase()}" 106 class="lojas-item cursor-pointer filtroletra-Todos 107 filtroletra-${filtroletra(nome)} ramofiltro-Todos ${gerafiltroramo(ramo)}"> 108 <div class="lojas-imagem" style="background-image:url(${logo})"></div> 109 <h1>${nome}</h1> 110 <h2>${ramo}</h2> 111 <ul> 112 <li><i class="fa-solid fa-phone"></i>${loja.loja_telefone || 'Não informado'}</li> 113 <li>${loja.whatsapp 114 ? `<a class="btn-whatsapp" href="${corrigewhatsapp(loja.whatsapp, 'http')}" target="_blank"> 115 <i class="fa-brands fa-whatsapp"></i>${corrigewhatsapp(loja.whatsapp, '')} 116 </a>` 117 : 'Não informado'} 118 </li> 119 </ul> 120 </li> 121 `); 122 }); 123 124 setTimeout(() => { 125 if (loja_url) $(`[data-url="${loja_url}"]`).click(); 126 }, 100); 127 128 if (data ?.ramo ?.length) { 129 $('.lojas-menu-lista').empty(); 130 data.ramo.forEach(ramo => { 131 $('.lojas-menu-lista').append( 132 `<li class="cursor-pointer" data-ramofiltro="${ramo.ramo_id}">${ramo.ramo_nome}</li>` 133 ); 134 }); 135 } 136 137 $('#filtro_nome').off('input').on('input', function () { 138 const textoBuscado = $(this).val().trim().toLowerCase(); 139 $(".lojas_lista li[data-nome]").toggle(!textoBuscado); 140 if (!textoBuscado) return; 141 142 $('.lojas_lista li[data-nome]').each(function () { 143 $(this).toggle($(this).data('nome').includes(textoBuscado)); 144 }); 145 }); 146 }); 147} 148 149function loja_info(id) { 150 const url_loja = `https://sal.madnezz.com.br/api/site/json/loja.asp?tipo=${tipo}&shopping_id=${shopping_id}&filtro_loja=${id}&llj=true&full=true&jsoncallback=?`; 151 152 $(".mostralojas").hide(); 153 $(".mostraloja").show(); 154 155 $.ajax({ 156 url: url_loja, 157 dataType: "json" 158 }).done(function (loja) {
159 const nome = loja.loja_nome.replace(/^BUT[-\s]*/i, ''); 160 161 console.log(loja) 162 163 $(".loja-lojanome").text(nome); 164 $(".mostraloja .lojaunitaria-informacao").html(` 165 <div class="loja-mostraloja-item"> 166 <div class="mostraloja-item-imagem"> 167 <img src="${loja.loja_imagem_1 ? `https://sites.madnezz.com.br/api/site/upload/loja/${loja.loja_imagem_1}` : './img/default/home_loja.png'}" alt="Logo ${nome}"/> 168 </div> 169 <div class="mostraloja-item-informacoes"> 170 <h1>${nome}</h1> 171 ${loja.loja_texto ? `<p>${loja.loja_texto}</p>` : ''} 172 ${loja.loja_telefone ? `<p><i class="fa-solid fa-phone"></i> <b>Telefone:</b> ${loja.loja_telefone}</p>` : ''} 173 ${loja.loja_localizacao ? `<p><i class="fa-solid fa-location-dot"></i> <b>Localização:</b> ${loja.loja_localizacao}</p>` : ''} 174 ${loja.loja_email ? `<p><i class="fa-regular fa-envelope"></i> <b>Email:</b> ${loja.loja_email}</p>` : ''} 175 ${loja.whatsapp ? `<p><i class="fa-brands fa-whatsapp"></i> <b>WhatsApp:</b> <a href="${loja.whatsapp.includes("http") ? loja.whatsapp : `http://api.whatsapp.com/send?phone=55${loja.whatsapp.replace(/[^\d]/g, '')}`}" target="_blank">Fale com um vendedor agora</a></p>` : ''} 176 ${loja.instagram ? `<p><i class="fa-brands fa-instagram"></i> <b>Instagram:</b> <a href="${loja.instagram}" target="_blank">@${loja.instagram.replace('https://www.instagram.com/', '').replace('/', '')}</a></p>` : ''} 177 ${loja.loja_site ? `<p><i class="fa-solid fa-circle-info"></i> <b>Site:</b> <a href="${loja.loja_site}" target="_blank">${loja.loja_site}</a></p>` : ''} 178 ${loja.ramo_nome ? `<p><i class="fa-solid fa-circle-info"></i> <b>Segmento:</b> ${loja.ramo_nome}</p>` : ''} 179 </div> 180 </div> 181 `); 182 }); 183} 184 185// Event Handlers 186$('.lojas-menu-lista').on('click', 'li', function () { 187 lojas($(this).data('ramofiltro'), null); 188}); 189 190$('.filtro-letras').on('click', 'li', function () { 191 const letra = $(this).data('letravalor'); 192 $(".lojas_lista li").hide(); 193 $(`.filtroletra-${letra}`).show(); 194}); 195 196$(function () { 197 $(document).on('click', '[data-url]', function () { 198 atualiza_url('?' + $(this).data('url')); 199 loja_info(+$(this).data('id')); 200 }); 201 lojas(); 202});
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.