diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index 61ed3bcb..c65a551e 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -186,7 +186,7 @@ class InvenTreeModel { } // Return the number of results that would meet a particular "query" - Future count({Map filters = const {}, String search = ""} ) async { + Future count({Map filters = const {}, String searchQuery = ""} ) async { var params = defaultListFilters(); @@ -194,8 +194,8 @@ class InvenTreeModel { params[key] = value; }); - if (search.isNotEmpty) { - params["search"] = search; + if (searchQuery.isNotEmpty) { + params["search"] = searchQuery; } // Limit to 1 result, for quick DB access @@ -382,6 +382,21 @@ class InvenTreeModel { params["limit"] = "${limit}"; params["offset"] = "${offset}"; + /* Special case: "original_search": + * - We may wish to provide an original "query" which is augmented by the user + * - Thus, "search" and "original_search" may both be provided + * - In such a case, we want to concatenate them together + */ + if (params.containsKey("original_search")) { + + String search = params["search"] ?? ""; + String original = params["original_search"] ?? ""; + + params["search"] = "${search} ${original}"; + + params.remove("original_search"); + } + var response = await api.get(URL, params: params); if (!response.isValid()) { diff --git a/lib/widget/search.dart b/lib/widget/search.dart index dde18baf..ca838dcd 100644 --- a/lib/widget/search.dart +++ b/lib/widget/search.dart @@ -80,7 +80,7 @@ class _SearchDisplayState extends RefreshableState { // Search parts InvenTreePart().count( - search: term + searchQuery: term ).then((int n) { setState(() { nPartResults = n; @@ -89,7 +89,7 @@ class _SearchDisplayState extends RefreshableState { // Search part categories InvenTreePartCategory().count( - search: term, + searchQuery: term, ).then((int n) { setState(() { nCategoryResults = n; @@ -98,7 +98,7 @@ class _SearchDisplayState extends RefreshableState { // Search stock items InvenTreeStockItem().count( - search: term + searchQuery: term ).then((int n) { setState(() { nStockResults = n; @@ -107,7 +107,7 @@ class _SearchDisplayState extends RefreshableState { // Search stock locations InvenTreeStockLocation().count( - search: term + searchQuery: term ).then((int n) { setState(() { nLocationResults = n; @@ -116,7 +116,7 @@ class _SearchDisplayState extends RefreshableState { // Search suppliers InvenTreeCompany().count( - search: term, + searchQuery: term, filters: { "is_supplier": "true", }, @@ -128,7 +128,7 @@ class _SearchDisplayState extends RefreshableState { // Search purchase orders InvenTreePurchaseOrder().count( - search: term, + searchQuery: term, filters: { "outstanding": "true" } @@ -168,6 +168,8 @@ class _SearchDisplayState extends RefreshableState { ) ); + String query = searchController.text; + List results = []; // Part Results @@ -223,7 +225,21 @@ class _SearchDisplayState extends RefreshableState { ListTile( title: Text(L10().suppliers), leading: FaIcon(FontAwesomeIcons.building), - trailing: Text("${nSupplierResults}") + trailing: Text("${nSupplierResults}"), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => CompanyListWidget( + L10().suppliers, + { + "is_supplier": "true", + "original_search": query + } + ) + ) + ); + }, ) ); }