From e828fa31a53037cf55b7170485ba9756009f4c13 Mon Sep 17 00:00:00 2001 From: Nik Afiq Date: Wed, 5 Nov 2025 16:03:19 +0900 Subject: [PATCH 1/5] Fixed display --- frontend/src/pages/ShowsPage.tsx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/ShowsPage.tsx b/frontend/src/pages/ShowsPage.tsx index 79c3e2d..1baab19 100644 --- a/frontend/src/pages/ShowsPage.tsx +++ b/frontend/src/pages/ShowsPage.tsx @@ -41,6 +41,25 @@ export default function ShowsPage() { const [selectedId, setSelectedId] = useState(null); const [startTime, setStartTime] = useState(""); + function formatPlaybackLen(v: string): string { + const parts = v.split(":").map(Number); + if (parts.length === 2) { + // already MM:SS + const [mm, ss] = parts; + return `${String(mm).padStart(2, "0")}:${String(ss).padStart(2, "0")}`; + } + if (parts.length === 3) { + const [hh, mm, ss] = parts; + if (hh <= 0) { + // show MM:SS when hours are zero + return `${String(mm).padStart(2, "0")}:${String(ss).padStart(2, "0")}`; + } + // show HH:MM:SS when hours exist + return `${String(hh).padStart(2, "0")}:${String(mm).padStart(2, "0")}:${String(ss).padStart(2, "0")}`; + } + return v; // fallback (unexpected format) + } + // 一覧取得 useEffect(() => { let cancelled = false; @@ -113,7 +132,7 @@ export default function ShowsPage() {
第{s.ep_num}話:{s.ep_title}
{s.season_name}
- 開始 {s.start_time.slice(0,5)}・長さ {s.playback_length.slice(0,5)} + 開始 {s.start_time.slice(0, 5)}・長さ {formatPlaybackLen(s.playback_length)}
))} From 71ab2cfe86a5d7ca0e1c42d8a55bbfd02aa03a13 Mon Sep 17 00:00:00 2001 From: Nik Afiq Date: Wed, 5 Nov 2025 16:08:30 +0900 Subject: [PATCH 2/5] Remove input requirement --- frontend/src/pages/ShowsPage.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/ShowsPage.tsx b/frontend/src/pages/ShowsPage.tsx index 1baab19..d829f8d 100644 --- a/frontend/src/pages/ShowsPage.tsx +++ b/frontend/src/pages/ShowsPage.tsx @@ -85,12 +85,17 @@ export default function ShowsPage() { setError(null); if (!selectedId) { setError("エピソードを選択してください。"); return; } - let payload: any = { id: selectedId }; + const selected = shows.find(s => s.id === selectedId); + if (!selected) { setError("選択中のエピソードが見つかりません。"); return; } - if (startTime) { + const payload: any = { id: selectedId }; + + if (startTime.trim()) { const normalized = toHHMMSS(startTime); if (!normalized) { setError("開始時刻は HH:MM の形式で入力してください。"); return; } - payload.start_time = normalized; // API expects HH:MM:SS + payload.start_time = normalized; + } else { + payload.start_time = selected.start_time; } try { @@ -101,7 +106,6 @@ export default function ShowsPage() { body: JSON.stringify(payload), }); if (!res.ok) throw new Error(`POST 失敗 (${res.status})`); - setStartTime(""); } catch (e: any) { setError(e.message || "現在のエピソード設定に失敗しました。"); } finally { From 78887105fecf02532e2fceac4dc1b14bd773cea5 Mon Sep 17 00:00:00 2001 From: Nik Afiq Date: Wed, 5 Nov 2025 16:17:40 +0900 Subject: [PATCH 3/5] Sorted show --- frontend/src/pages/ShowsPage.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/ShowsPage.tsx b/frontend/src/pages/ShowsPage.tsx index d829f8d..ce9054d 100644 --- a/frontend/src/pages/ShowsPage.tsx +++ b/frontend/src/pages/ShowsPage.tsx @@ -69,7 +69,8 @@ export default function ShowsPage() { const res = await fetch(GET_URL, { cache: "no-store" }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const data = (await res.json()) as Show[]; - if (!cancelled) setShows(data); + data.sort((a, b) => a.id - b.id); // ASC + setShows(data); } catch (e: any) { if (!cancelled) setError(e.message || "番組一覧の取得に失敗しました。"); } finally { @@ -131,7 +132,10 @@ export default function ShowsPage() {