112 lines
3.7 KiB
HTML
112 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Gym Tracker</title>
|
|
<link rel="stylesheet" href="styles.css">
|
|
<link rel="stylesheet" href="https://unpkg.com/cal-heatmap/dist/cal-heatmap.css">
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/d3@7"></script>
|
|
<script src="https://unpkg.com/cal-heatmap@4.2.4/dist/cal-heatmap.min.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container">
|
|
<!-- Header -->
|
|
<header class="header">
|
|
<h1>Gym Tracker</h1>
|
|
<div id="balanceIndicator" class="balance-indicator">
|
|
<span id="balanceEmoji" class="balance-emoji">😐</span>
|
|
<span id="balanceText" class="balance-text">Neutral Balance</span>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- Add Workout Button -->
|
|
<div class="action-bar">
|
|
<button id="addWorkoutBtn" class="btn-primary">Add Today's Workout</button>
|
|
</div>
|
|
|
|
<!-- Heatmap Section -->
|
|
<section class="heatmap-section">
|
|
<h2>Training Calendar</h2>
|
|
<div class="heatmap-controls">
|
|
<button id="heatmapPrev" class="btn-secondary">← Previous</button>
|
|
<button id="heatmapNext" class="btn-secondary">Next →</button>
|
|
</div>
|
|
<div id="heatmap" class="heatmap-container"></div>
|
|
</section>
|
|
|
|
<!-- Muscle Groups Dashboard -->
|
|
<section class="muscle-groups-section">
|
|
<h2>Muscle Groups</h2>
|
|
<div id="muscleGroupsGrid" class="muscle-groups-grid">
|
|
<!-- Muscle group cards will be dynamically inserted here -->
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- Modal for Adding/Editing Session -->
|
|
<div id="sessionModal" class="modal">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3 id="modalTitle">Add Workout Session</h3>
|
|
<button id="closeModal" class="close-btn">×</button>
|
|
</div>
|
|
<form id="sessionForm">
|
|
<div class="form-group">
|
|
<label for="sessionDate">Date:</label>
|
|
<input type="date" id="sessionDate" name="date" required>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Muscle Groups Trained:</label>
|
|
<div class="checkbox-group">
|
|
<label class="checkbox-label">
|
|
<input type="checkbox" name="muscleGroup" value="Chest">
|
|
<span>Chest</span>
|
|
</label>
|
|
<label class="checkbox-label">
|
|
<input type="checkbox" name="muscleGroup" value="Legs">
|
|
<span>Legs</span>
|
|
</label>
|
|
<label class="checkbox-label">
|
|
<input type="checkbox" name="muscleGroup" value="Delts">
|
|
<span>Delts</span>
|
|
</label>
|
|
<label class="checkbox-label">
|
|
<input type="checkbox" name="muscleGroup" value="Lats">
|
|
<span>Lats</span>
|
|
</label>
|
|
<label class="checkbox-label">
|
|
<input type="checkbox" name="muscleGroup" value="Triceps">
|
|
<span>Triceps</span>
|
|
</label>
|
|
<label class="checkbox-label">
|
|
<input type="checkbox" name="muscleGroup" value="Biceps">
|
|
<span>Biceps</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-actions">
|
|
<button type="button" id="cancelBtn" class="btn-secondary">Cancel</button>
|
|
<button type="submit" id="saveBtn" class="btn-primary">Save</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Loading Indicator -->
|
|
<div id="loadingIndicator" class="loading-indicator">
|
|
<div class="spinner"></div>
|
|
</div>
|
|
|
|
<!-- Application Scripts -->
|
|
<script src="api.js" defer></script>
|
|
<script src="muscleGroups.js" defer></script>
|
|
<script src="heatmap.js" defer></script>
|
|
<script src="app.js" defer></script>
|
|
</body>
|
|
|
|
</html>
|