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

Display history

This commit is contained in:
Oliver Walters 2022-03-28 21:23:56 +11:00
parent 4a7884f7fd
commit 43faec8b21
2 changed files with 97 additions and 2 deletions

View File

@ -56,6 +56,67 @@ class InvenTreeStockItemTestResult extends InvenTreeModel {
}
class InvenTreeStockItemHistory extends InvenTreeModel {
InvenTreeStockItemHistory() : super();
InvenTreeStockItemHistory.fromJson(Map<String, dynamic> json) : super.fromJson(json);
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) {
return InvenTreeStockItemHistory.fromJson(json);
}
@override
String get URL => "stock/track/";
@override
Map<String, String> defaultListFilters() {
// By default, order by decreasing date
return {
"ordering": "-date",
};
}
DateTime? get date {
if (jsondata.containsKey("date")) {
return DateTime.tryParse((jsondata["date"] ?? "") as String);
} else {
return null;
}
}
String get dateString {
var d = date;
if (d == null) {
return "";
}
return DateFormat("yyyy-MM-dd").format(d);
}
String get label => (jsondata["label"] ?? "") as String;
String get quantityString {
Map<String, dynamic> deltas = (jsondata["deltas"] ?? {}) as Map<String, dynamic>;
// Serial number takes priority here
if (deltas.containsKey("serial")) {
var serial = (deltas["serial"] ?? "").toString() as String;
return "# ${serial}";
} else if (deltas.containsKey("quantity")) {
double q = (deltas["quantity"] ?? 0);
return simpleNumberString(q);
} else {
return "";
}
}
}
class InvenTreeStockItem extends InvenTreeModel {
InvenTreeStockItem() : super();

View File

@ -6,6 +6,8 @@ import 'package:flutter/material.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/l10.dart';
import 'package:inventree/inventree/stock.dart';
import 'package:inventree/inventree/model.dart';
class StockItemHistoryWidget extends StatefulWidget {
@ -27,9 +29,24 @@ class _StockItemHistoryDisplayState extends RefreshableState<StockItemHistoryWid
@override
String getAppBarTitle(BuildContext context) => L10().stockItemHistory;
List<InvenTreeStockItemHistory> history = [];
@override
Future<void> request(BuildContext refresh) async {
// TODO
history.clear();
InvenTreeStockItemHistory().list(filters: {"item": "${item.pk}"}).then((List<InvenTreeModel> results) {
for (var result in results) {
if (result is InvenTreeStockItemHistory) {
history.add(result);
}
}
// Refresh
setState(() {
});
});
}
@override
@ -37,8 +54,25 @@ class _StockItemHistoryDisplayState extends RefreshableState<StockItemHistoryWid
return ListView(
children: ListTile.divideTiles(
context: context,
tiles: [],
tiles: historyList(),
).toList()
);
}
List<Widget> historyList() {
List<Widget> tiles = [];
for (var entry in history) {
tiles.add(
ListTile(
leading: Text(entry.dateString),
trailing: entry.quantityString.isNotEmpty ? Text(entry.quantityString) : null,
title: Text(entry.label),
subtitle: entry.notes.isNotEmpty ? Text(entry.notes) : null,
)
);
}
return tiles;
}
}