2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-12-16 17:18:07 +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

@@ -1,6 +1,8 @@
import "package:flutter/material.dart";
import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart";
import "package:inventree/api.dart";
@@ -8,6 +10,8 @@ import "package:inventree/app_colors.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
@@ -31,6 +35,9 @@ class _ManufacturerPartDisplayState
extends RefreshableState<ManufacturerPartDetailWidget> {
_ManufacturerPartDisplayState();
int parameterCount = 0;
int attachmentCount = 0;
@override
String getAppBarTitle() => L10().manufacturerPart;
@@ -42,7 +49,34 @@ class _ManufacturerPartDisplayState
if (!result) {
Navigator.of(context).pop();
return;
}
InvenTreeParameter()
.countParameters(
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
)
.then((value) {
if (mounted) {
setState(() {
parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
)
.then((value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
});
}
Future<void> editManufacturerPart(BuildContext context) async {
@@ -91,11 +125,6 @@ class _ManufacturerPartDisplayState
List<Widget> getTiles(BuildContext context) {
List<Widget> tiles = [];
if (loading) {
tiles.add(progressIndicator());
return tiles;
}
// Internal Part
tiles.add(
ListTile(
@@ -174,6 +203,31 @@ class _ManufacturerPartDisplayState
);
}
ListTile? parameterTile = ShowParametersItem(
context,
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
parameterCount,
widget.manufacturerPart.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
widget.manufacturerPart.MPN,
attachmentCount,
widget.manufacturerPart.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles;
}
}