2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 05:26:47 +00:00

Split 'part' model into new file

This commit is contained in:
Oliver Walters 2020-04-01 00:52:20 +11:00
parent 25a16b5a28
commit 3c541a9656
2 changed files with 70 additions and 58 deletions

View File

@ -13,35 +13,35 @@ import 'package:http/http.dart' as http;
class InvenTreeObject { class InvenTreeObject {
// Override the endpoint URL for each subclass // Override the endpoint URL for each subclass
String _URL = ""; String URL = "";
// JSON data which defines this object // JSON data which defines this object
Map<String, dynamic> _data = {}; Map<String, dynamic> jsondata = {};
// Accessor for the API // Accessor for the API
var api = InvenTreeAPI(); var api = InvenTreeAPI();
// Default empty object constructor // Default empty object constructor
InvenTreeObject() { InvenTreeObject() {
_data.clear(); jsondata.clear();
} }
// Construct an InvenTreeObject from a JSON data object // Construct an InvenTreeObject from a JSON data object
InvenTreeObject.fromJson(Map<String, dynamic> json) { InvenTreeObject.fromJson(Map<String, dynamic> json) {
// Store the json object // Store the json object
_data = json; jsondata = json;
} }
int get pk => _data['pk'] ?? -1; int get pk => jsondata['pk'] ?? -1;
// Some common accessors // 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!) // Create a new object from JSON data (not a constructor!)
InvenTreeObject _createFromJson(Map<String, dynamic> json) { InvenTreeObject _createFromJson(Map<String, dynamic> json) {
@ -52,7 +52,7 @@ class InvenTreeObject {
return obj; 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 // Return list of objects from the database, with optional filters
Future<List<InvenTreeObject>> list({Map<String, String> filters}) async { Future<List<InvenTreeObject>> list({Map<String, String> filters}) async {
@ -61,12 +61,12 @@ class InvenTreeObject {
filters = {}; filters = {};
} }
print("Listing endpoint: " + _URL); print("Listing endpoint: " + URL);
// 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:filters);
// A list of "InvenTreeObject" items // A list of "InvenTreeObject" items
List<InvenTreeObject> results = new List<InvenTreeObject>(); List<InvenTreeObject> results = new List<InvenTreeObject>();
@ -78,6 +78,10 @@ class InvenTreeObject {
final data = json.decode(response.body); 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) { for (var d in data) {
// Create a new object (of the current class type // 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<String, dynamic> json) : super.fromJson(json) {
}
@override
InvenTreeObject _createFromJson(Map<String, dynamic> 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<String, dynamic> json) : super.fromJson(json) {
// TODO
}
@override
InvenTreeObject _createFromJson(Map<String, dynamic> json) {
var part = InvenTreePart.fromJson(json);
return part;
}
}

55
lib/inventree/part.dart Normal file
View File

@ -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<String, dynamic> json) : super.fromJson(json) {
}
@override
InvenTreeObject _createFromJson(Map<String, dynamic> 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<String, dynamic> json) : super.fromJson(json) {
// TODO
}
@override
InvenTreeObject _createFromJson(Map<String, dynamic> json) {
var part = InvenTreePart.fromJson(json);
return part;
}
}