diff --git a/viz/app/item_page.js b/viz/app/item_page.js index 642fa8d..7abb1ef 100644 --- a/viz/app/item_page.js +++ b/viz/app/item_page.js @@ -230,10 +230,28 @@ export async function renderItem($app, skuInput) { $thumbBox.innerHTML = bestImg ? renderThumbHtml(bestImg, "detailThumb") : `
`; // show store links from merged rows (may include multiple per store; OK) + // show store links from merged rows (may include multiple per store; OK) + // If two identical links exist, only render one. + const seenLinks = new Set(); $links.innerHTML = cur .slice() .sort((a, b) => String(a.storeLabel || "").localeCompare(String(b.storeLabel || ""))) - .map((r) => `${esc(r.storeLabel || r.store || "Store")}`) + .filter((r) => { + const href = String(r?.url || "").trim(); + const text = String(r?.storeLabel || r?.store || "Store").trim(); + if (!href) return false; + + // "identical" = same href + same rendered text + const key = `${href}|${text}`; + if (seenLinks.has(key)) return false; + seenLinks.add(key); + return true; + }) + .map((r) => { + const href = String(r.url || "").trim(); + const text = String(r.storeLabel || r.store || "Store").trim(); + return `${esc(text)}`; + }) .join(""); const gh = inferGithubOwnerRepo();