`;
const elQ = ROOT.querySelector("#amQ");
const elAsal = ROOT.querySelector("#amAsal");
const elModa = ROOT.querySelector("#amModa");
const elGrid = ROOT.querySelector("#amGrid");
const elCount = ROOT.querySelector("#amCount");
const elSchema = ROOT.querySelector("#amPromoSchema");
function render(){
const q = (elQ.value||"").toLowerCase().trim();
const asal = elAsal.value;
const moda = elModa.value;
const filtered = promoRoutes
.filter(r=>{
const hay = `${r.asal} ${r.tujuan} ${r.moda} ${r.estimasi} ${r.note||""} ${r.kodePromo||""} ${(r.keywords||[]).join(" ")}`.toLowerCase();
if(q && !hay.includes(q)) return false;
if(asal !== "SEMUA" && String(r.asal) !== asal) return false;
if(moda !== "SEMUA" && String(r.moda) !== moda) return false;
return true;
})
// urutkan: diskon terbesar dulu, lalu harga termurah
.sort((a,b)=>{
const da = Number(a.diskon||0), db = Number(b.diskon||0);
if(db !== da) return db - da;
return Number(a.harga||0) - Number(b.harga||0);
});
elCount.textContent = `${filtered.length} promo rute`;
elGrid.innerHTML = filtered.map(r=>{
const badgeText = String(r.badge||"PROMO").toUpperCase();
const disk = Number(r.diskon||0) > 0 ? ` • Diskon ${r.diskon}%` : "";
const kode = String(r.kodePromo||"").trim() ? ` • Kode: ${String(r.kodePromo).trim()}` : "";
const price = r.harga ? `Rp ${idr(r.harga)}` : "Hubungi Admin";
return `
${price}${disk}${kode}
${badgeText}
${r.moda ? `${String(r.moda).toUpperCase()}` : ``}
${r.estimasi ? `Estimasi ${r.estimasi}` : ``}
${r.pickup ? `${r.pickup}` : ``}
Detail
`;
}).join("") || `
Tidak ada promo yang cocok.
`;
// Schema (ItemList) untuk SEO
const itemList = filtered.slice(0, 50).map((r, idx)=>({
"@type":"ListItem",
"position": idx+1,
"url": location.origin + r.__url,
"name": `Promo Kirim Mobil ${r.asal} ke ${r.tujuan}`
}));
const schema = {
"@context":"https://schema.org",
"@type":"CollectionPage",
"name":"Promo Kirim Mobil - Rute Promo",
"description":"Daftar rute promo pengiriman mobil (tarif & estimasi) + link SEO per rute.",
"mainEntity":{
"@type":"ItemList",
"itemListElement": itemList
}
};
elSchema.textContent = JSON.stringify(schema);
}
// Empty state kalau benar-benar tidak ada promo
if(!promoRoutes.length){
ROOT.innerHTML = `
Promo Kirim Mobil — Rute Pilihan
Saat ini belum ada rute promo di AM_ROUTES. Aktifkan promo dengan set promo:true atau diskon>0 atau isi kodePromo.
`;
return;
}
elQ.addEventListener("input", render);
elAsal.addEventListener("change", render);
elModa.addEventListener("change", render);
render();
})();