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
65 lines
3.1 KiB
Plaintext
65 lines
3.1 KiB
Plaintext
<% var body = `
|
|
<!-- Add Player Section -->
|
|
<div class="add-player-section">
|
|
<h3>Add Yourself to Tracked Players</h3>
|
|
<div class="add-player-form">
|
|
<input
|
|
type="number"
|
|
id="pdga-number-input"
|
|
class="pdga-input"
|
|
placeholder="Enter your PDGA number"
|
|
min="1"
|
|
/>
|
|
<button class="btn btn-add" onclick="searchAndAddPlayer()">
|
|
<i class="fas fa-user-plus"></i> Add Player
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div style="position: absolute; top: 10px; right: 15px;">
|
|
<a href="#" onclick="loadAllPlayers(); return false;" style="color: #007bff; font-size: 11px; text-decoration: none; margin-right: 10px;" title="Load all player data" id="load-all-btn">Load All</a>
|
|
<a href="#" onclick="clearCache(); return false;" style="color: #ccc; font-size: 12px; text-decoration: none; opacity: 0.3;" title="Clear cache"><i class="fas fa-cog"></i></a>
|
|
</div>
|
|
<div id="loading" class="loading" style="display: none;">Loading ratings...</div>
|
|
<div id="progress-section" style="display: none;">
|
|
<div class="progress-container">
|
|
<div id="progress-bar" class="progress-bar">0%</div>
|
|
</div>
|
|
<div id="progress-text" class="progress-text">Preparing to load ratings...</div>
|
|
</div>
|
|
<div id="ratings-table" hx-get="/partials/ratings-table" hx-trigger="load"></div>
|
|
`; %>
|
|
|
|
<% var modals = `
|
|
<!-- Debug Modal -->
|
|
<div id="debug-modal" class="debug-modal" onclick="closeDebugModal(event)">
|
|
<div class="debug-content" onclick="event.stopPropagation()">
|
|
<button class="debug-close" onclick="closeDebugModal()">×</button>
|
|
<div class="debug-header" id="debug-header">Prediction Calculation Details</div>
|
|
<div class="debug-log" id="debug-log">Loading...</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Add Player Confirmation Modal -->
|
|
<div id="add-player-modal" class="modal" onclick="closeAddPlayerModal(event)">
|
|
<div class="modal-content" onclick="event.stopPropagation()">
|
|
<button class="modal-close" onclick="closeAddPlayerModal()">×</button>
|
|
<div class="modal-header" id="add-player-modal-header">Confirm Player</div>
|
|
<div class="modal-body" id="add-player-modal-body">Loading...</div>
|
|
<div class="modal-footer" id="add-player-modal-footer">
|
|
<button class="btn btn-cancel" onclick="closeAddPlayerModal()">Cancel</button>
|
|
<button class="btn btn-confirm" id="confirm-add-btn" onclick="confirmAddPlayer()">Add Player</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`; %>
|
|
|
|
<%- include('../partials/layout', {
|
|
title: 'PDGA Ratings',
|
|
heading: 'PDGA Player Ratings',
|
|
activePage: 'players',
|
|
cssFiles: ['players.css'],
|
|
jsFiles: ['tooltips.js', 'chart.js', 'progress.js', 'players.js'],
|
|
initScript: 'setupTooltipsAfterSwap();',
|
|
body: body,
|
|
modals: modals
|
|
}) %> |