diff --git a/public/viewjs/recipeform.js b/public/viewjs/recipeform.js
index 09501c47..18e8c1ec 100644
--- a/public/viewjs/recipeform.js
+++ b/public/viewjs/recipeform.js
@@ -28,6 +28,9 @@ $('.save-recipe').on('click', function(e)
{
e.preventDefault();
+ $(".note-editable span.ingredient").removeClass(["badge", "btn", "btn-secondary"]);
+ $("#description").text($("#description").siblings(".note-editor").find(".note-editable").html());
+
var jsonData = $('#recipe-form').serializeJSON();
Grocy.FrontendHelpers.BeginUiBusy("recipe-form");
@@ -230,6 +233,62 @@ $(document).on('click', '.recipe-pos-edit-button', function(e)
});
});
+$(document).on('click', '.recipe-pos-insert-button', function(e)
+{
+ e.preventDefault();
+
+ var recipePosId = $(e.currentTarget).attr('data-recipe-pos-id').toString();
+ var recipePosName = $(e.currentTarget).attr('data-recipe-pos-name').toString();
+ var recipePosAmount = parseFloat($(e.currentTarget).attr('data-recipe-pos-amount').toString());
+ var recipePosQu = $(e.currentTarget).attr('data-recipe-pos-qu').toString();
+ var recipePosQuPlural = $(e.currentTarget).attr('data-recipe-pos-qu-plural').toString();
+ var range = $.summernote.range.create();
+
+ bootbox.dialog({
+ message: '
Factor?
',
+ size: 'large',
+ backdrop: true,
+ closeButton: false,
+ buttons: {
+ cancel: {
+ label: __t('Cancel'),
+ className: 'btn-secondary responsive-button',
+ callback: function()
+ {
+ bootbox.hideAll();
+ }
+ },
+ ok: {
+ label: __t('Insert'),
+ className: 'btn-success responsive-button',
+ callback: function(e)
+ {
+ var factor = $(e.delegateTarget).find('input').val();
+ var amount = parseFloat(factor) * recipePosAmount;
+ amount = amount.toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1');
+ var html = ' ' + [amount, __n(amount, recipePosQu, recipePosQuPlural), recipePosName].join(' ') + ' ';
+ if (range.so !== range.eo || range.sc !== range.ec)
+ {
+ range.deleteContents();
+ range = $.summernote.range.create();
+ var check = range.getWordRange(true);
+ if (check.toString().trim().length === 0)
+ check.deleteContents();
+ check = range.getWordRange(false);
+ if (check.toString().trim().length === 0)
+ check.deleteContents();
+ range = $.summernote.range.create();
+ }
+ range.pasteHTML(html);
+ updateIngredientTags();
+ bootbox.hideAll();
+ $("#description").summernote('focus');
+ }
+ }
+ }
+ });
+});
+
$(document).on('click', '.recipe-include-edit-button', function(e)
{
var id = $(e.currentTarget).attr('data-recipe-include-id');
@@ -379,6 +438,19 @@ $(window).on("message", function(e)
}
});
+function updateIngredientTags()
+{
+ $("#description").siblings(".note-editable").find("span.ingredient").not(".badge").addClass(["badge", "btn", "btn-secondary"]).on("click", function(evt)
+ {
+ $.summernote.range.createFromNode(evt.target).select();
+ });
+}
+$(".wysiwyg-editor").on("summernote.init", function()
+{
+ updateIngredientTags();
+});
+updateIngredientTags();
+
// Grocy.Components.RecipePicker.GetPicker().on('change', function (e)
// {
// var value = Grocy.Components.RecipePicker.GetValue();
diff --git a/public/viewjs/recipes.js b/public/viewjs/recipes.js
index d176c435..4c0d0ecb 100644
--- a/public/viewjs/recipes.js
+++ b/public/viewjs/recipes.js
@@ -37,6 +37,35 @@ if (typeof recipe !== "undefined")
// Scroll to recipe card on mobile
$("#selectedRecipeCard")[0].scrollIntoView();
}
+
+ $("#selectedRecipeCard .ingredient").each(function(id, element)
+ {
+ var data = $(element).closest(".tab-pane").data("ingredients");
+ if (!data)
+ {
+ $(element).text('??>');
+ return;
+ }
+ var ingredient = FindObjectInArrayByPropertyValue(data.recipePositions, 'recipe_pos_id', element.dataset.ingredientId);
+ if (!ingredient)
+ {
+ $(element).text('??>');
+ }
+ var product = FindObjectInArrayByPropertyValue(data.products, 'id', ingredient.product_id);
+ var amount = ingredient.recipe_amount;
+ if (element.dataset.ingredientFactor && parseFloat(element.dataset.ingredientFactor))
+ {
+ amount *= parseFloat(element.dataset.ingredientFactor);
+ }
+ amount = amount.toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1');
+ var qu = FindObjectInArrayByPropertyValue(data.quantityUnits, 'id', ingredient.qu_id);
+ if (!qu || !product)
+ {
+ $(element).text('??>');
+ return;
+ }
+ $(element).text([amount, __n(amount, qu.name, qu.name_plural), product.name].join(' '));
+ });
}
if (GetUriParam("search") !== undefined)
diff --git a/views/recipeform.blade.php b/views/recipeform.blade.php
index d7da2254..52424bdd 100644
--- a/views/recipeform.blade.php
+++ b/views/recipeform.blade.php
@@ -192,6 +192,16 @@
@if($mode == "edit")
@foreach($recipePositions as $recipePosition)
+ @php
+ $product = FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id);
+ $productQuConversions = FindAllObjectsInArrayByPropertyValue($quantityUnitConversionsResolved, 'product_id', $product->id);
+ $productQuConversions = FindAllObjectsInArrayByPropertyValue($productQuConversions, 'from_qu_id', $product->qu_id_stock);
+ $productQuConversion = FindObjectInArrayByPropertyValue($productQuConversions, 'to_qu_id', $recipePosition->qu_id);
+ if ($productQuConversion)
+ {
+ $recipePosition->amount = $recipePosition->amount * $productQuConversion->factor;
+ }
+ @endphp
|
+
+
+
product_id)->name }}
|
- @php
- $product = FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id);
- $productQuConversions = FindAllObjectsInArrayByPropertyValue($quantityUnitConversionsResolved, 'product_id', $product->id);
- $productQuConversions = FindAllObjectsInArrayByPropertyValue($productQuConversions, 'from_qu_id', $product->qu_id_stock);
- $productQuConversion = FindObjectInArrayByPropertyValue($productQuConversions, 'to_qu_id', $recipePosition->qu_id);
- if ($productQuConversion)
- {
- $recipePosition->amount = $recipePosition->amount * $productQuConversion->factor;
- }
- @endphp
@if(!empty($recipePosition->variable_amount))
{{ $recipePosition->variable_amount }}
@else
diff --git a/views/recipes.blade.php b/views/recipes.blade.php
index 756aacd4..e4b61fe0 100644
--- a/views/recipes.blade.php
+++ b/views/recipes.blade.php
@@ -394,6 +394,7 @@
@endif
{{ $__t('Preparation') }}
|