2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 13:36:50 +00:00

More display items for Part view:

- BOM count
- Used in count
- Notes
This commit is contained in:
Oliver Walters 2020-04-05 15:50:13 +10:00
parent d1fba27f3a
commit fbd52e1414
4 changed files with 85 additions and 9 deletions

View File

@ -41,6 +41,8 @@ class InvenTreeModel {
String get description => jsondata['description'] ?? ''; String get description => jsondata['description'] ?? '';
String get notes => jsondata['notes'] ?? '';
int get parentId => jsondata['parent'] ?? -1; int get parentId => jsondata['parent'] ?? -1;
String get link => jsondata['URL'] ?? ''; String get link => jsondata['URL'] ?? '';

View File

@ -45,6 +45,12 @@ class InvenTreePart extends InvenTreeModel {
// Get the number of units being build for this Part // Get the number of units being build for this Part
double get building => double.tryParse(jsondata['building'].toString() ?? '0'); double get building => double.tryParse(jsondata['building'].toString() ?? '0');
// Get the number of BOM items in this Part (if it is an assembly)
int get bomItemCount => jsondata['bom_items'] as int ?? 0;
// Get the number of BOMs this Part is used in (if it is a component)
int get usedInCount => jsondata['used_in'] as int ?? 0;
bool get isAssembly => jsondata['assembly'] ?? false; bool get isAssembly => jsondata['assembly'] ?? false;
bool get isComponent => jsondata['component'] ?? false; bool get isComponent => jsondata['component'] ?? false;

View File

@ -10,6 +10,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_advanced_networkimage/provider.dart'; import 'package:flutter_advanced_networkimage/provider.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class CategoryDisplayWidget extends StatefulWidget { class CategoryDisplayWidget extends StatefulWidget {
@ -42,7 +43,7 @@ class _CategoryDisplayState extends State<CategoryDisplayWidget> {
if (category == null) { if (category == null) {
return "Part Categories"; return "Part Categories";
} else { } else {
return "Part Category '${category.name}'"; return "Part Category - ${category.name}";
} }
} }
@ -82,6 +83,28 @@ class _CategoryDisplayState extends State<CategoryDisplayWidget> {
}); });
} }
Widget getCategoryDescriptionCard() {
if (category == null) {
return Card(
child: ListTile(
title: Text("Part Categories"),
subtitle: Text("Top level part category"),
)
);
} else {
return Card(
child: ListTile(
title: Text("${category.name}"),
subtitle: Text("${category.description}"),
trailing: IconButton(
icon: FaIcon(FontAwesomeIcons.edit),
onPressed: null,
),
)
);
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -91,8 +114,10 @@ class _CategoryDisplayState extends State<CategoryDisplayWidget> {
drawer: new InvenTreeDrawer(context), drawer: new InvenTreeDrawer(context),
body: Center( body: Center(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: <Widget>[ children: <Widget>[
getCategoryDescriptionCard(),
Text( Text(
"Subcategories - ${_subcategories.length}", "Subcategories - ${_subcategories.length}",
textAlign: TextAlign.left, textAlign: TextAlign.left,

View File

@ -73,7 +73,8 @@ class _PartDisplayState extends State<PartDisplayWidget> {
tiles.add( tiles.add(
Card( Card(
child: ListTile( child: ListTile(
title: Text("${part.categoryName}"), title: Text("Part Category"),
subtitle: Text("${part.categoryName}"),
leading: FaIcon(FontAwesomeIcons.stream), leading: FaIcon(FontAwesomeIcons.stream),
onTap: () { onTap: () {
InvenTreePartCategory().get(part.categoryId).then((var cat) { InvenTreePartCategory().get(part.categoryId).then((var cat) {
@ -92,6 +93,8 @@ class _PartDisplayState extends State<PartDisplayWidget> {
child: ListTile( child: ListTile(
title: Text("${part.link}"), title: Text("${part.link}"),
leading: FaIcon(FontAwesomeIcons.link), leading: FaIcon(FontAwesomeIcons.link),
trailing: Text(""),
onTap: null,
) )
) )
); );
@ -103,11 +106,10 @@ class _PartDisplayState extends State<PartDisplayWidget> {
child: ListTile( child: ListTile(
title: Text("In Stock"), title: Text("In Stock"),
leading: FaIcon(FontAwesomeIcons.boxes), leading: FaIcon(FontAwesomeIcons.boxes),
trailing: FlatButton( trailing: Text("${part.inStock}"),
child: Text("${part.inStock}") onTap: null,
), ),
) )
)
); );
// Parts on order // Parts on order
@ -118,6 +120,7 @@ class _PartDisplayState extends State<PartDisplayWidget> {
title: Text("On Order"), title: Text("On Order"),
leading: FaIcon(FontAwesomeIcons.shoppingCart), leading: FaIcon(FontAwesomeIcons.shoppingCart),
trailing: Text("${part.onOrder}"), trailing: Text("${part.onOrder}"),
onTap: null,
) )
) )
); );
@ -125,12 +128,52 @@ class _PartDisplayState extends State<PartDisplayWidget> {
// Parts being built // Parts being built
if (part.isAssembly) { if (part.isAssembly) {
tiles.add(
Card(
child: ListTile(
title: Text("Bill of Materials"),
leading: FaIcon(FontAwesomeIcons.thList),
trailing: Text("${part.bomItemCount}"),
onTap: null,
)
)
);
tiles.add( tiles.add(
Card( Card(
child: ListTile( child: ListTile(
title: Text("Building"), title: Text("Building"),
leading: FaIcon(FontAwesomeIcons.tools), leading: FaIcon(FontAwesomeIcons.tools),
trailing: Text("${part.building}"), trailing: Text("${part.building}"),
onTap: null,
)
)
);
}
if (part.isComponent) {
tiles.add(
Card(
child: ListTile(
title: Text("Used In"),
leading: FaIcon(FontAwesomeIcons.sitemap),
trailing: Text("${part.usedInCount}"),
onTap: null,
)
)
);
}
// Notes field?
if (part.notes.isNotEmpty) {
tiles.add(
Card(
child: ListTile(
title: Text("Notes"),
leading: FaIcon(FontAwesomeIcons.stickyNote),
trailing: Text(""),
onTap: null,
) )
) )
); );
@ -152,7 +195,7 @@ class _PartDisplayState extends State<PartDisplayWidget> {
body: Center( body: Center(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.max,
children: partTiles(), children: partTiles(),
), ),
) )