Add dialog for selection of stock location labels

This commit is contained in:
Oliver Walters 2021-01-11 17:22:04 +11:00
parent 79b63e6d30
commit af47b211fd
2 changed files with 75 additions and 12 deletions

View File

@ -29,7 +29,7 @@
<button id='barcode-options' title='{% trans "Barcode actions" %}' class='btn btn-default dropdown-toggle' type='button' data-toggle='dropdown'><span class='fas fa-qrcode'></span> <span class='caret'></span></button>
<ul class='dropdown-menu' role='menu'>
<li><a href='#' id='show-qr-code'><span class='fas fa-qrcode'></span> {% trans "Show QR Code" %}</a></li>
<li class='disabled'><a href='#' id='print-label'><span class='fas fa-tag'></span> {% trans "Print Label" %}</a></li>
<li><a href='#' id='print-label'><span class='fas fa-tag'></span> {% trans "Print Label" %}</a></li>
<li><a href='#' id='barcode-check-in'><span class='fas fa-arrow-right'></span> {% trans "Check-in Items" %}</a></li>
</ul>
</div>
@ -203,6 +203,15 @@
}
});
});
$('#print-label').click(function() {
var locs = [{{ location.pk }}];
printStockLocationLabels(locs);
});
{% endif %}
$('#show-qr-code').click(function() {

View File

@ -8,7 +8,7 @@ function printStockItemLabels(items, options={}) {
if (items.length == 0) {
showAlertDialog(
'{% trans "Select Stock Items" %}',
'{% trans "Stock items must be selected before printing labels" %}'
'{% trans "Stock item(s) must be selected before printing labels" %}'
);
return;
@ -29,16 +29,76 @@ function printStockItemLabels(items, options={}) {
'{% trans "No Labels Found" %}',
'{% trans "No labels found which match selected stock item(s)" %}',
);
return;
}
// Select label to print
selectLabel(response, items);
selectLabel(
response,
items,
{
success: function(pk) {
var href = `/api/label/stock/${pk}/print/?`;
items.forEach(function(item) {
href += `items[]=${item}&`;
});
window.location.href = href;
}
}
);
}
}
);
}
function printStockLocationLabels(locations, options={}) {
if (locations.length == 0) {
showAlertDialog(
'{% trans "Select Stock Locations" %}',
'{% trans "Stock location(s) must be selected before printing labels" %}'
);
return;
}
// Request available labels from the server
inventreeGet(
'{% url "api-stocklocation-label-list" %}',
{
enabled: true,
locations: locations,
},
{
success: function(response) {
if (response.length == 0) {
showAlertDialog(
'{% trans "No Labels Found" %}',
'{% trans "No labels found which match selected stock location(s)" %}',
);
return;
}
// Select label to print
selectLabel(
response,
locations,
{
success: function(pk) {
// TODO - Print the label!
}
}
);
}
}
)
}
function selectLabel(labels, items, options={}) {
/**
* Present the user with the available labels,
@ -48,8 +108,6 @@ function selectLabel(labels, items, options={}) {
* (via AJAX) from the server.
*/
var stock_items = items;
var modal = options.modal || '#modal-form';
var label_list = makeOptionsList(
@ -102,12 +160,8 @@ function selectLabel(labels, items, options={}) {
closeModal(modal);
var href = `/api/label/stock/${pk}/print/?`;
stock_items.forEach(function(item) {
href += `items[]=${item}&`;
});
window.location.href = href;
if (options.success) {
options.success(pk);
}
});
}