7e5fa6cbf1
- Add HTMX CDN to layout - Replace client-side table rendering (displayRatings, displayCourses) with server-rendered EJS partials via hx-get - Add server-side course search with debounced hx-trigger - Lazy-load player history and course layouts via htmx.ajax() - Render rating chart via htmx:afterSwap with data attributes - Add partial routes: ratings-table, course-table, player-history, course-layouts
33 lines
1.0 KiB
Plaintext
33 lines
1.0 KiB
Plaintext
<% var body = `
|
|
<div class="search-container">
|
|
<input
|
|
type="text"
|
|
class="search-input"
|
|
id="course-search"
|
|
name="q"
|
|
placeholder="Search courses by name or city..."
|
|
hx-get="/partials/course-table"
|
|
hx-trigger="input changed delay:300ms, search"
|
|
hx-target="#courses-table"
|
|
/>
|
|
</div>
|
|
|
|
<div class="controls">
|
|
<button class="btn" onclick="scrapeCourses()" id="scrape-courses-btn">
|
|
<i class="fas fa-sync-alt"></i> Scrape Courses
|
|
</button>
|
|
</div>
|
|
|
|
<div id="loading" class="loading" style="display: none;">Loading courses...</div>
|
|
<div id="courses-table" hx-get="/partials/course-table" hx-trigger="load"></div>
|
|
`; %>
|
|
|
|
<%- include('../partials/layout', {
|
|
title: 'PDGA Courses - Sweden',
|
|
heading: 'PDGA Courses - Sweden',
|
|
activePage: 'courses',
|
|
cssFiles: ['courses.css'],
|
|
jsFiles: ['courses.js'],
|
|
body: body
|
|
}) %>
|