1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-07-19 23:51:25 +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

@ -1,205 +1,188 @@
{% extends "base.html" %} {% extends "base.html" %}
{% comment %} {% comment %}
Copyright (C) 2018-2025 by BDE ENS Paris-Saclay Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %} {% endcomment %}
{% load i18n static django_tables2 %} {% load i18n static django_tables2 %}
{% block containertype %}container-fluid{% endblock %} {% block containertype %}container-fluid{% endblock %}
{% 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> </div>
</div>
{# Family selection column #}
{# Family selection column #} <div class="col-xl" id="user_select_div">
<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"> <div class="card-header">
<div class="card-header"> <p class="card-text font-weight-bold">
<p class="card-text font-weight-bold"> {% trans "Families" %}
{% trans "Families" %} </p>
</p> </div>
</div> <div class="card-body p-0" style="min-height:125px;">
<div class="card-body p-0" style="min-height:125px;"> <ul class="list-group list-group-flush" id="note_list"></ul>
<ul class="list-group list-group-flush" id="note_list"> </div>
</ul> {# User search with autocompletion #}
</div> <div class="card-footer">
<input class="form-control mx-auto d-block" placeholder="{% trans "Name" %}" type="text" id="note" autofocus />
{# User search with autocompletion #} </div>
<div class="card-footer"> </div>
<input class="form-control mx-auto d-block" </div>
placeholder="{% trans "Name" %}" type="text" id="note" autofocus />
</div> {# Summary of challenges and validate button #}
</div> <div class="col-xl-5" id="consos_list_div">
</div> <div class="card bg-light border-info mb-4">
<div class="card-header">
{# Summary of challenges and validate button #} <p class="card-text font-weight-bold">
<div class="col-xl-5" id="consos_list_div"> {% trans "Challenges" %}
<div class="card bg-light border-info mb-4"> </p>
<div class="card-header"> </div>
<p class="card-text font-weight-bold"> <div class="card-body p-0" style="min-height:125px;">
{% trans "Challenges" %} <ul class="list-group list-group-flush" id="consos_list"></ul>
</p> </div>
</div> <div class="card-footer text-center">
<div class="card-body p-0" style="min-height:125px;"> <span id="consume_all" class="btn btn-primary">
<ul class="list-group list-group-flush" id="consos_list"> {% trans "Validate!" %}
</ul> </span>
</div> </div>
<div class="card-footer text-center"> </div>
<span id="consume_all" class="btn btn-primary"> </div>
{% trans "Validate!" %} </div>
</span>
</div> {# Create family/challenge buttons #}
</div> <div class="card bg-light border-success mb-4">
</div> <h3 class="card-header font-weight-bold text-center">
</div> {% trans "Create a family or challenge" %}
{# Create family/challenge buttons #} </h3>
<div class="card bg-light border-success mb-4"> <div class="card-body text-center">
<h3 class="card-header"> {% if can_add_family %}
<p class="card-text font-weight-bold"> <a class="btn btn-sm btn-primary mx-2" href="{% url 'family:add_family' %}">
{% trans "Create a family or challenge" %} {% trans "Add a family" %}
</p> </a>
</h3> {% endif %}
<div class="card-body"> {% if can_add_challenge %}
{% if can_add_family %} <a class="btn btn-sm btn-primary mx-2" href="{% url 'family:add_challenge' %}">
<a class="btn btn-sm btn-primary" href="{% url "family:add_family" %}"> {% trans "Add a challenge" %}
{% trans "Add a family" %} </a>
</a> {% endif %}
{% endif %} </div>
{% if can_add_challenge %} </div>
<a class="btn btn-sm btn-primary" href="{% url "family:add_challenge" %}"> </div>
{% trans "Add a challenge" %}
</a> {# Buttons column #}
{% endif %} <div class="col">
</div> <div class="card bg-light border-primary text-center mb-4">
</div> {# Tabs for list and search #}
</div> <div class="card-header">
<ul class="nav nav-tabs nav-fill card-header-tabs">
<li class="nav-item">
{# Buttons column #} <a class="nav-link font-weight-bold" data-toggle="tab" href="#list">
<div class="col"> {% trans "List" %}
{# Regroup buttons under categories #} </a>
</li>
<div class="card bg-light border-primary text-center mb-4"> <li class="nav-item">
{# Tabs for list and search #} <a class="nav-link font-weight-bold" data-toggle="tab" href="#search">
<div class="card-header"> {% trans "Search" %}
<ul class="nav nav-tabs nav-fill card-header-tabs"> </a>
<li class="nav-item"> </li>
<a class="nav-link font-weight-bold" data-toggle="tab" href="#list"> </ul>
{% trans "List" %} </div>
</a>
</li> {# Tabs content #}
<li class="nav-item"> <div class="card-body">
<a class="nav-link font-weight-bold" data-toggle="tab" href="#search"> <div class="tab-content">
{% trans "Search" %} <div class="tab-pane" id="list">
</a> <div class="d-inline-flex flex-wrap justify-content-center">
</li> {% for challenge in all_challenges %}
</ul> <button class="btn btn-outline-dark rounded-0 flex-fill"
</div> id="challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}">
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %})
{# Tabs content #} </button>
<div class="card-body"> {% endfor %}
<div class="tab-content"> </div>
<div class="tab-pane" id="list"> </div>
<div class="d-inline-flex flex-wrap justify-content-center"> <div class="tab-pane" id="search">
{% for challenge in all_challenges %} <input class="form-control mx-auto d-block mb-3" placeholder="{% trans "Search challenge..." %}" type="search" id="search-input"/>
<button class="btn btn-outline-dark rounded-0 flex-fill" <div class="d-inline-flex flex-wrap justify-content-center" id="search-results">
id="challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}"> {% for challenge in all_challenges %}
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %}) <button class="btn btn-outline-dark rounded-0 flex-fill" hidden
</button> id="search_challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}">
{% endfor %} {{ challenge.name }} ({{ challenge.points }} {% trans "points" %})
</div> </button>
</div> {% endfor %}
<div class="tab-pane" id="search"> </div>
<input class="form-control mx-auto d-block mb-3" </div>
placeholder="{% trans "Search challenge..." %}" type="search" id="search-input"/> </div>
<div class="d-inline-flex flex-wrap justify-content-center" id="search-results"> </div>
{% for challenge in all_challenges %}
<button class="btn btn-outline-dark rounded-0 flex-fill" hidden {# Mode switch #}
id="search_challenge{{ challenge.id }}" name="button" value="{{ challenge.name }}"> <div class="card-footer border-primary">
{{ challenge.name }} ({{ challenge.points }} {% trans "points" %}) <a class="btn btn-sm btn-secondary float-left" href="{% url 'note:template_list' %}">
</button> <i class="fa fa-edit"></i> {% trans "Edit" %}
{% endfor %} </a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{# Mode switch #} {# transaction history #}
<div class="card-footer border-primary"> <div class="card mb-4" id="history">
<a class="btn btn-sm btn-secondary float-left" href="{% url 'note:template_list' %}"> <div class="card-header">
<i class="fa fa-edit"></i> {% trans "Edit" %} <p class="card-text font-weight-bold">
</a> {% trans "Recent achievements history" %}
</p>
</div> </div>
</div> {% render_table table %}
</div> </div>
</div> {% endblock %}
{% block extrajavascript %}
<script type="text/javascript" src="{% static "family/js/consos.js" %}"></script>
<script type="text/javascript">
{% for button in all_challenges %}
{# transaction history #} document.getElementById("button{{ button.id }}").addEventListener("click", function() {
<div class="card mb-4" id="history"> addConso({{ button.destination_id }}, {{ button.amount }},
<div class="card-header"> {{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}",
<p class="card-text font-weight-bold"> {{ button.id }}, "{{ button.name|escapejs }}");
{% trans "Recent achievements history" %} });
</p> {% endfor %}
</div>
{% render_table table %} {% for button in all_challenges %}
</div> {% if button.display %}
{% endblock %} document.getElementById("search_button{{ button.id }}").addEventListener("click", function() {
addConso({{ button.destination_id }}, {{ button.amount }},
{{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}",
{{ button.id }}, "{{ button.name|escapejs }}");
{% block extrajavascript %} });
<script type="text/javascript" src="{% static "family/js/consos.js" %}"></script> {% endif %}
<script type="text/javascript"> {% endfor %}
{% for button in all_challenges %} </script>
document.getElementById("button{{ button.id }}").addEventListener("click", function() {
addConso({{ button.destination_id }}, {{ button.amount }},
{{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}",
{{ button.id }}, "{{ button.name|escapejs }}");
});
{% endfor %}
{% for button in all_challenges %}
{% if button.display %}
document.getElementById("search_button{{ button.id }}").addEventListener("click", function() {
addConso({{ button.destination_id }}, {{ button.amount }},
{{ polymorphic_ctype }}, {{ button.category_id }}, "{{ button.category.name|escapejs }}",
{{ button.id }}, "{{ button.name|escapejs }}");
});
{% endif %}
{% endfor %}
</script>
{% endblock %} {% endblock %}