mirror of
https://github.com/inventree/inventree-app.git
synced 2026-03-11 12:45:00 +00:00
[bug] Fix boolean fields (#788)
- Use Switch field in API forms - Retain custom tri-state filter button - Closes https://github.com/inventree/inventree-app/issues/785
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
- Adds button to check server connection
|
- Adds button to check server connection
|
||||||
- Fixes bug fetching sales order shipments
|
- Fixes bug fetching sales order shipments
|
||||||
|
- Fix for boolean fields in API forms
|
||||||
|
|
||||||
## 0.22.3 - February 2026
|
## 0.22.3 - February 2026
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -293,6 +293,8 @@ class APIFormField {
|
|||||||
return _constructString();
|
return _constructString();
|
||||||
case "boolean":
|
case "boolean":
|
||||||
return _constructBoolean();
|
return _constructBoolean();
|
||||||
|
case "boolean filter":
|
||||||
|
return _constructBooleanFilter();
|
||||||
case "related field":
|
case "related field":
|
||||||
return _constructRelatedField();
|
return _constructRelatedField();
|
||||||
case "integer":
|
case "integer":
|
||||||
@@ -874,6 +876,29 @@ class APIFormField {
|
|||||||
|
|
||||||
// Construct a boolean input element
|
// Construct a boolean input element
|
||||||
Widget _constructBoolean() {
|
Widget _constructBoolean() {
|
||||||
|
bool v = false;
|
||||||
|
|
||||||
|
if (value is bool) {
|
||||||
|
v = value as bool;
|
||||||
|
} else {
|
||||||
|
v = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ListTile(
|
||||||
|
title: Text(label),
|
||||||
|
subtitle: Text(helpText),
|
||||||
|
contentPadding: EdgeInsets.zero,
|
||||||
|
trailing: Switch(
|
||||||
|
value: v,
|
||||||
|
onChanged: (val) {
|
||||||
|
setFieldValue(val);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct a tri-state boolean filter element
|
||||||
|
Widget _constructBooleanFilter() {
|
||||||
String initial_value = "null";
|
String initial_value = "null";
|
||||||
|
|
||||||
bool allow_null = (getParameter("tristate") ?? false) as bool;
|
bool allow_null = (getParameter("tristate") ?? false) as bool;
|
||||||
@@ -930,8 +955,8 @@ class APIFormField {
|
|||||||
|
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(label),
|
title: Text(label),
|
||||||
contentPadding: EdgeInsets.zero,
|
|
||||||
subtitle: Text(helpText),
|
subtitle: Text(helpText),
|
||||||
|
contentPadding: EdgeInsets.zero,
|
||||||
trailing: SegmentedButton<String>(
|
trailing: SegmentedButton<String>(
|
||||||
segments: buttons,
|
segments: buttons,
|
||||||
selected: {initial_value},
|
selected: {initial_value},
|
||||||
@@ -1457,7 +1482,7 @@ class APIFormWidgetState extends State<APIFormWidget> {
|
|||||||
|
|
||||||
if (field.isSimple) {
|
if (field.isSimple) {
|
||||||
// Simple top-level field data
|
// Simple top-level field data
|
||||||
data[field.name] = field.data["value"];
|
data[field.name] = field.data["value"] ?? field.defaultValue;
|
||||||
} else {
|
} else {
|
||||||
// Not so simple... (WHY DID I MAKE THE API SO COMPLEX?)
|
// Not so simple... (WHY DID I MAKE THE API SO COMPLEX?)
|
||||||
if (field.parent.isNotEmpty) {
|
if (field.parent.isNotEmpty) {
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ abstract class PaginatedSearchState<T extends PaginatedSearchWidget>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> filter = {
|
Map<String, dynamic> filter = {
|
||||||
"type": "boolean",
|
"type": "boolean filter",
|
||||||
"display_name": label,
|
"display_name": label,
|
||||||
"label": label,
|
"label": label,
|
||||||
"help_text": help_text,
|
"help_text": help_text,
|
||||||
|
|||||||
Reference in New Issue
Block a user