From 9af2df7c760b383bbb087923b85fe899c134eaec Mon Sep 17 00:00:00 2001 From: coelacanth657 <210202793+coelacanth657@users.noreply.github.com> Date: Mon, 10 Nov 2025 21:27:46 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=E7=9B=A4=E9=9D=A2=E3=81=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=99=82=E3=81=AB=E5=81=9C=E6=AD=A2=E3=81=97=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=95=8F=E9=A1=8C=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/+page.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 98c0e5d..2f66966 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -374,6 +374,7 @@ class="btn btn-ghost hover:bg-[rgb(220,220,220)] text-black" onclick={() => { isProgress = false; + sendEvent("pause"); sendEvent("save_board"); }} > From aa545a60e582245d18638bc533613702da1b65dc Mon Sep 17 00:00:00 2001 From: coelacanth657 <210202793+coelacanth657@users.noreply.github.com> Date: Tue, 11 Nov 2025 12:05:46 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E7=9B=A4=E9=9D=A2=E9=81=B8=E6=8A=9E?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/+page.svelte | 74 +++++++++++++++++++++++++++++++-- src/routes/api.ts | 47 ++++++++++++++++++++- src/routes/api/board/+server.ts | 48 ++++++++++++++++----- 3 files changed, 153 insertions(+), 16 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 2f66966..f4f76f2 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -5,7 +5,7 @@ import lifeGameJS from "@/iframe/life-game.js?raw"; import patterns from "$lib/board-templates"; import * as icons from "$lib/icons/index.ts"; - import { loadBoard, saveBoard } from "./api.ts"; + import { saveBoard, fetchBoardList, loadBoardById, type BoardListItem } from "./api.ts"; let editingCode = $state(lifeGameJS); let appliedCode = $state(lifeGameJS); @@ -27,6 +27,12 @@ let saveState: SaveState = $state({ saving: false }); let boardNameInput = $state(""); + type LoadState = + | { state: "closed" } + | { state: "loading" } + | { state: "list"; list: BoardListItem[] }; + let loadState: LoadState = $state({ state: "closed" }); + type OngoingEvent = | "play" | "pause" @@ -90,11 +96,24 @@ } async function handleLoad() { - const board = await loadBoard(isJapanese); + loadState = { state: "loading" }; + + const list = await fetchBoardList(isJapanese); + + if (list) { + loadState = { state: "list", list }; + } else { + loadState = { state: "closed" }; + } + } + + async function selectBoard(id: number) { + loadState = { state: "closed" }; + + const board = await loadBoardById(id, isJapanese); if (board) { sendEvent("apply_board", board); } - return; } @@ -222,6 +241,55 @@ + + + + - - - +
Date: Tue, 11 Nov 2025 21:30:27 +0900 Subject: [PATCH 6/6] =?UTF-8?q?onkeydown=E3=82=92=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=97=E3=80=81
=E3=82=92=E4=BD=BF=E3=81=86=E3=82=88?= =?UTF-8?q?=E3=81=86=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/+page.svelte | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 144a7b6..7be2c22 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -213,7 +213,7 @@
- +