From 80c06e5b7693f4a74e769649808220b3f18be406 Mon Sep 17 00:00:00 2001 From: MeowcaTheoRange Date: Fri, 9 Sep 2022 13:22:38 -0500 Subject: [PATCH] Added Timer and About. Also, moved Add operations to top. --- assets/tone.mp3 | Bin 0 -> 70136 bytes canvas.js | 54 +++++++++++++++++++++++++++++++++++++- index.html | 64 +++++++++++++++++++++++++++++++++++++++++++--- styles/clock.css | 48 +++++++++++++++++++++++++++++----- styles/dialog.css | 16 ++++++++++++ 5 files changed, 172 insertions(+), 10 deletions(-) create mode 100644 assets/tone.mp3 diff --git a/assets/tone.mp3 b/assets/tone.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..24dd1f70329b35dffbcea2e4fa97870c9712daba GIT binary patch literal 70136 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 X`#@(W { var canvas = clock.querySelector("canvas"); var ctx = canvas.getContext("2d"); @@ -8,6 +10,16 @@ document.querySelectorAll(".clock").forEach((clock) => { ctx.lineCap = "round"; update(); }); +document.querySelectorAll(".timer").forEach((clock) => { + var canvas = clock.querySelector("canvas"); + var ctx = canvas.getContext("2d"); + ctx.resetTransform(); + ctx.translate(32, 32); + ctx.strokeStyle = getComputedStyle(document.documentElement).getPropertyValue('--foreground'); + ctx.lineWidth = 2; + ctx.lineCap = "round"; + update(); +}); function update() { document.querySelectorAll(".clock").forEach((clock, i) => { var canvas = clock.querySelector("canvas"); @@ -86,4 +98,44 @@ function updateMain() { window.requestAnimationFrame(updateMain); } -window.requestAnimationFrame(updateMain); \ No newline at end of file +window.requestAnimationFrame(updateMain); + +function updateTimer() { + document.querySelectorAll(".timer-enabled").forEach((clock, i) => { + var timer = clock.dataset.time; + var mins = Math.floor(timer / 60); + mins = (mins < 10 ? "0" + mins : mins); + var secs = timer % 60; + secs = (secs < 10 ? "0" + secs : secs); + + var canvas = clock.querySelector("canvas"); + var ctx = canvas.getContext("2d"); + ctx.strokeStyle = getComputedStyle(document.documentElement).getPropertyValue('--foreground'); + ctx.resetTransform(); + ctx.translate(32, 32); + ctx.lineWidth = 2; + ctx.lineCap = "round"; + var canvas = clock.querySelector("canvas"); + var ctx = canvas.getContext("2d"); + clock.querySelector(".mins").innerHTML = mins; + clock.querySelector(".seconds").innerHTML = secs; + ctx.clearRect(-32,-32, 64, 64); + ctx.beginPath(); + ctx.arc(0, 0, 30, 0, Math.PI * 2); + ctx.stroke(); + drawHand(ctx, (secs*Math.PI/30), 16); + }); +} + +setInterval(() => { + document.querySelectorAll(".timer-enabled:not(.timer-paused)").forEach((clock, i) => { + var timer = clock.dataset.time; + clock.dataset.time--; + if (timer <= 0) { + clock.classList.remove("timer-enabled"); + tone.play(); + } + }); + updateTimer(); +}, 1000); +updateTimer(); \ No newline at end of file diff --git a/index.html b/index.html index 8188105..0904185 100644 --- a/index.html +++ b/index.html @@ -19,12 +19,14 @@
+ + +
- - +
@@ -136,13 +138,47 @@
+
+
+

Configure Timer

+
+ + : +
+ +
+
+
+
+
+
+

About FunnyClock²

+
+ +

FunnyClock² is the successor of FunnyClock, an application made for my school to show when smartboards are idle.

+

FunnyClock was originally a single-file local webpage hosted on the computers of the teachers, and now with FunnyClock², it's a multi-file customizable suite for clocks and timers.

+

Special Thanks to

+
    +
  • Josh, science and tech teacher
  • +
  • Everyone who accepted my pitch for the FunnyClock² app
  • +
  • Among Us (Sussy background)
  • +
  • Portal 2 (Tile background)
  • +
  • Kaboom.js (Mark background)
  • +
  • Material Design (UI inspiration)
  • +
+
+ +
+
+
+