|
1 | 1 | 'use client'; |
2 | 2 |
|
3 | 3 | import React from 'react'; |
4 | | -import { Form, InputNumber, Row, Col, Select, Switch, Alert, Typography } from 'antd'; |
| 4 | +import { Form, InputNumber, Row, Col, Select, Switch, Alert, Typography, Tooltip } from 'antd'; |
5 | 5 | import { TENSION_KILTER_GRADES } from '@/app/lib/board-data'; |
6 | 6 | import { useUISearchParams } from '@/app/components/queue-control/ui-searchparams-provider'; |
7 | 7 | import { useBoardProvider } from '@/app/components/board-provider/board-provider-context'; |
8 | 8 | import SearchClimbNameInput from './search-climb-name-input'; |
9 | 9 | import SetterNameSelect from './setter-name-select'; |
| 10 | +import { BoardDetails } from '@/app/lib/types'; |
10 | 11 |
|
11 | 12 | const { Title } = Typography; |
12 | 13 |
|
13 | | -const BasicSearchForm: React.FC = () => { |
| 14 | +// Kilter Homewall layout ID |
| 15 | +const KILTER_HOMEWALL_LAYOUT_ID = 8; |
| 16 | + |
| 17 | +interface BasicSearchFormProps { |
| 18 | + boardDetails: BoardDetails; |
| 19 | +} |
| 20 | + |
| 21 | +const BasicSearchForm: React.FC<BasicSearchFormProps> = ({ boardDetails }) => { |
14 | 22 | const { uiSearchParams, updateFilters } = useUISearchParams(); |
15 | 23 | const { token, user_id } = useBoardProvider(); |
16 | 24 | const grades = TENSION_KILTER_GRADES; |
17 | | - |
| 25 | + |
18 | 26 | const isLoggedIn = token && user_id; |
19 | 27 |
|
| 28 | + // Check if we should show the tall climbs filter |
| 29 | + // Only show for Kilter Homewall on the largest size (10x12) |
| 30 | + const isKilterHomewall = boardDetails.board_name === 'kilter' && boardDetails.layout_id === KILTER_HOMEWALL_LAYOUT_ID; |
| 31 | + const isLargestSize = boardDetails.size_name?.toLowerCase().includes('12'); |
| 32 | + const showTallClimbsFilter = isKilterHomewall && isLargestSize; |
| 33 | + |
20 | 34 | const handleGradeChange = (type: 'min' | 'max', value: number | undefined) => { |
21 | 35 | if (type === 'min') { |
22 | 36 | updateFilters({ minGrade: value }); |
@@ -178,6 +192,23 @@ const BasicSearchForm: React.FC = () => { |
178 | 192 | /> |
179 | 193 | </Form.Item> |
180 | 194 |
|
| 195 | + {showTallClimbsFilter && ( |
| 196 | + <Form.Item |
| 197 | + label={ |
| 198 | + <Tooltip title="Show only climbs that use holds in the bottom 8 rows (only available on 10x12 boards)"> |
| 199 | + Tall Climbs Only |
| 200 | + </Tooltip> |
| 201 | + } |
| 202 | + valuePropName="checked" |
| 203 | + > |
| 204 | + <Switch |
| 205 | + style={{ float: 'right' }} |
| 206 | + checked={uiSearchParams.onlyTallClimbs} |
| 207 | + onChange={(checked) => updateFilters({ onlyTallClimbs: checked })} |
| 208 | + /> |
| 209 | + </Form.Item> |
| 210 | + )} |
| 211 | + |
181 | 212 | <Form.Item label="Grade Accuracy"> |
182 | 213 | <Select |
183 | 214 | value={uiSearchParams.gradeAccuracy} |
|
0 commit comments