{% extends "course/base.html" %} {% block two_col_media %} <style type="text/css"> table { font-size: 15px; } td { height: 2.5em; } .user-name { padding-left: 1em !important; } #search-input { float: right; margin-bottom: 1em; } </style> {% endblock %} {% block two_col_js %} <script> $(document).ready(function(){ var $searchInput = $("#search-input"); var $usersTable = $("#users-table"); var tableBorderColor = $('#users-table td').css('border-bottom-color'); $searchInput.on("keyup", function() { var value = $(this).val().toLowerCase(); $("#users-table tbody tr").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) }); if(value) { $('#users-table').css('border-bottom', '1px solid ' + tableBorderColor); } else { $('#users-table').css('border-bottom', ''); } }); $('#sortSelect').select2({ minimumResultsForSearch: -1, width: "10em", }); $('#sortSelect').on('change', function() { var rows = $('#users-table tbody tr').get(); var sortBy = $(this).val(); rows.sort(function(a, b) { var keyA = $(a).find(sortBy === 'username' ? '.user-name' : 'td:last-child').text().trim(); var keyB = $(b).find(sortBy === 'username' ? '.user-name' : 'td:last-child').text().trim(); if(sortBy === 'total') { // Convert percentage string to number for comparison keyA = -parseFloat(keyA.replace('%', '')); keyB = -parseFloat(keyB.replace('%', '')); } else { keyA = keyA.toLowerCase(); keyB = keyB.toLowerCase(); } if(keyA < keyB) return -1; if(keyA > keyB) return 1; return 0; }); $.each(rows, function(index, row) { $('#users-table tbody').append(row); }); }); }); </script> {% endblock %} {% block middle_content %} <center><h2>{{title}}</h2></center> {% set lessons = course.lessons.all() %} {{_("Sort by")}}: <select id="sortSelect"> <option value="username">{{_("Username")}}</option> <option value="total">{{_("Score")}}</option> </select> <input type="text" id="search-input" placeholder="{{_('Search')}}" autofocus> <table class="table striped" id="users-table"> <thead> <tr> <th>{{_('Student')}}</th> {% if grades|length > 0 %} {% for lesson in lessons %} <th class="points"> <a href="{{url('course_lesson_detail', course.slug, lesson.id)}}"> {{ lesson.title }} <div class="point-denominator">{{lesson.points}}</div> </a> </th> {% endfor %} {% endif %} <th>{{_('Total')}}</th> </tr> </thead> <tbody> {% for student, grade in grades.items() %} <tr> <td class="user-name"> <div> {{link_user(student)}} </div> <div> {{student.first_name}} </div> </td> {% for lesson in lessons %} <td class="partial-score"> <a href="{{url('course_lesson_detail', course.slug, lesson.id)}}?user={{student.username}}"> {{ grade[lesson.id]['percentage'] | floatformat(0) }}% </a> </td> {% endfor %} <td style="font-weight: bold"> {{ grade['total']['percentage'] | floatformat(0) }}% </td> </tr> {% endfor %} </tbody> </table> {% endblock %}