add dynmic exercsie list, keywords(hardcoded), datafields(hardcoded), adding exercises from exercise list, and show hide for delete button.

This commit is contained in:
2013-01-23 07:27:35 -05:00
parent a5f70ec9d1
commit 268ceedc7e
3 changed files with 129 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
$(document).ready(function() {
$.each($.getValues("/api/exerciselist"), function(i, item) {
console.log("Exercisename = " + item.name);
var newElem = $('<li>'+item.name + ' - ' + item.description + ' - ' + item.keywords +'<button type="button" class="addthisExercise">+</li>');
$(newElem).data('name', item.name);
$(newElem).data('datafields', item.datafields);
console.log("This - " + JSON.stringify($(newElem).data()));
$(newElem).appendTo('#exerciselist');
$("button").button();
});
$("button.addthisExercise").click(function() {
console.log("This exercise name li" + JSON.stringify($(this).closest('li').data()));
var newElem = $('<li class=ui-state-default ><label for="element">elements[0][exerciseID]<br /></label><input name="elements[][exerciseID]" class="element" value="' + $(this).closest('li').data('name') + '"><button type="button" class="addSet">Add Set</button><button type="button" class="delete">Delete Exercise</button><ul class="sets"><li class="set"><label for="element" name="elements[0][splits][0][reps]">elements[0][splits][0][reps]<br /></label><input name="elements[0][splits][0][reps]" class="element"><label for="element" name="elements[0][splits][0][weight]"><br />elements[0][splits][0][weight]<br /></label><input name="elements[0][splits][0][weight]" class="element"><button type="button" class="delete">Delete Set</button></li></ul></li>');
$(newElem).appendTo('ul#exercises');
$("button").button();
$( "ul#exercises" ).sortable( "refresh" );
$( "ul#sets" ).sortable( "refresh" );
$('#newworkout').trigger('sortupdate');
});
});

33
routes/api.js Normal file
View File

@@ -0,0 +1,33 @@
/*
* api Routes
*/
var async = require('async');
var Workout = require('../data/models/workout');
var notLoggedIn = require('./middleware/not_logged_in');
var loadWorkout = require('./middleware/load_workout');
var loggedIn = require('./middleware/logged_in');
var maxWorkoutsPerPage = 5;
var Exercise = require('../data/models/exercise');
var loadExercise = require('./middleware/load_exercise');
var Moment = require('moment');
module.exports = function(app) {
app.get('/api/exerciselist', function(req, res) {
res.contentType('json');
Exercise.find()
.exec(function(err, exercises) {
if (err) {
return next(err);
}
if (! exercises) {
return res.send(JSON.stringify({ "error": "true" }));
}
res.send(exercises);
});
});
};

View File

@@ -0,0 +1,71 @@
extends ../layout
block additionalscripts
script(src='/javascripts/newexercisevalidation.js')
block content
h1 Edit Exercise<p></p>
form(id="newexercise", method="POST", action="/admin/exercises/" + encodeURIComponent(exercise._id))
ul
li
label(for="name") Exercise Name<br />
input#name(name="name", value= exercise.name, oldvalue= exercise.name)
input#_id(name="_id", value= exercise._id, type='hidden')
li
label(for="type") Exercise Type<br />
//- first a little prep
- freeweights = ('freeweights'==exercise.type) ? 'selected' : null;
- machine = ('machine'==exercise.type) ? 'selected' : null;
- bodyweight = ('bodyweight'==exercise.type) ? 'selected' : null;
- kettlebells = ('kettelbells'==exercise.type) ? 'selected' : null;
- cardio = ('cardio'==exercise.type) ? 'selected' : null;
select#type(name="type")
option(value='notselected') Select One
option(value='freeweights', selected=freeweights) Free Weights
option(value='machine', selected=machine) Exercise Machine
option(value='bodyweight', selected=bodyweight) Bodyweight
option(value='kettlebells', selected=kettlebells) Kettlebells
option(value='cardio', selected=cardio) Cardio
li
label(for="type") Exercise Description<br />
input#description(name="description", value= exercise.description)
li
label(for="type") Exercise Difficulty<br />
input#difficulty(name="difficulty", value= exercise.difficulty)
i = 0
- for (i ; i < 10; ++i) {
marray = "musclearray[" + i + "]"
li
label(for="type") Muscle data #{i}
input(name= marray, class="musclearray", id= marray, value= exercise.musclearray[i])
- }
li
keywordlist = [ 'Free Weights', 'Exercise Machine', 'Bodyweight', 'Kettlebells', 'Cardio']
label(for="type") Keywords<br />
select#type(name="keywords", multiple="multiple")
- for keyword in keywordlist
option(selected=exercise.keywords.indexOf(keyword) != -1) #{keyword}
li
label(for="type") Alternatives<br />
li
datafieldlist = ['Reps','Weight','Time','Distance']
label(for="datafields") Datafields<br />
select#type(name="datafields", multiple="multiple")
- for datafield in datafieldlist
option(selected=exercise.datafields.indexOf(datafield) != -1) #{datafield}
li
input(type="submit", value="Save Changes")
p
a(href="/admin") Admin Index
p
a(href="/admin/users") Admin Users
p
a(href="/admin/exercises") Admin Exercises