summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorstilbruch <stilbruch@protonmail.com>2022-04-06 15:02:25 -0500
committerstilbruch <stilbruch@protonmail.com>2022-04-06 15:02:25 -0500
commitcafd3f6151a6c673163755400b40597b6d3476bc (patch)
treeac0f613ca4500e7d489ef8a5b119cf1572cd66cb /app
parented1823168fb6f3256bcd7397b4d4de462a3f1781 (diff)
downloadStrengthy-cafd3f6151a6c673163755400b40597b6d3476bc.tar.xz
Strengthy-cafd3f6151a6c673163755400b40597b6d3476bc.zip
Workouts names can be edited
Diffstat (limited to 'app')
-rw-r--r--app/routes.py35
-rw-r--r--app/static/css/style.css4
-rw-r--r--app/templates/home.html10
-rw-r--r--app/templates/workout/create.html66
4 files changed, 78 insertions, 37 deletions
diff --git a/app/routes.py b/app/routes.py
index 8a2346a..1ff1023 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -1,5 +1,5 @@
from app import app, db
-from flask import render_template, redirect, url_for, flash
+from flask import render_template, redirect, request, url_for, flash
from flask_login import current_user, login_user, login_required, logout_user
from forms import LoginForm, RegisterForm, WorkoutCreateForm
from tables import User, Workout
@@ -80,7 +80,34 @@ def createWorkout():
return render_template('workout/create.html', form=form)
-@app.route("/workout/manage", methods=['GET'])
+@app.route("/workout/edit", methods=['GET', 'POST'])
@login_required
-def manageWorkout():
- return render_template('workout/manage.html')
+def editWorkout():
+ # Id is required
+ if 'id' not in request.args:
+ return redirect(url_for('home'))
+
+ # Validate Id
+ workout = Workout.query.filter_by(id=int(request.args['id']), user_id=current_user.id).first()
+ if not workout:
+ return redirect(url_for('home'))
+
+ form = WorkoutCreateForm()
+
+ if form.validate_on_submit():
+ # Form has been submitted, write changes
+
+ workout.name = form.name.data
+ # TODO: Add exercise changes
+
+ # Write changes to database
+ db.session.commit()
+ return redirect(url_for('home'));
+ else:
+ form.name.data = workout.name
+ form.exercises.pop_entry() # TODO: better way to do this?
+
+ for exercise in workout.exercises:
+ form.exercises.append_entry(exercise)
+
+ return render_template('workout/create.html', form=form)
diff --git a/app/static/css/style.css b/app/static/css/style.css
index 497a2bf..e5eb7a3 100644
--- a/app/static/css/style.css
+++ b/app/static/css/style.css
@@ -10,3 +10,7 @@
-o-background-size: cover;
background-size: cover;
}
+
+.welcome {
+ background: linear-gradient(to right, #5B86E5, #36D1DC);
+}
diff --git a/app/templates/home.html b/app/templates/home.html
index 693e03b..11179cd 100644
--- a/app/templates/home.html
+++ b/app/templates/home.html
@@ -60,13 +60,21 @@
<tr>
<td>{{ workout.name }}</td>
<td>{{ workout.exercises.count() }} exercises</td>
- <td class="level-right"><a class="button is-small is-primary" href="#">Edit</a></td>
+ <td class="level-right">
+ <p class="buttons">
+ <a class="button is-small is-primary" href="/workout/edit?id={{ workout.id }}">Edit</a>
+ <a class="button is-small is-danger" href="#">Delete</a>
+ </p>
+ </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
+ <footer class="card-footer">
+ <a href="/workout/create" class="card-footer-item">Create New</a>
+ </footer>
</div>
</div>
<div class="column is-6">
diff --git a/app/templates/workout/create.html b/app/templates/workout/create.html
index eaf5f39..cdd1191 100644
--- a/app/templates/workout/create.html
+++ b/app/templates/workout/create.html
@@ -7,7 +7,7 @@
<div class="field-body">
<div class="field">
<p class="control is-expanded has-icons-left">
- <input class="input" name="name" type="text" placeholder="Workout Name">
+ <input class="input" name="name" type="text" placeholder="Workout Name", value="{{ form.name.data or "" }}">
<span class="icon is-small is-left">
<i class="fa fa-tag"></i>
</span>
@@ -16,39 +16,41 @@
</div>
</div>
<div id="rows" class="field">
- <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">
- <span class="icon is-small is-left">
- <i class="fa fa-tag"></i>
+ {% 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>
+ </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">
+ <p class="control is-expanded has-icons-left">
+ <input class="input" name='exercises-0-reps' type="number" placeholder="Reps" min="1" max="100" value="{{ entry.data['reps'] or "" }}">
+ <span class="icon is-small is-left">
+ <i class="fa fa-calculator"></i>
+ </span>
+ </p>
+ </div>
+ <p class="button is-danger" onclick="handleDel(this)">
+ <span class="icon is-small">
+ <i class="fa fa-minus"></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">
- <span class="icon is-small is-left">
- <i class="fa fa-calculator"></i>
- </span>
- </p>
- </div>
- <div class="field">
- <p class="control is-expanded has-icons-left">
- <input class="input" name='exercises-0-reps' type="number" placeholder="Reps" min="1" max="100">
- <span class="icon is-small is-left">
- <i class="fa fa-calculator"></i>
- </span>
- </p>
- </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-grouped is-grouped-right">
<p class="buttons">
@@ -69,12 +71,11 @@
</div>
<script>
- var rowId = 0;
+ var rowId = {{ form.exercises.entries | length }};
function handleAdd() {
rowsDiv = document.getElementById("rows");
newRow = rowsDiv.children[0].cloneNode(true);
- rowId++;
exerciseNameInput = newRow.children[0].children[0].children[0].children[0];
exerciseNameInput.value = '';
@@ -88,6 +89,7 @@
exerciseRepInput.value = '';
exerciseRepInput.name = 'exercises-' + rowId + '-reps';
+ rowId++;
rowsDiv.append(newRow);
}