diff --git a/override.html b/override.html index b7e59ef..9de5425 100644 --- a/override.html +++ b/override.html @@ -47,6 +47,13 @@

Override activated. Blocking will be suspended until .

Note: Override will have no effect because you have not selected
"Allow temporary override for these sites" for any block sets.

+
+
+
Change Duration
+
+
+
+
diff --git a/override.js b/override.js index e8df6fc..517ee4b 100644 --- a/override.js +++ b/override.js @@ -226,7 +226,11 @@ function activateOverride() { // Calculate end time for override let endTime = Math.floor(Date.now() / 1000) + (gClockOffset * 60) + (gOverrideMins * 60); + changeOverride(endTime); +} +// Activate override or change endtime [with second-precision] +function changeOverride(endTime) { // Request override let message = { type: "override", @@ -244,6 +248,40 @@ function activateOverride() { $("#alertOverrideSetList").html(""); } $("#alertOverrideActivated").dialog("open"); + + //Update override time + let minDate = Date.now(); + let fixTime = function(sliderDate) { + $("#timeDisplay").text( timeDiffToStr(sliderDate-minDate) + "\n" + sliderDate.toLocaleTimeString() ); + }; + + //keep the remaining time counting from a UI-perspective + setInterval(function(){ + minDate = Date.now(); + fixTime(new Date($("#slider").slider("value"))); + }, 60*1000); + $("#slider").slider({ + min: minDate, + max: endTime, + value: endTime, + range: "min", + create: function() { + let sliderDate = new Date($(this).slider("value")); + fixTime(sliderDate); + }, + slide: function( event, ui ) { + let sliderDate = new Date(ui.value); + fixTime(sliderDate); + + //Add a Update-Button + $("#alertOverrideActivated").dialog("option", "buttons", Object.assign({ + Update:function() { + //$(this).dialog("close"); + changeOverride($("#slider").slider("value")/1000); + } + },$("#alertOverrideActivated").dialog("option", "buttons"))); + } + }); } else { // Close page immediately (no confirmation dialog) closePage(); @@ -311,6 +349,10 @@ $("#alertOverrideActivated").dialog({ close: function (event, ui) { closePage(); } }); +function timeDiffToStr(diff) { + return Math.floor(diff/3600000)+":"+(Math.floor(diff/60000)%60).toLocaleString('en-US', {minimumIntegerDigits: 2}); +} + // Initialize access control prompts initAccessControlPrompt("promptPassword"); initAccessControlPrompt("promptAccessCode");