diff --git a/solitaire_server/web/index.html b/solitaire_server/web/index.html
index 7338013..1dd18cb 100644
--- a/solitaire_server/web/index.html
+++ b/solitaire_server/web/index.html
@@ -30,6 +30,7 @@
+
diff --git a/solitaire_server/web/replay.js b/solitaire_server/web/replay.js
index 23c8c5b..4ae8f10 100644
--- a/solitaire_server/web/replay.js
+++ b/solitaire_server/web/replay.js
@@ -62,6 +62,7 @@ const resultEl = document.getElementById("result");
const btnPlay = document.getElementById("btn-play");
const btnStep = document.getElementById("btn-step");
const btnPrev = document.getElementById("btn-prev");
+const btnRestart = document.getElementById("btn-restart");
let player = null;
let replayJson = null;
@@ -122,6 +123,7 @@ function resetPlayer() {
}
player = new ReplayPlayer(replayJson);
btnPrev.disabled = true;
+ btnRestart.disabled = true;
btnStep.disabled = false;
btnPlay.disabled = false;
render(player.state());
@@ -134,6 +136,7 @@ function step() {
return null;
}
btnPrev.disabled = false;
+ btnRestart.disabled = false;
render(snap);
return snap;
}
@@ -319,6 +322,7 @@ function stepBack() {
}
render(player.state());
btnPrev.disabled = player.step_idx() === 0;
+ btnRestart.disabled = player.step_idx() === 0;
btnStep.disabled = false;
btnPlay.disabled = false;
}
@@ -327,4 +331,11 @@ btnPrev.addEventListener("click", () => {
if (player) stepBack();
});
+btnRestart.addEventListener("click", () => {
+ if (!replayJson) return;
+ cardEls.forEach((el) => el.remove());
+ cardEls.clear();
+ resetPlayer();
+});
+
bootstrap();