@@ -1564,6 +1564,18 @@ export default function MapView({
15641564 ( ) => ( { today : todayKey ( ) , oneYearAgo : oneYearAgoKey ( ) } ) ,
15651565 [ ]
15661566 ) ;
1567+ // 訪問日の「これだけを表示」中か。「これだけを表示」と「過去1年だけを表示」は
1568+ // 同じ絞り(isolate: "visit")の入り口が2つあるだけで、違うのは対象の期間。
1569+ // **isolateに値を増やしていない** —— 増やすと絞り込みを効かせるかの判定
1570+ // (skipFiltersInIsolate)や保存値の読み込みまで、期間の違いでしかないものを
1571+ // 各所で分岐させることになる。期間は visitedDate/visitedDateTo が既に持っている
1572+ const isolatingVisit = filters . isolate === "visit" ;
1573+ // 対象日がちょうど「1年前〜今日」か。押されているボタンをこれで見分ける
1574+ // (カレンダーで同じ期間を選んだときも「過去1年だけを表示」が点くが、
1575+ // 実際にその期間なので嘘にはならない)
1576+ const isPastYearRange =
1577+ filters . visitedDate === visitDateOptions . oneYearAgo &&
1578+ filters . visitedDateTo === visitDateOptions . today ;
15671579 // 変更のたびにlocalStorageへも書き込む(次に地図を開いたときの復元用)
15681580 const setFilters = useCallback (
15691581 ( next : SpotFilters ) => {
@@ -3762,18 +3774,6 @@ export default function MapView({
37623774 >
37633775 今日
37643776 </ button >
3765- < button
3766- type = "button"
3767- onClick = { ( ) =>
3768- handleSelectVisitDate (
3769- visitDateOptions . oneYearAgo ,
3770- visitDateOptions . today
3771- )
3772- }
3773- className = "flex-1 rounded-lg border border-gray-300 py-2 text-sm"
3774- >
3775- 過去1年
3776- </ button >
37773777 < button
37783778 type = "button"
37793779 onClick = { ( ) => handleSelectVisitDate ( null , null ) }
@@ -3835,25 +3835,61 @@ export default function MapView({
38353835 </ HelpTip >
38363836 </ p >
38373837 < div className = "flex shrink-0 items-center gap-1.5" >
3838+ { /* 「これだけを表示」と「過去1年だけを表示」は同じ絞り(isolate)の
3839+ 入り口が2つあるだけで、違うのは対象の期間。どちらか一方しか
3840+ 点かないので、押されている側を見れば期間が読める */ }
38383841 { /* その日のスポットだけに絞る(他のスポット・ルート・訪問予定リストは隠す) */ }
38393842 < button
38403843 type = "button"
38413844 disabled = { ! filters . visitedDate }
3842- aria-pressed = { filters . isolate === "visit" }
3845+ aria-pressed = { isolatingVisit && ! isPastYearRange }
38433846 onClick = { ( ) =>
38443847 setFilters ( {
38453848 ...filters ,
3846- isolate : filters . isolate === "visit" ? null : "visit" ,
3849+ isolate : isolatingVisit ? null : "visit" ,
38473850 } )
38483851 }
38493852 className = { `shrink-0 rounded-full border px-2.5 py-0.5 text-xs font-medium disabled:opacity-40 ${
3850- filters . isolate === "visit"
3853+ isolatingVisit && ! isPastYearRange
38513854 ? "border-blue-600 bg-blue-600 text-white"
38523855 : "border-gray-300 bg-white text-gray-500"
38533856 } `}
38543857 >
38553858 これだけを表示
38563859 </ button >
3860+ { /* 過去1年に訪問したスポットだけに絞る。対象日を1年前〜今日にしてから
3861+ 同じ絞りを掛けるので、押すだけで期間の選択が要らない
3862+ (カレンダーだと開始月まで12回さかのぼることになる)。
3863+ 解除すると対象日も既定=今日へ戻す —— 期間だけが1年のまま残ると、
3864+ 1年ぶんの訪問が1本の経路として繋がって読めなくなる */ }
3865+ < button
3866+ type = "button"
3867+ aria-pressed = { isolatingVisit && isPastYearRange }
3868+ onClick = { ( ) =>
3869+ setFilters (
3870+ isolatingVisit && isPastYearRange
3871+ ? {
3872+ ...filters ,
3873+ visitedDate : visitDateOptions . today ,
3874+ visitedDateTo : null ,
3875+ isolate : null ,
3876+ }
3877+ : {
3878+ ...filters ,
3879+ visitedDate : visitDateOptions . oneYearAgo ,
3880+ visitedDateTo : visitDateOptions . today ,
3881+ isolate : "visit" ,
3882+ }
3883+ )
3884+ }
3885+ className = { `shrink-0 rounded-full border px-2.5 py-0.5 text-xs font-medium ${
3886+ isolatingVisit && isPastYearRange
3887+ ? "border-blue-600 bg-blue-600 text-white"
3888+ : "border-gray-300 bg-white text-gray-500"
3889+ } `}
3890+ >
3891+ 過去1年だけを表示
3892+ </ button >
38573893 { /* このセクションだけのリセット(対象日を既定=今日に戻し、
38583894 「これだけを表示」も解除する) */ }
38593895 < SectionResetButton
@@ -3908,21 +3944,6 @@ export default function MapView({
39083944 >
39093945 今日
39103946 </ button >
3911- { /* よく使う期間はカレンダーを開かずに選べるようにする。
3912- 1年ぶんを選ぶのに、カレンダーだと開始月まで12回さかのぼって
3913- 2回タップすることになるため */ }
3914- < button
3915- type = "button"
3916- onClick = { ( ) =>
3917- handleSelectVisitDate (
3918- visitDateOptions . oneYearAgo ,
3919- visitDateOptions . today
3920- )
3921- }
3922- className = "rounded-full border border-gray-300 px-2.5 py-1 text-xs text-gray-600"
3923- >
3924- 過去1年
3925- </ button >
39263947 < button
39273948 type = "button"
39283949 onClick = { ( ) => handleSelectVisitDate ( null , null ) }
0 commit comments