goofy timer
goofy timer
by thomas_david88
HTML
<div id=time></div>
<div id=milli></div>
JavaScript
$(function() {
var timer, idle = false
$(window).on({
blur: pause,
focus: somethingHappened
})
$(document).on({
mousemove: somethingHappened,
click: somethingHappened,
touchstart: somethingHappened
})
var start = new Date,
bad = 0
adjust('80:00:00')
somethingHappened()
setInterval(function() {
$("#time").text(formatMilli(new Date - start - bad))
$("#milli").text(seconds($("#time").text()))
if (idle) bad += 1000
}, 1000)
function seconds(s) {
const t = s.split(":").map(Number)
return (t[0] * 60 + t[1]) * 60 + t[2]
}
function adjust(time) {
const t = time.split(/:/).map(Number).reverse()
if (t[0]) start.setSeconds(start.getSeconds() - t[0]);
if (t[1]) start.setMinutes(start.getMinutes() - t[1]);
if (t[2]) start.setHours(start.getHours() - t[2]);
console.log(t)
}
function pause() {
idle = true
}
function somethingHappened() {
idle = false
clearTimeout(timer)
timer = setTimeout(function() {
idle = true
}, 50000000)
}
})
function formatSeconds (seconds) {
const t = [seconds / 3600, seconds / 60 % 60, seconds % 60].map(Math.trunc)
t[1] = t[1].toString().padStart(2, "0")
t[2] = t[2].toString().padStart(2, "0")
return t.join(":")
};
function formatMilli(milli) { //0:00:05
return formatSeconds(milli / 1000 )
}