| 
									
										
										
										
											2018-09-29 15:39:16 +02:00
										 |  |  |  | $("#night-mode-enabled").on("change", function() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	var value = $(this).is(":checked"); | 
					
						
							|  |  |  |  | 	if (value) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-09-18 19:43:33 +02:00
										 |  |  |  | 		// Force disable auto night mode when night mode is enabled
 | 
					
						
							|  |  |  |  | 		$("#auto-night-mode-enabled").prop("checked", false); | 
					
						
							|  |  |  |  | 		$("#auto-night-mode-enabled").trigger("change"); | 
					
						
							| 
									
										
										
										
											2020-09-14 11:15:11 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		$("body").addClass("night-mode"); | 
					
						
							| 
									
										
										
										
											2018-09-29 15:39:16 +02:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		$("body").removeClass("night-mode"); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-30 13:33:21 +02:00
										 |  |  |  | $("#auto-night-mode-enabled").on("change", function() | 
					
						
							| 
									
										
										
										
											2018-09-29 15:39:16 +02:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-09-30 13:33:21 +02:00
										 |  |  |  | 	var value = $(this).is(":checked"); | 
					
						
							| 
									
										
										
										
											2018-09-30 17:14:04 +02:00
										 |  |  |  | 	$("#auto-night-mode-time-range-from").prop("readonly", !value); | 
					
						
							|  |  |  |  | 	$("#auto-night-mode-time-range-to").prop("readonly", !value); | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (!value && !BoolVal(Grocy.UserSettings.night_mode_enabled)) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		$("body").removeClass("night-mode"); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-09-18 19:43:33 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Force disable night mode when auto night mode is enabled
 | 
					
						
							|  |  |  |  | 	if (value) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		$("#night-mode-enabled").prop("checked", false); | 
					
						
							|  |  |  |  | 		$("#night-mode-enabled").trigger("change"); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | $(document).on("keyup", "#auto-night-mode-time-range-from, #auto-night-mode-time-range-to", function() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	var value = $(this).val(); | 
					
						
							|  |  |  |  | 	var valueIsValid = moment(value, "HH:mm", true).isValid(); | 
					
						
							| 
									
										
										
										
											2020-08-29 16:41:27 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | 	if (valueIsValid) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		$(this).removeClass("bg-danger"); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		$(this).addClass("bg-danger"); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	CheckNightMode(); | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | $("#auto-night-mode-time-range-goes-over-midgnight").on("change", function() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	CheckNightMode(); | 
					
						
							| 
									
										
										
										
											2018-09-30 13:33:21 +02:00
										 |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-21 08:25:32 +02:00
										 |  |  |  | if (Grocy.UserId !== -1) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	$("#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"); | 
					
						
							|  |  |  |  | 	$("#auto-night-mode-time-range-to").val(Grocy.UserSettings.auto_night_mode_time_range_to); | 
					
						
							|  |  |  |  | 	$("#auto-night-mode-time-range-to").trigger("keyup"); | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | function CheckNightMode() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-09-21 08:25:32 +02:00
										 |  |  |  | 	if (Grocy.UserId === -1 || !BoolVal(Grocy.UserSettings.auto_night_mode_enabled)) | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	var start = moment(Grocy.UserSettings.auto_night_mode_time_range_from, "HH:mm", true); | 
					
						
							|  |  |  |  | 	var end = moment(Grocy.UserSettings.auto_night_mode_time_range_to, "HH:mm", true); | 
					
						
							|  |  |  |  | 	var now = moment(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (!start.isValid() || !end.isValid) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (BoolVal(Grocy.UserSettings.auto_night_mode_time_range_goes_over_midnight)) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		end.add(1, "day"); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (start.isSameOrBefore(now) && end.isSameOrAfter(now)) // We're INSIDE of night mode time range
 | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-30 19:31:03 +02:00
										 |  |  |  | 		if (!$("body").hasClass("night-mode")) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			$("body").addClass("night-mode"); | 
					
						
							|  |  |  |  | 			$("#currently-inside-night-mode-range").prop("checked", true); | 
					
						
							|  |  |  |  | 			$("#currently-inside-night-mode-range").trigger("change"); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else // We're OUTSIDE of night mode time range
 | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-30 19:31:03 +02:00
										 |  |  |  | 		if ($("body").hasClass("night-mode")) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			$("body").removeClass("night-mode"); | 
					
						
							|  |  |  |  | 			$("#currently-inside-night-mode-range").prop("checked", false); | 
					
						
							|  |  |  |  | 			$("#currently-inside-night-mode-range").trigger("change"); | 
					
						
							| 
									
										
										
										
											2020-08-29 16:41:27 +02:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-09-30 18:02:59 +02:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-09-21 08:25:32 +02:00
										 |  |  |  | if (Grocy.UserId !== -1) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	CheckNightMode(); | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-09-30 19:31:03 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | if (Grocy.Mode === "production") | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	setInterval(CheckNightMode, 60000); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | else | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	setInterval(CheckNightMode, 4000); | 
					
						
							|  |  |  |  | } |