From a4631cda7ab10d9635687765fc21bb25536e6718 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 14 Jan 2026 15:15:21 +1100 Subject: [PATCH] List filtering fix (#746) * Bug fix for API forms without URL - Ensure submitted data is returned * Translate search fields * Update release notes * Remove debug message * dart format --- assets/release_notes.md | 1 + lib/api_form.dart | 11 +++++------ lib/l10n/app_en.arb | 12 ++++++++++++ lib/widget/paginator.dart | 8 ++++---- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/assets/release_notes.md b/assets/release_notes.md index cbde0048..e4e571c7 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -2,6 +2,7 @@ --- - Fixes bug which launched camera twice when uploading an attachment +- Fixed bug related to list sorting and filtering ### 0.21.1 - November 2025 --- diff --git a/lib/api_form.dart b/lib/api_form.dart index 429c71d5..7201b7d6 100644 --- a/lib/api_form.dart +++ b/lib/api_form.dart @@ -1011,17 +1011,16 @@ Future launchApiForm( APIFormWidgetState? formHandler, IconData icon = TablerIcons.device_floppy, }) async { - showLoadingOverlay(); - // List of fields defined by the server Map serverFields = {}; if (url.isNotEmpty) { + showLoadingOverlay(); var options = await InvenTreeAPI().options(url); + hideLoadingOverlay(); // Invalid response from server if (!options.isValid()) { - hideLoadingOverlay(); return; } @@ -1030,8 +1029,6 @@ Future launchApiForm( if (serverFields.isEmpty) { // User does not have permission to perform this action showSnackIcon(L10().response403, icon: TablerIcons.user_x); - - hideLoadingOverlay(); return; } } @@ -1075,6 +1072,8 @@ Future launchApiForm( formFields.add(field); } + showLoadingOverlay(); + // Grab existing data for each form field for (var field in formFields) { await field.loadInitialData(); @@ -1430,7 +1429,7 @@ class APIFormWidgetState extends State { // Perhaps we just want to process the data? if (widget.url.isEmpty) { // Hide the form - handleSuccess(data, {}); + handleSuccess(data, data); return; } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 905be193..cab9260c 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1298,6 +1298,18 @@ "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, + "searchParts": "Search Parts", "@searchParts": {}, diff --git a/lib/widget/paginator.dart b/lib/widget/paginator.dart index c525de56..e18957e7 100644 --- a/lib/widget/paginator.dart +++ b/lib/widget/paginator.dart @@ -152,19 +152,19 @@ abstract class PaginatedSearchState Map fields = { "ordering_field": { "type": "choice", - "label": "Ordering Field", + "label": L10().searchOrderingField, "required": true, "choices": _opts, "value": _field, }, "ordering_order": { "type": "choice", - "label": "Ordering Direction", + "label": L10().searchOrderingDirection, "required": true, "value": _order, "choices": [ - {"value": "+", "display_name": "Ascending"}, - {"value": "-", "display_name": "Descending"}, + {"value": "+", "display_name": L10().searchOrderingAscending}, + {"value": "-", "display_name": L10().searchOrderingDescending}, ], }, };