From cc97fe32aab5f6110e6509f13e68123717439625 Mon Sep 17 00:00:00 2001 From: moanos Date: Wed, 8 Jan 2025 09:18:48 +0100 Subject: [PATCH] feat: add search-as-you-type functionality --- src/fellchensammlung/forms.py | 2 +- .../static/fellchensammlung/css/styles.css | 22 ++++++++- .../templates/fellchensammlung/search.html | 45 +++++++++++++++++++ src/fellchensammlung/tools/search.py | 3 ++ 4 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/fellchensammlung/forms.py b/src/fellchensammlung/forms.py index c9b01bb..839187a 100644 --- a/src/fellchensammlung/forms.py +++ b/src/fellchensammlung/forms.py @@ -196,4 +196,4 @@ class AdoptionNoticeSearchForm(forms.Form): sex = forms.ChoiceField(choices=SexChoicesWithAll, label=_("Geschlecht"), required=False, initial=SexChoicesWithAll.ALL) max_distance = forms.ChoiceField(choices=DistanceChoices, initial=DistanceChoices.ONE_HUNDRED, label=_("Suchradius")) - location_string = forms.CharField(max_length=20, label=_("Stadt"), required=False) + location_string = forms.CharField(max_length=100, label=_("Stadt"), required=False) diff --git a/src/fellchensammlung/static/fellchensammlung/css/styles.css b/src/fellchensammlung/static/fellchensammlung/css/styles.css index 2c0a86d..8512b15 100644 --- a/src/fellchensammlung/static/fellchensammlung/css/styles.css +++ b/src/fellchensammlung/static/fellchensammlung/css/styles.css @@ -909,6 +909,25 @@ div.announcement { width: 49%; } + +#results { + margin-top: 10px; + list-style-type: none; + padding: 0; +} + +.result-item { + padding: 8px; + margin: 4px 0; + background-color: #ddd1a5; + cursor: pointer; + border-radius: 8px; +} + +.result-item:hover { + background-color: #ede1b5; +} + /************************/ /* GENERAL HIGHLIGHTING */ /************************/ @@ -939,7 +958,8 @@ div.announcement { } .animal-shelter-marker { - background-image: url('../img/animal_shelter.png'); !important; + background-image: url('../img/animal_shelter.png'); +!important; } .maplibregl-popup { diff --git a/src/fellchensammlung/templates/fellchensammlung/search.html b/src/fellchensammlung/templates/fellchensammlung/search.html index fc332dc..bee3a1a 100644 --- a/src/fellchensammlung/templates/fellchensammlung/search.html +++ b/src/fellchensammlung/templates/fellchensammlung/search.html @@ -9,7 +9,9 @@ {% csrf_token %} + {{ search_form.as_p }} +
{% include "fellchensammlung/lists/list-adoption-notices.html" %} + + {% endblock %} diff --git a/src/fellchensammlung/tools/search.py b/src/fellchensammlung/tools/search.py index a74a40a..d171a11 100644 --- a/src/fellchensammlung/tools/search.py +++ b/src/fellchensammlung/tools/search.py @@ -39,6 +39,8 @@ class Search: self.location = None # Can either be Location (DjangoModel) or LocationProxy self.place_not_found = False # Indicates that a location was given but could not be geocoded self.search_form = None + # Either place_id or location string must be set for area search + self.location_string = None if request: self.search_from_request(request) @@ -106,6 +108,7 @@ class Search: self.search_form = AdoptionNoticeSearchForm(request.POST) self.search_form.is_valid() self.sex = self.search_form.cleaned_data["sex"] + if self.search_form.cleaned_data["location_string"] != "" and self.search_form.cleaned_data[ "max_distance"] != "": self.area_search = True