1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-07-21 08:29:11 +02:00

Optimisation ergonomique de la création de famille et chalenge

This commit is contained in:
ikea
2025-07-18 11:51:27 +02:00
parent e6839a1079
commit a72572ded6

View File

@ -9,197 +9,180 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-xl-12"> <div class="col-xl-12">
<div class="btn-group btn-group-toggle" style="width: 100%; padding: 0 0 2em 0"> <div class="btn-group btn-group-toggle" style="width: 100%; padding: 0 0 2em 0">
<a href="{% url "family:family_list" %}" class="btn btn-sm btn-outline-primary"> <a href="{% url "family:family_list" %}" class="btn btn-sm btn-outline-primary">
{% trans "Families" %} {% trans "Families" %}
</a> </a>
<a href="{% url "family:challenge_list" %}" class="btn btn-sm btn-outline-primary"> <a href="{% url "family:challenge_list" %}" class="btn btn-sm btn-outline-primary">
{% trans "Challenges" %} {% trans "Challenges" %}
</a> </a>
<a href="#" class="btn btn-sm btn-outline-primary active"> <a href="#" class="btn btn-sm btn-outline-primary active">
{% trans "Manage" %} {% trans "Manage" %}
</a> </a>
</div>
</div> </div>
</div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">
<div class='col-sm-5 col-xl-6' id="infos_div"> <div class="col-sm-5 col-xl-6" id="infos_div">
<div class="row justify-content-center justify-content-md-end"> <div class="row justify-content-center justify-content-md-end">
{# User details column #} {# User details column #}
<div class="col picture-col"> <div class="col picture-col">
<div class="card bg-light mb-4 text-center"> <div class="card bg-light mb-4 text-center">
<a id="profile_pic_link" href="#"> <a id="profile_pic_link" href="#">
<img src="{% static "member/img/default_picture.png" %}" <img src="{% static "member/img/default_picture.png" %}" id="profile_pic" alt="" class="card-img-top d-none d-sm-block">
id="profile_pic" alt="" class="card-img-top d-none d-sm-block"> </a>
</a> <div class="card-body text-center text-break p-2">
<div class="card-body text-center text-break p-2"> <span id="user_note"><i class="small">{% trans "Please select a family" %}</i></span>
<span id="user_note"><i class="small">{% trans "Please select a family" %}</i></span> </div>
</div>
</div>
</div>
{# Family selection column #}
<div class="col-xl" id="user_select_div">
<div class="card bg-light border-success mb-4">
<div class="card-header">
<p class="card-text font-weight-bold">
{% trans "Families" %}
</p>
</div>
<div class="card-body p-0" style="min-height:125px;">
<ul class="list-group list-group-flush" id="note_list">
</ul>
</div>
{# User search with autocompletion #}
<div class="card-footer">
<input class="form-control mx-auto d-block"
placeholder="{% trans "Name" %}" type="text" id="note" autofocus />
</div>
</div>
</div>
{# Summary of challenges and validate button #}
<div class="col-xl-5" id="consos_list_div">
<div class="card bg-light border-info mb-4">
<div class="card-header">
<p class="card-text font-weight-bold">
{% trans "Challenges" %}
</p>
</div>
<div class="card-body p-0" style="min-height:125px;">
<ul class="list-group list-group-flush" id="consos_list">
</ul>
</div>
<div class="card-footer text-center">
<span id="consume_all" class="btn btn-primary">
{% trans "Validate!" %}
</span>
</div>
</div>
</div>
</div> </div>
{# Create family/challenge buttons #} </div>
{# Family selection column #}
<div class="col-xl" id="user_select_div">
<div class="card bg-light border-success mb-4"> <div class="card bg-light border-success mb-4">
<h3 class="card-header"> <div class="card-header">
<p class="card-text font-weight-bold"> <p class="card-text font-weight-bold">
{% trans "Create a family or challenge" %} {% trans "Families" %}
</p> </p>
</h3> </div>
<div class="card-body"> <div class="card-body p-0" style="min-height:125px;">
{% if can_add_family %} <ul class="list-group list-group-flush" id="note_list"></ul>
<a class="btn btn-sm btn-primary" href="{% url "family:add_family" %}"> </div>
{% trans "Add a family" %} {# User search with autocompletion #}
</a> <div class="card-footer">
{% endif %} <input class="form-control mx-auto d-block" placeholder="{% trans "Name" %}" type="text" id="note" autofocus />
{% if can_add_challenge %} </div>
<a class="btn btn-sm btn-primary" href="{% url "family:add_challenge" %}">
{% trans "Add a challenge" %}
</a>
{% endif %}
</div> </div>
</div>
{# Summary of challenges and validate button #}
<div class="col-xl-5" id="consos_list_div">
<div class="card bg-light border-info mb-4">
<div class="card-header">
<p class="card-text font-weight-bold">
{% trans "Challenges" %}
</p>
</div>
<div class="card-body p-0" style="min-height:125px;">
<ul class="list-group list-group-flush" id="consos_list"></ul>
</div>
<div class="card-footer text-center">
<span id="consume_all" class="btn btn-primary">
{% trans "Validate!" %}
</span>
</div>
</div> </div>
</div>
</div> </div>
{# Create family/challenge buttons #}
{# Buttons column #} <div class="card bg-light border-success mb-4">
<div class="col"> <h3 class="card-header font-weight-bold text-center">
{# Regroup buttons under categories #} {% trans "Create a family or challenge" %}
</h3>
<div class="card bg-light border-primary text-center mb-4"> <div class="card-body text-center">
{# Tabs for list and search #} {% if can_add_family %}
<div class="card-header"> <a class="btn btn-sm btn-primary mx-2" href="{% url 'family:add_family' %}">
<ul class="nav nav-tabs nav-fill card-header-tabs"> {% trans "Add a family" %}
<li class="nav-item"> </a>
<a class="nav-link font-weight-bold" data-toggle="tab" href="#list"> {% endif %}
{% trans "List" %} {% if can_add_challenge %}
</a> <a class="btn btn-sm btn-primary mx-2" href="{% url 'family:add_challenge' %}">
</li> {% trans "Add a challenge" %}
<li class="nav-item"> </a>
<a class="nav-link font-weight-bold" data-toggle="tab" href="#search"> {% endif %}
{% trans "Search" %} </div>
</a>
</li>
</ul>
</div>
{# Tabs content #}
<div class="card-body">
<div class="tab-content">
<div class="tab-pane" id="list">
<div class="d-inline-flex flex-wrap justify-content-center">
{% for challenge in all_challenges %}
<button class="btn btn-outline-dark rounded-0 flex-fill"
id="challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}">
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %})
</button>
{% endfor %}
</div>
</div>
<div class="tab-pane" id="search">
<input class="form-control mx-auto d-block mb-3"
placeholder="{% trans "Search challenge..." %}" type="search" id="search-input"/>
<div class="d-inline-flex flex-wrap justify-content-center" id="search-results">
{% for challenge in all_challenges %}
<button class="btn btn-outline-dark rounded-0 flex-fill" hidden
id="search_challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}">
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %})
</button>
{% endfor %}
</div>
</div>
</div>
</div>
{# Mode switch #}
<div class="card-footer border-primary">
<a class="btn btn-sm btn-secondary float-left" href="{% url 'note:template_list' %}">
<i class="fa fa-edit"></i> {% trans "Edit" %}
</a>
</div>
</div>
</div> </div>
</div>
{# Buttons column #}
<div class="col">
<div class="card bg-light border-primary text-center mb-4">
{# Tabs for list and search #}
<div class="card-header">
<ul class="nav nav-tabs nav-fill card-header-tabs">
<li class="nav-item">
<a class="nav-link font-weight-bold" data-toggle="tab" href="#list">
{% trans "List" %}
</a>
</li>
<li class="nav-item">
<a class="nav-link font-weight-bold" data-toggle="tab" href="#search">
{% trans "Search" %}
</a>
</li>
</ul>
</div>
{# Tabs content #}
<div class="card-body">
<div class="tab-content">
<div class="tab-pane" id="list">
<div class="d-inline-flex flex-wrap justify-content-center">
{% for challenge in all_challenges %}
<button class="btn btn-outline-dark rounded-0 flex-fill"
id="challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}">
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %})
</button>
{% endfor %}
</div>
</div>
<div class="tab-pane" id="search">
<input class="form-control mx-auto d-block mb-3" placeholder="{% trans "Search challenge..." %}" type="search" id="search-input"/>
<div class="d-inline-flex flex-wrap justify-content-center" id="search-results">
{% for challenge in all_challenges %}
<button class="btn btn-outline-dark rounded-0 flex-fill" hidden
id="search_challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}">
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %})
</button>
{% endfor %}
</div>
</div>
</div>
</div>
{# Mode switch #}
<div class="card-footer border-primary">
<a class="btn btn-sm btn-secondary float-left" href="{% url 'note:template_list' %}">
<i class="fa fa-edit"></i> {% trans "Edit" %}
</a>
</div>
</div>
</div>
</div> </div>
{# transaction history #} {# transaction history #}
<div class="card mb-4" id="history"> <div class="card mb-4" id="history">
<div class="card-header"> <div class="card-header">
<p class="card-text font-weight-bold"> <p class="card-text font-weight-bold">
{% trans "Recent achievements history" %} {% trans "Recent achievements history" %}
</p> </p>
</div> </div>
{% render_table table %} {% render_table table %}
</div> </div>
{% endblock %} {% endblock %}
{% block extrajavascript %} {% block extrajavascript %}
<script type="text/javascript" src="{% static "family/js/consos.js" %}"></script> <script type="text/javascript" src="{% static "family/js/consos.js" %}"></script>
<script type="text/javascript"> <script type="text/javascript">
{% for button in all_challenges %} {% for button in all_challenges %}
document.getElementById("button{{ button.id }}").addEventListener("click", function() { document.getElementById("button{{ button.id }}").addEventListener("click", function() {
addConso({{ button.destination_id }}, {{ button.amount }}, addConso({{ button.destination_id }}, {{ button.amount }},
{{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}", {{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}",
{{ button.id }}, "{{ button.name|escapejs }}"); {{ button.id }}, "{{ button.name|escapejs }}");
}); });
{% endfor %} {% endfor %}
{% for button in all_challenges %} {% for button in all_challenges %}
{% if button.display %} {% if button.display %}
document.getElementById("search_button{{ button.id }}").addEventListener("click", function() { document.getElementById("search_button{{ button.id }}").addEventListener("click", function() {
addConso({{ button.destination_id }}, {{ button.amount }}, addConso({{ button.destination_id }}, {{ button.amount }},
{{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}", {{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}",
{{ button.id }}, "{{ button.name|escapejs }}"); {{ button.id }}, "{{ button.name|escapejs }}");
}); });
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</script> </script>
{% endblock %} {% endblock %}