mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Refactoring
This commit is contained in:
parent
f1876ae28b
commit
cc1501283d
@ -42,7 +42,7 @@ function openSearchPanel() {
|
||||
var searchRequests = [];
|
||||
var searchInputTimer = null;
|
||||
var searchText = null;
|
||||
var searchTextPrevious = null;
|
||||
var searchTextCurrent = null;
|
||||
var searchQueries = [];
|
||||
|
||||
function searchTextChanged(event) {
|
||||
@ -56,7 +56,7 @@ function searchTextChanged(event) {
|
||||
|
||||
function updateSearch() {
|
||||
|
||||
if (searchText == searchTextPrevious) {
|
||||
if (searchText == searchTextCurrent) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ function updateSearch() {
|
||||
return;
|
||||
}
|
||||
|
||||
searchTextPrevious = searchText;
|
||||
searchTextCurrent = searchText;
|
||||
|
||||
// Cancel any previous AJAX requests
|
||||
searchQueries.forEach(function(query) {
|
||||
@ -79,53 +79,31 @@ function updateSearch() {
|
||||
$('#offcanvas-search').find('#search-pending').show();
|
||||
|
||||
// Search for matching parts
|
||||
searchQueries.push(inventreeGet(
|
||||
`{% url "api-part-list" %}`,
|
||||
addSearchQuery(
|
||||
'part',
|
||||
'{% trans "Parts" %}',
|
||||
'{% url "api-part-list" %}',
|
||||
{},
|
||||
renderPart,
|
||||
{
|
||||
search: searchText,
|
||||
limit: 10,
|
||||
offset: 0,
|
||||
},
|
||||
{
|
||||
success: function(response) {
|
||||
addSearchResults(
|
||||
'part',
|
||||
response.results,
|
||||
'{% trans "Parts" %}',
|
||||
renderPart,
|
||||
{
|
||||
show_stock_data: false,
|
||||
url: '/part',
|
||||
}
|
||||
);
|
||||
}
|
||||
url: '/part',
|
||||
}
|
||||
));
|
||||
);
|
||||
|
||||
// Search for matching stock items
|
||||
searchQueries.push(inventreeGet(
|
||||
addSearchQuery(
|
||||
'stock',
|
||||
'{% trans "Stock Items" %}',
|
||||
'{% url "api-stock-list" %}',
|
||||
{
|
||||
search: searchText,
|
||||
limit: 10,
|
||||
offset: 0,
|
||||
part_detail: true,
|
||||
location_detail: true,
|
||||
},
|
||||
renderStockItem,
|
||||
{
|
||||
success: function(response) {
|
||||
addSearchResults(
|
||||
'stock',
|
||||
response.results,
|
||||
'{% trans "Stock Items" %}',
|
||||
renderStockItem,
|
||||
{
|
||||
url: '/stock/item',
|
||||
}
|
||||
);
|
||||
}
|
||||
url: '/stock/item',
|
||||
}
|
||||
));
|
||||
);
|
||||
|
||||
// Wait until all the pending queries are completed
|
||||
$.when.apply($, searchQueries).done(function() {
|
||||
@ -149,6 +127,42 @@ function clearSearchResults() {
|
||||
}
|
||||
|
||||
|
||||
function addSearchQuery(key, title, query_url, query_params, render_func, render_params={}) {
|
||||
|
||||
// Include current search term
|
||||
query_params.search = searchTextCurrent;
|
||||
|
||||
// How many results to show in each group?
|
||||
query_params.offset = 0;
|
||||
query_params.limit = user_settings.SEARCH_PREVIEW_RESULTS;
|
||||
|
||||
// Add the result group to the panel
|
||||
$('#offcanvas-search').find('#search-results').append(`
|
||||
<div class='search-result-group-wrapper' id='search-results-wrapper-${key}'></div>
|
||||
`);
|
||||
|
||||
var request = inventreeGet(
|
||||
query_url,
|
||||
query_params,
|
||||
{
|
||||
success: function(response) {
|
||||
addSearchResults(
|
||||
key,
|
||||
response.results,
|
||||
title,
|
||||
render_func,
|
||||
render_params,
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
// Add the query to the stack
|
||||
searchQueries.push(request);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Add a group of results to the list
|
||||
function addSearchResults(key, results, title, renderFunc, renderParams={}) {
|
||||
|
||||
@ -162,7 +176,7 @@ function addSearchResults(key, results, title, renderFunc, renderParams={}) {
|
||||
// Ensure the 'no results found' element is hidden
|
||||
panel.find('#search-no-results').hide();
|
||||
|
||||
panel.find('#search-results').append(`
|
||||
panel.find(`#search-results-wrapper-${key}`).append(`
|
||||
<div class='search-result-group' id='search-results-${key}'>
|
||||
<div class='search-result-header' style='display: flex;'>
|
||||
<h5>${title}</h5>
|
||||
|
Loading…
Reference in New Issue
Block a user