diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/routes.py | 35 | ||||
| -rw-r--r-- | app/static/css/style.css | 4 | ||||
| -rw-r--r-- | app/templates/home.html | 10 | ||||
| -rw-r--r-- | app/templates/workout/create.html | 66 |
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); } |
