diff --git a/lib/widget/paginator.dart b/lib/widget/paginator.dart index 1acf0687..7b6f8034 100644 --- a/lib/widget/paginator.dart +++ b/lib/widget/paginator.dart @@ -4,7 +4,7 @@ import "package:font_awesome_flutter/font_awesome_flutter.dart"; import "package:infinite_scroll_pagination/infinite_scroll_pagination.dart"; import "package:inventree/api_form.dart"; -import 'package:inventree/app_colors.dart'; +import "package:inventree/app_colors.dart"; import "package:inventree/l10.dart"; import "package:inventree/inventree/model.dart"; @@ -117,6 +117,7 @@ class PaginatedSearchState extends State with BaseW } }; + // Launch an interactive form for the user to select options launchApiForm( context, L10().filteringOptions, @@ -174,18 +175,32 @@ class PaginatedSearchState extends State with BaseW super.dispose(); } + /* + * Custom function to request a single page of results from the server. + * Each implementing class must override this function, + * and return an InvenTreePageResponse object with the correct data format + */ Future requestPage(int limit, int offset, Map params) async { // Default implementation returns null - must be overridden return null; } + /* + * Request a single page of results from the server + */ Future _fetchPage(int pageKey) async { try { Map params = filters; + // Include user search term params["search"] = "${searchTerm}"; - params["ordering"] = await orderingString; + + // Use custom query ordering if available + String o = await orderingString; + if (o.isNotEmpty) { + params["ordering"] = o; + } final page = await requestPage( _pageSize, @@ -226,6 +241,7 @@ class PaginatedSearchState extends State with BaseW } } + // Callback function when the search term is updated void updateSearchTerm() { searchTerm = searchController.text; _pagingController.refresh();