diff --git a/apps/member/templates/member/user_list.html b/apps/member/templates/member/user_list.html index 66aecf3ac8f8261ec49d904e40fd72a90bcb0d9f..ce0b14a75ae797d0fbbc2837e9c3f95dcf65d9b3 100644 --- a/apps/member/templates/member/user_list.html +++ b/apps/member/templates/member/user_list.html @@ -1,10 +1,8 @@ -{% extends "base.html" %} +{% extends "base_search.html" %} {% comment %} SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} -{% load render_table from django_tables2 %} -{% load i18n crispy_forms_tags perms %} -{% block contenttitle %}{% endblock %} +{% load i18n perms %} {% block content %} {% if "member.change_profile_registration_valid"|has_perm:user %} @@ -13,63 +11,6 @@ SPDX-License-Identifier: GPL-3.0-or-later </a> {% endif %} -<div class="card bg-light"> - <h3 class="card-header text-center"> - {{ title }} - </h3> - <div class="card-body"> - <input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note/section..."> - </div> - <div class="card-body"> - <div id="user_table"> - {% if table.data %} - {% render_table table %} - {% else %} - <div class="alert alert-warning"> - {% trans "There is no user with this pattern." %} - </div> - {% endif %} - </div> - </div> -</div> +{# Search panel #} +{{ block.super }} {% endblock %} - -{% block extrajavascript %} -<script type="text/javascript"> - let pattern = ''; - - function reloadTable() { - pattern = $("#searchbar").val(); - - if (pattern.length > 2) - $("#user_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") + " #user_table", init_table); - } - - function init_table() { - // On row click, go to object - $(".table-row").click(function () { - window.document.location = $(this).data("href"); - }); - - // Highlight searched terms - $("tr").each(function () { - $(this).find("td:eq(0), td:eq(1), td:eq(2), td:eq(3), td:eq(5)").each(function () { - $(this).html($(this).text().replace(new RegExp(pattern, 'i'), "<mark>$&</mark>")); - }); - }); - } - - $(document).ready(function () { - // Recover last search from url - let searchParams = new URLSearchParams(window.location.search) - if (searchParams.has('search')) - pattern = searchParams.get('search'); - - // On search, refresh table - $("#searchbar").keyup(debounce(reloadTable, 300)); - - // First init - init_table(); - }); -</script> -{% endblock %} \ No newline at end of file diff --git a/note_kfet/templates/base_search.html b/note_kfet/templates/base_search.html new file mode 100644 index 0000000000000000000000000000000000000000..1c5881141e3e4d0e25082d25fbc1989f500cea52 --- /dev/null +++ b/note_kfet/templates/base_search.html @@ -0,0 +1,69 @@ +{% extends "base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} +{% load render_table from django_tables2 %} +{% load i18n perms %} +{% block contenttitle %}{% endblock %} + +{% block content %} +<div class="card bg-light"> + <h3 class="card-header text-center"> + {{ title }} + </h3> + <div class="card-body"> + <input id="searchbar" type="text" class="form-control" placeholder="{% trans "Search by attribute such as name…" %}"> + </div> + <div id="dynamic-table"> + {% if table.data %} + {% render_table table %} + {% else %} + <div class="card-body"> + <div class="alert alert-warning"> + {% trans "There is no results." %} + </div> + </div> + {% endif %} + </div> +</div> +{% endblock %} + +{% block extrajavascript %} +<script type="text/javascript"> + let pattern = ''; + + function reloadTable() { + pattern = $("#searchbar").val(); + + if (pattern.length > 2) + $("#dynamic-table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") + " #dynamic-table", init_table); + } + + function init_table() { + // On row click, go to object + $(".table-row").click(function () { + window.document.location = $(this).data("href"); + }); + + // Highlight searched terms + $("tr").each(function () { + $(this).find("td:eq(0), td:eq(1), td:eq(2), td:eq(3), td:eq(5)").each(function () { + $(this).html($(this).text().replace(new RegExp(pattern, 'i'), "<mark>$&</mark>")); + }); + }); + } + + $(document).ready(function () { + // Recover last search from url + let searchParams = new URLSearchParams(window.location.search) + if (searchParams.has('search')) + pattern = searchParams.get('search'); + + // On search, refresh table + $("#searchbar").keyup(debounce(reloadTable, 300)); + + // First init + init_table(); + }); +</script> +{% endblock %}