From 868e1d20dcb05b50a424170dc44ffbd79c1c4e69 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 23 May 2020 15:53:15 +1000 Subject: [PATCH] Add class for StockItemTestResult --- lib/inventree/stock.dart | 47 +++++++++++++++++++++++++++++++ lib/widget/refreshable_state.dart | 2 +- lib/widget/stock_detail.dart | 10 +++++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/lib/inventree/stock.dart b/lib/inventree/stock.dart index 1e3da8f4..b1c64e53 100644 --- a/lib/inventree/stock.dart +++ b/lib/inventree/stock.dart @@ -1,10 +1,34 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; import 'package:http/http.dart' as http; import 'model.dart'; import 'package:InvenTree/api.dart'; + +class InvenTreeStockItemTestResult extends InvenTreeModel { + + @override + String NAME = "StockItemTestResult"; + + @override + String URL = "stock/test/"; + + InvenTreeStockItemTestResult() : super(); + + InvenTreeStockItemTestResult.fromJson(Map json) : super.fromJson(json) { + } + + @override + InvenTreeStockItemTestResult createFromJson(Map json) { + var result = InvenTreeStockItemTestResult.fromJson(json); + return result; + } + +} + + class InvenTreeStockItem extends InvenTreeModel { @override @@ -43,6 +67,29 @@ class InvenTreeStockItem extends InvenTreeModel { // TODO } + List testResults = List(); + + int get testResultCount => testResults.length; + + Future getTestResults(BuildContext context, {bool showDialog=false}) async { + InvenTreeStockItemTestResult().list( + context, + filters: { + "stock_item": "${pk}", + "user_detail": "true", + }, + dialog: showDialog, + ).then((var results) { + testResults.clear(); + + for (var r in results) { + if (r is InvenTreeStockItemTestResult) { + testResults.add(r); + } + } + }); + } + int get partId => jsondata['part'] ?? -1; int get trackingItemCount => jsondata['tracking_items'] as int ?? 0; diff --git a/lib/widget/refreshable_state.dart b/lib/widget/refreshable_state.dart index eb34d25e..ab43d779 100644 --- a/lib/widget/refreshable_state.dart +++ b/lib/widget/refreshable_state.dart @@ -20,7 +20,7 @@ abstract class RefreshableState extends State { // Function called after the widget is first build Future onBuild(BuildContext context) async { - return; + refresh(); } // Function to request data for this page diff --git a/lib/widget/stock_detail.dart b/lib/widget/stock_detail.dart index 38f85367..45cfdeb0 100644 --- a/lib/widget/stock_detail.dart +++ b/lib/widget/stock_detail.dart @@ -53,6 +53,7 @@ class _StockItemDisplayState extends RefreshableState { @override Future request(BuildContext context) async { await item.reload(context); + await item.getTestResults(context); } void _editStockItem() { @@ -423,6 +424,15 @@ class _StockItemDisplayState extends RefreshableState { ); } + tiles.add( + ListTile( + title: Text("Test Results"), + leading: FaIcon(FontAwesomeIcons.tasks), + trailing: Text("${item.testResultCount}"), + onTap: null, + ) + ); + if (item.trackingItemCount > 0) { tiles.add( ListTile(