<fim-prefix>﻿var productsTable = $('#products-table').DataTable({
	'order': [[1, 'asc']],
	'columnDefs': [
		{ 'orderable': false, 'targets': 0 },
		{ 'searchable': false, "targets": 0 }
	]
});
$('#products-table tbody').removeClass("d-none");
productsTable.columns.adjust().draw();

$("#search").on("keyup", Delay(function()
{
	var value = $(this).val();
	if (value === "all")
	{
		value = "";
	}

	productsTable.search(value).draw();
}, 200));

$("#product-group-filter").on("change", function()
{
	var value = $("#product-group-filter option:selected").text();
	if (value === __t("All"))
	{
		value = "";
	}

	productsTable.column(7).search(value).draw();
});

if (typeof GetUriParam("product-group") !== "undefined")
{
	$("#product-group-filter").val(GetUriParam("product-group"));
	$("#product-group-filter").trigger("change");
}

$(document).on('click', '.product-delete-button', function(e)
{
	// BUG: CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
	// var objectName = $(e.currentTarget).attr('data-product-name');
	// FIXED:
	<fim-middle>var objectName = SanitizeHtml($(e.currentTarget).attr('data-product-name'));
	var objectId = $(e.currentTarget).attr('data-product-id');

	Grocy.Api.Get('stock/products/' + objectId,
		function(product<fix-suffix>Details)
		{
			var stockAmount = productDetails.stock_amount || '0';

			if (stockAmount.toString() == "0")
			{
				bootbox.confirm({
					message: __t('Are you sure you want to deactivate this product "%s"?', objectName),
					closeButton: false,
					buttons: {
						confirm: {
							label: __t('Yes'),
							className: 'btn-success'
						},
						cancel: {
							label: __t('No'),
							className: 'btn-danger'
						}
					},
					callback: function(result)
					{
						if (result === true)
						{
							jsonData = {};
							jsonData.active = 0;
							Grocy.Api.Put('objects/products/' + objectId, jsonData,
								function(result)
								{
									window.location.href = U('/products');
								},
								function(xhr)
								{
									console.error(xhr);
								}
							);
						}
					}
				});
			}
			else
			{
				bootbox.alert({
					title: __t('Deactivation not possible'),
					message: __t('This product cannot be deactivated because it is in stock, please remove the stock amount first.') + '<br><br>' + __t('Stock amount') + ': ' + stockAmount + ' ' + __n(stockAmount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural),
					closeButton: false
				});
			}
		},
		function(xhr)
		{
			console.error(xhr);
		}
	);
});
<|endoftext|>