Skip to content

Commit 44f686d

Browse files
Sora4431claude
andcommitted
fix(sauna): 日付選択時に全サウナを表示するよう修正
- 日付選択時に訪問済みサウナのみ表示していたバグを修正 → 選択日に訪問済みのサウナを先頭に、未訪問サウナも全件表示 - カレンダーから日付を選択して詳細を開いた場合、その日付を visit_dateに事前入力するように改善 (initialVisitDate prop) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a54f1e2 commit 44f686d

2 files changed

Lines changed: 16 additions & 9 deletions

File tree

apps/web/src/lib/themes/sauna-rally/components/CalendarView.svelte

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
let selectedStepId = $state<string | null>(null);
4848
let showDetail = $state(false);
4949
let selectedDate = $state<string | null>(null);
50+
let defaultVisitDate = $state<string | null>(null);
5051
5152
// Always derive the latest step data from steps prop
5253
const selectedStep = $derived(
@@ -161,6 +162,7 @@
161162
162163
function openDetail(stepId: string) {
163164
selectedStepId = stepId;
165+
defaultVisitDate = selectedDate;
164166
showDetail = true;
165167
}
166168
@@ -177,10 +179,16 @@
177179
}
178180
}
179181
180-
// Steps shown in the list: only visited-on-date when a date is selected
182+
// Steps shown in the list: all saunas, visited-on-date first
181183
const displayedSteps = $derived.by(() => {
182184
if (!selectedDate) return sortedSteps;
183-
return visitedByDate.get(selectedDate) ?? [];
185+
const visitedOnDate = new Set(
186+
(visitedByDate.get(selectedDate) ?? []).map((s) => s.id),
187+
);
188+
return [
189+
...sortedSteps.filter((s) => visitedOnDate.has(s.id)),
190+
...sortedSteps.filter((s) => !visitedOnDate.has(s.id)),
191+
];
184192
});
185193
</script>
186194

@@ -268,12 +276,6 @@
268276
</div>
269277
</div>
270278

271-
{#if selectedDate && displayedSteps.length === 0}
272-
<div class="cv-no-visit">
273-
<span>💧</span> {selectedDate} の訪問記録はありません
274-
</div>
275-
{/if}
276-
277279
<div class="cv-cards">
278280
{#each displayedSteps as step (step.id)}
279281
{@const data = parseSaunaData(step.notes)}
@@ -321,11 +323,13 @@
321323
step={selectedStep}
322324
{hasEditPermission}
323325
{isViewMode}
326+
initialVisitDate={defaultVisitDate}
324327
onUpdate={onUpdateStep}
325328
onDelete={onDeleteStep}
326329
onClose={() => {
327330
showDetail = false;
328331
selectedStepId = null;
332+
defaultVisitDate = null;
329333
}}
330334
/>
331335

apps/web/src/lib/themes/sauna-rally/components/SaunaDetailDialog.svelte

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
step: Step | null;
1919
hasEditPermission: boolean;
2020
isViewMode: boolean;
21+
initialVisitDate?: string | null;
2122
onUpdate?: (
2223
stepId: string,
2324
data: { title?: string; notes?: string },
@@ -31,6 +32,7 @@
3132
step,
3233
hasEditPermission,
3334
isViewMode,
35+
initialVisitDate = null,
3436
onUpdate,
3537
onDelete,
3638
onClose,
@@ -74,7 +76,8 @@
7476
editTitle = step.title;
7577
editUrl = data.sauna_url || "";
7678
editVisited = data.visited ?? false;
77-
editVisitDate = data.visit_date || "";
79+
// Pre-fill visit date from calendar selection if not yet set
80+
editVisitDate = data.visit_date || initialVisitDate || "";
7881
editRating = data.rating ?? 0;
7982
editComment = data.comment || "";
8083
editSaunaTemp = data.sauna_temp ?? "";

0 commit comments

Comments
 (0)