all repos — go-lift @ main

Lightweight workout tracker prototype..

templates/exercises.gohtml (view raw)

 1{{ define "body" }}
 2<link rel="stylesheet" href="/static/table.css">
 3<h1>Exercises</h1>
 4
 5<!-- Table controls -->
 6<div class="table-controls">
 7    <input type="text" id="search-input" placeholder="Search exercises...">
 8    <div class="column-toggles">
 9        <span>Toggle columns:</span>
10        <!-- Column toggles will be added here -->
11    </div>
12</div>
13
14<!-- Exercises table -->
15<table id="data-table" class="data-table">
16    <thead>
17        <tr>
18            <!-- Table headers will be added here -->
19        </tr>
20    </thead>
21    <tbody>
22        <!-- Exercise rows will be populated here -->
23    </tbody>
24</table>
25
26<script src="/static/table.js"></script>
27<script>
28document.addEventListener("DOMContentLoaded", function () {
29  // Fetch and display exercises
30  fetch("/api/exercises")
31    .then((response) => response.json())
32    .then((exercises) => {
33        columns = [
34            { id: "id", label: "ID", visible: false },
35            { id: "name", label: "Name", visible: true },
36            { id: "equipment", label: "Equipment", visible: true },
37            { id: "primaryMuscles", label: "Primary muscles", visible: true },
38            { id: "secondaryMuscles", label: "Secondary muscles", visible: true },
39            { id: "category", label: "Category", visible: false },
40            { id: "force", label: "Force", visible: false },
41            { id: "instructions", label: "Instructions", visible: false },
42            { id: "level", label: "Level", visible: false },
43            { id: "mechanic", label: "Mechanic", visible: false },
44        ];
45        data = exercises;
46        console.log(data);
47        setupColumnToggles(columns);
48        renderTable();
49    })
50    .catch((error) => console.error("Error fetching exercises:", error));
51
52  // Search functionality
53  document
54    .getElementById("search-input")
55    .addEventListener("input", function () {
56      renderTable();
57    });
58});
59</script>
60{{ end }}