feat(scouting): add wingspan filters and saved searches mvp
This commit is contained in:
@ -19,6 +19,41 @@
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% if request.user.is_authenticated %}
|
||||
<section>
|
||||
<h2>Saved Searches</h2>
|
||||
<form method="post" action="{% url 'scouting:save_search' %}">
|
||||
{% csrf_token %}
|
||||
{{ saved_search_form.saved_search_name.label_tag }} {{ saved_search_form.saved_search_name }}
|
||||
{% for key, value in current_search_params.items %}
|
||||
<input type="hidden" name="{{ key }}" value="{{ value }}">
|
||||
{% endfor %}
|
||||
<button type="submit">Save current search</button>
|
||||
</form>
|
||||
<ul>
|
||||
{% for saved_search in saved_searches %}
|
||||
<li>
|
||||
<a href="{% url 'scouting:player_list' %}{% if saved_search.querystring %}?{{ saved_search.querystring }}{% endif %}">{{ saved_search.name }}</a>
|
||||
{% if saved_search.is_active %}
|
||||
<strong>(active)</strong>
|
||||
{% endif %}
|
||||
<form method="post" action="{% url 'scouting:delete_saved_search' saved_search.id %}" style="display:inline;">
|
||||
{% csrf_token %}
|
||||
{% for key, value in current_search_params.items %}
|
||||
<input type="hidden" name="{{ key }}" value="{{ value }}">
|
||||
{% endfor %}
|
||||
<button type="submit">Delete</button>
|
||||
</form>
|
||||
</li>
|
||||
{% empty %}
|
||||
<li>No saved searches yet.</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
{% else %}
|
||||
<p><a href="{% url 'login' %}?next={{ request.get_full_path|urlencode }}">Log in to save searches</a></p>
|
||||
{% endif %}
|
||||
|
||||
<form method="get">
|
||||
<fieldset>
|
||||
<legend>Result Controls</legend>
|
||||
@ -41,6 +76,8 @@
|
||||
{{ form.max_height_cm.label_tag }} {{ form.max_height_cm }}
|
||||
{{ form.min_weight_kg.label_tag }} {{ form.min_weight_kg }}
|
||||
{{ form.max_weight_kg.label_tag }} {{ form.max_weight_kg }}
|
||||
{{ form.min_wingspan_cm.label_tag }} {{ form.min_wingspan_cm }}
|
||||
{{ form.max_wingspan_cm.label_tag }} {{ form.max_wingspan_cm }}
|
||||
{{ form.position.label_tag }} {{ form.position }}
|
||||
{{ form.role.label_tag }} {{ form.role }}
|
||||
{{ form.specialty.label_tag }} {{ form.specialty }}
|
||||
@ -68,9 +105,19 @@
|
||||
</fieldset>
|
||||
|
||||
<button type="submit">Search</button>
|
||||
<a href="{% url 'scouting:player_list' %}">Clear filters</a>
|
||||
</form>
|
||||
|
||||
<h2>Results ({{ total_results }})</h2>
|
||||
<p>Sort: {{ form.sort.value|default:"name_asc" }} | Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}</p>
|
||||
{% if active_filters %}
|
||||
<p>Active filters:</p>
|
||||
<ul>
|
||||
{% for filter in active_filters %}
|
||||
<li>{{ filter.label }}: {{ filter.value }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<ul>
|
||||
{% for player in players %}
|
||||
<li>
|
||||
@ -113,7 +160,11 @@
|
||||
{% endif %}
|
||||
</li>
|
||||
{% empty %}
|
||||
<li>No players found.</li>
|
||||
{% if has_submitted_search %}
|
||||
<li>No players found for the current search filters.</li>
|
||||
{% else %}
|
||||
<li>No players available yet.</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user