From 4bd996cd5cd3b03b0058c4a0bcfb4b14a502c1e6 Mon Sep 17 00:00:00 2001 From: Duskell Date: Sun, 1 Feb 2026 13:27:34 +0100 Subject: [PATCH] updated query results --- public/class-partnerexpo-core-public.php | 9 +++-- public/js/searchbox.js | 51 +++++++++--------------- 2 files changed, 23 insertions(+), 37 deletions(-) diff --git a/public/class-partnerexpo-core-public.php b/public/class-partnerexpo-core-public.php index d88ad3a..733a3e2 100644 --- a/public/class-partnerexpo-core-public.php +++ b/public/class-partnerexpo-core-public.php @@ -74,10 +74,11 @@ class Partnerexpo_Core_Public { foreach ($query->posts as $post) { $posts[] = [ - 'id' => $post->ID, - 'title' => $post->post_title, - 'slug' => $post->post_name, - 'url' => get_permalink($post), + 'id' => $post->ID, + 'title' => $post->post_title, + 'image' => get_the_post_thumbnail_url($post->ID), + 'excerpt' => $post->post_excerpt, + 'url' => get_permalink($post), ]; } diff --git a/public/js/searchbox.js b/public/js/searchbox.js index 4c6d881..4e42b99 100644 --- a/public/js/searchbox.js +++ b/public/js/searchbox.js @@ -89,25 +89,12 @@ document.addEventListener('DOMContentLoaded', () => { masonry.style.opacity = "0.5"; try { - // REPLACE THIS URL with your actual endpoint - const response = await fetch(`/pexpo/v1/query?q=${encodeURIComponent(query)}&limit=${filters.maxResults}`); + const response = await fetch(`/wp-json/pexpo/v1/query?q=${encodeURIComponent(query)}&limit=${filters.maxResults}`); const data = await response.json(); - - // --- SIMULATED FETCH FOR DEMO (Remove this block in production) --- - // await new Promise(r => setTimeout(r, 600)); // Fake network delay - // const data = simulateBackendResponse(query); - // ------------------------------------------------------------------ - - console.log(data); results = data; - - // 2. Compute local relevance if the API doesn't return it - // If your API returns a 'relevance' score, skip this. - computeLocalRelevance(query); - // 3. Render - requestLayout(); + requestLayout(); } catch (error) { console.error("Search failed:", error); @@ -117,20 +104,20 @@ document.addEventListener('DOMContentLoaded', () => { } } - // Simple client-side scorer if API doesn't rank them - function computeLocalRelevance(query) { - if (!query) { - results.forEach(r => r.relevance = r.score); - return; - } - const q = query.toLowerCase(); - results.forEach(r => { - let hits = 0; - if (r.title.toLowerCase().includes(q)) hits += 50; - if (r.desc.toLowerCase().includes(q)) hits += 20; - r.relevance = hits + r.score; - }); - } + // FOR TESTING ONLY REMOVE IN PROD + // function computeLocalRelevance(query) { + // if (!query) { + // results.forEach(r => r.relevance = r.score); + // return; + // } + // const q = query.toLowerCase(); + // results.forEach(r => { + // let hits = 0; + // if (r.title.toLowerCase().includes(q)) hits += 50; + // if (r.desc.toLowerCase().includes(q)) hits += 20; + // r.relevance = hits + r.score; + // }); + // } // ---------- Layout & Masonry Logic ---------- const minCard = () => Number(getComputedStyle(document.documentElement).getPropertyValue("--cardMin")) || 240; @@ -215,12 +202,10 @@ document.addEventListener('DOMContentLoaded', () => { colEls.push(col); } - // Sort - const sorter = SORTS[activeSortKey] || SORTS.relevance; - const ranked = results.slice().sort(sorter.compare); + const sliced = results.slice(); // Measure & Pack - const { measured } = measureCardHeights(cols, ranked); + const { measured } = measureCardHeights(cols, sliced); const placements = packRankAware(measured, cols, 6); // Render