modify dropdown menu

This commit is contained in:
Dejan Rožič 2025-12-04 13:59:21 +01:00
parent efa7761f20
commit cbf7dfcef6

63
main.go
View file

@ -145,7 +145,15 @@ func handleAddSet(w http.ResponseWriter, r *http.Request) {
return
}
exercise := r.FormValue("exercise")
// NEW: exercise from dropdown + optional custom
selected := r.FormValue("exercise_select")
exerciseCustom := r.FormValue("exercise_custom")
exercise := selected
if selected == "custom" {
exercise = exerciseCustom
}
repsStr := r.FormValue("reps")
weightStr := r.FormValue("weight")
@ -464,11 +472,23 @@ const indexHTML = `
grid-template-columns: 1.1fr 0.9fr;
}
}
.flex-row {
display:flex;
gap:0.5rem;
align-items:center;
}
.flex-row input[type="text"] {
flex:1;
}
.small {
font-size:0.8rem;
color:#9ca3af;
}
</style>
</head>
<body>
<h1>Minimal Fitness Tracker</h1>
<p style="color:#9ca3af;">Simple self-hosted Go app log sets, see rest times and training volume.</p>
<p style="color:#9ca3af;">Simple self-hosted Go app 5×5 friendly: pick standard lifts, track volume and rest.</p>
<div class="row">
<div>
@ -490,9 +510,28 @@ const indexHTML = `
{{if .HasWorkout}}
<form method="POST" action="/add-set">
<label>
Exercise
<input type="text" name="exercise" placeholder="Squat" required>
Exercise (5×5 core lifts & friends)
<select name="exercise_select" id="exercise_select" required onchange="toggleCustomExercise()">
<option value="Squat">Squat</option>
<option value="Bench Press">Bench Press</option>
<option value="Barbell Row">Barbell Row</option>
<option value="Overhead Press">Overhead Press</option>
<option value="Deadlift">Deadlift</option>
<option value="Pull-up">Pull-up</option>
<option value="Chin-up">Chin-up</option>
<option value="Dip">Dip</option>
<option value="Barbell Curl">Barbell Curl</option>
<option value="Tricep Extension">Tricep Extension</option>
<option value="Face Pull">Face Pull</option>
<option value="Lat Pulldown">Lat Pulldown</option>
<option value="custom">Custom</option>
</select>
</label>
<div class="flex-row small" id="customExerciseRow" style="margin-top:0.4rem; display:none;">
<span>Custom name:</span>
<input type="text" name="exercise_custom" id="exercise_custom" placeholder="Front Squat, Incline Bench…">
</div>
<label>
Reps
<input type="number" name="reps" min="1" step="1" required>
@ -566,6 +605,21 @@ const indexHTML = `
let restChartInstance = null;
let volumeChartInstance = null;
function toggleCustomExercise() {
const select = document.getElementById('exercise_select');
const row = document.getElementById('customExerciseRow');
const input = document.getElementById('exercise_custom');
if (select.value === 'custom') {
row.style.display = 'flex';
input.required = true;
} else {
row.style.display = 'none';
input.required = false;
input.value = '';
}
}
function loadRestTimes() {
fetch('/api/rest-times')
.then(res => {
@ -687,6 +741,7 @@ const indexHTML = `
}
document.addEventListener('DOMContentLoaded', () => {
toggleCustomExercise();
loadRestTimes();
loadVolumeStats();
});