2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 13:36:50 +00:00

Fixed search bar issues

This commit is contained in:
Oliver Walters 2021-02-22 18:06:04 +11:00
parent 24b7cfaede
commit 9f5583ee68
3 changed files with 45 additions and 9 deletions

View File

@ -4,7 +4,8 @@
- Fixes crash bug on top-level part category - Fixes crash bug on top-level part category
- Fixed crash bug on top-level stock location - Fixed crash bug on top-level stock location
- Adds context overlay to barcode scanner view - Adds context overlay to barcode scanner view
- Notifcations are less obtrusive (uses snack bar) - Notifications are less obtrusive (uses snack bar)
- Fixed search views - keyboard search button now works properly
## 0.1.0 - February 2021 ## 0.1.0 - February 2021
--- ---

@ -1 +1 @@
Subproject commit bc85d5b16cd74623ce42bd82b3ac30b9be1da6c6 Subproject commit 05207b7e5b455db01d05e987c517d75326932dec

View File

@ -1,6 +1,7 @@
import 'package:InvenTree/widget/part_detail.dart'; import 'package:InvenTree/widget/part_detail.dart';
import 'package:InvenTree/widget/progress.dart'; import 'package:InvenTree/widget/progress.dart';
import 'package:InvenTree/widget/snacks.dart';
import 'package:InvenTree/widget/stock_detail.dart'; import 'package:InvenTree/widget/stock_detail.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -8,6 +9,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:InvenTree/inventree/part.dart'; import 'package:InvenTree/inventree/part.dart';
import 'package:InvenTree/inventree/stock.dart'; import 'package:InvenTree/inventree/stock.dart';
import 'package:one_context/one_context.dart';
import '../api.dart'; import '../api.dart';
@ -19,6 +21,9 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart> {
BuildContext context; BuildContext context;
// What did we search for last time?
String _cachedQuery;
bool _searching = false; bool _searching = false;
// Custom filters for the part search // Custom filters for the part search
@ -45,6 +50,12 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart> {
return; return;
} }
if (query == _cachedQuery) {
return;
}
_cachedQuery = query;
_searching = true; _searching = true;
print("Searching..."); print("Searching...");
@ -67,8 +78,11 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart> {
print("Searching complete! Results: ${partResults.length}"); print("Searching complete! Results: ${partResults.length}");
_searching = false; _searching = false;
// TODO: Show a snackbar detailing number of results... showSnackIcon(
//showSnackIcon("Found ${partResults.length} parts", context: context); "${partResults.length} ${I18N.of(OneContext().context).results}",
success: partResults.length > 0,
icon: FontAwesomeIcons.pollH,
);
// For some reason, need to toggle between suggestions and results here... // For some reason, need to toggle between suggestions and results here...
showSuggestions(context); showSuggestions(context);
@ -133,10 +147,14 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart> {
@override @override
Widget buildResults(BuildContext context) { Widget buildResults(BuildContext context) {
print("build results");
if (_searching) { if (_searching) {
return progressIndicator(); return progressIndicator();
} }
search(context);
if (query.length == 0) { if (query.length == 0) {
return ListTile( return ListTile(
title: Text("Enter search query") title: Text("Enter search query")
@ -152,8 +170,8 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart> {
if (partResults.length == 0) { if (partResults.length == 0) {
return ListTile( return ListTile(
title: Text("No Results"), title: Text(I18N.of(context).noResults),
subtitle: Text("No results matching query") subtitle: Text("No results for '${query}'")
); );
} }
@ -189,6 +207,8 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem> {
final BuildContext context; final BuildContext context;
String _cachedQuery;
bool _searching = false; bool _searching = false;
// Custom filters for the stock item search // Custom filters for the stock item search
@ -214,6 +234,12 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem> {
return; return;
} }
if (query == _cachedQuery) {
return;
}
_cachedQuery = query;
_searching = true; _searching = true;
print("Searching..."); print("Searching...");
@ -236,7 +262,12 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem> {
_searching = false; _searching = false;
// TODO - Show a snackbar icon with number of results. showSnackIcon(
"${itemResults.length} ${I18N.of(OneContext().context).results}",
success: itemResults.length > 0,
icon: FontAwesomeIcons.pollH,
);
showSuggestions(context); showSuggestions(context);
showResults(context); showResults(context);
} }
@ -299,10 +330,14 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem> {
@override @override
Widget buildResults(BuildContext context) { Widget buildResults(BuildContext context) {
search(context);
if (_searching) { if (_searching) {
return progressIndicator(); return progressIndicator();
} }
search(context);
if (query.length == 0) { if (query.length == 0) {
return ListTile( return ListTile(
title: Text("Enter search query") title: Text("Enter search query")
@ -318,8 +353,8 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem> {
if (itemResults.length == 0) { if (itemResults.length == 0) {
return ListTile( return ListTile(
title: Text("No Results"), title: Text(I18N.of(context).noResults),
subtitle: Text("No results matching query") subtitle: Text("No results for '${query}'")
); );
} }