mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-27 10:22:17 +00:00
FEAT: Improve 'omni'search
- Partialised template - Added to assets header - Added ability to search assets/suppliers - Improved selection logic - Have it display current query
This commit is contained in:
@@ -28,16 +28,6 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block extra-head %}{% endblock %}
|
||||
<script>
|
||||
document.body.addEventListener('keydown', function(e) {
|
||||
if(e.keyCode == 13 && (e.metaKey || e.ctrlKey)) {
|
||||
var target = e.target;
|
||||
if(target.form) {
|
||||
target.form.submit();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -132,6 +122,16 @@
|
||||
});
|
||||
</script>
|
||||
<script src="{% static 'js/dark-mode-switch.min.js' %}"></script>
|
||||
<script>
|
||||
document.body.addEventListener('keydown', function(e) {
|
||||
if(e.keyCode == 13 && (e.metaKey || e.ctrlKey)) {
|
||||
var target = e.target;
|
||||
if(target.form) {
|
||||
target.form.submit();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{% block js %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
|
||||
38
templates/partials/search.html
Normal file
38
templates/partials/search.html
Normal file
@@ -0,0 +1,38 @@
|
||||
{% if user.is_authenticated %}
|
||||
<form id="searchForm" class="form-inline flex-nowrap mx-3" role="form" method="GET">
|
||||
<div class="input-group input-group-sm flex-nowrap">
|
||||
<div class="input-group-prepend">
|
||||
<input id="id_search_input" type="search" name="q" class="form-control form-control-sm" placeholder="Search..." value="{{ request.GET.q }}" />
|
||||
</div>
|
||||
<select id="search-options" class="custom-select form-control">
|
||||
<option selected data-action="{% url 'event_archive' %}" href="#">Events</option>
|
||||
<option data-action="{% url 'person_list' %}" href="#">People</option>
|
||||
<option data-action="{% url 'organisation_list' %}" href="#">Organisations</option>
|
||||
<option data-action="{% url 'venue_list' %}" href="#">Venues</option>
|
||||
{% if perms.RIGS.view_invoice %}
|
||||
<option data-action="{% url 'invoice_archive' %}" href="#">Invoices</option>
|
||||
{% endif %}
|
||||
<option data-action="{% url 'asset_list' %}" href="#">Assets</option>
|
||||
<option data-action="{% url 'supplier_list' %}" href="#">Suppliers</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary form-control form-control-sm btn-sm">Search</button>
|
||||
<a href="{% url 'search_help' %}" class="nav-link modal-href btn-sm"><span class="fas fa-question-circle"></span></a>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
{% block js %}
|
||||
<script>
|
||||
$('#search-options').change(function(){
|
||||
$('#searchForm').attr('action', $(this).children('option:selected').data('action'));
|
||||
});
|
||||
$(document).ready(function(){
|
||||
$('#id_search_input').keypress(function (e) {
|
||||
if (e.which == 13) {
|
||||
$('#searchForm').attr('action', $('#search-options option').first().data('action')).submit();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
75
templates/search_help.html
Normal file
75
templates/search_help.html
Normal file
@@ -0,0 +1,75 @@
|
||||
{% extends request.is_ajax|yesno:"base_ajax.html,base.html" %}
|
||||
|
||||
{% block title %}Search Help{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
{% if not request.is_ajax %}
|
||||
<div class="col-sm-12">
|
||||
<h1>Search Help</h1>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="col-sm-12">
|
||||
<div class="card card-default">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Searching Events</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Searches for entire query in:
|
||||
<span class="badge badge-dark">name</span>
|
||||
<span class="badge badge-dark">description</span> and
|
||||
<span class="badge badge-dark">notes</span>
|
||||
</p>
|
||||
<p>You can search for an event by <span class="badge badge-dark">event_id</span> by entering an integer, or using the format <code>N01234</code></p>
|
||||
<p>On the search results page you can also specify the date range for the <span class="badge badge-dark">start_date</span> of the event</p>
|
||||
<p>Events are sorted in reverse <span class="badge badge-dark">start_date</span> order (most recent events at the top)</p>
|
||||
</div>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Searching People/Organisations/Venues/Suppliers</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Searches for entire search phrase in:
|
||||
<span class="badge badge-dark">name</span>
|
||||
<span class="badge badge-dark">email</span>
|
||||
<span class="badge badge-dark">address</span>
|
||||
<span class="badge badge-dark">notes</span> and
|
||||
<span class="badge badge-dark">phone</span>
|
||||
</p>
|
||||
<p>You can search for an entry by <span class="badge badge-dark">id</span> by entering an integer</p>
|
||||
<p>Entries are sorted in alphabetical order by <span class="badge badge-dark">name</span></p>
|
||||
</div>
|
||||
{% if perms.RIGS.view_invoice %}
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Searching Invoices</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Searches for entire search phrase in:
|
||||
<span class="badge badge-dark">event__name</span>
|
||||
</p>
|
||||
<p>You can search for an event's invoice by entering the <span class="badge badge-dark">event_id</span> using the format <code>N01234</code></p>
|
||||
<p>You can search for an invoice by <span class="badge badge-dark">invoice_id</span> using the format <code>#01234</code></p>
|
||||
<p>Entering a raw integer will search by both <span class="badge badge-dark">invoice_id</span> and <span class="badge badge-dark">event_id</span></p>
|
||||
<p>Entries are sorted in reverse <span class="badge badge-dark">invoice_date</span> order</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Searching Assets</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Searches for entire search phrase in:
|
||||
<span class="badge badge-dark">description</span> and
|
||||
<span class="badge badge-dark">serial number</span>
|
||||
</p>
|
||||
<p>
|
||||
Will also attempt to exact match <span class="badge badge-dark">asset ID</span>
|
||||
</p>
|
||||
<p>Entries are sorted in alphanumerical order by <span class="badge badge-dark">asset ID</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user