2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-09-15 23:41:22 +00:00

Label print updates (#399)

* Allow download of printed label

* Add setting for controlling label printing

* Control display of label printing via setting

* Refactor label printing functionality

- Move to helpers.dart
- Will be used for other label types also

* Factor out request for label templates

* Add label printing support for part

* Support label printing for stock location

* update release notes
This commit is contained in:
Oliver
2023-07-16 00:51:11 +10:00
committed by GitHub
parent d78affc1cb
commit 443e6e856c
10 changed files with 284 additions and 134 deletions

View File

@@ -8,6 +8,7 @@ import "package:inventree/barcode/barcode.dart";
import "package:inventree/l10.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/preferences.dart";
import "package:inventree/widget/location_list.dart";
import "package:inventree/widget/progress.dart";
@@ -15,6 +16,7 @@ import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/stock_detail.dart";
import "package:inventree/widget/stock_list.dart";
import "package:inventree/labels.dart";
/*
@@ -38,6 +40,10 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
final InvenTreeStockLocation? location;
bool allowLabelPrinting = true;
List<Map<String, dynamic>> labels = [];
@override
String getAppBarTitle() {
return L10().stockLocation;
@@ -163,6 +169,23 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
);
}
if (widget.location != null && allowLabelPrinting && labels.isNotEmpty) {
actions.add(
SpeedDialChild(
child: FaIcon(FontAwesomeIcons.print),
label: L10().printLabel,
onTap: () async {
selectAndPrintLabel(
context,
labels,
"location",
"location=${widget.location!.pk}"
);
}
)
);
}
return actions;
}
@@ -202,6 +225,19 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
}
}
allowLabelPrinting = await InvenTreeSettingsManager().getBool(INV_ENABLE_LABEL_PRINTING, true);
allowLabelPrinting &= api.getPlugins(mixin: "labels").isNotEmpty;
if (allowLabelPrinting) {
labels.clear();
if (widget.location != null) {
labels = await getLabelTemplates("location", {
"location": widget.location!.pk.toString()
});
}
}
if (mounted) {
setState(() {});
}