Skip to content
Snippets Groups Projects
Commit 9228151d authored by Vegard Murvold Sporstøl's avatar Vegard Murvold Sporstøl
Browse files

Categorize exercises

parent b210c465
No related branches found
No related tags found
Loading
Checking pipeline status
......@@ -5,6 +5,7 @@
"fields": {
"name": "Push-up",
"description": "A push-up (or press-up in British English) is a common calisthenics exercise beginning from the prone position.",
"category": "Strength",
"unit": "reps"
}
},
......@@ -14,6 +15,7 @@
"fields": {
"name": "Crunch",
"description": "The crunch is one of the most popular abdominal exercises.",
"category": "Strength",
"unit": "reps"
}
},
......@@ -23,6 +25,7 @@
"fields": {
"name": "Plank",
"description": "The plank is an isometric core strength exercise that involves maintaining a position similar to a push-up for the maximum possible time.",
"category": "Strength",
"unit": "seconds"
}
}
......
......@@ -29,6 +29,7 @@ class Migration(migrations.Migration):
),
("name", models.CharField(max_length=100)),
("description", models.TextField()),
("category", models.CharField(max_length=50)),
("unit", models.CharField(max_length=50)),
],
),
......
......@@ -76,11 +76,13 @@ class Exercise(models.Model):
Attributes:
name: Name of the exercise type
description: Description of the exercise type
category: What category the exercise fits in (e.g., endurance, strenght, balance, felxibility or other)
unit: Name of the unit for the exercise type (e.g., reps, seconds)
"""
name = models.CharField(max_length=100)
description = models.TextField()
category = models.CharField(max_length=50)
unit = models.CharField(max_length=50)
def __str__(self):
......
......@@ -201,7 +201,7 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer):
class ExerciseSerializer(serializers.HyperlinkedModelSerializer):
"""Serializer for an Exercise. Hyperlinks are used for relationships by default.
Serialized fields: url, id, name, description, unit, instances
Serialized fields: url, id, name, description, category, unit, instances
Attributes:
instances: Associated exercise instances with this Exercise type. Hyperlinks.
......@@ -213,7 +213,7 @@ class ExerciseSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Exercise
fields = ["url", "id", "name", "description", "unit", "instances"]
fields = ["url", "id", "name", "description", "category", "unit", "instances"]
class RememberMeSerializer(serializers.HyperlinkedModelSerializer):
......
......@@ -30,6 +30,18 @@
<textarea class="form-control" id="inputDescription" name="description" readonly></textarea>
</div>
<div class="col-lg-6"></div>
<div class="col-lg-6">
<label for="inputCategory" class="form-label">Category</label>
<select id="inputCategory" class="form-select" name="category" disabled>
<option value="None"></option>
<option value="Endurance">Endurance</option>
<option value="Strength">Strength</option>
<option value="Balance">Balance</option>
<option value="Flexibility">Flexibility</option>
<option value="Other">Other</option>
</select>
</div>
<div class="col-lg-6"></div>
<div class="col-lg-6">
<label for="inputUnit" class="form-label">Unit</label>
<input type="text" class="form-control" id="inputUnit" name="unit" readonly>
......
......@@ -17,10 +17,12 @@ function handleCancelButtonDuringEdit() {
let form = document.querySelector("#form-exercise");
if (oldFormData.has("name")) form.name.value = oldFormData.get("name");
if (oldFormData.has("description")) form.description.value = oldFormData.get("description");
if (oldFormData.has("category")) form.category.value = oldFormData.get("category");
if (oldFormData.has("unit")) form.unit.value = oldFormData.get("unit");
oldFormData.delete("name");
oldFormData.delete("description");
oldFormData.delete("category");
oldFormData.delete("unit");
}
......@@ -34,6 +36,7 @@ async function createExercise() {
let formData = new FormData(form);
let body = {"name": formData.get("name"),
"description": formData.get("description"),
"category": formData.get("category"),
"unit": formData.get("unit")};
let response = await sendRequest("POST", `${HOST}/api/exercises/`, body);
......@@ -90,6 +93,9 @@ async function retrieveExercise(id) {
let newVal = exerciseData[key];
input.value = newVal;
}
console.log("This is all the data: " + exerciseData)
let element = document.getElementById('inputCategory');
element.value = exerciseData.category;
}
}
......@@ -97,7 +103,8 @@ async function updateExercise(id) {
let form = document.querySelector("#form-exercise");
let formData = new FormData(form);
let body = {"name": formData.get("name"),
"description": formData.get("description"),
"description": formData.get("description"),
"category": formData.get("category"),
"unit": formData.get("unit")};
let response = await sendRequest("PUT", `${HOST}/api/exercises/${id}/`, body);
......@@ -118,6 +125,7 @@ async function updateExercise(id) {
oldFormData.delete("name");
oldFormData.delete("description");
oldFormData.delete("category");
oldFormData.delete("unit");
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment