Redesign filter panel with range sliders, separated visualization card, and backend filter support
Simplify the filter UI to show only essential filters (type toggle, price/bedroom range sliders, min size) by default, with advanced filters collapsed. Extract visualization controls (color-by metric, POI travel mode) into a separate VisualizationCard component. Wire up previously ignored backend filters: max_sqm, min/max_price_per_sqm, and district_names now work end-to-end.
This commit is contained in:
parent
1f4a3f858c
commit
743e018668
11 changed files with 422 additions and 588 deletions
|
|
@ -218,6 +218,9 @@ class QueryParameters(BaseModel):
|
|||
let_date_available_from: datetime | None = None
|
||||
last_seen_days: int | None = None
|
||||
min_sqm: int | None = None
|
||||
max_sqm: int | None = None
|
||||
min_price_per_sqm: float | None = None
|
||||
max_price_per_sqm: float | None = None
|
||||
|
||||
@model_validator(mode="after")
|
||||
def _validate_ranges(self) -> QueryParameters:
|
||||
|
|
@ -237,4 +240,12 @@ class QueryParameters(BaseModel):
|
|||
raise ValueError(
|
||||
f"min_bedrooms ({self.min_bedrooms}) must be <= max_bedrooms ({self.max_bedrooms})"
|
||||
)
|
||||
if (
|
||||
self.min_price_per_sqm is not None
|
||||
and self.max_price_per_sqm is not None
|
||||
and self.min_price_per_sqm > self.max_price_per_sqm
|
||||
):
|
||||
raise ValueError(
|
||||
f"min_price_per_sqm ({self.min_price_per_sqm}) must be <= max_price_per_sqm ({self.max_price_per_sqm})"
|
||||
)
|
||||
return self
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue