hospital-management/templates/hr/schedule_assignment_list.html
2025-08-12 13:33:25 +03:00

600 lines
36 KiB
HTML

{% extends "base.html" %}
{% load static %}
{% block title %}Schedule Assignments | HR Management{% endblock %}
{% block css %}
<!-- DataTables CSS -->
<link href="{% static 'plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css' %}" rel="stylesheet" />
<link href="{% static 'plugins/datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css' %}" rel="stylesheet" />
<!-- DateRangePicker CSS -->
<link href="{% static 'plugins/bootstrap-daterangepicker/daterangepicker.css' %}" rel="stylesheet" />
<style>
.filter-card {
background-color: #f8f9fa;
border-radius: 5px;
padding: 15px;
margin-bottom: 20px;
}
.shift-type {
display: inline-block;
width: 12px;
height: 12px;
border-radius: 50%;
margin-right: 5px;
}
.shift-morning {
background-color: #28a745;
}
.shift-afternoon {
background-color: #fd7e14;
}
.shift-night {
background-color: #6f42c1;
}
.shift-full {
background-color: #007bff;
}
.assignment-time {
font-size: 0.85rem;
color: #6c757d;
}
.view-toggle .btn {
min-width: 100px;
}
.assignment-card {
transition: all 0.3s ease;
}
.assignment-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
</style>
{% endblock %}
{% block content %}
<!-- begin breadcrumb -->
<ol class="breadcrumb float-xl-end">
<li class="breadcrumb-item"><a href="{% url 'core:dashboard' %}">Home</a></li>
<li class="breadcrumb-item"><a href="{% url 'hr:dashboard' %}">HR</a></li>
<li class="breadcrumb-item active">Schedule Assignments</li>
</ol>
<!-- end breadcrumb -->
<!-- begin page-header -->
<h1 class="page-header">Schedule Assignments <small>view and manage employee shift assignments</small></h1>
<!-- end page-header -->
<!-- begin row -->
<div class="row">
<!-- begin col-12 -->
<div class="col-xl-12">
<!-- begin panel -->
<div class="panel panel-inverse">
<!-- begin panel-heading -->
<div class="panel-heading">
<h4 class="panel-title">Schedule Assignments</h4>
<div class="panel-heading-btn">
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
<a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>
<a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>
</div>
</div>
<!-- end panel-heading -->
<!-- begin panel-body -->
<div class="panel-body">
<!-- Filters -->
<div class="filter-card">
<form method="get" id="filterForm">
<div class="row g-3">
<div class="col-md-3">
<label for="schedule" class="form-label">Schedule</label>
<select class="form-select" id="schedule" name="schedule">
<option value="">All Schedules</option>
{% for schedule in schedules %}
<option value="{{ schedule.id }}" {% if selected_schedule == schedule.id %}selected{% endif %}>
{{ schedule.name }}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-3">
<label for="employee" class="form-label">Employee</label>
<select class="form-select" id="employee" name="employee">
<option value="">All Employees</option>
{% for employee in employees %}
<option value="{{ employee.id }}" {% if selected_employee == employee.id %}selected{% endif %}>
{{ employee.get_full_name }}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-3">
<label for="department" class="form-label">Department</label>
<select class="form-select" id="department" name="department">
<option value="">All Departments</option>
{% for dept in departments %}
<option value="{{ dept.id }}" {% if selected_department == dept.id %}selected{% endif %}>
{{ dept.name }}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-3">
<label for="shift_type" class="form-label">Shift Type</label>
<select class="form-select" id="shift_type" name="shift_type">
<option value="">All Shifts</option>
<option value="MORNING" {% if selected_shift_type == 'MORNING' %}selected{% endif %}>Morning</option>
<option value="AFTERNOON" {% if selected_shift_type == 'AFTERNOON' %}selected{% endif %}>Afternoon</option>
<option value="NIGHT" {% if selected_shift_type == 'NIGHT' %}selected{% endif %}>Night</option>
<option value="FULL_DAY" {% if selected_shift_type == 'FULL_DAY' %}selected{% endif %}>Full Day</option>
</select>
</div>
<div class="col-md-4">
<label for="date_range" class="form-label">Date Range</label>
<input type="text" class="form-control" id="date_range" name="date_range" value="{{ date_range }}">
</div>
<div class="col-md-8">
<label class="form-label">&nbsp;</label>
<div class="d-flex">
<button type="submit" class="btn btn-primary me-2">
<i class="fas fa-filter"></i> Apply Filters
</button>
<a href="{% url 'hr:schedule_assignment_list' %}" class="btn btn-secondary me-2">
<i class="fas fa-times"></i> Clear Filters
</a>
<div class="dropdown ms-auto">
<button class="btn btn-outline-secondary dropdown-toggle" type="button" id="exportDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-download"></i> Export
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="exportDropdown">
<li><a class="dropdown-item" href="#" id="export-pdf"><i class="fas fa-file-pdf"></i> PDF</a></li>
<li><a class="dropdown-item" href="#" id="export-excel"><i class="fas fa-file-excel"></i> Excel</a></li>
<li><a class="dropdown-item" href="#" id="export-csv"><i class="fas fa-file-csv"></i> CSV</a></li>
</ul>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="d-flex justify-content-between mb-3">
<div>
<a href="{% url 'hr:schedule_assignment_create' %}" class="btn btn-primary">
<i class="fas fa-plus"></i> Create Assignment
</a>
<div class="btn-group ms-2 view-toggle" role="group">
<button type="button" class="btn btn-outline-secondary active" id="table-view-btn">
<i class="fas fa-table"></i> Table
</button>
<button type="button" class="btn btn-outline-secondary" id="card-view-btn">
<i class="fas fa-th-large"></i> Cards
</button>
</div>
</div>
<div>
<form method="get" class="d-flex">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search assignments..." name="search" value="{{ search }}">
<button class="btn btn-outline-secondary" type="submit">
<i class="fas fa-search"></i>
</button>
</div>
</form>
</div>
</div>
<!-- Table View -->
<div id="table-view">
<table id="assignments-table" class="table table-striped table-bordered align-middle">
<thead>
<tr>
<th>Employee</th>
<th>Schedule</th>
<th>Date</th>
<th>Shift</th>
<th>Hours</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for assignment in assignments %}
<tr>
<td>
<div class="d-flex align-items-center">
<div class="avatar avatar-sm me-2">
<img src="{% static 'img/user/default-avatar.jpg' %}" alt="{{ assignment.employee.get_full_name }}" class="rounded-circle">
</div>
<div>
<a href="{% url 'hr:employee_detail' assignment.employee.id %}">
{{ assignment.employee.get_full_name }}
</a>
<small class="d-block text-muted">{{ assignment.employee.job_title }}</small>
</div>
</div>
</td>
<td>
<a href="{% url 'hr:schedule_detail' assignment.schedule.id %}">
{{ assignment.schedule.name }}
</a>
</td>
<td>{{ assignment.date|date:"M d, Y" }}</td>
<td>
<div>
<span class="shift-type
{% if assignment.shift_type == 'MORNING' %}shift-morning
{% elif assignment.shift_type == 'AFTERNOON' %}shift-afternoon
{% elif assignment.shift_type == 'NIGHT' %}shift-night
{% else %}shift-full{% endif %}"></span>
{{ assignment.get_shift_type_display }}
</div>
<div class="assignment-time">
{{ assignment.start_time|time:"H:i" }} - {{ assignment.end_time|time:"H:i" }}
</div>
</td>
<td>{{ assignment.hours }} hrs</td>
<td>
{% if assignment.status == 'SCHEDULED' %}
<span class="badge bg-primary">Scheduled</span>
{% elif assignment.status == 'COMPLETED' %}
<span class="badge bg-success">Completed</span>
{% elif assignment.status == 'ABSENT' %}
<span class="badge bg-danger">Absent</span>
{% elif assignment.status == 'LATE' %}
<span class="badge bg-warning">Late</span>
{% else %}
<span class="badge bg-secondary">{{ assignment.status }}</span>
{% endif %}
</td>
<td>
<div class="btn-group">
<a href="{% url 'hr:schedule_assignment_update' assignment.id %}" class="btn btn-sm btn-primary">
<i class="fas fa-edit"></i>
</a>
<button type="button" class="btn btn-sm btn-danger" data-bs-toggle="modal" data-bs-target="#deleteModal{{ assignment.id }}">
<i class="fas fa-trash"></i>
</button>
</div>
<!-- Delete Modal -->
<div class="modal fade" id="deleteModal{{ assignment.id }}" tabindex="-1" aria-labelledby="deleteModalLabel{{ assignment.id }}" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalLabel{{ assignment.id }}">Confirm Deletion</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Are you sure you want to delete this assignment for {{ assignment.employee.get_full_name }} on {{ assignment.date|date:"M d, Y" }}?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<a href="{% url 'hr:schedule_assignment_delete' assignment.id %}" class="btn btn-danger">Delete</a>
</div>
</div>
</div>
</div>
</td>
</tr>
{% empty %}
<tr>
<td colspan="7" class="text-center">No assignments found.</td>
</tr>
{% endfor %}
</tbody>
</table>
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="First">
<span aria-hidden="true">&laquo;&laquo;</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<li class="page-item active"><a class="page-link" href="#">{{ num }}</a></li>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<li class="page-item"><a class="page-link" href="?page={{ num }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}">{{ num }}</a></li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="Last">
<span aria-hidden="true">&raquo;&raquo;</span>
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
</div>
<!-- Card View -->
<div id="card-view" class="row g-3" style="display: none;">
{% for assignment in assignments %}
<div class="col-md-6 col-lg-4">
<div class="card assignment-card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title mb-0">{{ assignment.employee.get_full_name }}</h5>
{% if assignment.status == 'SCHEDULED' %}
<span class="badge bg-primary">Scheduled</span>
{% elif assignment.status == 'COMPLETED' %}
<span class="badge bg-success">Completed</span>
{% elif assignment.status == 'ABSENT' %}
<span class="badge bg-danger">Absent</span>
{% elif assignment.status == 'LATE' %}
<span class="badge bg-warning">Late</span>
{% else %}
<span class="badge bg-secondary">{{ assignment.status }}</span>
{% endif %}
</div>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<div class="avatar avatar-md me-3">
<img src="{% static 'img/user/default-avatar.jpg' %}" alt="{{ assignment.employee.get_full_name }}" class="rounded-circle">
</div>
<div>
<p class="card-text mb-0">{{ assignment.employee.job_title }}</p>
<small class="text-muted">
{% if assignment.employee.department %}
{{ assignment.employee.department.name }}
{% else %}
No Department
{% endif %}
</small>
</div>
</div>
<div class="mb-3">
<strong>Schedule:</strong>
<a href="{% url 'hr:schedule_detail' assignment.schedule.id %}">
{{ assignment.schedule.name }}
</a>
</div>
<div class="mb-3">
<strong>Date:</strong> {{ assignment.date|date:"M d, Y" }}
</div>
<div class="mb-3">
<strong>Shift:</strong>
<div class="mt-1">
<span class="shift-type
{% if assignment.shift_type == 'MORNING' %}shift-morning
{% elif assignment.shift_type == 'AFTERNOON' %}shift-afternoon
{% elif assignment.shift_type == 'NIGHT' %}shift-night
{% else %}shift-full{% endif %}"></span>
{{ assignment.get_shift_type_display }}
<span class="ms-2">{{ assignment.start_time|time:"H:i" }} - {{ assignment.end_time|time:"H:i" }}</span>
</div>
</div>
<div class="mb-3">
<strong>Hours:</strong> {{ assignment.hours }} hrs
</div>
{% if assignment.notes %}
<div class="mb-3">
<strong>Notes:</strong>
<p class="mb-0">{{ assignment.notes|truncatechars:100 }}</p>
</div>
{% endif %}
</div>
<div class="card-footer">
<div class="btn-group w-100">
<a href="{% url 'hr:schedule_assignment_update' assignment.id %}" class="btn btn-sm btn-primary">
<i class="fas fa-edit"></i> Edit
</a>
<button type="button" class="btn btn-sm btn-danger" data-bs-toggle="modal" data-bs-target="#deleteModalCard{{ assignment.id }}">
<i class="fas fa-trash"></i> Delete
</button>
</div>
<!-- Delete Modal -->
<div class="modal fade" id="deleteModalCard{{ assignment.id }}" tabindex="-1" aria-labelledby="deleteModalCardLabel{{ assignment.id }}" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalCardLabel{{ assignment.id }}">Confirm Deletion</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Are you sure you want to delete this assignment for {{ assignment.employee.get_full_name }} on {{ assignment.date|date:"M d, Y" }}?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<a href="{% url 'hr:schedule_assignment_delete' assignment.id %}" class="btn btn-danger">Delete</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% empty %}
<div class="col-12">
<div class="alert alert-info">
No assignments found.
</div>
</div>
{% endfor %}
<!-- Pagination for Card View -->
{% if is_paginated %}
<div class="col-12 mt-3">
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="First">
<span aria-hidden="true">&laquo;&laquo;</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<li class="page-item active"><a class="page-link" href="#">{{ num }}</a></li>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<li class="page-item"><a class="page-link" href="?page={{ num }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}">{{ num }}</a></li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if search %}&search={{ search }}{% endif %}{% if selected_schedule %}&schedule={{ selected_schedule }}{% endif %}{% if selected_employee %}&employee={{ selected_employee }}{% endif %}{% if selected_department %}&department={{ selected_department }}{% endif %}{% if selected_shift_type %}&shift_type={{ selected_shift_type }}{% endif %}{% if date_range %}&date_range={{ date_range }}{% endif %}" aria-label="Last">
<span aria-hidden="true">&raquo;&raquo;</span>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
{% endif %}
</div>
</div>
<!-- end panel-body -->
</div>
<!-- end panel -->
</div>
<!-- end col-12 -->
</div>
<!-- end row -->
{% endblock %}
{% block js %}
<!-- DataTables JS -->
<script src="{% static 'plugins/datatables.net/js/jquery.dataTables.min.js' %}"></script>
<script src="{% static 'plugins/datatables.net-bs5/js/dataTables.bootstrap5.min.js' %}"></script>
<script src="{% static 'plugins/datatables.net-responsive/js/dataTables.responsive.min.js' %}"></script>
<script src="{% static 'plugins/datatables.net-responsive-bs5/js/responsive.bootstrap5.min.js' %}"></script>
<!-- DateRangePicker JS -->
<script src="{% static 'plugins/moment/min/moment.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-daterangepicker/daterangepicker.js' %}"></script>
<!-- Select2 JS -->
<script src="{% static 'plugins/select2/dist/js/select2.min.js' %}"></script>
<script>
$(document).ready(function() {
// Initialize DataTable
var table = $('#assignments-table').DataTable({
dom: "<'row'<'col-md-6'l><'col-md-6'f>><'row'<'col-md-12't>><'row'<'col-md-5'i><'col-md-7'p>>",
lengthMenu: [10, 25, 50, 100],
responsive: true,
paging: false, // We're using Django's pagination
searching: false, // We're using our own search
info: false // We're using Django's pagination info
});
// Initialize DateRangePicker
$('#date_range').daterangepicker({
opens: 'left',
autoUpdateInput: false,
locale: {
cancelLabel: 'Clear',
format: 'YYYY-MM-DD'
}
});
$('#date_range').on('apply.daterangepicker', function(ev, picker) {
$(this).val(picker.startDate.format('YYYY-MM-DD') + ' - ' + picker.endDate.format('YYYY-MM-DD'));
});
$('#date_range').on('cancel.daterangepicker', function(ev, picker) {
$(this).val('');
});
// Initialize Select2
$('#schedule, #employee, #department').select2({
placeholder: "Select an option",
allowClear: true
});
// View toggle functionality
$('#table-view-btn').click(function() {
$(this).addClass('active');
$('#card-view-btn').removeClass('active');
$('#table-view').show();
$('#card-view').hide();
localStorage.setItem('assignment-view', 'table');
});
$('#card-view-btn').click(function() {
$(this).addClass('active');
$('#table-view-btn').removeClass('active');
$('#table-view').hide();
$('#card-view').show();
localStorage.setItem('assignment-view', 'card');
});
// Load saved view preference
var savedView = localStorage.getItem('assignment-view');
if (savedView === 'card') {
$('#card-view-btn').click();
}
// Export functionality
$('#export-pdf').click(function(e) {
e.preventDefault();
var url = '{% url "hr:export_assignments" %}?format=pdf';
var filterParams = $('#filterForm').serialize();
if (filterParams) {
url += '&' + filterParams;
}
window.location.href = url;
});
$('#export-excel').click(function(e) {
e.preventDefault();
var url = '{% url "hr:export_assignments" %}?format=excel';
var filterParams = $('#filterForm').serialize();
if (filterParams) {
url += '&' + filterParams;
}
window.location.href = url;
});
$('#export-csv').click(function(e) {
e.preventDefault();
var url = '{% url "hr:export_assignments" %}?format=csv';
var filterParams = $('#filterForm').serialize();
if (filterParams) {
url += '&' + filterParams;
}
window.location.href = url;
});
});
</script>
{% endblock %}