From 3c541a9656a048ada062823e829b4ee153a9ee23 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 1 Apr 2020 00:52:20 +1100 Subject: [PATCH] Split 'part' model into new file --- lib/inventree/model.dart | 73 +++++++++------------------------------- lib/inventree/part.dart | 55 ++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 58 deletions(-) create mode 100644 lib/inventree/part.dart diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index cc4c8e13..df0f1174 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -13,35 +13,35 @@ import 'package:http/http.dart' as http; class InvenTreeObject { // Override the endpoint URL for each subclass - String _URL = ""; + String URL = ""; // JSON data which defines this object - Map _data = {}; + Map jsondata = {}; // Accessor for the API var api = InvenTreeAPI(); // Default empty object constructor InvenTreeObject() { - _data.clear(); + jsondata.clear(); } // Construct an InvenTreeObject from a JSON data object InvenTreeObject.fromJson(Map json) { // Store the json object - _data = json; + jsondata = json; } - int get pk => _data['pk'] ?? -1; + int get pk => jsondata['pk'] ?? -1; // Some common accessors - String get name => _data['name'] ?? ''; + String get name => jsondata['name'] ?? ''; - String get description => _data['description'] ?? ''; + String get description => jsondata['description'] ?? ''; - int get parentId => _data['parent'] ?? -1; + int get parentId => jsondata['parent'] ?? -1; // Create a new object from JSON data (not a constructor!) InvenTreeObject _createFromJson(Map json) { @@ -52,7 +52,7 @@ class InvenTreeObject { return obj; } - String get url{ return path.join(_URL, pk.toString()); } + String get url{ return path.join(URL, pk.toString()); } // Return list of objects from the database, with optional filters Future> list({Map filters}) async { @@ -61,12 +61,12 @@ class InvenTreeObject { filters = {}; } - print("Listing endpoint: " + _URL); + print("Listing endpoint: " + URL); // TODO - Add "timeout" // TODO - Add error catching - var response = await InvenTreeAPI().get(_URL, params:filters); + var response = await InvenTreeAPI().get(URL, params:filters); // A list of "InvenTreeObject" items List results = new List(); @@ -78,6 +78,10 @@ class InvenTreeObject { final data = json.decode(response.body); + // TODO - handle possible error cases: + // - No data receieved + // - Data is not a list of maps + for (var d in data) { // Create a new object (of the current class type @@ -103,50 +107,3 @@ class InvenTreeObject { } -class InvenTreePartCategory extends InvenTreeObject { - @override - String _URL = "part/category/"; - - String get pathstring => _data['pathstring'] ?? ''; - - InvenTreePartCategory() : super(); - - InvenTreePartCategory.fromJson(Map json) : super.fromJson(json) { - - } - - @override - InvenTreeObject _createFromJson(Map json) { - var cat = InvenTreePartCategory.fromJson(json); - - // TODO ? - - return cat; - } -} - - -class InvenTreePart extends InvenTreeObject { - - @override - String _URL = "part/"; - - int get categoryId => _data['category'] as int ?? -1; - - String get categoryName => _data['category__name'] ?? ''; - - InvenTreePart() : super(); - - InvenTreePart.fromJson(Map json) : super.fromJson(json) { - // TODO - } - - @override - InvenTreeObject _createFromJson(Map json) { - - var part = InvenTreePart.fromJson(json); - - return part; - - } -} \ No newline at end of file diff --git a/lib/inventree/part.dart b/lib/inventree/part.dart new file mode 100644 index 00000000..6db94090 --- /dev/null +++ b/lib/inventree/part.dart @@ -0,0 +1,55 @@ +import 'package:InvenTree/api.dart'; + +import 'model.dart'; +import 'dart:convert'; + +import 'package:path/path.dart' as path; +import 'package:http/http.dart' as http; + +class InvenTreePartCategory extends InvenTreeObject { + @override + String URL = "part/category/"; + + String get pathstring => jsondata['pathstring'] ?? ''; + + InvenTreePartCategory() : super(); + + InvenTreePartCategory.fromJson(Map json) : super.fromJson(json) { + + } + + @override + InvenTreeObject _createFromJson(Map json) { + var cat = InvenTreePartCategory.fromJson(json); + + // TODO ? + + return cat; + } +} + + +class InvenTreePart extends InvenTreeObject { + + @override + String URL = "part/"; + + int get categoryId => jsondata['category'] as int ?? -1; + + String get categoryName => jsondata['category__name'] ?? ''; + + InvenTreePart() : super(); + + InvenTreePart.fromJson(Map json) : super.fromJson(json) { + // TODO + } + + @override + InvenTreeObject _createFromJson(Map json) { + + var part = InvenTreePart.fromJson(json); + + return part; + + } +} \ No newline at end of file