diff --git a/controllers/GenericEntityApiController.php b/controllers/GenericEntityApiController.php index fd1347e1..9f2c59c4 100644 --- a/controllers/GenericEntityApiController.php +++ b/controllers/GenericEntityApiController.php @@ -64,7 +64,7 @@ class GenericEntityApiController extends BaseApiController } else { - return $this->GenericErrorResponse($response, $ex->getMessage()); + return $this->GenericErrorResponse($response, "Invalid entity"); } } diff --git a/public/js/grocy.js b/public/js/grocy.js index aedc8da6..f24f7d82 100644 --- a/public/js/grocy.js +++ b/public/js/grocy.js @@ -696,3 +696,10 @@ $(document).on("click", "a.btn.link-return", function(e) location.href = U(link); } }); + +$('.dropdown-item').has('.form-check input[type=checkbox]').on('click', function (e) { + if($(e.target).is('div.form-check') || $(e.target).is('div.dropdown-item')) + { + $(e.target).find('input[type=checkbox]').click(); + } +}) diff --git a/public/js/grocy_nightmode.js b/public/js/grocy_nightmode.js index 2fb118a1..d4fc8c9a 100644 --- a/public/js/grocy_nightmode.js +++ b/public/js/grocy_nightmode.js @@ -3,11 +3,11 @@ var value = $(this).is(":checked"); if (value) { - $("body").addClass("night-mode"); - // Force disable auto night mode when night mode is enabled $("#auto-night-mode-enabled").prop("checked", false); $("#auto-night-mode-enabled").trigger("change"); + + $("body").addClass("night-mode"); } else { diff --git a/public/viewjs/components/datetimepicker.js b/public/viewjs/components/datetimepicker.js index 38b1f2da..461a952e 100644 --- a/public/viewjs/components/datetimepicker.js +++ b/public/viewjs/components/datetimepicker.js @@ -12,9 +12,6 @@ Grocy.Components.DateTimePicker.GetValue = function() Grocy.Components.DateTimePicker.SetValue = function(value) { - Grocy.Components.DateTimePicker.GetInputElement().val(value); - Grocy.Components.DateTimePicker.GetInputElement().trigger('change'); - // "Click" the shortcut checkbox when the desired value is // not the shortcut value and it is currently set var shortcutValue = $("#datetimepicker-shortcut").data("datetimepicker-shortcut-value"); @@ -22,6 +19,8 @@ Grocy.Components.DateTimePicker.SetValue = function(value) { $("#datetimepicker-shortcut").click(); } + Grocy.Components.DateTimePicker.GetInputElement().val(value); + Grocy.Components.DateTimePicker.GetInputElement().trigger('change'); Grocy.Components.DateTimePicker.GetInputElement().keyup(); } diff --git a/public/viewjs/purchase.js b/public/viewjs/purchase.js index 89a91212..910711bf 100644 --- a/public/viewjs/purchase.js +++ b/public/viewjs/purchase.js @@ -29,7 +29,14 @@ var jsonData = {}; jsonData.amount = amount; - jsonData.best_before_date = Grocy.Components.DateTimePicker.GetValue(); + if (Grocy.Components.DateTimePicker) + { + jsonData.best_before_date = Grocy.Components.DateTimePicker.GetValue(); + } + else { + jsonData.best_before_date = null; + } + if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) { jsonData.shopping_location_id = Grocy.Components.ShoppingLocationPicker.GetValue(); @@ -99,7 +106,10 @@ { Grocy.Components.LocationPicker.Clear(); } - Grocy.Components.DateTimePicker.Clear(); + if(Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) + { + Grocy.Components.DateTimePicker.Clear(); + } Grocy.Components.ProductPicker.SetValue(''); if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) { @@ -265,23 +275,21 @@ if (Grocy.Components.ProductPicker !== undefined) $("#tare-weight-handling-info").addClass("d-none"); } - if (!Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) + if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) { - Grocy.Components.DateTimePicker.SetValue('2999-12-31'); - } - - if (productDetails.product.default_best_before_days.toString() !== '0') - { - if (productDetails.product.default_best_before_days == -1) + if (productDetails.product.default_best_before_days.toString() !== '0') { - if (!$("#datetimepicker-shortcut").is(":checked")) + if (productDetails.product.default_best_before_days == -1) { - $("#datetimepicker-shortcut").click(); + if (!$("#datetimepicker-shortcut").is(":checked")) + { + $("#datetimepicker-shortcut").click(); + } + } + else + { + Grocy.Components.DateTimePicker.SetValue(moment().add(productDetails.product.default_best_before_days, 'days').format('YYYY-MM-DD')); } - } - else - { - Grocy.Components.DateTimePicker.SetValue(moment().add(productDetails.product.default_best_before_days, 'days').format('YYYY-MM-DD')); } } diff --git a/services/CalendarService.php b/services/CalendarService.php index 11f19c0b..f90dab17 100644 --- a/services/CalendarService.php +++ b/services/CalendarService.php @@ -95,6 +95,8 @@ class CalendarService extends BaseService } $mealPlanRecipeEvents = []; + $mealPlanNotesEvents = []; + $mealPlanProductEvents = []; if (GROCY_FEATURE_FLAG_RECIPES) { @@ -120,7 +122,7 @@ class CalendarService extends BaseService $mealPlanDayNotes = $this->getDatabase()->meal_plan()->where('type', 'note'); $titlePrefix = $this->getLocalizationService()->__t('Meal plan note') . ': '; - $mealPlanNotesEvents = []; + foreach ($mealPlanDayNotes as $mealPlanDayNote) { @@ -134,7 +136,7 @@ class CalendarService extends BaseService $products = $this->getDatabase()->products(); $mealPlanDayProducts = $this->getDatabase()->meal_plan()->where('type', 'product'); $titlePrefix = $this->getLocalizationService()->__t('Meal plan product') . ': '; - $mealPlanProductEvents = []; + foreach ($mealPlanDayProducts as $mealPlanDayProduct) { diff --git a/views/components/locationpicker.blade.php b/views/components/locationpicker.blade.php index f8840b3d..36e5b678 100644 --- a/views/components/locationpicker.blade.php +++ b/views/components/locationpicker.blade.php @@ -8,10 +8,10 @@ @php if(empty($hint)) { $hint = ''; } @endphp