243 lines
5.3 KiB
JavaScript
243 lines
5.3 KiB
JavaScript
window.timer = {};
|
|
timer.maxTime;
|
|
timer.timeLeft;
|
|
timer.paused = false;
|
|
timer.stopped = true;
|
|
timer.over = false;
|
|
timer.chime = false;
|
|
|
|
window.stopwatch = {};
|
|
stopwatch.begin;
|
|
stopwatch.time;
|
|
stopwatch.stopped = true;
|
|
stopwatch.paused = false;
|
|
stopwatch.laps = 0;
|
|
|
|
|
|
window.options = {
|
|
timerType: "timerMode"
|
|
}
|
|
|
|
|
|
resetClock = function()
|
|
{
|
|
stopwatch.stop();
|
|
timer.stop();
|
|
timer.over = true;
|
|
$("#startStop").unbind("click");
|
|
$("#timerPause").unbind("click");
|
|
if (options.timerType == "timerMode")
|
|
{
|
|
$("#lapContainer").css("display", "none");
|
|
$("#startStop").on("click", timer.toggleStartStop);
|
|
$("#timerPause").on("click", timer.pause);
|
|
$("#timerSetup").css("display", "block");
|
|
}
|
|
if (options.timerType == "stopwatchMode")
|
|
{
|
|
$("#lapContainer").css("display", "block");
|
|
$("#startStop").on("click", stopwatch.toggleStartStop);
|
|
$("#timerPause").on("click", stopwatch.pause);
|
|
$("#timerSetup").css("display", "none");
|
|
}
|
|
|
|
$("#timerPause").attr("disabled", true);
|
|
$("h3 time").text("00:00:00");
|
|
}
|
|
|
|
stopwatch.addLap = function()
|
|
{
|
|
$("#lapContainer label").text(++stopwatch.laps);
|
|
}
|
|
|
|
stopwatch.start = function()
|
|
{
|
|
stopwatch.time = moment.duration(0);
|
|
$("#startStop").val("Reset");
|
|
$("#timerPause").attr("disabled", false);
|
|
$("#timerPause").val("Pause");
|
|
stopwatch.stopped = false;
|
|
stopwatch.paused = false;
|
|
stopwatch.laps = 0;
|
|
$("#lapContainer label").text("0");
|
|
}
|
|
|
|
stopwatch.stop = function()
|
|
{
|
|
stopwatch.time = moment.duration(0);
|
|
$("#startStop").val("Start");
|
|
$("#timerPause").attr("disabled", true);
|
|
$("#timerPause").val("Pause");
|
|
stopwatch.paused = false;
|
|
stopwatch.stopped = true;
|
|
stopwatch.laps = 0;
|
|
$("#lapContainer label").text("0");
|
|
}
|
|
|
|
stopwatch.toggleStartStop = function()
|
|
{
|
|
if (stopwatch.stopped)
|
|
stopwatch.start();
|
|
|
|
else
|
|
stopwatch.stop();
|
|
}
|
|
|
|
stopwatch.pause = function()
|
|
{
|
|
if (stopwatch.paused)
|
|
{
|
|
$("#timerPause").val("Pause");
|
|
stopwatch.paused = false;
|
|
}
|
|
else
|
|
{
|
|
$("#timerPause").val("Unpause");
|
|
stopwatch.paused = true;
|
|
}
|
|
}
|
|
|
|
stopwatch.drawNumbers = function()
|
|
{
|
|
$("h3 time").text(timer.format(stopwatch.time));
|
|
}
|
|
|
|
stopwatch.increment = function()
|
|
{
|
|
if (!stopwatch.stopped && !stopwatch.paused)
|
|
stopwatch.time.add(50, "milliseconds");
|
|
if (stopwatch.time != undefined)
|
|
stopwatch.drawNumbers();
|
|
}
|
|
|
|
|
|
timer.start = function()
|
|
{
|
|
timer.begin = moment();
|
|
timer.paused = false;
|
|
timer.maxTime = moment().add($("#timerHours").val(), "hours").add($("#timerMinutes").val(), "minutes").add($("#timerSeconds").val(), "seconds").add(1, "seconds");
|
|
timer.stopped = false;
|
|
timer.over = false;
|
|
timer.timeLeft = moment.duration(timer.maxTime.diff(timer.begin));
|
|
$("#startStop").val("Reset");
|
|
$("#timerPause").attr("disabled", false);
|
|
$("#timerPause").val("Pause");
|
|
document.getElementById("chime").currentTime=0;
|
|
}
|
|
|
|
timer.stop = function()
|
|
{
|
|
timer.paused = false;
|
|
timer.stopped = true;
|
|
if (!timer.over)
|
|
{
|
|
timer.begin = moment();
|
|
timer.maxTime = moment().add($("#timerHours").val(), "hours").add($("#timerMinutes").val(), "minutes").add($("#timerSeconds").val(), "seconds");
|
|
timer.timeLeft = moment.duration(timer.maxTime.diff(timer.begin));
|
|
}
|
|
$("#startStop").val("Start");
|
|
$("#timerPause").attr("disabled", true);
|
|
document.getElementById("chime").pause();
|
|
document.getElementById("chime").currentTime=0;
|
|
}
|
|
|
|
timer.pause = function()
|
|
{
|
|
if (timer.paused)
|
|
{
|
|
$("#timerPause").val("Pause");
|
|
timer.paused = false;
|
|
}
|
|
else
|
|
{
|
|
$("#timerPause").val("Unpause");
|
|
timer.paused = true;
|
|
}
|
|
}
|
|
|
|
timer.finish = function()
|
|
{
|
|
timer.over = true;
|
|
$("#timerPause").attr("disabled", true);
|
|
if ($("#chimeBool").is(":checked"))
|
|
document.getElementById("chime").play();
|
|
}
|
|
|
|
timer.wait = function()
|
|
{
|
|
if (!timer.over)
|
|
timer.finish();
|
|
}
|
|
|
|
timer.toggleStartStop = function()
|
|
{
|
|
if (timer.stopped)
|
|
{
|
|
timer.start();
|
|
console.log("timer started")
|
|
}
|
|
|
|
else timer.stop();
|
|
}
|
|
|
|
timer.drawNumbers = function()
|
|
{
|
|
$("h3 time").text(timer.format(timer.timeLeft));
|
|
if (timer.timeLeft.get("seconds") <= 0 && timer.timeLeft.get("minutes") <= 0 && timer.timeLeft.get("hours") <= 0)
|
|
{
|
|
$("h3 time").text("00:00:00");
|
|
timer.wait();
|
|
}
|
|
}
|
|
|
|
timer.format = function(prop)
|
|
{
|
|
var ret = "";
|
|
ret += timer.pad(prop.get("hours"));
|
|
ret += ":"
|
|
ret += timer.pad(prop.get("minutes"));
|
|
ret += ":"
|
|
ret += timer.pad(prop.get("seconds"));
|
|
return ret;
|
|
}
|
|
|
|
timer.pad = function(n)
|
|
{
|
|
if (n <= 9)
|
|
return "0" + n;
|
|
else return n;
|
|
}
|
|
|
|
timer.increment = function()
|
|
{
|
|
switch(options.timerType)
|
|
{
|
|
case "timerMode":
|
|
if (!timer.stopped && !timer.paused && timer.format(timer.timeLeft) != undefined)
|
|
timer.timeLeft.subtract(50, "milliseconds");
|
|
|
|
if (timer.timeLeft != undefined)
|
|
timer.drawNumbers();
|
|
break;
|
|
|
|
case "stopwatchMode":
|
|
if (!stopwatch.stopped && !stopwatch.paused)
|
|
stopwatch.time.add(50, "milliseconds");
|
|
|
|
if (stopwatch.time != undefined)
|
|
stopwatch.drawNumbers();
|
|
break;
|
|
}
|
|
}
|
|
|
|
window.updateFuncs = [ resetClock ];
|
|
|
|
$(document).ready(function(){
|
|
initOption("#timerType");
|
|
$("#addLap").on("click", stopwatch.addLap);
|
|
$("#lapContainer").css("display", "none");
|
|
$("#startStop").on("click", timer.toggleStartStop);
|
|
$("#timerPause").on("click", timer.pause)
|
|
$("#timerPause").attr("disabled", true);
|
|
window.clock = setInterval(timer.increment, 50);
|
|
})
|