mirror of
https://github.com/bodyrep/DemoApp.git
synced 2026-01-25 06:32:11 +00:00
add dynmic exercsie list, keywords(hardcoded), datafields(hardcoded), adding exercises from exercise list, and show hide for delete button.
This commit is contained in:
1
app.js
1
app.js
@@ -49,6 +49,7 @@ require('./routes/users')(app);
|
|||||||
require('./routes/session')(app);
|
require('./routes/session')(app);
|
||||||
require('./routes/workouts')(app);
|
require('./routes/workouts')(app);
|
||||||
require('./routes/admin')(app);
|
require('./routes/admin')(app);
|
||||||
|
require('./routes/api')(app);
|
||||||
|
|
||||||
http.createServer(app).listen(app.get("port"), function(){
|
http.createServer(app).listen(app.get("port"), function(){
|
||||||
console.log ("Server listening on port " + app.get("port"));
|
console.log ("Server listening on port " + app.get("port"));
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
var Schema = require('mongoose').Schema;
|
|
||||||
|
|
||||||
|
|
||||||
var Split = new Schema({
|
|
||||||
reps: { type: String},
|
|
||||||
weight: { type: String}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
var Element = new Schema({
|
|
||||||
ExerciseID: {type: String} ,
|
|
||||||
splits: [Split]
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
var workoutSchema = new Schema({
|
|
||||||
|
|
||||||
userID: { type: Schema.ObjectId, ref: 'User', required: true },
|
|
||||||
workoutDate: { type: Date, 'default': Date.now },
|
|
||||||
workoutTime: { type: Date, 'default': Date.now },
|
|
||||||
privacySetting: { type: Number},
|
|
||||||
Notes: { type: String},
|
|
||||||
templateID: { type: Schema.ObjectId, ref: 'Template'},
|
|
||||||
circuits: [Number],
|
|
||||||
elements: [Element]
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = workoutSchema;
|
|
||||||
@@ -8,6 +8,24 @@ $(document).ready(function() {
|
|||||||
$('.datepicker').datepicker('setDate', new Date());
|
$('.datepicker').datepicker('setDate', new Date());
|
||||||
//$('.datepicker').datepicker("hide");
|
//$('.datepicker').datepicker("hide");
|
||||||
|
|
||||||
|
|
||||||
|
jQuery.extend({
|
||||||
|
getValues: function(url) {
|
||||||
|
var result = null;
|
||||||
|
$.ajax({
|
||||||
|
url: url,
|
||||||
|
type: 'get',
|
||||||
|
dataType: 'json',
|
||||||
|
async: false,
|
||||||
|
success: function(data) {
|
||||||
|
result = data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
$("button#addExercise").click(function() {
|
$("button#addExercise").click(function() {
|
||||||
console.log("click!");
|
console.log("click!");
|
||||||
var newElem = $('<li class=ui-state-default ><label for="element">elements[0][exerciseID]<br /></label><input name="elements[][exerciseID]" class="element"><button type="button" class="addSet">Add Set</button><button type="button" class="delete">Delete Exercise</button><ul class="sets"></ul></li>');
|
var newElem = $('<li class=ui-state-default ><label for="element">elements[0][exerciseID]<br /></label><input name="elements[][exerciseID]" class="element"><button type="button" class="addSet">Add Set</button><button type="button" class="delete">Delete Exercise</button><ul class="sets"></ul></li>');
|
||||||
@@ -18,8 +36,7 @@ $(document).ready(function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '.addSet',(function() {
|
$(document).on('click', '.addSet',(function() {
|
||||||
console.log("click! set");
|
var newElem = $('<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>');
|
||||||
var newElem = $('<li><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>');
|
|
||||||
$(this).siblings('ul.sets').append(newElem);
|
$(this).siblings('ul.sets').append(newElem);
|
||||||
$("button").button();
|
$("button").button();
|
||||||
$("ul.sets").sortable({
|
$("ul.sets").sortable({
|
||||||
@@ -67,7 +84,15 @@ $(document).ready(function() {
|
|||||||
newname2 = newname2.replace(/elements\[[0-9]*\]/,'elements[' + itemindex + ']');
|
newname2 = newname2.replace(/elements\[[0-9]*\]/,'elements[' + itemindex + ']');
|
||||||
$(this).html(newname2);
|
$(this).html(newname2);
|
||||||
});
|
});
|
||||||
});
|
if ( $(this).siblings('.set').length > 0 ) {
|
||||||
|
$(this).children('.delete').show();
|
||||||
|
console.log(">1 " + $(this).siblings('.set').length);
|
||||||
|
} else {
|
||||||
|
$(this).children('.delete').hide();
|
||||||
|
console.log("=1 " + $(this).siblings('.set').length);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,20 +9,13 @@ a {
|
|||||||
|
|
||||||
ul, menu, dir {
|
ul, menu, dir {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
#sortable ul {
|
#sortable ul {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*#sortable li {
|
|
||||||
margin: 0 3px 3px 3px;
|
|
||||||
padding: 0.4em;
|
|
||||||
padding-left: 1.5em;
|
|
||||||
height: 24px;
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
label {
|
label {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
@@ -32,4 +25,9 @@ label {
|
|||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin: 5px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
@@ -59,21 +59,6 @@ module.exports = function(app) {
|
|||||||
res.render('workouts/new', {title: "New workout"});
|
res.render('workouts/new', {title: "New workout"});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/workouts/exerciselist', function(req, res) {
|
|
||||||
res.contentType('json');
|
|
||||||
Exercise.find({})
|
|
||||||
.exec(function(err, exercises) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
if (! exercise) {
|
|
||||||
return res.send(JSON.stringify({ "error": "true" }));
|
|
||||||
}
|
|
||||||
res.send(exercises);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
app.get('/workouts/:_id', loadWorkout, function(req, res, next){
|
app.get('/workouts/:_id', loadWorkout, function(req, res, next){
|
||||||
console.log("time" + Moment.utc(req.workout.workoutDate).format("ddd, hA"));
|
console.log("time" + Moment.utc(req.workout.workoutDate).format("ddd, hA"));
|
||||||
|
|||||||
@@ -1,15 +1,26 @@
|
|||||||
extends ../layout
|
extends ../layout
|
||||||
|
|
||||||
|
block additionalscripts
|
||||||
|
script(src='/javascripts/workout.js')
|
||||||
|
|
||||||
block content
|
block content
|
||||||
h1 New workout
|
h1 New workout
|
||||||
p THis will be a dropdown to select exercises
|
|
||||||
input#title(name="Exercise")
|
h3 Exercises (dynamically loaded from database)
|
||||||
button#addExercise(type="button") Add Exercise
|
ul#exerciselist
|
||||||
|
|
||||||
|
div#filters
|
||||||
|
h3 Filters ( currently just placeholder )
|
||||||
|
label Free Weights
|
||||||
|
input#filter1(type="checkbox", value="Free Weights")
|
||||||
|
|
||||||
|
//button#addExercise(type="button") Add Exercise
|
||||||
|
hr
|
||||||
|
|
||||||
form#newworkout(method="POST", action="/workouts")
|
form#newworkout(method="POST", action="/workouts")
|
||||||
ul
|
ul
|
||||||
li
|
li
|
||||||
label(for="title", value="UserID")<br />
|
label(for="title", value="UserID") UserID
|
||||||
input#title(name="userID", value=session.user._id)
|
input#title(name="userID", value=session.user._id)
|
||||||
li
|
li
|
||||||
label(for="datepicker", value="Date") workoutDate
|
label(for="datepicker", value="Date") workoutDate
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
extends ../layout
|
extends ../layout
|
||||||
|
|
||||||
|
|
||||||
block content
|
block content
|
||||||
h1= workout.title
|
h1= workout.title
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user