diff --git a/nextjs-app/app/page.tsx b/nextjs-app/app/page.tsx index 43cc328..b1c80f6 100644 --- a/nextjs-app/app/page.tsx +++ b/nextjs-app/app/page.tsx @@ -31,12 +31,24 @@ export default async function HomePage({ searchParams }: HomePageProps) { // Parse search params const page = parseInt(params.page || '1'); - const radius = params.radius ? parseInt(params.radius) : undefined; + const radius = params.radius ? parseFloat(params.radius) : undefined; + + // Check if user has performed a search + const hasSearchParams = !!( + params.search || + params.local_authority || + params.school_type || + params.postcode + ); // Fetch data on server with error handling try { - const [schoolsData, filtersData] = await Promise.all([ - fetchSchools({ + const filtersData = await fetchFilters(); + + // Only fetch schools if there are search parameters + let schoolsData; + if (hasSearchParams) { + schoolsData = await fetchSchools({ search: params.search, local_authority: params.local_authority, school_type: params.school_type, @@ -44,9 +56,11 @@ export default async function HomePage({ searchParams }: HomePageProps) { radius, page, page_size: 50, - }), - fetchFilters(), - ]); + }); + } else { + // Empty state by default + schoolsData = { schools: [], page: 1, page_size: 50, total: 0, total_pages: 0 }; + } return ( ) => { const params = new URLSearchParams(searchParams); @@ -77,7 +79,7 @@ export function FilterBar({ filters, showLocationSearch = true }: FilterBarProps e.preventDefault(); const formData = new FormData(e.target as HTMLFormElement); const postcode = formData.get('postcode') as string; - const radius = formData.get('radius') as string; + const radiusMiles = formData.get('radius') as string; if (!postcode.trim()) { alert('Please enter a postcode'); @@ -89,7 +91,10 @@ export function FilterBar({ filters, showLocationSearch = true }: FilterBarProps return; } - updateURL({ postcode, radius, search: '' }); + // Convert miles to km for API (backend expects km) + const radiusKm = (parseFloat(radiusMiles) * 1.60934).toFixed(1); + + updateURL({ postcode, radius: radiusKm, search: '' }); }; const handleClearFilters = () => { @@ -138,12 +143,10 @@ export function FilterBar({ filters, showLocationSearch = true }: FilterBarProps className={styles.postcodeInput} required /> - + + +