From 5280e247f47b66b3b46ea1cc772c22d923b12896 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 24 May 2020 09:34:42 +1000 Subject: [PATCH] Improve form for "AddTestResult" --- lib/widget/fields.dart | 4 +- lib/widget/stock_item_test_results.dart | 75 ++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/lib/widget/fields.dart b/lib/widget/fields.dart index 4303b8f5..452afb50 100644 --- a/lib/widget/fields.dart +++ b/lib/widget/fields.dart @@ -22,7 +22,7 @@ class CheckBoxField extends FormField { class StringField extends TextFormField { - StringField({String label, String hint, String initial, Function onSaved, Function validator, bool allowEmpty = false}) : + StringField({String label, String hint, String initial, Function onSaved, Function validator, bool allowEmpty = false, bool isEnabled = true}) : super( decoration: InputDecoration( labelText: label, @@ -30,8 +30,8 @@ class StringField extends TextFormField { ), initialValue: initial, onSaved: onSaved, + enabled: isEnabled, validator: (value) { - print("Value: ${value}"); if (!allowEmpty && value.isEmpty) { return "Value cannot be empty"; } diff --git a/lib/widget/stock_item_test_results.dart b/lib/widget/stock_item_test_results.dart index 4779dfc9..410a9143 100644 --- a/lib/widget/stock_item_test_results.dart +++ b/lib/widget/stock_item_test_results.dart @@ -2,6 +2,8 @@ import 'package:InvenTree/inventree/part.dart'; import 'package:InvenTree/inventree/stock.dart'; import 'package:InvenTree/inventree/model.dart'; import 'package:InvenTree/api.dart'; +import 'package:InvenTree/widget/dialogs.dart'; +import 'package:InvenTree/widget/fields.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -22,6 +24,8 @@ class StockItemTestResultsWidget extends StatefulWidget { class _StockItemTestResultDisplayState extends RefreshableState { + final _addResultKey = GlobalKey(); + @override String getAppBarTitle(BuildContext context) { return "Test Results"; } @@ -35,6 +39,57 @@ class _StockItemTestResultDisplayState extends RefreshableState[ + FlatButton( + child: Text("Cancel"), + onPressed: () { + Navigator.pop(context); + }, + ), + FlatButton( + child: Text("Save"), + onPressed: () { + if (_addResultKey.currentState.validate()) { + // TODO + } + }, + ) + ], + fields: [ + StringField( + label: "Test Name", + initial: name, + isEnabled: nameIsEditable, + ), + CheckBoxField( + label: "Result", + hint: "Test passed or failed", + initial: true, + ), + StringField( + label: "Value", + initial: value, + allowEmpty: true, + validator: (String value) { + print("Value: " + value); + if (valueRequired && (value == null || value.isEmpty)) { + return "Value required for this test"; + } + return null; + }, + ), + StringField( + allowEmpty: true, + label: "Notes", + ), + ] + ); + } + // Squish together templates and results List getTestResults() { var templates = item.testTemplates; @@ -117,6 +172,14 @@ class _StockItemTestResultDisplayState extends RefreshableState