hack4impact/flask-base

View on GitHub
app/templates/admin/registered_users.html

Summary

Maintainability
Test Coverage
{% extends 'layouts/base.html' %}

{% block content %}
    <div class="ui stackable grid container">
        <div class="sixteen wide tablet twelve wide computer centered column">
            <a class="ui basic compact button" href="{{ url_for('admin.index') }}">
                <i class="caret left icon"></i>
                Back to dashboard
            </a>
            <h2 class="ui header">
                Registered Users
                <div class="sub header">
                    View and manage currently registered users.
                </div>
            </h2>

            <div class="ui menu">
                <div id="select-role" class="ui dropdown item">
                    <div class="text">
                        All account types
                    </div>
                    <i class="dropdown icon"></i>
                    <div class="menu">
                        <div class="item" data-value="">All account types</div>
                        {% for r in roles %}
                            <div class="item" data-value="{{ r.name }}">{{ r.name }}s</div>
                        {% endfor %}
                    </div>
                </div>
                <div class="ui right search item">
                    <div class="ui transparent icon input">
                        <input id="search-users" type="text" placeholder="Search users…">
                        <i class="search icon"></i>
                    </div>
                </div>
            </div>

            {# Use overflow-x: scroll so that mobile views don't freak out
             # when the table is too wide #}
            <div style="overflow-x: scroll;">
                <table class="ui searchable sortable unstackable selectable celled table">
                    <thead>
                        <tr>
                            <th>First name</th>
                            <th class="sorted ascending">Last name</th>
                            <th>Email address</th>
                            <th>Account type</th>
                        </tr>
                    </thead>
                    <tbody>
                    {% for u in users | sort(attribute='last_name') %}
                        <tr onclick="window.location.href = '{{ url_for('admin.user_info', user_id=u.id) }}';">

                            <td>{{ u.first_name }}</td>
                            <td>{{ u.last_name }}</td>
                            <td>{{ u.email }}</td>
                            <td class="user role">{{ u.role.name }}</td>
                        </tr>
                    {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <script type="text/javascript">
        $(document).ready(function () {
            $('#search-users').keyup(function () {
                var searchText = $(this).val();
                if (searchText.length > 0) {
                    $('tbody td:icontains(' + searchText + ')').addClass('positive');
                    $('td.positive').not(':icontains(' + searchText + ')').removeClass('positive');
                    $('tbody td').not(':icontains(' + searchText + ')').closest('tr').addClass('hidden').hide();
                    $('tr.hidden:icontains(' + searchText + ')').removeClass('hidden').show();
                } else {
                    $('td.positive').removeClass('positive');
                    $('tr.hidden').removeClass('hidden').show();
                }
            });

            $('#select-role').dropdown({
                onChange: function (value, text, $selectedItem) {
                    $('td.user.role:contains(' + value + ')').closest('tr').removeClass('hidden').show();
                    $('td.user.role').not(':contains(' + value + ')').closest('tr').addClass('hidden').hide();
                }
            });
        });
    </script>
{% endblock %}