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

Configurable GET and LIST filters per model type

This commit is contained in:
Oliver Walters 2020-04-06 12:35:59 +10:00
parent fb1fb799d2
commit 59d2b9cf1a
5 changed files with 68 additions and 6 deletions

View File

@ -74,8 +74,13 @@ class InvenTreeModel {
} }
*/ */
Map<String, String> defaultListFilters() { return Map<String, String>(); }
// A map of "default" headers to use when performing a GET request
Map<String, String> defaultGetFilters() { return Map<String, String>(); }
// Return the detail view for the associated pk // Return the detail view for the associated pk
Future<InvenTreeModel> get(int pk) async { Future<InvenTreeModel> get(int pk, {Map<String, String> filters}) async {
// TODO - Add "timeout" // TODO - Add "timeout"
// TODO - Add error catching // TODO - Add error catching
@ -86,7 +91,18 @@ class InvenTreeModel {
addr += "/"; addr += "/";
} }
var response = await InvenTreeAPI().get(addr); var params = defaultGetFilters();
if (filters != null) {
// Override any default values
for (String key in filters.keys) {
params[key] = filters[key];
}
}
print("GET: $addr ${params.toString()}");
var response = await InvenTreeAPI().get(addr, params: params);
if (response.statusCode != 200) { if (response.statusCode != 200) {
print("Error retrieving data"); print("Error retrieving data");
@ -105,12 +121,20 @@ class InvenTreeModel {
filters = {}; filters = {};
} }
print("Listing endpoint: $URL"); var params = defaultListFilters();
if (filters != null) {
for (String key in filters.keys) {
params[key] = filters[key];
}
}
print("LIST: $URL ${params.toString()}");
// TODO - Add "timeout" // TODO - Add "timeout"
// TODO - Add error catching // TODO - Add error catching
var response = await InvenTreeAPI().get(URL, params:filters); var response = await InvenTreeAPI().get(URL, params:params);
// A list of "InvenTreeModel" items // A list of "InvenTreeModel" items
List<InvenTreeModel> results = new List<InvenTreeModel>(); List<InvenTreeModel> results = new List<InvenTreeModel>();

View File

@ -12,6 +12,15 @@ class InvenTreePartCategory extends InvenTreeModel {
@override @override
String URL = "part/category/"; String URL = "part/category/";
@override
Map<String, String> defaultListFilters() {
var filters = new Map<String, String>();
filters["active"] = "true";
return filters;
}
String get pathstring => jsondata['pathstring'] ?? ''; String get pathstring => jsondata['pathstring'] ?? '';
String get parentpathstring { String get parentpathstring {

View File

@ -6,6 +6,17 @@ class InvenTreeStockItem extends InvenTreeModel {
@override @override
String URL = "stock/"; String URL = "stock/";
@override
Map<String, String> defaultGetFilters() {
var headers = new Map<String, String>();
headers["part_detail"] = "true";
headers["location_detail"] = "true";
return headers;
}
InvenTreeStockItem() : super(); InvenTreeStockItem() : super();
InvenTreeStockItem.fromJson(Map<String, dynamic> json) : super.fromJson(json) { InvenTreeStockItem.fromJson(Map<String, dynamic> json) : super.fromJson(json) {

View File

@ -34,8 +34,7 @@ class _PartDisplayState extends State<PartDisplayWidget> {
*/ */
List<Widget> partTiles() { List<Widget> partTiles() {
List<Widget> tiles = [ List<Widget> tiles = [];
];
// Image / name / description // Image / name / description
tiles.add( tiles.add(

View File

@ -33,6 +33,25 @@ class _StockItemDisplayState extends State<StockItemDisplayWidget> {
} }
} }
/*
* Construct a list of detail elements about this StockItem.
* The number of elements may vary depending on the StockItem details
*/
List<Widget> stockTiles() {
List<Widget> tiles = [];
// Image / name / description
tiles.add(
Card(
child: ListTile(
title: Text("${item.partName}"),
)
)
);
return tiles;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(