From 4f234b5450f42b214764f05032fc21ff792a3973 Mon Sep 17 00:00:00 2001 From: Stuiart Stent Date: Sat, 26 Jan 2013 17:00:30 -0500 Subject: [PATCH] started moving content to corretn divs --- app.js | 8 ++- public/javascripts/scripts.js | 122 +++++++++++++++++++++++++++++++++- public/javascripts/workout.js | 22 +++++- public/stylesheets/style.css | 8 +++ routes/users.js | 1 + routes/workouts.js | 17 ++++- views/admin/index.jade | 28 ++++---- views/session/user.jade | 35 +++++----- views/users/profile.jade | 38 ++++++----- views/workouts/new.jade | 74 ++++++++++----------- views/workouts/workout.jade | 2 +- 11 files changed, 261 insertions(+), 94 deletions(-) diff --git a/app.js b/app.js index e5cec81..3df143f 100644 --- a/app.js +++ b/app.js @@ -11,7 +11,7 @@ var app = express(); var dbURL = 'mongodb://localhost/database'; var db = require('mongoose').connect(dbURL); var qs = require('qs'); - +var MongoStore = require('connect-mongo')(express); // Configuration app.configure(function(){ @@ -22,7 +22,11 @@ app.configure(function(){ app.use(express.cookieParser('my secret string')); app.use(express.session({ secret: 'my secret string', - maxAge: 3600000 + maxAge: 3600000, + store: new MongoStore({ + db: 'sessions', + url: dbURL + }) })); app.use(function(req, res, next){ res.locals.session = req.session; diff --git a/public/javascripts/scripts.js b/public/javascripts/scripts.js index ea9821f..2cd892c 100644 --- a/public/javascripts/scripts.js +++ b/public/javascripts/scripts.js @@ -1,7 +1,7 @@ $(document).ready(function() { //makes buttons buttons $("button").button(); - + console.log('document ready'); //makes datepickers $( ".datepicker" ).datepicker(); //$('#newworkout').find('input.datepicker').datepicker(); @@ -25,6 +25,8 @@ $(document).ready(function() { } }); + originalExerciselist = $.getValues("/api/exerciselist"); + $("button#addExercise").click(function() { console.log("click!"); @@ -128,6 +130,124 @@ $(document).ready(function() { //$('#newworkout').trigger('sortupdate'); + $("button.map-link").click(function () { + console.log('mapclick'); + var id = $(this).attr('value'); + console.log(id); + $('div#Rightpane').empty().load(id, function(){ + PopulateExerciseList(originalExerciselist); + }); + }); + + $(document).on('click', '.addthisExercise',(function() { + // $("button.addthisExercise").click(function() { + console.log("This exercise name li" + JSON.stringify($(this).closest('li').data())); + var newElem = $('
  • '); + $(newElem).data('musclearray', $(this).closest('li').data('musclearray')); + $(newElem).data('musclearrayMod', $(this).closest('li').data('musclearrayMod')); + $(newElem).appendTo('ul#exercises'); + $( ".hiddenelement" ).hide(); + $("button").button(); + $( "ul#exercises" ).sortable( "refresh" ); + $( "ul#sets" ).sortable( "refresh" ); + $('#newworkout').trigger('sortupdate'); + }) + ); + + //filteredExerciseArray = filterarray(originalExerciselist); + //PopulateExerciseList(arr); + + $(document).on('click', '.filter',(function (){ + var keyREGEX= ""; + if ($(".filter:checked").length > 0) + { + // any one is checked + var len = $('.filter').length; + $(".filter").each(function(index, element) { + + if ($(this).is (':checked')) + { + // Do stuff + keyREGEX += '('+ $(this).val() +')'; + } + }); + //keyREGEX += "'"; + keyREGEX = keyREGEX.replace(")(", ")|("); + } else { + // none is checked + keyREGEX = '(none is checked)'; + } + + console.log("Regex= " + keyREGEX); + filteredExerciseArray = filterarray(originalExerciselist, keyREGEX); + PopulateExerciseList(filteredExerciseArray); + console.timeEnd('Filter'); + })); + + + function filterarray(input, regex){ + console.log('passed regex' + regex); + var keyRE=new RegExp(regex); + var arr = jQuery.grep(input, function(n, i){ + return keyRE.test(n.keywords); + // return $.grep(n.keywords, function (item, i) { + // return keyRE.test(item); + // }); + }); + console.log("arr " + arr.length); + return arr; + } + +///////////////////////////////// +// Pseudocode for 1RM calcs + +// for each exercise in workout +// get H1RM for exercise +// C1RMsum = 0 +// for each set in exercise +// calculate C1RM and store in array +// find highest C1RM in array +// if C1RM > H1RM then +// H1RM = C1RM +// set comment to "yay" +// for each value in array +// set[index] = value/H1RM +// C1RMsum += value/H1RM +// Done + + +// assume sum sumarray * each in musclearray + + + +////// Make below standalone funtion "updateExerciselistDIV" +function PopulateExerciseList(exerciselist) { + console.time('PopulateExList'); + var newExerciselist = $('
    '); + $.each(exerciselist, function (i, item) { + //console.log("Exercisename = " + item.name); + var newElem = $('
  • '+item.name + ' - ' + item.description + ' - ' + item.keywords +'
  • '); + $(newElem).data('name', item.name); + $(newElem).data('exid', item._id); + $(newElem).data('musclearray', item.musclearray); + //$(newElem).data('musclearrayMod', item.musclearrayMod); + $(newElem).data('datafields', item.datafields); + newExerciselist.append(newElem); + }); + console.log("newexlist outside= " + newExerciselist); + $('#exerciselist').empty(); + $(newExerciselist).appendTo('#exerciselist'); + $("button").button(); + console.timeEnd('PopulateExList'); + } + }); + + + + + + + diff --git a/public/javascripts/workout.js b/public/javascripts/workout.js index 08ec41a..0c5d20f 100644 --- a/public/javascripts/workout.js +++ b/public/javascripts/workout.js @@ -59,6 +59,26 @@ return arr; } +///////////////////////////////// +// Pseudocode for 1RM calcs + +// for each exercise in workout +// get H1RM for exercise +// C1RMsum = 0 +// for each set in exercise +// calculate C1RM and store in array +// find highest C1RM in array +// if C1RM > H1RM then +// H1RM = C1RM +// set comment to "yay" +// for each value in array +// set[index] = value/H1RM +// C1RMsum += value/H1RM +// Done + + +// assume sum sumarray * each in musclearray + ////// Make below standalone funtion "updateExerciselistDIV" @@ -85,5 +105,3 @@ function PopulateExerciseList(exerciselist) { var originalExerciselist = $.getValues("/api/exerciselist"); PopulateExerciseList(originalExerciselist); }); - - diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 51364ed..f4d84ec 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -15,6 +15,14 @@ list-style-type: none; list-style-type: none; } +#Leftpane { + float: left; +} + + +#Rightpane { + float: left; +} #exerciselist { width : 500px; diff --git a/routes/users.js b/routes/users.js index bb55f71..520b7bf 100644 --- a/routes/users.js +++ b/routes/users.js @@ -12,6 +12,7 @@ var maxUsersPerPage = 5; module.exports = function(app) { + app.get('/users', loggedIn, isAdmin, function(req, res, next){ var page = req.query.page && parseInt(req.query.page, 10) || 0; diff --git a/routes/workouts.js b/routes/workouts.js index 2020d2b..f456f21 100644 --- a/routes/workouts.js +++ b/routes/workouts.js @@ -8,6 +8,7 @@ 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 loadUser = require('./middleware/load_user'); var maxWorkoutsPerPage = 5; var Exercise = require('../data/models/exercise'); var loadExercise = require('./middleware/load_exercise'); @@ -16,7 +17,7 @@ var Moment = require('moment'); module.exports = function(app) { - app.get('/workouts', loggedIn, function(req, res, next){ + app.get('/workouts/recent', loggedIn, function(req, res, next){ var page = req.query.page && parseInt(req.query.page, 10) || 0; async.parallel([ @@ -45,7 +46,7 @@ module.exports = function(app) { var lastPage = (page + 1) * maxWorkoutsPerPage >= count; - res.render('workouts/index', { + res.render('workouts/recent', { title: 'workouts', workouts: workouts, page: page, @@ -60,6 +61,18 @@ module.exports = function(app) { res.render('workouts/new', {title: "New workout"}); }); +app.get('/workouts/:name/recent', loadUser, function(req, res, next){ + req.user.recentworkouts(function(err, workouts) { + if (err) { + return next(err); + } + res.render('workouts/recent', { + //user: req.user, + //requested: req.params.name, + recentworkouts: workouts + }); + }); + }); app.get('/workouts/:_id', loggedIn, loadWorkout, function(req, res, next){ console.log("time" + Moment.utc(req.workout.workoutDate).format("ddd, hA")); diff --git a/views/admin/index.jade b/views/admin/index.jade index cab7058..3e55ad0 100644 --- a/views/admin/index.jade +++ b/views/admin/index.jade @@ -1,16 +1,16 @@ -extends ../layout +//extends ../layout -block content - h1 Bodyrep - p Admin Index +//block content +h1 Bodyrep +p Admin Index - p - a(href="/users") List Users - p - a(href="/workouts") List workouts - p - a(href="/admin") Admin Index - p - a(href="/admin/users") Admin Users - p - a(href="/admin/exercises") Admin Exercises +p + a(href="/users") List Users +p + a(href="/workouts") List workouts +p + a(href="/admin") Admin Index +p + a(href="/admin/users") Admin Users +p + a(href="/admin/exercises") Admin Exercises diff --git a/views/session/user.jade b/views/session/user.jade index a6d3a3f..b3ba675 100644 --- a/views/session/user.jade +++ b/views/session/user.jade @@ -1,17 +1,18 @@ -- if (session.user) - p - span - b UserName  - span= session.user.name - span - b  UserID  - span= session.user._id - p - form(method="POST", action="/session") - input(type="hidden", name="_method", value="DELETE") - input(type="submit", value="Log out") -- else - p - a(href="/session/new") Login - span  or  - a(href="/users/new") Join Bodyrep Now! \ No newline at end of file +div#top + + - if (session.user) + p + span + b UserName  + span= session.user.name + span + b  UserID  + span= session.user._id + form(method="POST", action="/session") + input(type="hidden", name="_method", value="DELETE") + input(type="submit", value="Log out") + - else + p + a(href="/session/new") Login + span  or  + a(href="/users/new") Join Bodyrep Now! \ No newline at end of file diff --git a/views/users/profile.jade b/views/users/profile.jade index da3c707..bf3ec92 100644 --- a/views/users/profile.jade +++ b/views/users/profile.jade @@ -1,25 +1,29 @@ extends ../layout +//block additionalscripts +// script(src='/javascripts/workout.js') + block content - h1= user.name + div#Leftpane + h2= user.name - - if (session.user) - - if (session.user.name === requested) - h1 Private View + - if (session.user) + - if (session.user.name === requested) + h2 Private View + div + button.map-link(value="/workouts/" + encodeURIComponent(session.user.name) + "/recent") Recent workouts + div + button.map-link(value="/workouts/new") Create new workout - p - a(href="/workouts/new") Create new workout + - else + h2 Public View - - else - h1 Public View + - if (session.user) + - if (session.user.is_admin === true) + div + button.map-link(value="/admin") Goto Admin Page - h2 Recent workouts: - ul - - recentworkouts.forEach(function(workout) { - li - a(href="/workouts/" + encodeURIComponent(workout._id))= workout._id - - }); + div#Rightpane + + include ../workouts/recent - - if (session.user) - - if (session.user.is_admin === true) - a(href="/admin") Goto Admin Page \ No newline at end of file diff --git a/views/workouts/new.jade b/views/workouts/new.jade index 7b97bab..da2ca4c 100644 --- a/views/workouts/new.jade +++ b/views/workouts/new.jade @@ -1,45 +1,43 @@ -extends ../layout +//extends ../layout +//block content +h1 New workout -block additionalscripts - script(src='/javascripts/workout.js') +h3 Exercises (dynamically loaded from database) +ul#exerciselist + li Unpopulated -block content - h1 New workout +div#filters + h3 Filters + label Free Weights + input.filter(type="checkbox", checked=true, value="Free Weights") + label Bodyweight + input.filter(type="checkbox", checked=true, value="Bodyweight") + label Exercise Machines + input.filter(type="checkbox", checked=true, value='Exercise Machine') + label Kettlebells + input.filter(type="checkbox", checked=true, value='Kettlebells') + label Cardio + input.filter(type="checkbox", checked=true, value='Cardio') - h3 Exercises (dynamically loaded from database) - ul#exerciselist +//button#addExercise(type="button") Add Exercise +hr - div#filters - h3 Filters - label Free Weights - input.filter(type="checkbox", checked=true, value="Free Weights") - label Bodyweight - input.filter(type="checkbox", checked=true, value="Bodyweight") - label Exercise Machines - input.filter(type="checkbox", checked=true, value='Exercise Machine') - label Kettlebells - input.filter(type="checkbox", checked=true, value='Kettlebells') - label Cardio - input.filter(type="checkbox", checked=true, value='Cardio') +form#newworkout(method="POST", action="/workouts") + ul + li + label(for="title", value="UserID") UserID + input#title(name="userID", value=session.user._id) + li + label(for="datepicker", value="Date") workoutDate + input.datepicker(name="workoutDate") + li + label(for="timepicker", value="Time") workoutTime + select(name="workoutTime") + option(value='0100') 1 AM + option(value='0130') 1:30 AM + option(value='0200') 2 AM - //button#addExercise(type="button") Add Exercise - hr + ul#exercises - form#newworkout(method="POST", action="/workouts") - ul - li - label(for="title", value="UserID") UserID - input#title(name="userID", value=session.user._id) - li - label(for="datepicker", value="Date") workoutDate - input.datepicker(name="workoutDate") - li - label(for="timepicker", value="Time") workoutTime - select(name="workoutTime") - option(value='0100') 1 AM - option(value='0130') 1:30 AM - option(value='0200') 2 AM - ul#exercises - - button(type="submit", value="Save") Save + button(type="submit", value="Save") Save diff --git a/views/workouts/workout.jade b/views/workouts/workout.jade index e2be98c..7f630c1 100644 --- a/views/workouts/workout.jade +++ b/views/workouts/workout.jade @@ -1,6 +1,6 @@ extends ../layout - + block content h1= workout.title