updated query results

This commit is contained in:
2026-02-01 13:27:34 +01:00
parent 58961157dd
commit 4bd996cd5c
2 changed files with 23 additions and 37 deletions

View File

@@ -76,7 +76,8 @@ class Partnerexpo_Core_Public {
$posts[] = [
'id' => $post->ID,
'title' => $post->post_title,
'slug' => $post->post_name,
'image' => get_the_post_thumbnail_url($post->ID),
'excerpt' => $post->post_excerpt,
'url' => get_permalink($post),
];
}

View File

@@ -89,24 +89,11 @@ 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();
} catch (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