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:
@ -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 %}
|
Reference in New Issue
Block a user