From ba2d32be60b1a218ab3f10d19b5eccd4b42d7583 Mon Sep 17 00:00:00 2001 From: Bernd Bestel Date: Sun, 30 Sep 2018 19:31:03 +0200 Subject: [PATCH] Fixes for auto night mode (references #71) --- config-dist.php | 1 + public/js/extensions.js | 2 +- public/js/grocy_nightmode.js | 31 ++++++++++++++++++++++++------- views/layout/default.blade.php | 3 ++- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/config-dist.php b/config-dist.php index 715a3484..44bdc278 100644 --- a/config-dist.php +++ b/config-dist.php @@ -37,6 +37,7 @@ DefaultUserSetting('auto_night_mode_enabled', false); // If night mode is enable DefaultUserSetting('auto_night_mode_time_range_from', "20:00"); // Format HH:mm DefaultUserSetting('auto_night_mode_time_range_to', "07:00"); // Format HH:mm DefaultUserSetting('auto_night_mode_time_range_goes_over_midnight', true); // If the time range above goes over midnight +DefaultUserSetting('currently_inside_night_mode_range', false); // If we're currently inside of night mode time range (this is not user configurable, but stored as a user setting because it's evaluated client side to be able to use the client time instead of the maybe different server time) # If the page should be automatically reloaded when there was # an external change diff --git a/public/js/extensions.js b/public/js/extensions.js index eade9f9a..693d3acd 100644 --- a/public/js/extensions.js +++ b/public/js/extensions.js @@ -47,7 +47,7 @@ BoolVal = function(test) var anything = test.toString().toLowerCase(); if (anything === true || anything === "true" || anything === "1" || anything === "on") { - return true + return true; } else { diff --git a/public/js/grocy_nightmode.js b/public/js/grocy_nightmode.js index d6957388..49a136ef 100644 --- a/public/js/grocy_nightmode.js +++ b/public/js/grocy_nightmode.js @@ -45,9 +45,9 @@ $("#auto-night-mode-time-range-goes-over-midgnight").on("change", function() CheckNightMode(); }); -$("#night-mode-enabled").prop("checked", Grocy.NightModeEnabled); -$("#auto-night-mode-enabled").prop("checked", Grocy.UserSettings.auto_night_mode_enabled); -$("#auto-night-mode-time-range-goes-over-midgnight").prop("checked", Grocy.UserSettings.auto_night_mode_time_range_goes_over_midnight); +$("#night-mode-enabled").prop("checked", BoolVal(Grocy.UserSettings.night_mode_enabled)); +$("#auto-night-mode-enabled").prop("checked", BoolVal(Grocy.UserSettings.auto_night_mode_enabled)); +$("#auto-night-mode-time-range-goes-over-midgnight").prop("checked", BoolVal(Grocy.UserSettings.auto_night_mode_time_range_goes_over_midnight)); $("#auto-night-mode-enabled").trigger("change"); $("#auto-night-mode-time-range-from").val(Grocy.UserSettings.auto_night_mode_time_range_from); $("#auto-night-mode-time-range-from").trigger("keyup"); @@ -77,13 +77,30 @@ function CheckNightMode() if (start.isSameOrBefore(now) && end.isSameOrAfter(now)) // We're INSIDE of night mode time range { - $("body").addClass("night-mode"); + if (!$("body").hasClass("night-mode")) + { + $("body").addClass("night-mode"); + $("#currently-inside-night-mode-range").prop("checked", true); + $("#currently-inside-night-mode-range").trigger("change"); + } } else // We're OUTSIDE of night mode time range { - $("body").removeClass("night-mode"); + if ($("body").hasClass("night-mode")) + { + $("body").removeClass("night-mode"); + $("#currently-inside-night-mode-range").prop("checked", false); + $("#currently-inside-night-mode-range").trigger("change"); + } } } CheckNightMode(); -//setInterval(CheckNightMode, 60000); -setInterval(CheckNightMode, 4000); + +if (Grocy.Mode === "production") +{ + setInterval(CheckNightMode, 60000); +} +else +{ + setInterval(CheckNightMode, 4000); +} diff --git a/views/layout/default.blade.php b/views/layout/default.blade.php index 8ed1ab58..5cd74855 100644 --- a/views/layout/default.blade.php +++ b/views/layout/default.blade.php @@ -46,7 +46,7 @@ - +