{% extends 'qcg/base.html' %}
-{% load staticfiles bootstrap3 %}
+{% load staticfiles bootstrap3 query_string qcg_utils %}
{% block extra_css %}
<link href="{% static 'qcg/treegrid/css/jquery.treegrid.css' %}" rel="stylesheet">
firstDay: 1
}
});
-
- $('#toggle-advanced').click(function() {
- if($('#advanced-filters').attr('aria-expanded') == "false")
- $(this).text('« mniej');
- else
- $(this).text('więcej »');
- });
});
</script>
{% endblock %}
{% block container %}
+ <form id="simple-form" action="." role="search" class="pull-right">
+ {% get_params_as_hidden 'host' 'submission' 'finish' %}
+ <div style="display: inline-block; vertical-align: middle;">
+ <div class="input-group">
+ <input type="text" name="keywords" value="{{ filters.keywords.value|default:'' }}"
+ maxlength="500" class="form-control" placeholder="Wyszukaj frazę">
+ <span class="input-group-btn">
+ <button class="btn btn-default" type="submit" title="Szukaj">
+ <span class="glyphicon glyphicon-search"></span>
+ </button>
+ </span>
+ </div>
+ </div>
+ <div class="btn-group" data-toggle="buttons">
+ <label class="btn btn-default{% if checked_status.0 %} active{% endif %}" title="Aktywne">
+ <input name="status" value="0" type="checkbox" {% if checked_status.0 %}checked{% endif %} onchange="this.form.submit()">
+ <span class="glyphicon glyphicon-hourglass" aria-hidden="true"></span>
+ </label>
+ <label class="btn btn-default{% if checked_status.1 %} active{% endif %}" title="Zakończone">
+ <input name="status" value="1" type="checkbox" {% if checked_status.1 %}checked{% endif %} onchange="this.form.submit()">
+ <span class="glyphicon glyphicon-saved" aria-hidden="true"></span>
+ </label>
+ <label class="btn btn-default{% if checked_status.2 %} active{% endif %}" title="Niepowodzenia">
+ <input name="status" value="2" type="checkbox" {% if checked_status.2 %}checked{% endif %} onchange="this.form.submit()">
+ <span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
+ </label>
+ </div>
+ <a href="#advanced" data-toggle="modal" class="btn btn-default" title="Filtry zaawansowane" style="margin-left: 4px">
+ <span class="glyphicon glyphicon-option-horizontal"></span>
+ </a>
+ </form>
+
<h1 class="page-header">
{% block title %}Lista zadań{% endblock %}
</h1>
- <form action=".">
+ {% if selected_filters %}
<div class="row">
- <div class="col-lg-10 col-lg-offset-1">
- <div class="pull-right">
- <a id="toggle-advanced" href="#advanced-filters" data-toggle="collapse">
- {% if advanced %}
- « mniej
- {% else %}
- więcej »
- {% endif %}
- </a>
-
- <a href="." class="btn btn-default{% if not filters.data %} disabled{% endif %}">Wyczyść</a>
- <button type="submit" class="btn btn-default">Filtruj</button>
- </div>
- <div class="btn-toolbar">
- <div class="btn-group" data-toggle="buttons">
- {% for choice in filters.status %}
- <label class="btn btn-default{% if choice.is_checked %} active{% endif %}">
- <input type="checkbox" name="{{ choice.name }}" value="{{ choice.choice_value }}"
- {% if choice.is_checked %}checked{% endif %}> {{ choice.choice_label }}
- </label>
- {% endfor %}
- </div>
- <div class="btn-group" data-toggle="buttons">
- {% for choice in filters.host %}
- <label class="btn btn-default{% if choice.is_checked %} active{% endif %}">
- <input type="checkbox" name="{{ choice.name }}" value="{{ choice.choice_value }}"
- {% if choice.is_checked %}checked{% endif %}> {{ choice.choice_label }}
- </label>
- {% endfor %}
- </div>
- </div>
- </div>
- </div>
-{# <div id="advanced-filters" class="form-horizontal collapse in" aria-expanded="true" style="margin-top: 10px">#}
-{# <div class="row">#}
-{# {% bootstrap_field filters.keywords layout='horizontal' horizontal_label_class='col-md-5' horizontal_field_class='col-md-4' bound_css_class=' ' %}#}
-{# </div>#}
-{# <div class="row">#}
-{# {% bootstrap_field filters.status_exact layout='horizontal' horizontal_label_class='col-md-5' horizontal_field_class='col-md-4' bound_css_class=' ' %}#}
-{# </div>#}
-{# <div class="row">#}
-{# {% bootstrap_field filters.submission layout='horizontal' horizontal_label_class='col-md-5' horizontal_field_class='col-md-4' bound_css_class=' ' %}#}
-{# </div>#}
-{# <div class="row">#}
-{# {% bootstrap_field filters.finish layout='horizontal' horizontal_label_class='col-md-5' horizontal_field_class='col-md-4' bound_css_class=' ' %}#}
-{# </div>#}
-{# </div>#}
- <div id="advanced-filters" class="form-horizontal collapse{% if advanced %} in" aria-expanded="true"{% else %}" aria-expanded="false"{% endif %} style="margin-top: 10px">
- <div class="row">
- <div class="col-ld-1"></div>
- {% bootstrap_field filters.keywords layout='horizontal' form_group_class='form-group row col-lg-5 col-md-6' horizontal_label_class='col-md-4' horizontal_field_class='col-md-8' bound_css_class=' ' %}
- {% bootstrap_field filters.status_exact layout='horizontal' form_group_class='form-group row col-lg-5 col-md-6' horizontal_label_class='col-md-4' horizontal_field_class='col-md-8' bound_css_class=' ' %}
- </div>
- <div class="row">
- <div class="col-ld-1"></div>
- {% bootstrap_field filters.submission layout='horizontal' form_group_class='form-group row col-lg-5 col-md-6' horizontal_label_class='col-md-4' horizontal_field_class='col-md-8' bound_css_class=' ' %}
- {% bootstrap_field filters.finish layout='horizontal' form_group_class='form-group row col-lg-5 col-md-6' horizontal_label_class='col-md-4' horizontal_field_class='col-md-8' bound_css_class=' ' %}
+ <div class="col-md-offset-1 col-md-10">
+ <a href="." class="pull-right"><span class="text-muted small">Wyczyść wszystkie filtry</span></a>
+ <strong>Wybrane filtry:</strong>
+ {% for label, param, val in selected_filters %}
+ <span class="label label-primary">{{ label }} <a href="{% query_string param-=val %}" style="color: white"><span class="glyphicon glyphicon-remove"></span></a></span>
+ {% endfor %}
</div>
</div>
- </form>
-
- <hr />
+ <hr>
+ {% endif %}
<nav class="text-center" style="margin-bottom: 15px">
- <form action="{{ request.path }}" method="get" class="form-inline" role="form" style="display: inline-block">
+ <form action="." method="get" class="form-inline" role="form" style="display: inline-block">
<div class="input-group input-group-sm">
<span class="input-group-btn">
{% if page.has_previous %}
- <a href="{{ request.path }}?page={{ page.previous_page_number }}" class="btn btn-default">
+ <a href="{% query_string "page"=page.previous_page_number %}" class="btn btn-default">
{% else %}
<a href="#" class="btn btn-default disabled">
{% endif %}
<input type="text" class="form-control text-center" id="page" name="page" value="{{ page.number }}" style="width: 50px">
<span class="input-group-btn">
{% if page.has_next %}
- <a href="{{ request.path }}?page={{ page.next_page_number }}" class="btn btn-default">
+ <a href="{% query_string "page"=page.next_page_number %}" class="btn btn-default">
{% else %}
<a href="#" class="btn btn-default disabled">
{% endif %}
</div>
</form>
z
- <a href="{{ request.path }}?page={{ num_pages }}">{{ num_pages }}</a>
+ <a href="{% query_string "page"=num_pages %}">{{ num_pages }}</a>
</nav>
<table class="table table-hover tree">
<th>Koniec</th>
<th>Status</th>
<th>Host</th>
+ <th></th>
{# <th>Uwagi</th>#}
</tr>
</thead>
<td>{{ task.finish_time|date:"CUSTOM_DATETIME_FORMAT" }}</td>
<td>{{ task.get_status_display }}</td>
<td>{{ task.short_host_names|join:', ' }}</td>
+ <td><a href="{{ task.get_absolute_url }}">szczegóły ›</a></td>
</tr>
{% endwith %}
{% else %}
<td>{{ job.grouper.finish_time|date:"CUSTOM_DATETIME_FORMAT" }}</td>
<td>{{ job.grouper.get_status_display }}</td>
<td>-</td>
+ <td><a href="{{ job.grouper.get_absolute_url }}">szczegóły ›</a></td>
</tr>
{% for task in job.list %}
<td>{{ task.finish_time|date:"CUSTOM_DATETIME_FORMAT" }}</td>
<td>{{ task.get_status_display }}</td>
<td>{{ task.short_host_names|join:', ' }}</td>
+ <td><a href="{{ task.get_absolute_url }}">szczegóły ›</a></td>
</tr>
{% endfor %}
{% endifequal %}
</table>
{% if not page %}
- <div class="alert alert-info">Brak elementów</div>
+ <div class="alert alert-info">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ Brak zadań spełniających wybrane kryteria
+ </div>
{% endif %}
<nav class="text-center">
<ul class="pagination">
{% if page.has_previous %}
<li>
- <a href="{{ request.path }}?page={{ page.previous_page_number }}" aria-label="Previous">
+ <a href="{% query_string "page"=page.previous_page_number %}" aria-label="Previous">
<span aria-hidden="true"><span class="glyphicon glyphicon-chevron-left"></span> poprzednia</span>
</a>
{% endif %}
</li>
<li{% ifequal page.number 1 %} class="active"{% endifequal %}>
- <a href="{{ request.path }}?page=1">1</a>
+ <a href="{% query_string "page"=1 %}">1</a>
</li>
{% if pages_range.0 > 2 %}
{% for num in pages_range %}
<li{% ifequal page.number num %} class="active"{% endifequal %}>
- <a href="{{ request.path }}?page={{ num }}">{{ num }}</a>
+ <a href="{% query_string "page"=num %}">{{ num }}</a>
</li>
{% endfor %}
<li class="disabled"><span aria-hidden="true"><strong>z</strong></span></li>
- <li><a href="{{ request.path }}?page={{ num_pages }}">{{ num_pages }}</a></li>
+ <li><a href="{% query_string "page"=num_pages %}">{{ num_pages }}</a></li>
{% if page.has_next %}
<li>
- <a href="{{ request.path }}?page={{ page.next_page_number }}" aria-label="Next">
+ <a href="{% query_string "page"=page.next_page_number %}" aria-label="Next">
<span aria-hidden="true">następna <span class="glyphicon glyphicon-chevron-right"></span></span>
</a>
{% endif %}
</ul>
</nav>
+ <!-- Modal -->
+ <div class="modal fade" id="advanced" tabindex="-1" role="dialog" aria-labelledby="modal-label" aria-hidden="true">
+ <div class="modal-dialog modal-lg">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
+ <h4 class="modal-title" id="modal-label">Filtry zaawansowane</h4>
+ </div>
+ <div class="modal-body">
+ <form id="advanced-form" action="." class="form-horizontal">
+ {% bootstrap_field filters.keywords layout='horizontal' bound_css_class=' ' %}
+ <div class="form-group">
+ <label class="col-md-4 control-label">Status</label>
+ <div class="col-md-8">
+ <div class="btn-group" data-toggle="buttons">
+ {% for choice in filters.status %}
+ <label class="btn btn-default{% if choice.is_checked %} active{% endif %}">
+ <input type="checkbox" name="{{ choice.name }}" value="{{ choice.choice_value }}"
+ {% if choice.is_checked %}checked{% endif %}> {{ choice.choice_label }}
+ </label>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-md-4 control-label">Host</label>
+ <div class="col-md-8">
+ <div class="btn-group" data-toggle="buttons">
+ {% for choice in filters.host %}
+ <label class="btn btn-default{% if choice.is_checked %} active{% endif %}">
+ <input type="checkbox" name="{{ choice.name }}" value="{{ choice.choice_value }}"
+ {% if choice.is_checked %}checked{% endif %}> {{ choice.choice_label }}
+ </label>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+ {% bootstrap_field filters.submission layout='horizontal' bound_css_class=' ' %}
+ {% bootstrap_field filters.finish layout='horizontal' bound_css_class=' ' %}
+ </form>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Anuluj</button>
+ <a href="." class="btn btn-warning">Wyczyść filtry</a>
+ <button type="submit" class="btn btn-primary" form="advanced-form">Filtruj</button>
+ </div>
+ </div>
+ </div>
+ </div>
+
{% endblock container %}