From dadb56aa16cd887ed160204719b7be3b40bb8fb5 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Wed, 18 Jun 2025 20:54:47 +0000 Subject: [PATCH] add filter for min and max number of bedrooms --- crawler/frontend/src/App.tsx | 8 +++++ .../frontend/src/components/Parameters.tsx | 34 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/crawler/frontend/src/App.tsx b/crawler/frontend/src/App.tsx index e736633..a793ba0 100644 --- a/crawler/frontend/src/App.tsx +++ b/crawler/frontend/src/App.tsx @@ -38,6 +38,14 @@ function App() { if (parameters.max_price) { queryString.append("max_price", parameters.max_price.toString()); } + if (parameters.min_bedrooms) { + queryString.append('min_bedrooms', parameters.min_bedrooms.toString()); + } + if (parameters.max_bedrooms) { + queryString.append('max_bedrooms', parameters.max_bedrooms.toString()) + } + + try { const response = await fetch("/api/listing_geojson?" + queryString, { diff --git a/crawler/frontend/src/components/Parameters.tsx b/crawler/frontend/src/components/Parameters.tsx index e46f5dd..61f0eb9 100644 --- a/crawler/frontend/src/components/Parameters.tsx +++ b/crawler/frontend/src/components/Parameters.tsx @@ -24,6 +24,8 @@ export enum ListingType { export interface ParameterValues { metric: Metric listing_type: ListingType + min_bedrooms?: number + max_bedrooms?: number max_price?: number } @@ -41,12 +43,16 @@ export function Parameters( const formSchema = z.object({ metric: z.nativeEnum(Metric, { required_error: "Metric is required" }), listing_type: z.nativeEnum(ListingType, { required_error: "Listing Type is required" }), + min_bedrooms: z.number().min(1).max(10).optional(), + max_bedrooms: z.number().min(1).max(10).optional(), max_price: z.number().optional(), }) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { metric: Metric.qmprice, + min_bedrooms: 1, + max_bedrooms: 3, max_price: 3000, }, }) @@ -118,6 +124,34 @@ export function Parameters( )} /> + ( + + Minimum number of bedrooms + + field.onChange(Number(e.target.value))} /> + + + + + )} + /> + ( + + Maximum number of bedrooms + + field.onChange(Number(e.target.value))} /> + + + + + )} + />