From 4a033f90ce566b6beb8f3cb0abe0882bd9de1195 Mon Sep 17 00:00:00 2001 From: William Baker Date: Thu, 14 Sep 2023 11:41:18 -0400 Subject: [PATCH] Use icons for debug buttons --- wasm/in.coffee | 31 +++++++++++++++++++------------ wasm/in.scss | 7 ++++++- wasm/index.html | 18 ++++++++++++++---- wasm/lowdata.html | 2 +- 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/wasm/in.coffee b/wasm/in.coffee index dcd971b..db05d3a 100644 --- a/wasm/in.coffee +++ b/wasm/in.coffee @@ -194,10 +194,10 @@ debugBase = createWorker 'debugProgram' elements.program.value = elements.stdout.innerText elements.stdout.innerText = '' -pause = -> +pause = => clearInterval interval - elements.playPause.textContent = 'Play' - elements.playPause.onclick = play + interval = -1 + elements.playPause.textContent = @PLAY_TEXT elements.slower.disabled = true elements.faster.disabled = true elements.step.disabled = false @@ -206,14 +206,18 @@ pause = -> minDelay = 4 # Not really a useful upper limit but one that keeps setInterval from breaking maxDelay = 1 << 30 -play = -> - elements.playPause.textContent = 'Pause' - elements.playPause.onclick = pause - elements.slower.disabled = false +play = => + elements.playPause.textContent = @PAUSE_TEXT + elements.slower.disabled = delay >= maxDelay elements.faster.disabled = delay <= minDelay - elements.step.disabled = delay >= maxDelay + elements.step.disabled = true interval = setInterval step, delay +Object.defineProperty @, 'isPaused', get: -> interval is -1 + +@playPause = => + if @isPaused then play() else pause() + @faster = -> clearInterval interval delay /= 2 @@ -228,7 +232,7 @@ play = -> elements.faster.disabled = false elements.slower.disabled = delay >= maxDelay -@debugProgram = -> +@debugProgram = => await expandBase() elements.debugProgram.hidden = false @@ -254,9 +258,11 @@ play = -> elements.stdout.innerText = '' elements.debugInfo.hidden = false - setTimeout -> - elements.playPause.style.width = "#{elements.playPause.offsetWidth}px" - pause() + if not elements.playPause.style?.width + elements.playPause.textContent = @PAUSE_TEXT + setTimeout -> + elements.playPause.style.width = "#{elements.playPause.offsetWidth}px" + pause() await debugBase() @@ -265,6 +271,7 @@ play = -> elements.debugProgram.innerHTML = '' elements.debugProgram.hidden = true elements.program.hidden = false + pause() renderThreads = -> for row in elements.threads.children diff --git a/wasm/in.scss b/wasm/in.scss index d9ab03d..03794f3 100644 --- a/wasm/in.scss +++ b/wasm/in.scss @@ -84,7 +84,7 @@ a { } body { - font-family: sans-serif; + font-family: Arial, Helvetica, sans-serif; -webkit-text-size-adjust: 100%; margin: 0; min-height: 100vh; @@ -512,6 +512,11 @@ footer, min-width: fit-content; } +#step { + letter-spacing: -0.1875em; + padding-right: 0.5625em; +} + [id^="row-"] { width: fit-content; diff --git a/wasm/index.html b/wasm/index.html index 079b200..4ccc1d4 100644 --- a/wasm/index.html +++ b/wasm/index.html @@ -38,6 +38,8 @@
@@ -101,10 +111,10 @@
Input

Output

Errors

\ No newline at end of file +o " " " o ' ( @ .
Input

Output

Errors

\ No newline at end of file