Fix search form duplication by updating event handler to submit the correct filter form and return JSON responses for park suggestions

This commit is contained in:
pacnpal
2025-02-23 12:05:26 -05:00
parent 1ca1362fee
commit 401449201c
8 changed files with 337 additions and 70 deletions

View File

@@ -17,11 +17,21 @@
## Implementation Details
### Frontend Components
- Search input with HTMX and Alpine.js integration
- Suggestions dropdown with accessibility support
- Loading indicator during searches
- View mode toggle buttons
- Filter form integration
- Search input using built-in HTMX and Alpine.js
```html
<div x-data="{ query: '', selectedId: null }"
@search-selected.window="...">
<form hx-get="..." hx-trigger="input changed delay:300ms">
<!-- Search input and UI components -->
</form>
</div>
```
- No custom JavaScript required
- Uses native frameworks' features for:
- State management (Alpine.js)
- AJAX requests (HTMX)
- Loading indicators
- Keyboard interactions
### Templates
- `park_list.html`: Main search interface
@@ -63,7 +73,58 @@
- Efficient query optimization
4. Accessibility:
- ARIA labels and roles
- Keyboard navigation
- Proper focus management
- Screen reader support
- ARIA labels and roles
- Keyboard navigation
- Proper focus management
- Screen reader support
## API Response Format
### Suggestions Endpoint (`/parks/suggest_parks/`)
```json
{
"results": [
{
"id": "string",
"name": "string",
"status": "string",
"location": "string",
"url": "string"
}
]
}
```
### Field Details
- `id`: Database ID (string format)
- `name`: Park name
- `status`: Formatted status display (e.g., "Operating")
- `location`: Formatted location string
- `url`: Full detail page URL
## Test Coverage
### API Tests
- JSON format validation
- Empty search handling
- Field type checking
- Result limit verification
- Response structure
### UI Integration Tests
- View mode persistence
- Loading state verification
- Error handling
- Keyboard interaction
### Data Format Tests
- Location string formatting
- Status display formatting
- URL generation
- Field type validation
### Performance Tests
- Debounce functionality
- Result limiting (8 items)
- Query optimization
- Response timing