Merge pull request #1900 from SchrodingersGat/part-image-search

Make the part thumbnail selection window searchable
This commit is contained in:
Oliver 2021-08-04 12:28:52 +10:00 committed by GitHub
commit 7911801dbf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 7 deletions

View File

@ -338,9 +338,7 @@ class PartThumbs(generics.ListAPIView):
- Images may be used for multiple parts!
"""
queryset = self.get_queryset()
# TODO - We should return the thumbnails here, not the full image!
queryset = self.filter_queryset(self.get_queryset())
# Return the most popular parts first
data = queryset.values(
@ -349,6 +347,19 @@ class PartThumbs(generics.ListAPIView):
return Response(data)
filter_backends = [
filters.SearchFilter,
]
search_fields = [
'name',
'description',
'IPN',
'revision',
'keywords',
'category__name',
]
class PartThumbsUpdate(generics.RetrieveUpdateAPIView):
""" API endpoint for updating Part thumbnails"""

View File

@ -415,13 +415,16 @@
// Callback when the image-selection modal form is displayed
// Populate the form with image data (requested via AJAX)
$("#modal-form").find("#image-select-table").bootstrapTable({
pagination: true,
pageSize: 25,
$("#modal-form").find("#image-select-table").inventreeTable({
url: "{% url 'api-part-thumbs' %}",
showHeader: false,
showColumns: false,
clickToSelect: true,
sidePagination: 'server',
singleSelect: true,
formatNoMatches: function() {
return '{% trans "No matching images found" %}';
},
columns: [
{
checkbox: true,
@ -429,6 +432,7 @@
{
field: 'image',
title: 'Image',
searchable: true,
formatter: function(value, row, index, field) {
return "<img src='/media/" + value + "' class='grid-image'/>"
}

View File

@ -187,7 +187,7 @@ $.fn.inventreeTable = function(options) {
if (!options.disablePagination) {
options.pagination = true;
options.paginationVAlign = options.paginationVAlign || 'both';
options.pageSize = inventreeLoad(varName, 25);
options.pageSize = options.pageSize || inventreeLoad(varName, 25);
options.pageList = [25, 50, 100, 250, 'all'];
options.totalField = 'count';
options.dataField = 'results';