2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-12-04 03:09:56 +00:00

Modern Label printing (#724)

* Basic widget

* Redirect label printing action

* Refactor label printing code

* Construct form elements

* Refactor to allow re-use of forms

* Basic rendering of label printing form

* Remove dead code

* Pass custom handler through to form context

* Refactoring API forms:

- Allow custom pk field name
- Add callback when values change

* linting

* Dynamically rebuild form

* Handle nested fields

* Handle label printing status

* Run dart format

* Update release notes

* Remove unused var

* Enable close icon

* Handle initial plugin default value

* Store default values:

- Selected template (per label type)
- Selected printing plugin

* Dart format

* Fix dart linting

* use setter

* Just use a public field
This commit is contained in:
Oliver
2025-11-22 07:26:37 +11:00
committed by GitHub
parent e41842a31d
commit 13d95dd1b1
10 changed files with 425 additions and 368 deletions

View File

@@ -63,8 +63,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
InvenTreePartPricing? partPricing;
List<Map<String, dynamic>> labels = [];
@override
String getAppBarTitle() => L10().partDetails;
@@ -121,19 +119,13 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
);
}
if (labels.isNotEmpty) {
if (allowLabelPrinting && api.supportsModernLabelPrinting) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.printer),
label: L10().printLabel,
onTap: () async {
selectAndPrintLabel(
context,
labels,
widget.part.pk,
"part",
"part=${widget.part.pk}",
);
selectAndPrintLabel(context, "part", widget.part.pk);
},
),
);
@@ -271,26 +263,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
});
}
});
List<Map<String, dynamic>> _labels = [];
allowLabelPrinting &= api.supportsMixin("labels");
if (allowLabelPrinting) {
String model_type = api.supportsModernLabelPrinting
? InvenTreePart.MODEL_TYPE
: "part";
String item_key = api.supportsModernLabelPrinting ? "items" : "part";
_labels = await getLabelTemplates(model_type, {
item_key: widget.part.pk.toString(),
});
}
if (mounted) {
setState(() {
labels = _labels;
});
}
}
void _editPartDialog(BuildContext context) {