2018-07-14 18:23:41 +02:00
@ extends ( 'layout.default' )
@ if ( $mode == 'edit' )
2019-05-01 20:19:18 +02:00
@ section ( 'title' , $__t ( 'Edit recipe' ))
2018-07-14 18:23:41 +02:00
@ else
2019-05-01 20:19:18 +02:00
@ section ( 'title' , $__t ( 'Create recipe' ))
2018-07-14 18:23:41 +02:00
@ endif
@ section ( 'viewJsName' , 'recipeform' )
2018-10-03 16:41:21 +02:00
@ push ( 'pageScripts' )
2018-10-27 10:37:31 +02:00
< script src = " { { $U ('/node_modules/datatables.net-rowgroup/js/dataTables.rowGroup.min.js?v=', true) }} { { $version }} " ></ script >
< script src = " { { $U ('/node_modules/datatables.net-rowgroup-bs4/js/rowGroup.bootstrap4.min.js?v=', true) }} { { $version }} " ></ script >
2018-10-03 16:41:21 +02:00
@ endpush
@ push ( 'pageStyles' )
2018-10-27 10:37:31 +02:00
< link href = " { { $U ('/node_modules/datatables.net-rowgroup-bs4/css/rowGroup.bootstrap4.min.css?v=', true) }} { { $version }} " rel = " stylesheet " >
2018-10-03 16:41:21 +02:00
@ endpush
2018-07-14 18:23:41 +02:00
@ section ( 'content' )
< div class = " row " >
< div class = " col " >
< h1 >@ yield ( 'title' ) </ h1 >
2019-09-16 09:35:20 +02:00
< script >
Grocy . EditMode = '{{ $mode }}' ;
2019-09-21 13:08:42 +02:00
Grocy . QuantityUnits = { !! json_encode ( $quantityunits ) !! };
2019-09-16 09:35:20 +02:00
Grocy . QuantityUnitConversionsResolved = { !! json_encode ( $quantityUnitConversionsResolved ) !! };
</ script >
2018-07-14 18:23:41 +02:00
@ if ( $mode == 'edit' )
< script > Grocy . EditObjectId = {{ $recipe -> id }}; </ script >
2019-01-26 20:06:01 +01:00
@ if ( ! empty ( $recipe -> picture_file_name ))
< script > Grocy . RecipePictureFileName = '{{ $recipe->picture_file_name }}' ; </ script >
@ endif
2018-07-14 18:23:41 +02:00
@ endif
</ div >
</ div >
< div class = " row " >
2018-07-15 09:56:10 +02:00
< div class = " col-xs-12 col-md-7 pb-3 " >
2018-07-14 18:23:41 +02:00
< form id = " recipe-form " novalidate >
< div class = " form-group " >
2019-05-01 20:19:18 +02:00
< label for = " name " > {{ $__t ( 'Name' ) }} </ label >
2018-07-14 18:23:41 +02:00
< input type = " text " class = " form-control " required id = " name " name = " name " value = " @if( $mode == 'edit') { { $recipe->name }}@endif " >
2019-05-01 20:19:18 +02:00
< div class = " invalid-feedback " > {{ $__t ( 'A name is required' ) }} </ div >
2018-07-14 18:23:41 +02:00
</ div >
< div class = " form-group " >
2019-05-01 20:19:18 +02:00
< label for = " description " > {{ $__t ( 'Preparation' ) }} </ label >
2019-08-15 14:35:28 +02:00
< textarea id = " description " class = " form-control wysiwyg-editor " name = " description " >@ if ( $mode == 'edit' ){{ $recipe -> description }} @ endif </ textarea >
2018-07-14 18:23:41 +02:00
</ div >
2019-03-03 13:27:10 +01:00
@ php if ( $mode == 'edit' ) { $value = $recipe -> base_servings ; } else { $value = 1 ; } @ endphp
@ include ( 'components.numberpicker' , array (
'id' => 'base_servings' ,
'label' => 'Servings' ,
'min' => 1 ,
'value' => $value ,
2019-05-01 20:19:18 +02:00
'invalidFeedback' => $__t ( 'This cannot be lower than %s' , '1' ),
'hint' => $__t ( 'The ingredients listed here result in this amount of servings' )
2020-01-21 20:45:34 +01:00
))
2020-01-21 13:20:26 -06:00
2019-03-03 15:23:39 +01:00
< div class = " form-group " >
< div class = " form-check " >
< input type = " hidden " name = " not_check_shoppinglist " value = " 0 " >
< input @ if ( $mode == 'edit' && $recipe -> not_check_shoppinglist == 1 ) checked @ endif class = " form-check-input " type = " checkbox " id = " not_check_shoppinglist " name = " not_check_shoppinglist " value = " 1 " >
2019-05-01 20:19:18 +02:00
< label class = " form-check-label " for = " not_check_shoppinglist " > {{ $__t ( 'Do not check against the shopping list when adding missing items to it' ) }} & nbsp ; & nbsp ;
< span class = " small text-muted " > {{ $__t ( 'By default the amount to be added to the shopping list is "needed amount - stock amount - shopping list amount" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list' ) }} </ span >
2019-03-03 15:23:39 +01:00
</ label >
</ div >
</ div >
2019-01-26 20:06:01 +01:00
< div class = " form-group " >
2019-05-01 20:19:18 +02:00
< label for = " recipe-picture " > {{ $__t ( 'Picture' ) }}
< span class = " text-muted small " > {{ $__t ( 'If you don\'t select a file, the current picture will not be altered' ) }} </ span >
2019-03-04 17:43:12 +01:00
</ label >
2019-01-26 20:06:01 +01:00
< div class = " custom-file " >
< input type = " file " class = " custom-file-input " id = " recipe-picture " accept = " image/* " >
2019-05-01 20:19:18 +02:00
< label class = " custom-file-label " for = " recipe-picture " > {{ $__t ( 'No file selected' ) }} </ label >
2019-01-26 20:06:01 +01:00
</ div >
</ div >
2020-01-21 20:45:34 +01:00
@ include ( 'components.productpicker' , array (
'products' => $products ,
'isRequired' => false ,
'label' => 'Produces product' ,
'prefillById' => $recipe -> product_id ,
'disallowAllProductWorkflows' => true ,
'hint' => $__t ( 'When a product is selected, one unit (per serving in purchase quantity unit) will be added to stock on consuming this recipe' )
))
2019-04-23 09:06:18 +02:00
@ include ( 'components.userfieldsform' , array (
'userfields' => $userfields ,
'entity' => 'recipes'
))
2019-05-01 20:19:18 +02:00
< button id = " save-recipe-button " class = " btn btn-success " > {{ $__t ( 'Save' ) }} </ button >
2018-07-14 18:23:41 +02:00
</ form >
</ div >
2018-07-15 09:56:10 +02:00
< div class = " col-xs-12 col-md-5 pb-3 " >
2018-10-23 19:36:39 +02:00
< div class = " row " >
< div class = " col " >
< h2 >
2019-05-01 20:19:18 +02:00
{{ $__t ( 'Ingredients list' ) }}
2019-12-21 05:36:02 -06:00
< a id = " recipe-pos-add-button " class = " btn btn-outline-dark recipe-pos-add-button " type = " button " href = " # " >
2019-05-01 20:19:18 +02:00
< i class = " fas fa-plus " ></ i > {{ $__t ( 'Add' ) }}
2018-10-23 19:36:39 +02:00
</ a >
</ h2 >
2019-03-03 13:27:10 +01:00
2018-10-23 19:36:39 +02:00
< table id = " recipes-pos-table " class = " table table-sm table-striped dt-responsive " >
< thead >
< tr >
2019-03-09 10:49:26 +01:00
< th class = " border-right " ></ th >
2019-05-01 20:19:18 +02:00
< th > {{ $__t ( 'Product' ) }} </ th >
< th > {{ $__t ( 'Amount' ) }} </ th >
< th class = " fit-content " > {{ $__t ( 'Note' ) }} </ th >
2018-10-27 10:37:31 +02:00
< th class = " d-none " > Hiden ingredient group </ th >
2018-10-23 19:36:39 +02:00
</ tr >
</ thead >
2019-01-05 20:06:35 +01:00
< tbody class = " d-none " >
2018-10-23 19:36:39 +02:00
@ if ( $mode == " edit " )
@ foreach ( $recipePositions as $recipePosition )
2019-03-03 13:27:10 +01:00
< tr >
2019-03-09 10:49:26 +01:00
< td class = " fit-content border-right " >
2019-12-21 05:36:02 -06:00
< a class = " btn btn-sm btn-info recipe-pos-edit-button " type = " button " href = " # " data - recipe - pos - id = " { { $recipePosition->id }} " data - product - id = " { { $recipePosition->product_id }} " >
2018-10-23 19:36:39 +02:00
< i class = " fas fa-edit " ></ i >
</ a >
< a class = " btn btn-sm btn-danger recipe-pos-delete-button " href = " # " data - recipe - pos - id = " { { $recipePosition->id }} " data - recipe - pos - name = " { { FindObjectInArrayByPropertyValue( $products , 'id', $recipePosition->product_id )->name }} " >
< i class = " fas fa-trash " ></ i >
</ a >
</ td >
< td >
{{ FindObjectInArrayByPropertyValue ( $products , 'id' , $recipePosition -> product_id ) -> name }}
</ td >
< td >
2019-09-16 09:35:20 +02:00
@ 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
2019-05-04 14:50:15 +02:00
@ if ( ! empty ( $recipePosition -> variable_amount ))
{{ $recipePosition -> variable_amount }}
@ else
2019-09-26 15:25:30 +02:00
< span class = " locale-number locale-number-quantity-amount " >@ if ( $recipePosition -> amount == round ( $recipePosition -> amount )){{ round ( $recipePosition -> amount ) }} @ else {{ $recipePosition -> amount }} @ endif </ span >
2019-05-04 14:50:15 +02:00
@ endif
{{ $__n ( $recipePosition -> amount , FindObjectInArrayByPropertyValue ( $quantityunits , 'id' , $recipePosition -> qu_id ) -> name , FindObjectInArrayByPropertyValue ( $quantityunits , 'id' , $recipePosition -> qu_id ) -> name_plural ) }}
2018-10-23 19:36:39 +02:00
</ td >
< td class = " fit-content " >
2019-05-01 20:19:18 +02:00
< a class = " btn btn-sm btn-info recipe-pos-show-note-button @if(empty( $recipePosition->note )) disabled @endif " href = " # " data - toggle = " tooltip " data - placement = " top " title = " { { $__t ('Show notes') }} " data - recipe - pos - note = " { { $recipePosition->note }} " >
2018-10-23 19:36:39 +02:00
< i class = " fas fa-eye " ></ i >
</ a >
</ td >
2018-10-27 10:37:31 +02:00
< td >
{{ $recipePosition -> ingredient_group }}
</ td >
2018-10-23 19:36:39 +02:00
</ tr >
@ endforeach
@ endif
</ tbody >
</ table >
</ div >
</ div >
< div class = " row mt-5 " >
< div class = " col " >
< h2 >
2019-05-01 20:19:18 +02:00
{{ $__t ( 'Included recipes' ) }}
2018-10-23 19:36:39 +02:00
< a id = " recipe-include-add-button " class = " btn btn-outline-dark " href = " # " >
2019-05-01 20:19:18 +02:00
< i class = " fas fa-plus " ></ i > {{ $__t ( 'Add' ) }}
2018-10-23 19:36:39 +02:00
</ a >
</ h2 >
< table id = " recipes-includes-table " class = " table table-sm table-striped dt-responsive " >
< thead >
< tr >
2019-03-09 10:49:26 +01:00
< th class = " border-right " ></ th >
2019-05-01 20:19:18 +02:00
< th > {{ $__t ( 'Recipe' ) }} </ th >
< th > {{ $__t ( 'Servings' ) }} </ th >
2018-10-23 19:36:39 +02:00
</ tr >
</ thead >
2019-01-05 20:06:35 +01:00
< tbody class = " d-none " >
2018-10-23 19:36:39 +02:00
@ if ( $mode == " edit " )
@ foreach ( $recipeNestings as $recipeNesting )
< tr >
2019-03-09 10:49:26 +01:00
< td class = " fit-content border-right " >
2019-03-05 23:45:04 +01:00
< a class = " btn btn-sm btn-info recipe-include-edit-button " href = " # " data - recipe - include - id = " { { $recipeNesting->id }} " data - recipe - included - recipe - id = " { { $recipeNesting->includes_recipe_id }} " data - recipe - included - recipe - servings = " { { $recipeNesting->servings }} " >
2018-10-23 19:36:39 +02:00
< i class = " fas fa-edit " ></ i >
</ a >
2018-10-25 20:36:29 +02:00
< a class = " btn btn-sm btn-danger recipe-include-delete-button " href = " # " data - recipe - include - id = " { { $recipeNesting->id }} " data - recipe - include - name = " { { FindObjectInArrayByPropertyValue( $recipes , 'id', $recipeNesting->includes_recipe_id )->name }} " >
2018-10-23 19:36:39 +02:00
< i class = " fas fa-trash " ></ i >
</ a >
</ td >
< td >
2018-10-25 20:36:29 +02:00
{{ FindObjectInArrayByPropertyValue ( $recipes , 'id' , $recipeNesting -> includes_recipe_id ) -> name }}
2018-10-23 19:36:39 +02:00
</ td >
2019-03-05 23:45:04 +01:00
< td >
{{ $recipeNesting -> servings }}
</ td >
2018-10-23 19:36:39 +02:00
</ tr >
@ endforeach
@ endif
</ tbody >
</ table >
</ div >
</ div >
2019-01-26 20:06:01 +01:00
< div class = " row mt-5 " >
< div class = " col " >
2019-05-01 20:19:18 +02:00
< label class = " mt-2 " > {{ $__t ( 'Picture' ) }} </ label >
< button id = " delete-current-recipe-picture-button " class = " btn btn-sm btn-danger @if(empty( $recipe->picture_file_name )) disabled @endif " >< i class = " fas fa-trash " ></ i > {{ $__t ( 'Delete' ) }} </ button >
2019-01-26 20:06:01 +01:00
@ if ( ! empty ( $recipe -> picture_file_name ))
2019-09-18 13:59:37 +02:00
< p >< img id = " current-recipe-picture " data - src = " { { $U ('/api/files/recipepictures/' . base64_encode( $recipe->picture_file_name ) . '?force_serve_as=picture&best_fit_width=400') }} " class = " img-fluid img-thumbnail mt-2 lazy " ></ p >
2019-05-01 20:19:18 +02:00
< p id = " delete-current-recipe-picture-on-save-hint " class = " form-text text-muted font-italic d-none " > {{ $__t ( 'The current picture will be deleted when you save the recipe' ) }} </ p >
2019-01-26 20:06:01 +01:00
@ else
2019-05-01 20:19:18 +02:00
< p id = " no-current-recipe-picture-hint " class = " form-text text-muted font-italic " > {{ $__t ( 'No picture available' ) }} </ p >
2019-01-26 20:06:01 +01:00
@ endif
</ div >
2020-01-21 13:20:26 -06:00
</ div >
2018-07-14 18:23:41 +02:00
</ div >
2020-01-21 13:20:26 -06:00
2018-07-14 18:23:41 +02:00
</ div >
2018-10-25 20:36:29 +02:00
< div class = " modal fade " id = " recipe-include-editform-modal " tabindex = " -1 " >
< div class = " modal-dialog " >
< div class = " modal-content text-center " >
< div class = " modal-header " >
< h4 id = " recipe-include-editform-title " class = " modal-title w-100 " ></ h4 >
</ div >
< div class = " modal-body " >
< form id = " recipe-include-form " novalidate >
2019-03-05 23:45:04 +01:00
@ include ( 'components.recipepicker' , array (
'recipes' => $recipes ,
'isRequired' => true
))
@ include ( 'components.numberpicker' , array (
'id' => 'includes_servings' ,
'label' => 'Servings' ,
'min' => 1 ,
'value' => '1' ,
2019-05-01 20:19:18 +02:00
'invalidFeedback' => $__t ( 'This cannot be lower than %s' , '1' )
2019-03-05 23:45:04 +01:00
))
2018-10-25 20:36:29 +02:00
</ form >
</ div >
< div class = " modal-footer " >
2019-05-01 20:19:18 +02:00
< button type = " button " class = " btn btn-secondary " data - dismiss = " modal " > {{ $__t ( 'Cancel' ) }} </ button >
< button id = " save-recipe-include-button " data - dismiss = " modal " class = " btn btn-success " > {{ $__t ( 'Save' ) }} </ button >
2018-10-25 20:36:29 +02:00
</ div >
</ div >
</ div >
</ div >
2018-07-14 18:23:41 +02:00
@ stop