Merge pull request #367 from SchrodingersGat/search-page

Search page
This commit is contained in:
Oliver 2019-05-24 21:38:54 +10:00 committed by GitHub
commit 970257d423
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 101 additions and 9 deletions

View File

@ -113,6 +113,14 @@ class SupplierPartList(generics.ListCreateAPIView):
'supplier' 'supplier'
] ]
search_fields = [
'SKU',
'supplier__name',
'manufacturer',
'description',
'MPN',
]
class SupplierPartDetail(generics.RetrieveUpdateDestroyAPIView): class SupplierPartDetail(generics.RetrieveUpdateDestroyAPIView):
""" API endpoint for detail view of SupplierPart object """ API endpoint for detail view of SupplierPart object

View File

@ -85,6 +85,7 @@ class SupplierPartSerializer(serializers.ModelSerializer):
'supplier_logo', 'supplier_logo',
'SKU', 'SKU',
'manufacturer', 'manufacturer',
'description',
'MPN', 'MPN',
'URL', 'URL',
'pricing', 'pricing',

View File

@ -137,14 +137,14 @@ function loadBomTable(table, options) {
if (!options.editable) { if (!options.editable) {
cols.push( cols.push(
{ {
field: 'sub_part_detail.available_stock', field: 'sub_part_detail.total_stock',
title: 'Available', title: 'Available',
searchable: false, searchable: false,
sortable: true, sortable: true,
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
var text = ""; var text = "";
if (row.quantity < row.sub_part_detail.available_stock) if (row.quantity < row.sub_part_detail.total_stock)
{ {
text = "<span class='label label-success'>" + value + "</span>"; text = "<span class='label label-success'>" + value + "</span>";
} }

View File

@ -15,9 +15,11 @@ InvenTree | Search Results
</div> </div>
<br><br> <br><br>
<h3>Parts <span id='part-result-count'></span></h3> <hr>
<table class='table table-striped table-condensed' data-toolbar="#button-toolbar" id='part-results-table'>
</table> {% include "InvenTree/search_parts.html" with collapse_id='parts' %}
{% include "InvenTree/search_supplier_parts.html" with collapse_id='supplier_parts' %}
{% endblock %} {% endblock %}
@ -29,10 +31,28 @@ InvenTree | Search Results
{% block js_ready %} {% block js_ready %}
{{ block.super }} {{ block.super }}
$("#part-results-table").on('load-success.bs.table', function() { function onSearchResults(table, output) {
var n = $("#part-results-table").bootstrapTable('getData').length; $(table).on('load-success.bs.table', function() {
$("#part-result-count").html("(found " + n + " results)"); var n = $(table).bootstrapTable('getData').length;
});
var text = '';
if (n == 0) {
text = '<i>No results</i>'
} else {
text = n + ' result';
if (n > 1) {
text += 's';
}
}
$(output).html(text);
});
}
onSearchResults('#part-results-table', '#part-result-count');
onSearchResults('#supplier-part-results-table', '#supplier-part-result-count');
loadPartTable("#part-results-table", loadPartTable("#part-results-table",
"{% url 'api-part-list' %}", "{% url 'api-part-list' %}",
@ -43,5 +63,39 @@ InvenTree | Search Results
allowInactive: true, allowInactive: true,
} }
); );
$("#supplier-part-results-table").bootstrapTable({
url: "{% url 'api-part-supplier-list' %}",
queryParams: {
search: "{{ query }}",
},
pagination: true,
pageSize: 25,
search: true,
columns: [
{
field: 'supplier_name',
title: 'Supplier',
formatter: function(value, row, index, field) {
return imageHoverIcon(row.supplier_logo) + renderLink(value, '/company/' + row.supplier + '/');
}
},
{
field: 'SKU',
title: 'SKU',
formatter: function(value, row, index, field) {
return renderLink(value, row.url);
}
},
{
field: 'manufacturer',
title: 'Manufacturer',
},
{
field: 'MPN',
title: 'MPN',
}
]
});
{% endblock %} {% endblock %}

View File

@ -0,0 +1,14 @@
{% extends "collapse.html" %}
{% block collapse_title %}
<h4>Parts</h4>
{% endblock %}
{% block collapse_heading %}
<h4><span id='part-result-count'>{% include "InvenTree/searching.html" %}</span></h4>
{% endblock %}
{% block collapse_content %}
<table class='table table-striped table-condensed' data-toolbar="#button-toolbar" id='part-results-table'>
</table>
{% endblock %}

View File

@ -0,0 +1,14 @@
{% extends "collapse.html" %}
{% block collapse_title %}
<h4>Supplier Parts</h4>
{% endblock %}
{% block collapse_heading %}
<h4><span id='supplier-part-result-count'>{% include "InvenTree/searching.html" %}</span></h4>
{% endblock %}
{% block collapse_content %}
<table class='table table-striped table-condensed' data-toolbar="#button-toolbar" id='supplier-part-results-table'>
</table>
{% endblock %}

View File

@ -0,0 +1 @@
<span class='glyphicon glyphicon-refresh glyphicon-refresh-animate'></span> Searching...