2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-12-16 09:08:05 +00:00

Parameters refactor (#738)

* refactor attachment code into its own file

* Add getters

* Remove custom models for each type of attachment

* Refactor existing widgets

* Fix double camera open bug

* Add check for modern parameter API

* Add generic parameter type

* Remove old code

* Remove dead code

* Refactor previous widget

* Remove unused imports

* Refactor common code

* format

* Update release notes

* Helper func to render parameters list tile

* Display parameters on part page

* parameters for company

* Supplier more model types:

- ManufacturerPart
- SupplierPart
- PurchaseOrder
- SalesOrder

* dart format

* Fix image prefix

* Remove unused import

* Adjust API version
This commit is contained in:
Oliver
2025-12-04 18:34:05 +11:00
committed by GitHub
parent 346b1a150f
commit 864c3eea76
12 changed files with 378 additions and 129 deletions

View File

@@ -8,6 +8,7 @@ import "package:inventree/barcode/barcode.dart";
import "package:inventree/barcode/purchase_order.dart";
import "package:inventree/helpers.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart";
import "package:inventree/inventree/model.dart";
@@ -22,6 +23,7 @@ import "package:inventree/widget/order/po_line_list.dart";
import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/notes_widget.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
@@ -51,6 +53,7 @@ class _PurchaseOrderDetailState
int completedLines = 0;
int attachmentCount = 0;
int parameterCount = 0;
bool showCameraShortcut = true;
bool supportProjectCodes = false;
@@ -300,6 +303,16 @@ class _PurchaseOrderDetailState
}
}
InvenTreeParameter()
.countParameters(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk)
.then((int value) {
if (mounted) {
setState(() {
parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk)
.then((int value) {
@@ -570,6 +583,18 @@ class _PurchaseOrderDetailState
),
);
ListTile? parameterTile = ShowParametersItem(
context,
InvenTreePurchaseOrder.MODEL_TYPE,
widget.order.pk,
parameterCount,
widget.order.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreePurchaseOrder.MODEL_TYPE,

View File

@@ -5,12 +5,14 @@ import "package:inventree/barcode/barcode.dart";
import "package:inventree/barcode/sales_order.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/inventree/sales_order.dart";
import "package:inventree/preferences.dart";
import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/order/so_extra_line_list.dart";
import "package:inventree/widget/order/so_line_list.dart";
import "package:inventree/widget/order/so_shipment_list.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/l10.dart";
@@ -43,6 +45,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
bool showCameraShortcut = true;
bool supportsProjectCodes = false;
int attachmentCount = 0;
int parameterCount = 0;
@override
String getAppBarTitle() {
@@ -271,6 +274,16 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
true,
);
InvenTreeParameter()
.countParameters(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk)
.then((int value) {
if (mounted) {
setState(() {
parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk)
.then((int value) {
@@ -497,6 +510,18 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
),
);
ListTile? parameterTile = ShowParametersItem(
context,
InvenTreeSalesOrder.MODEL_TYPE,
widget.order.pk,
parameterCount,
widget.order.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeSalesOrder.MODEL_TYPE,