mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-25 02:11:12 -05:00
Fix entity filters
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { Header } from '@/components/layout/Header';
|
||||
import { Input } from '@/components/ui/input';
|
||||
@@ -91,11 +91,76 @@ export default function Designers() {
|
||||
}
|
||||
};
|
||||
|
||||
const filteredCompanies = companies.filter(company =>
|
||||
company.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
||||
company.headquarters_location?.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
||||
company.description?.toLowerCase().includes(searchQuery.toLowerCase())
|
||||
);
|
||||
const filteredCompanies = React.useMemo(() => {
|
||||
return companies.filter(company => {
|
||||
// Search filter
|
||||
const matchesSearch = company.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
||||
company.headquarters_location?.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
||||
company.description?.toLowerCase().includes(searchQuery.toLowerCase());
|
||||
|
||||
if (!matchesSearch) return false;
|
||||
|
||||
// Person type filter
|
||||
if (filters.personType !== 'all') {
|
||||
if (filters.personType === 'individual' && company.person_type !== 'individual') {
|
||||
return false;
|
||||
}
|
||||
if (filters.personType === 'company' && company.person_type === 'individual') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Country filter
|
||||
if (filters.countries.length > 0) {
|
||||
if (!company.headquarters_location ||
|
||||
!filters.countries.some(c => company.headquarters_location?.includes(c))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Rating filter
|
||||
const rating = company.average_rating || 0;
|
||||
if (rating < filters.minRating || rating > filters.maxRating) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Review count filter
|
||||
const reviewCount = company.review_count || 0;
|
||||
if (reviewCount < filters.minReviewCount || reviewCount > filters.maxReviewCount) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Founded date filter
|
||||
if (filters.foundedDateFrom || filters.foundedDateTo) {
|
||||
if (!company.founded_year) {
|
||||
return false;
|
||||
}
|
||||
if (filters.foundedDateFrom && company.founded_year < filters.foundedDateFrom.getFullYear()) {
|
||||
return false;
|
||||
}
|
||||
if (filters.foundedDateTo && company.founded_year > filters.foundedDateTo.getFullYear()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Has rating filter
|
||||
if (filters.hasRating && !company.average_rating) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Has founded date filter
|
||||
if (filters.hasFoundedDate && !company.founded_year) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Is individual filter
|
||||
if (filters.isIndividual && company.person_type !== 'individual') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}, [companies, searchQuery, filters]);
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user