From 4243876111ae0d1c1ac134b0a35846db007915d8 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 15 Aug 2021 18:22:11 +1000 Subject: [PATCH] Create new stock item from part detail view --- lib/api_form.dart | 1 + lib/widget/part_detail.dart | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/lib/api_form.dart b/lib/api_form.dart index 14df198b..33d0981b 100644 --- a/lib/api_form.dart +++ b/lib/api_form.dart @@ -398,6 +398,7 @@ class APIFormField { helperStyle: _helperStyle(), hintText: placeholderText, ), + readOnly: readOnly, maxLines: multiline ? null : 1, expands: false, initialValue: value ?? '', diff --git a/lib/widget/part_detail.dart b/lib/widget/part_detail.dart index 4748c793..596237d9 100644 --- a/lib/widget/part_detail.dart +++ b/lib/widget/part_detail.dart @@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:inventree/app_colors.dart'; +import 'package:inventree/inventree/stock.dart'; import 'package:inventree/l10.dart'; import 'package:inventree/widget/part_attachments_widget.dart'; @@ -14,6 +15,7 @@ import 'package:inventree/widget/category_display.dart'; import 'package:inventree/api.dart'; import 'package:inventree/widget/refreshable_state.dart'; import 'package:inventree/widget/part_image_widget.dart'; +import 'package:inventree/widget/stock_detail.dart'; import 'location_display.dart'; @@ -390,7 +392,36 @@ class _PartDisplayState extends RefreshableState { return tiles; } - List actionTiles() { + Future _newStockItem(BuildContext context) async { + + var fields = InvenTreeStockItem().formFields(); + + fields["part"]["hidden"] = true; + + InvenTreeStockItem().createForm( + context, + L10().stockItemCreate, + fields: fields, + data: { + "part": "${part.pk}", + }, + onSuccess: (data) async { + if (data.containsKey("pk")) { + var item = InvenTreeStockItem.fromJson(data); + + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => StockDetailWidget(item) + ) + ); + } + } + ); + + } + + List actionTiles(BuildContext context) { List tiles = []; tiles.add(headerTile()); @@ -400,7 +431,7 @@ class _PartDisplayState extends RefreshableState { title: Text(L10().stockItemCreate), leading: FaIcon(FontAwesomeIcons.box), onTap: () { - // TODO + _newStockItem(context); }, ) ); @@ -452,7 +483,7 @@ class _PartDisplayState extends RefreshableState { child: ListView( children: ListTile.divideTiles( context: context, - tiles: actionTiles() + tiles: actionTiles(context) ).toList() ) );