summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorstilbruch <stilbruch@protonmail.com>2022-04-23 17:08:53 -0500
committerstilbruch <stilbruch@protonmail.com>2022-04-23 17:08:53 -0500
commitceb76e7b1d75623b09a9c85a3e48752404a9077d (patch)
treeab2d93e62daad8d2b5a411e2cecc7fe3b73af448 /app
parenta4ca3d81f5bf0d00f1326ee80878da4169f54ea6 (diff)
downloadStrengthy-ceb76e7b1d75623b09a9c85a3e48752404a9077d.tar.xz
Strengthy-ceb76e7b1d75623b09a9c85a3e48752404a9077d.zip
Work on exercise type support for create workout
Diffstat (limited to 'app')
-rw-r--r--app/forms/workout.py1
-rw-r--r--app/static/js/create.js4
-rw-r--r--app/tables/workout.py14
-rw-r--r--app/templates/base/form.html20
-rw-r--r--app/templates/workout/create.html114
5 files changed, 86 insertions, 67 deletions
diff --git a/app/forms/workout.py b/app/forms/workout.py
index ecc72c8..a84eb6a 100644
--- a/app/forms/workout.py
+++ b/app/forms/workout.py
@@ -7,6 +7,7 @@ class ExerciseCreateForm(Form):
name = StringField("name", [DataRequired()])
sets = IntegerField("sets", [DataRequired()])
units = IntegerField("units", [DataRequired()])
+ type = StringField("type", [DataRequired()]) # TODO: make sure its time or reps
class SetForm(Form):
lbs = IntegerField("lbs", [DataRequired()])
diff --git a/app/static/js/create.js b/app/static/js/create.js
index 7cdf328..832bbe2 100644
--- a/app/static/js/create.js
+++ b/app/static/js/create.js
@@ -18,7 +18,9 @@ function handleAdd() {
exerciseUnitInput.placeholder = 'Reps';
exerciseUnitInput.name = 'exercises-' + rowId + '-units';
- exerciseUnitInput.parentNode.children[0].children[0].children[0].addEventListener("input", handleChange);
+ exerciseUnitSelect = exerciseUnitInput.parentNode.children[0].children[0].children[0];
+ exerciseUnitSelect.addEventListener("input", handleChange);
+ exerciseUnitSelect.name = 'exercises-' + rowId + '-type';
rowId++;
rowsDiv.append(newRow);
diff --git a/app/tables/workout.py b/app/tables/workout.py
index cff0762..164f547 100644
--- a/app/tables/workout.py
+++ b/app/tables/workout.py
@@ -1,4 +1,9 @@
from app import db, login_manager
+import enum
+
+class ExerciseType(enum.Enum):
+ TIME = "Seconds"
+ REPS = "Reps"
# Represents an individual exercise
class Exercise(db.Model):
@@ -7,13 +12,15 @@ class Exercise(db.Model):
name = db.Column(db.String(100), nullable=False)
sets = db.Column(db.Integer)
units = db.Column(db.Integer)
+ type = db.Column(db.Enum(ExerciseType))
# Workout Relationship
workout_id = db.Column(db.Integer, db.ForeignKey('workouts.id'))
- def __init__(self, name, sets, units):
+ def __init__(self, name, sets, units, type):
self.name = name
self.sets = sets
- self.unit = units
+ self.units = units
+ self.type = type
def __repr__(self):
return f'<Exercise {self.name} {self.sets}x{self.units}>'
@@ -34,7 +41,8 @@ class Workout(db.Model):
# Create exercises
for exercise in exercises:
- self.exercises.append(Exercise(exercise['name'], exercise['sets'], exercise['units']))
+ type = ExerciseType.TIME if exercise['type'] == 'time'else ExerciseType.REPS;
+ self.exercises.append(Exercise(exercise['name'], exercise['sets'], exercise['units'], type))
def __repr__(self):
return f'<Workout {self.name}>'
diff --git a/app/templates/base/form.html b/app/templates/base/form.html
index 9f356e0..98200c9 100644
--- a/app/templates/base/form.html
+++ b/app/templates/base/form.html
@@ -8,17 +8,17 @@
<!-- TODO: render errors -->
{% with messages = get_flashed_messages(with_categories=true) %}
- {% if messages %}
- {% for category, message in messages %}
- {% if category == "message" %}
- <div class="notification is-info">
- {% else %}
- <div class="notification is-{{ category }}">
+ {% if messages %}
+ {% for category, message in messages %}
+ {% if category == "message" %}
+ <div class="notification is-info">
+ {% else %}
+ <div class="notification is-{{ category }}">
+ {% endif %}
+ {{ message }}
+ </div>
+ {% endfor %}
{% endif %}
- {{ message }}
- </div>
- {% endfor %}
- {% endif %}
{% endwith %}
<form method="POST" class="box">
diff --git a/app/templates/workout/create.html b/app/templates/workout/create.html
index d5178fc..88095f7 100644
--- a/app/templates/workout/create.html
+++ b/app/templates/workout/create.html
@@ -1,5 +1,7 @@
{% extends 'base/form.html' %}
+{% block title %}Create Workout{% endblock %}
+
{% block form %}
<div class="field is-horizontal">
<div class="field-body">
@@ -12,67 +14,73 @@
</div>
</div>
</div>
-<div id="rows" class="field"> {% for entry in form.exercises.entries %} <div class="field is-horizontal">
- <div class="field-body">
- <div class="field">
- <p class="control is-expanded has-icons-left">
+
+<div id="rows" class="field">
+ {% for entry in form.exercises.entries %}
+ <div class="field is-horizontal">
+ <div class="field-body">
+ <div class="field">
+ <p class="control is-expanded has-icons-left">
<input class="input" name='exercises-0-name' type="text" placeholder="Exercise Name", value="{{ entry.data['name'] or "" }}">
- <span class="icon is-small is-left">
- <i class="fa fa-tag"></i>
- </span>
- </p>
- <p class="control is-expanded has-icons-left">
- <input class="input" name='exercises-0-reps' type="hidden" placeholder="Reps" min="1" max="100" value="{{ entry.data['reps'] or "" }}">
- <span class="icon is-small is-left">
- <i class="fa"></i>
- </span>
- </p>
- </div>
- <div class="field">
- <p class="control is-expanded has-icons-left">
- <input class="input" name='exercises-0-sets' type="number" placeholder="Sets" min="1" max="100" value="{{ entry.data['sets'] or "" }}">
- <span class="icon is-small is-left">
- <i class="fa fa-calculator"></i>
- </span>
- </p>
- </div>
- <div class="field has-addons">
- <div class="control has-icons-left">
- <div class="select">
- <select class="exercise-unit">
- <option value="reps">Reps</option>
- <option value="time">Time</option>
- </select>
- </div>
- <div class="icon is-small is-left">
- <i class="fa fa-calculator"></i>
- </div>
- </div>
- <input class="input" name='exercises-0-units' type="number" placeholder="Reps" min="1" max="100" value="{{ entry.data['reps'] or "" }}">
+ <span class="icon is-small is-left">
+ <i class="fa fa-tag"></i>
+ </span>
+ </p>
+ <p class="control is-expanded has-icons-left">
+ <input class="input" name='exercises-0-reps' type="hidden" placeholder="Reps" min="1" value="{{ entry.data['reps'] or "" }}">
+ <span class="icon is-small is-left">
+ <i class="fa"></i>
+ </span>
+ </p>
+ </div>
+ <div class="field">
+ <p class="control is-expanded has-icons-left">
+ <input class="input" name='exercises-0-sets' type="number" placeholder="Sets" min="1" value="{{ entry.data['sets'] or "" }}">
+ <span class="icon is-small is-left">
+ <i class="fa fa-calculator"></i>
+ </span>
+ </p>
+ </div>
+ <div class="field has-addons">
+ <div class="control has-icons-left">
+ <div class="select">
+ <select name="exercise-0-type">
+ <option value="reps">Reps</option>
+ <option value="time">Time</option>
+ </select>
+ </div>
+ <div class="icon is-small is-left">
+ <i class="fa fa-calculator"></i>
+ </div>
</div>
- <p class="button is-danger" onclick="handleDel(this)">
- <span class="icon is-small">
- <i class="fa fa-minus"></i>
- </span>
- </p>
+ <input class="input" name='exercises-0-units' type="number" placeholder="Reps" min="1" value="{{ entry.data['units'] or "" }}">
</div>
+ <p class="button is-danger" onclick="handleDel(this)">
+ <span class="icon is-small">
+ <i class="fa fa-minus"></i>
+ </span>
+ </p>
</div>
+ </div>
{% endfor %}
</div>
+
<div class="field is-horizontal is-grouped is-grouped-right">
- <p id="add" class="button is-primary">
- <span class="icon is-small">
- <i class="fa fa-plus"></i>
- </span>
- </p>
+ <p id="add" class="button is-primary">
+ <span class="icon is-small">
+ <i class="fa fa-plus"></i>
+ </span>
+ </p>
</div>
+
<div class="field is-horizontal is-grouped is-grouped-right">
- <button class="button is-success ">
- <span class="icon is-small">
- <i class="fa fa-check"></i>
- </span>
- <span>Create Workout</span>
- </button>
+ <button class="button is-success ">
+ <span class="icon is-small">
+ <i class="fa fa-check"></i>
+ </span>
+ <span>Create Workout</span>
+ </button>
</div>
-<script src="../../static/js/create.js"></script>
+
+<script src="/static/js/create.js"></script>
{% endblock %}