seems to attempt to write timestamp

This commit is contained in:
Michael Q Larson
2014-11-24 18:07:03 -08:00
parent 7de6ebe17f
commit 06fe5390ba
6 changed files with 133 additions and 127 deletions

3
app.js
View File

@ -163,8 +163,9 @@ app.get('/account/unlink/:provider', userController.getOauthUnlink);
* API examples routes. * API examples routes.
*/ */
app.post('/completed_challenge', function(req, res) { app.post('/completed_challenge', function(req, res) {
req.user.challengesCompleted.push(parseInt(req.body.cn)); req.user.challengesHash[req.body.cn] = Math.round(+new Date()/1000);
req.user.save(); req.user.save();
console.log(req.user.challengesHash);
}); });
/** /**

View File

@ -19,7 +19,7 @@ exports.returnChallenge = function(req, res, next) {
video: c.video, video: c.video,
time: c.time, time: c.time,
steps: c.steps, steps: c.steps,
cc: req.user.challengesCompleted cc: req.user.challengesHash
}); });
}); });
}; };

View File

@ -14,6 +14,7 @@ var userSchema = new mongoose.Schema({
instagram: String, instagram: String,
tokens: Array, tokens: Array,
challengesCompleted: { type: Array, default: [] }, challengesCompleted: { type: Array, default: [] },
challengesHash: { type: Object, default: {} },
profile: { profile: {
name: { type: String, default: '' }, name: { type: String, default: '' },

View File

@ -29,6 +29,10 @@ block content
span.ion-edit span.ion-edit
| Update my profile | Update my profile
h1 Completed Challenges
ul
//each val, index in user.challengesHash
//li= index + ': ' + val
h3 Danger Zone h3 Danger Zone
button.btn.btn-danger.confirm-deletion button.btn.btn-danger.confirm-deletion
span.ion-trash-b span.ion-trash-b

View File

@ -3,128 +3,128 @@
.panel-body .panel-body
ol(start='0') ol(start='0')
li li
a(href="/challenges/0", class="#{ cc.indexOf(0) > -1 ? 'strikethrough' : '' }") A One-minute Introduction to Free Code Camp a(href="/challenges/0", class="#{ cc.hasOwnProperty('0') ? 'strikethrough' : '' }") A One-minute Introduction to Free Code Camp
|   (1 min) |   (1 min)
li //li
a(href="/challenges/1", class="#{ cc.indexOf(1) > -1 ? 'strikethrough' : '' }") Enter the Free Code Camp Chat Room // a(href="/challenges/1", class="#{ cc.indexOf(1) > -1 ? 'strikethrough' : '' }") Enter the Free Code Camp Chat Room
|   (5 mins) // |   (5 mins)
li //li
a(href="/challenges/2", class="#{ cc.indexOf(2) > -1 ? 'strikethrough' : '' }") Create a Website and Deploy it to the Internet // a(href="/challenges/2", class="#{ cc.indexOf(2) > -1 ? 'strikethrough' : '' }") Create a Website and Deploy it to the Internet
|   (5 mins) // |   (5 mins)
li //li
a(href="/challenges/3", class="#{ cc.indexOf(3) > -1 ? 'strikethrough' : '' }") Install Github's Atom Text Editor // a(href="/challenges/3", class="#{ cc.indexOf(3) > -1 ? 'strikethrough' : '' }") Install Github's Atom Text Editor
|   (5 mins) // |   (5 mins)
li //li
a(href="/challenges/4", class="#{ cc.indexOf(4) > -1 ? 'strikethrough' : '' }") Modify and Redeploy Your Website // a(href="/challenges/4", class="#{ cc.indexOf(4) > -1 ? 'strikethrough' : '' }") Modify and Redeploy Your Website
|   (5 mins) // |   (5 mins)
li //li
a(href="/challenges/5", class="#{ cc.indexOf(6) > -1 ? 'strikethrough' : '' }") Add Dynamic Content to your Website // a(href="/challenges/5", class="#{ cc.indexOf(6) > -1 ? 'strikethrough' : '' }") Add Dynamic Content to your Website
|   (10 mins) // |   (10 mins)
li //li
a(href="/challenges/6", class="#{ cc.indexOf(7) > -1 ? 'strikethrough' : '' }") Codecademy's HTML & CSS track // a(href="/challenges/6", class="#{ cc.indexOf(7) > -1 ? 'strikethrough' : '' }") Codecademy's HTML & CSS track
|   (7 hrs) // |   (7 hrs)
li //li
a(href="/challenges/7", class="#{ cc.indexOf(8) > -1 ? 'strikethrough' : '' }") Experiment with HTML and CSS in CodePen // a(href="/challenges/7", class="#{ cc.indexOf(8) > -1 ? 'strikethrough' : '' }") Experiment with HTML and CSS in CodePen
|   (10 mins) // |   (10 mins)
li //li
a(href="/challenges/8", class="#{ cc.indexOf(9) > -1 ? 'strikethrough' : '' }") Code School's Try jQuery // a(href="/challenges/8", class="#{ cc.indexOf(9) > -1 ? 'strikethrough' : '' }") Code School's Try jQuery
|   (4 hrs) // |   (4 hrs)
li //li
a(href="/challenges/9", class="#{ cc.indexOf(10) > -1 ? 'strikethrough' : '' }") jQuery Exercises // a(href="/challenges/9", class="#{ cc.indexOf(10) > -1 ? 'strikethrough' : '' }") jQuery Exercises
|   (3 hrs) // |   (3 hrs)
li //li
a(href="/challenges/10", class="#{ cc.indexOf(11) > -1 ? 'strikethrough' : '' }") Code School's Discover DevTools // a(href="/challenges/10", class="#{ cc.indexOf(11) > -1 ? 'strikethrough' : '' }") Code School's Discover DevTools
|   (2 hrs) // |   (2 hrs)
li //li
a(href="/challenges/11", class="#{ cc.indexOf(12) > -1 ? 'strikethrough' : '' }") Customize Bootstrap with Bootswatch // a(href="/challenges/11", class="#{ cc.indexOf(12) > -1 ? 'strikethrough' : '' }") Customize Bootstrap with Bootswatch
|   (10 mins) // |   (10 mins)
li //li
a(href="/challenges/12", class="#{ cc.indexOf(13) > -1 ? 'strikethrough' : '' }") Inject Life with CSS Transformations // a(href="/challenges/12", class="#{ cc.indexOf(13) > -1 ? 'strikethrough' : '' }") Inject Life with CSS Transformations
|   (15 mins) // |   (15 mins)
li //li
a(href="/challenges/13", class="#{ cc.indexOf(14) > -1 ? 'strikethrough' : '' }") Codecademy's JavaScript track // a(href="/challenges/13", class="#{ cc.indexOf(14) > -1 ? 'strikethrough' : '' }") Codecademy's JavaScript track
|   (10 hrs) // |   (10 hrs)
li //li
a(href="/challenges/14", class="#{ cc.indexOf(16) > -1 ? 'strikethrough' : '' }") Stanford's Introduction to Computer Science // a(href="/challenges/14", class="#{ cc.indexOf(16) > -1 ? 'strikethrough' : '' }") Stanford's Introduction to Computer Science
|   (24 hrs) // |   (24 hrs)
li //li
a(href="/challenges/15", class="#{ cc.indexOf(15) > -1 ? 'strikethrough' : '' }") Get Help The Hacker Way with RSAP // a(href="/challenges/15", class="#{ cc.indexOf(15) > -1 ? 'strikethrough' : '' }") Get Help The Hacker Way with RSAP
|   (30 mins) // |   (30 mins)
li //li
a(href="/challenges/16", class="#{ cc.indexOf(17) > -1 ? 'strikethrough' : '' }") Learn Regular Expressions // a(href="/challenges/16", class="#{ cc.indexOf(17) > -1 ? 'strikethrough' : '' }") Learn Regular Expressions
|   (1 hr) // |   (1 hr)
li //li
a(href="/challenges/17", class="#{ cc.indexOf(5) > -1 ? 'strikethrough' : '' }") Start Your First Pair Programming Session // a(href="/challenges/17", class="#{ cc.indexOf(5) > -1 ? 'strikethrough' : '' }") Start Your First Pair Programming Session
|   (30 mins | Pair) // |   (30 mins | Pair)
li //li
a(href="/challenges/18", class="#{ cc.indexOf(17) > -1 ? 'strikethrough' : '' }") Easy Algorithm Scripting Challenges on Coderbyte // a(href="/challenges/18", class="#{ cc.indexOf(17) > -1 ? 'strikethrough' : '' }") Easy Algorithm Scripting Challenges on Coderbyte
|   (15 hrs | Pair) // |   (15 hrs | Pair)
li //li
a(href="/challenges/19", class="#{ cc.indexOf(18) > -1 ? 'strikethrough' : '' }") Stanford's Relational Databases Mini-course // a(href="/challenges/19", class="#{ cc.indexOf(18) > -1 ? 'strikethrough' : '' }") Stanford's Relational Databases Mini-course
|   (1 hr) // |   (1 hr)
li //li
a(href="/challenges/20", class="#{ cc.indexOf(19) > -1 ? 'strikethrough' : '' }") Stanford's SQL Mini-course // a(href="/challenges/20", class="#{ cc.indexOf(19) > -1 ? 'strikethrough' : '' }") Stanford's SQL Mini-course
|   (4 hrs | Pair) // |   (4 hrs | Pair)
li //li
a(href="/challenges/21", class="#{ cc.indexOf(20) > -1 ? 'strikethrough' : '' }") Stanford's JSON Mini-course // a(href="/challenges/21", class="#{ cc.indexOf(20) > -1 ? 'strikethrough' : '' }") Stanford's JSON Mini-course
|   (1 hrs | Pair) // |   (1 hrs | Pair)
li //li
a(href="/challenges/22", class="#{ cc.indexOf(21) > -1 ? 'strikethrough' : '' }") Medium Algorithm Scripting Challenges on Coderbyte // a(href="/challenges/22", class="#{ cc.indexOf(21) > -1 ? 'strikethrough' : '' }") Medium Algorithm Scripting Challenges on Coderbyte
|   (15 hrs | Pair) // |   (15 hrs | Pair)
li //li
a.disabled(href="/challenges/23", class="#{ cc.indexOf(22) > -1 ? 'strikethrough' : '' }") Build an Interview Question Machine // a.disabled(href="/challenges/23", class="#{ cc.indexOf(22) > -1 ? 'strikethrough' : '' }") Build an Interview Question Machine
|   (5 hrs | Pair) // |   (5 hrs | Pair)
li //li
a.disabled(href="/challenges/24", class="#{ cc.indexOf(23) > -1 ? 'strikethrough' : '' }") Build a Text-based Adventure // a.disabled(href="/challenges/24", class="#{ cc.indexOf(23) > -1 ? 'strikethrough' : '' }") Build a Text-based Adventure
|   (5 hrs | Pair) // |   (5 hrs | Pair)
li //li
a.disabled(href="/challenges/25", class="#{ cc.indexOf(24) > -1 ? 'strikethrough' : '' }") Hard Algorithm Scripting Challenges on Coderbyte // a.disabled(href="/challenges/25", class="#{ cc.indexOf(24) > -1 ? 'strikethrough' : '' }") Hard Algorithm Scripting Challenges on Coderbyte
|   (15 hrs | Pair) // |   (15 hrs | Pair)
li //li
a.disabled(href="/challenges/26", class="#{ cc.indexOf(25) > -1 ? 'strikethrough' : '' }") Code School's Try Git // a.disabled(href="/challenges/26", class="#{ cc.indexOf(25) > -1 ? 'strikethrough' : '' }") Code School's Try Git
|   (30 mins) // |   (30 mins)
li //li
a.disabled(href="/challenges/27", class="#{ cc.indexOf(26) > -1 ? 'strikethrough' : '' }") Install Node.js // a.disabled(href="/challenges/27", class="#{ cc.indexOf(26) > -1 ? 'strikethrough' : '' }") Install Node.js
|   (1 hr) // |   (1 hr)
li //li
a.disabled(href="/challenges/28", class="#{ cc.indexOf(27) > -1 ? 'strikethrough' : '' }") Clone a Github Repo // a.disabled(href="/challenges/28", class="#{ cc.indexOf(27) > -1 ? 'strikethrough' : '' }") Clone a Github Repo
|   (15 mins) // |   (15 mins)
li //li
a.disabled(href="/challenges/29", class="#{ cc.indexOf(28) > -1 ? 'strikethrough' : '' }") Deploy an app to Heroku // a.disabled(href="/challenges/29", class="#{ cc.indexOf(28) > -1 ? 'strikethrough' : '' }") Deploy an app to Heroku
|   (15 mins) // |   (15 mins)
li //li
a.disabled(href="/challenges/30", class="#{ cc.indexOf(29) > -1 ? 'strikethrough' : '' }") Code School's Real-time web with Node.JS // a.disabled(href="/challenges/30", class="#{ cc.indexOf(29) > -1 ? 'strikethrough' : '' }") Code School's Real-time web with Node.JS
|   (5 hrs) // |   (5 hrs)
li //li
a.disabled(href="/challenges/31", class="#{ cc.indexOf(30) > -1 ? 'strikethrough' : '' }") Try MongoDB // a.disabled(href="/challenges/31", class="#{ cc.indexOf(30) > -1 ? 'strikethrough' : '' }") Try MongoDB
|   (30 mins) // |   (30 mins)
li //li
a.disabled(href="/challenges/32", class="#{ cc.indexOf(31) > -1 ? 'strikethrough' : '' }") Explore your Network with the LinkedIn API // a.disabled(href="/challenges/32", class="#{ cc.indexOf(31) > -1 ? 'strikethrough' : '' }") Explore your Network with the LinkedIn API
|   (1 hr) // |   (1 hr)
li //li
a.disabled(href="/challenges/33", class="#{ cc.indexOf(32) > -1 ? 'strikethrough' : '' }") Build your first API // a.disabled(href="/challenges/33", class="#{ cc.indexOf(32) > -1 ? 'strikethrough' : '' }") Build your first API
|   (10 hrs | Pair) // |   (10 hrs | Pair)
li //li
a.disabled(href="/challenges/34", class="#{ cc.indexOf(33) > -1 ? 'strikethrough' : '' }") Aggregate Data with Chron Jobs and Screen Scraping // a.disabled(href="/challenges/34", class="#{ cc.indexOf(33) > -1 ? 'strikethrough' : '' }") Aggregate Data with Chron Jobs and Screen Scraping
|   (10 hrs | Pair) // |   (10 hrs | Pair)
li //li
a.disabled(href="/challenges/35", class="#{ cc.indexOf(34) > -1 ? 'strikethrough' : '' }") Code School's Shaping up with Angular.JS // a.disabled(href="/challenges/35", class="#{ cc.indexOf(34) > -1 ? 'strikethrough' : '' }") Code School's Shaping up with Angular.JS
|   (5 hrs) // |   (5 hrs)
li //li
a.disabled(href="/challenges/36", class="#{ cc.indexOf(35) > -1 ? 'strikethrough' : '' }") Reverse Engineer SnapChat // a.disabled(href="/challenges/36", class="#{ cc.indexOf(35) > -1 ? 'strikethrough' : '' }") Reverse Engineer SnapChat
|   (50 hrs | Pair) // |   (50 hrs | Pair)
li //li
a.disabled(href="/challenges/37", class="#{ cc.indexOf(36) > -1 ? 'strikethrough' : '' }") Reverse Engineer Reddit // a.disabled(href="/challenges/37", class="#{ cc.indexOf(36) > -1 ? 'strikethrough' : '' }") Reverse Engineer Reddit
|   (50 hrs | Pair) // |   (50 hrs | Pair)
li //li
a.disabled(href="/challenges/38", class="#{ cc.indexOf(37) > -1 ? 'strikethrough' : '' }") Reverse Engineer Pintrest // a.disabled(href="/challenges/38", class="#{ cc.indexOf(37) > -1 ? 'strikethrough' : '' }") Reverse Engineer Pintrest
|   (50 hrs | Pair) // |   (50 hrs | Pair)
li //li
a.disabled(href="/challenges/39", class="#{ cc.indexOf(38) > -1 ? 'strikethrough' : '' }") Help a Nonprofit: Team Project // a.disabled(href="/challenges/39", class="#{ cc.indexOf(38) > -1 ? 'strikethrough' : '' }") Help a Nonprofit: Team Project
|   (150 hrs | Pair) // |   (150 hrs | Pair)
li //li
a.disabled(href="/challenges/40", class="#{ cc.indexOf(39) > -1 ? 'strikethrough' : '' }") Help a Nonprofit: Solo Project // a.disabled(href="/challenges/40", class="#{ cc.indexOf(39) > -1 ? 'strikethrough' : '' }") Help a Nonprofit: Solo Project
|   (150 hrs | Pair) // |   (150 hrs | Pair)
li //li
a.disabled(href="/challenges/41", class="#{ cc.indexOf(40) > -1 ? 'strikethrough' : '' }") Crack the Coding Interview // a.disabled(href="/challenges/41", class="#{ cc.indexOf(40) > -1 ? 'strikethrough' : '' }") Crack the Coding Interview
|   (5 hrs) // |   (5 hrs)

View File

@ -20,7 +20,7 @@
img(src='#{user.profile.picture}') img(src='#{user.profile.picture}')
else else
img(src='#{user.gravatar(60)}') img(src='#{user.gravatar(60)}')
| #{user.profile.name || user.email || user.id} [ #{user.challengesCompleted.length} ]  | #{user.profile.name || user.email || user.id} [ #{Object.keys(user.challengesHash).length} ] 
i.caret i.caret
ul.dropdown-menu ul.dropdown-menu
li li