mirror of https://github.com/nealey/vail.git
Introducing the chart-o-matic!
This will eventually become a chart of what keys you hit when, and how that resulted in tones being sent.
This commit is contained in:
parent
6d4acd98a8
commit
96decf8166
|
@ -0,0 +1,71 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Chart-O-Matic</title>
|
||||||
|
<script>
|
||||||
|
data = []
|
||||||
|
|
||||||
|
const Millisecond = 1
|
||||||
|
const Second = 1000 * Millisecond
|
||||||
|
const ChartWidth = 20 * Second
|
||||||
|
|
||||||
|
function draw(canvas) {
|
||||||
|
let ctx = canvas.getContext("2d")
|
||||||
|
let now = Date.now()
|
||||||
|
let begin = now - ChartWidth
|
||||||
|
|
||||||
|
let xScale = canvas.width / ChartWidth
|
||||||
|
|
||||||
|
ctx.clearRect(0, 0, canvas.width, canvas.height)
|
||||||
|
ctx.save()
|
||||||
|
|
||||||
|
// Make 0,0 be the lower-left corner, like in PostScript
|
||||||
|
ctx.scale(1, -1)
|
||||||
|
ctx.translate(0, -canvas.height)
|
||||||
|
|
||||||
|
ctx.strokeStyle = "red"
|
||||||
|
ctx.lineWidth = 2
|
||||||
|
let y = 0
|
||||||
|
ctx.moveTo(0, y)
|
||||||
|
ctx.beginPath()
|
||||||
|
for (let point of data) {
|
||||||
|
let x = (point[0] - begin) * xScale
|
||||||
|
ctx.lineTo(x, y)
|
||||||
|
y = point[1] * canvas.height
|
||||||
|
ctx.lineTo(x, y)
|
||||||
|
}
|
||||||
|
ctx.stroke()
|
||||||
|
|
||||||
|
ctx.restore()
|
||||||
|
requestAnimationFrame(() => draw(canvas))
|
||||||
|
}
|
||||||
|
|
||||||
|
function update() {
|
||||||
|
let now = Date.now()
|
||||||
|
let earliest = now - ChartWidth
|
||||||
|
|
||||||
|
data.push([now, Math.sin(now/Second)>0?1:0])
|
||||||
|
while (data[0][0] < earliest) {
|
||||||
|
data.shift()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
let canvas = document.querySelector("#chart")
|
||||||
|
canvas.width = ChartWidth / (20 * Millisecond)
|
||||||
|
setInterval(update, 50 * Millisecond)
|
||||||
|
draw(canvas)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === "loading") {
|
||||||
|
document.addEventListener("DOMContentLoaded", init)
|
||||||
|
} else {
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>The Amazing Chart-O-Matic</h1>
|
||||||
|
<canvas id="chart" style="border: solid black 1px; width: 100%;"></canvas>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue