From 9350fff6d5ca9c6707fa434d0a58903e60348ef0 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 6 Jan 2015 12:01:52 -0800 Subject: [PATCH 1/8] minor fix to challenges and jquery-exercises answer --- seed_data/challenges.json | 2 +- views/resources/jquery-exercises.jade | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/seed_data/challenges.json b/seed_data/challenges.json index 9440ef63c2e..88239564661 100644 --- a/seed_data/challenges.json +++ b/seed_data/challenges.json @@ -456,7 +456,7 @@ "video": "114686471", "challengeNumber": 36, "steps": [ - "Now that we understand some Computer Science, JavaScript programming, and how Databases work, you're ready to move on to Full-stack JavaScript!", + "Now that we understand some Computer Science and JavaScript programming, you're ready to move on to Full-stack JavaScript!", "The first step is to familiarize ourselves Node.js, the JavaScript-based web server that most full-stack JavaScript apps use.", "Code School has an excellent course on Node.js. Note that this course requires a Code School subscription, but that you can get a free two-day membership to Code School by going to https://www.codeschool.com/hall_passes/213f3fedb6b9/claim_shared. The challenges immediately following these Node.js challenges also require a Code School course, so you may want to try to complete all these challenges in one two-day period. Alternatively, you could subscribe to Code School for one month, then take your time in completing these challenges.", "When you're ready, go to http://campus.codeschool.com/courses/real-time-web-with-node-js/level/1/video/1 and complete the first chapter." diff --git a/views/resources/jquery-exercises.jade b/views/resources/jquery-exercises.jade index 6f9580f2dd5..a313019dec3 100644 --- a/views/resources/jquery-exercises.jade +++ b/views/resources/jquery-exercises.jade @@ -22,8 +22,8 @@ block content 0: "$('#next-exercise').attr('disabled', false);", 1: "$('.target').appendTo('#location2');", 2: "$('.target').css('background', 'red');", - 3: "$('.target:even').css('background', 'red');", - 4: "$('.target:nth-child(4)').css('background', 'red');", + 3: "$('.target:even').css({'background': 'red'});", + 4: "$('.target:nth-child(4)').css({'background': 'red'});", 5: "$('.target:nth-child(2)').clone().appendTo($('#location2'));", 6: "$('.target:nth-child(3)').remove();", 7: "$('#location1 input').attr('checked', 'true')", From f5d00c5ea9d124b71f2fac599ce1f8d176ab0bea Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 6 Jan 2015 16:03:28 -0800 Subject: [PATCH 2/8] minor change to attribution on the GA Dash tutorial --- seed_data/challenges.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seed_data/challenges.json b/seed_data/challenges.json index 88239564661..ae530f666d8 100644 --- a/seed_data/challenges.json +++ b/seed_data/challenges.json @@ -58,7 +58,7 @@ "video": "114627406", "challengeNumber": 3, "steps": [ - "There are tons of interactive HTML and CSS tutorials out there, but Nathan Bashaw's Dash tutorials, which he built for General Assembly, are our favorite.", + "There are tons of interactive HTML and CSS tutorials out there, but Nathan Bashaw and Christine Bower's Dash tutorials - which they built for General Assembly - are our favorite.", "Go to https://dash.generalassemb.ly/projects/annas-website-1 and get started with your first project."] }, { From 574cb3d95713314f54b9be7e19935b26887633f5 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 6 Jan 2015 16:25:55 -0800 Subject: [PATCH 3/8] update live-pair-programming.jade --- views/resources/live-pair-programming.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/resources/live-pair-programming.jade b/views/resources/live-pair-programming.jade index e3f2753a8b8..c937e311051 100644 --- a/views/resources/live-pair-programming.jade +++ b/views/resources/live-pair-programming.jade @@ -3,8 +3,8 @@ block content .jumbotron.text-center h1.hug-top Live Pair Programming h2 We live pair program every Tuesday from 6 p.m. to 7 p.m. (Pacific Time). - h2 Our next session is January 6th, 2015. - a.btn.btn-big.btn-primary.big-break(href="http://www.crowdcast.io/e/freecodecamp-live-pair-programming-3" target='_blank') Watch us Pair Program on JavaScript Algorithms + h2 Our next session is tonight (January 6th, 2015) at 6 p.m. EST! + a.btn.btn-big.btn-primary.big-break(href="http://www.crowdcast.io/e/quincylarson11" target='_blank') Watch us Pair Program on JavaScript Algorithms h2 Previous Live Pair Programming Sessions .embed-responsive.embed-responsive-16by9.big-break iframe.embed-responsive-item(src='//www.youtube.com/embed/cBtysq16kqo') From 91638ade81b96bb2a2a7e92f9487b3916bd023c4 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 6 Jan 2015 23:08:54 -0800 Subject: [PATCH 4/8] update about page and move stats into partial that is also displayed on about page. Fix Trello API issue on stats page --- controllers/resources.js | 82 ++++++++++++++------ views/home.jade | 2 +- views/partials/{about-us.jade => about.jade} | 74 ++++++++++++++---- views/partials/stats.jade | 68 ++++++++++++++++ views/resources/about.jade | 3 +- views/resources/stats.jade | 67 +--------------- 6 files changed, 190 insertions(+), 106 deletions(-) rename views/partials/{about-us.jade => about.jade} (78%) create mode 100644 views/partials/stats.jade diff --git a/controllers/resources.js b/controllers/resources.js index 09ff65e6591..6f0c4025171 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -30,28 +30,29 @@ module.exports = { var date2 = new Date(); var timeDiff = Math.abs(date2.getTime() - date1.getTime()); var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24)); - var nonprofitProjects = client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(data, response){return data.length;}); - User.count({}, function(err, users) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 2}}, function(err, c2) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 4}}, function(err, c4) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 9}}, function(err, c9) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 19}}, function(err, c19) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 29}}, function(err, c29) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 39}}, function(err, c39) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } - res.render('resources/stats', { - title: 'Free Code Camp Stats:', - daysRunning: daysRunning, - users: users, - nonprofitProjects: nonprofitProjects, /* can't yet get this to work. Async issue? - Hardcoded value for now and created a Trello card */ - c2: c2, - c4: c4, - c9: c9, - c19: c19, - c29: c29, - c39: c39, - all: all + client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, response) { + var nonprofitProjects = (trello && trello.length) || 15; + User.count({}, function(err, users) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 2}}, function(err, c2) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 4}}, function(err, c4) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 9}}, function(err, c9) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 19}}, function(err, c19) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 29}}, function(err, c29) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 39}}, function(err, c39) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } + res.render('resources/stats', { + title: 'Free Code Camp Stats:', + daysRunning: daysRunning, + users: users, + nonprofitProjects: nonprofitProjects, + c2: c2, + c4: c4, + c9: c9, + c19: c19, + c29: c29, + c39: c39, + all: all + }); }); }); }); @@ -131,8 +132,41 @@ module.exports = { }, about: function(req, res) { - res.render('resources/about', { - title: 'About Free Code Camp and Our Team of Volunteers' + var date1 = new Date("10/15/2014"); + var date2 = new Date(); + var timeDiff = Math.abs(date2.getTime() - date1.getTime()); + var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24)); + client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, response) { + var nonprofitProjects = trello.length || 15; + User.count({}, function(err, users) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 2}}, function(err, c2) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 4}}, function(err, c4) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 9}}, function(err, c9) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 19}}, function(err, c19) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 29}}, function(err, c29) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 39}}, function(err, c39) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } + res.render('resources/about', { + title: 'About Free Code Camp and Our Team of Volunteers', + daysRunning: daysRunning, + users: users, + nonprofitProjects: nonprofitProjects, + c2: c2, + c4: c4, + c9: c9, + c19: c19, + c29: c29, + c39: c39, + all: all + }); + }); + }); + }); + }); + }); + }); + }); + }); }); }, diff --git a/views/home.jade b/views/home.jade index 23417eae5f9..d4003bba255 100644 --- a/views/home.jade +++ b/views/home.jade @@ -37,5 +37,5 @@ block content br a.btn.nonprofit-cta.btn-success(href="/nonprofits") I'm with a nonprofit and want help coding something - include partials/about-us + include partials/about include partials/faq \ No newline at end of file diff --git a/views/partials/about-us.jade b/views/partials/about.jade similarity index 78% rename from views/partials/about-us.jade rename to views/partials/about.jade index 0bab283afe4..20a3cef44fa 100644 --- a/views/partials/about-us.jade +++ b/views/partials/about.jade @@ -6,7 +6,41 @@ .masonry-row .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") + p + | Getting back on track with + a(href='https://twitter.com/FreeCodeCamp') @freecodecamp + | and committing to a new career in 2015! + | — Jen (@jenbestyoga) + a(href='https://twitter.com/jenbestyoga/status/552261958221963264') January 6, 2015 + script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') + .masonry-block + .masonry-relative + blockquote.twitter-tweet(lang='en', data-cards="hidden") + p + a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp + | I can't get enough of the free tutorials you're offering. Thanks for being awesome! Will be referring friends your way! + | — Chris Pearson (@CPearsonnn) + a(href='https://twitter.com/CPearsonnn/status/551513789401559042') January 3, 2015 + script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') + .masonry-block + .masonry-relative + blockquote.twitter-tweet(lang='en', data-cards="hidden") + p + | Great way to start learning code, it's the future. + a(href='http://t.co/pNwDAQ9xFe') http://t.co/pNwDAQ9xFe + a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp + a(href='https://twitter.com/hashtag/Code?src=hash') #Code + a(href='https://twitter.com/hashtag/html?src=hash') #html + a(href='https://twitter.com/hashtag/css?src=hash') #css + a(href='https://twitter.com/hashtag/jquery?src=hash') #jquery + a(href='https://twitter.com/hashtag/javascript?src=hash') #javascript + | — Adam (@savageEWOK87) + a(href='https://twitter.com/savageEWOK87/status/549277640612278273') December 28, 2014 + script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') + .masonry-block + .masonry-relative + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | My boss was impressed by the troubleshooting I learned through a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp @@ -17,7 +51,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p a(href='https://twitter.com/DrivenByTatiana') @DrivenByTatiana a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp @@ -27,7 +61,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | Discovered a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp @@ -39,7 +73,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | For my friends who are learning to code, a(href='https://twitter.com/ossia') @ossia @@ -53,7 +87,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp | is such a fantastic program! I love the idea of it. Perfect for someone like me @@ -62,7 +96,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | Just built my companies website a(href='http://t.co/AUkS27oTm5') http://t.co/AUkS27oTm5 @@ -73,7 +107,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp | I'll make time to be part of this!!!! @@ -82,7 +116,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp | Great idea. Great vision. @@ -91,7 +125,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | Learn code for free! Your time, your pace! Sweet! a(href='http://t.co/y6IMdPDPnH') http://t.co/y6IMdPDPnH @@ -104,7 +138,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp | is my new favorite online learning tool right now. @@ -117,7 +151,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | Started a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp @@ -131,7 +165,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | I don't consider myself a teacher, but getting involved & collaborating through a(href='https://twitter.com/FreeCodeCamp') @FreeCodeCamp @@ -141,7 +175,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | A6 - a(href='http://t.co/M6Gyw8jszd') http://t.co/M6Gyw8jszd @@ -153,7 +187,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .masonry-block .masonry-relative - blockquote.twitter-tweet(lang='en') + blockquote.twitter-tweet(lang='en', data-cards="hidden") p | I agree, a(href='https://twitter.com/LeifPixel') @LeifPixel @@ -181,6 +215,18 @@ } }); #shuffle + .col-xs-12.col-sm-4.col-md-3.team-member + h3.negative-10.text-nowrap Ammar Shah + h4.negative-10.text-nowrap Community Builder + img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ammar-shah.jpg' alt="Ammar Shah's picture") + h4.text-nowrap Karachi, Pakistan + p.negative-10 "I code whenever I'm not sleeping or in school. Making computers obey me is a dream come true." + .col-xs-12.col-sm-4.col-md-3.team-member + h3.negative-10.text-nowrap Branden Byers + h4.negative-10.text-nowrap Community Builder + img.profile-image(src='https://s3.amazonaws.com/freecodecamp/branden-byers.jpg' alt="Branden Byers picture") + h4.text-nowrap Madison, Wisconsin + p.negative-10 "I'm a massage therapist and Stay-at-home-dad. I learned Hypercard, then Rails, but now I feel at home with JavaScript." .col-xs-12.col-sm-4.col-md-3.team-member h3.negative-10.text-nowrap Michael Johnson h4.negative-10.text-nowrap Nonprofit Coordinator diff --git a/views/partials/stats.jade b/views/partials/stats.jade new file mode 100644 index 00000000000..5500b0bae9e --- /dev/null +++ b/views/partials/stats.jade @@ -0,0 +1,68 @@ +.panel.panel-primary + .panel-heading.landing-panel-heading.text-center Free Code Camp Stats + .panel-body + .landing-panel-body.text-center + .row + .col-xs-6.text-right + h2 Days since we Launched: + .col-xs-6.text-left + h2 + = daysRunning + .row + .col-xs-6.text-right + h2 Nonprofit Projects: + .col-xs-6.text-left + h2 + a(href="https://trello.com/b/BA3xVpz9/nonprofit-projects")=nonprofitProjects + .row + .col-xs-6.text-right + h2 Total Code Campers: + .col-xs-6.text-left + h2 + = users + .row + .col-xs-6.text-right + h2 Code Campers with at least... + .col-xs-6 + .row + .col-xs-6.text-right + h2 2 Points: + .col-xs-6.text-left + h2 + = c2 + .row + .col-xs-6.text-right + h2 4 Points: + .col-xs-6.text-left + h2 + = c4 + .row + .col-xs-6.text-right + h2 9 Points: + .col-xs-6.text-left + h2 + = c9 + .row + .col-xs-6.text-right + h2 19 Points: + .col-xs-6.text-left + h2 + = c19 + .row + .col-xs-6.text-right + h2 29 Points: + .col-xs-6.text-left + h2 + = c29 + .row + .col-xs-6.text-right + h2 39 Points: + .col-xs-6.text-left + h2 + = c39 + .row + .col-xs-6.text-right + h2 All 54 Points: + .col-xs-6.text-left + h2 + = all \ No newline at end of file diff --git a/views/resources/about.jade b/views/resources/about.jade index 3abae519443..4fdf1ccfc9c 100644 --- a/views/resources/about.jade +++ b/views/resources/about.jade @@ -1,4 +1,5 @@ extends ../layout block content - include ../partials/about-us + include ../partials/stats + include ../partials/about include ../partials/faq \ No newline at end of file diff --git a/views/resources/stats.jade b/views/resources/stats.jade index 72a63b61ae2..71659d344a4 100644 --- a/views/resources/stats.jade +++ b/views/resources/stats.jade @@ -1,68 +1,3 @@ extends ../layout block content - .jumbotron.text-center - h1.hug-top Free Code Camp Stats - .row - .col-xs-6.text-right - h2 Days since we Launched: - .col-xs-6.text-left - h2 - = daysRunning - .row - .col-xs-6.text-right - h2 Nonprofit Projects: - .col-xs-6.text-left - h2 - a(href="https://trello.com/b/BA3xVpz9/nonprofit-projects") 14 - .row - .col-xs-6.text-right - h2 Total Code Campers: - .col-xs-6.text-left - h2 - = users - .row - .col-xs-6.text-right - h2 Code Campers with at least... - .col-xs-6 - .row - .col-xs-6.text-right - h2 2 Points: - .col-xs-6.text-left - h2 - = c2 - .row - .col-xs-6.text-right - h2 4 Points: - .col-xs-6.text-left - h2 - = c4 - .row - .col-xs-6.text-right - h2 9 Points: - .col-xs-6.text-left - h2 - = c9 - .row - .col-xs-6.text-right - h2 19 Points: - .col-xs-6.text-left - h2 - = c19 - .row - .col-xs-6.text-right - h2 29 Points: - .col-xs-6.text-left - h2 - = c29 - .row - .col-xs-6.text-right - h2 39 Points: - .col-xs-6.text-left - h2 - = c39 - .row - .col-xs-6.text-right - h2 All 54 Points: - .col-xs-6.text-left - h2 - = all \ No newline at end of file + include ../partials/stats \ No newline at end of file From 406ebf58c22706faa968d82a041c252fd69d5afa Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 6 Jan 2015 23:14:08 -0800 Subject: [PATCH 5/8] update challenge.json to reflect removal of sql --- seed_data/challenges.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seed_data/challenges.json b/seed_data/challenges.json index ae530f666d8..999acfd08fd 100644 --- a/seed_data/challenges.json +++ b/seed_data/challenges.json @@ -9,7 +9,7 @@ "Welcome to Free Code Camp. We're a community of busy people learning to code.", "We built this community because learning to code is hard. But anyone who can stay motivated can learn to code. And the best way to stay motivated is to code with friends.", "To maximize accessibility, all our challenges are self-paced, browser-based, and free.", - "All of us start with the same 100 hours of interactive coding challenges. These cover everything from Computer Science to SQL. They also cover in-demand JavaScript tools like jQuery, Node.js and MongoDB.", + "All of us start with the same 100 hours of interactive coding challenges. These cover Computer Science and databases. They also cover in-demand JavaScript tools like jQuery, Node.js and MongoDB.", "Once we have a basic understanding of web development, we'll spend another 900 hours putting that theory into practice. We'll build full stack solutions for nonprofits.", "By the end of this process, we'll be good at coding. We'll have a portfolio of apps with happy users to prove it. We'll also have an alumni network of fellow coders and nonprofits ready to serve as references.", "If you make it through Free Code Camp, you will be able to get a coding job. There are far more job openings out there than there are qualified coders to fill them.", From 3f83f56acce90bc3ce19513627abc52d39a8852b Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Wed, 7 Jan 2015 10:50:48 -0800 Subject: [PATCH 6/8] simplify stats page to reduce queries --- controllers/resources.js | 72 +++++++++++++-------------------------- views/partials/about.jade | 2 +- views/partials/stats.jade | 36 ++++---------------- 3 files changed, 31 insertions(+), 79 deletions(-) diff --git a/controllers/resources.js b/controllers/resources.js index 6f0c4025171..8d829365e69 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -32,30 +32,18 @@ module.exports = { var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24)); client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, response) { var nonprofitProjects = (trello && trello.length) || 15; - User.count({}, function(err, users) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 2}}, function(err, c2) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 4}}, function(err, c4) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 9}}, function(err, c9) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 19}}, function(err, c19) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 29}}, function(err, c29) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 39}}, function(err, c39) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } - res.render('resources/stats', { - title: 'Free Code Camp Stats:', - daysRunning: daysRunning, - users: users, - nonprofitProjects: nonprofitProjects, - c2: c2, - c4: c4, - c9: c9, - c19: c19, - c29: c29, - c39: c39, - all: all - }); - }); - }); - }); + User.count({'points': {'$gt': 2}}, function(err, c3) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 9}}, function(err, c10) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 29}}, function(err, c30) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } + res.render('resources/stats', { + title: 'Free Code Camp Stats:', + daysRunning: daysRunning, + nonprofitProjects: nonprofitProjects, + c3: c3, + c10: c10, + c30: c30, + all: all }); }); }); @@ -138,30 +126,18 @@ module.exports = { var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24)); client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, response) { var nonprofitProjects = trello.length || 15; - User.count({}, function(err, users) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 2}}, function(err, c2) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 4}}, function(err, c4) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 9}}, function(err, c9) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 19}}, function(err, c19) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 29}}, function(err, c29) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 39}}, function(err, c39) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } - res.render('resources/about', { - title: 'About Free Code Camp and Our Team of Volunteers', - daysRunning: daysRunning, - users: users, - nonprofitProjects: nonprofitProjects, - c2: c2, - c4: c4, - c9: c9, - c19: c19, - c29: c29, - c39: c39, - all: all - }); - }); - }); - }); + User.count({'points': {'$gt': 2}}, function(err, c3) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 9}}, function(err, c10) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 29}}, function(err, c30) { if (err) { debug('User err: ', err); next(err); } + User.count({'points': {'$gt': 53}}, function(err, all) { if (err) { debug('User err: ', err); next(err); } + res.render('resources/about', { + title: 'About Free Code Camp and Our Team of Volunteers', + daysRunning: daysRunning, + nonprofitProjects: nonprofitProjects, + c3: c3, + c10: c10, + c30: c30, + all: all }); }); }); diff --git a/views/partials/about.jade b/views/partials/about.jade index 20a3cef44fa..9ec12663926 100644 --- a/views/partials/about.jade +++ b/views/partials/about.jade @@ -202,7 +202,7 @@ script(async='', src='//platform.twitter.com/widgets.js', charset='utf-8') .panel.panel-primary - .panel-heading.landing-panel-heading.text-center Our Team of Volunteers + .panel-heading.landing-panel-heading.text-center Our Team of Volunteer Camp Counselors .panel-body .landing-panel-body.text-center .col-xs-12 diff --git a/views/partials/stats.jade b/views/partials/stats.jade index 5500b0bae9e..3a6d4585ac8 100644 --- a/views/partials/stats.jade +++ b/views/partials/stats.jade @@ -14,52 +14,28 @@ .col-xs-6.text-left h2 a(href="https://trello.com/b/BA3xVpz9/nonprofit-projects")=nonprofitProjects - .row - .col-xs-6.text-right - h2 Total Code Campers: - .col-xs-6.text-left - h2 - = users .row .col-xs-6.text-right h2 Code Campers with at least... .col-xs-6 .row .col-xs-6.text-right - h2 2 Points: + h2 3 Points: .col-xs-6.text-left h2 - = c2 + = c3 .row .col-xs-6.text-right - h2 4 Points: + h2 10 Points: .col-xs-6.text-left h2 - = c4 + = c10 .row .col-xs-6.text-right - h2 9 Points: + h2 30 Points: .col-xs-6.text-left h2 - = c9 - .row - .col-xs-6.text-right - h2 19 Points: - .col-xs-6.text-left - h2 - = c19 - .row - .col-xs-6.text-right - h2 29 Points: - .col-xs-6.text-left - h2 - = c29 - .row - .col-xs-6.text-right - h2 39 Points: - .col-xs-6.text-left - h2 - = c39 + = c30 .row .col-xs-6.text-right h2 All 54 Points: From 74b9965627e9f9bb078f36d758d13d2682c8de36 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Wed, 7 Jan 2015 11:55:14 -0800 Subject: [PATCH 7/8] update pair programming page --- views/resources/live-pair-programming.jade | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/resources/live-pair-programming.jade b/views/resources/live-pair-programming.jade index c937e311051..f29f00e5724 100644 --- a/views/resources/live-pair-programming.jade +++ b/views/resources/live-pair-programming.jade @@ -3,9 +3,9 @@ block content .jumbotron.text-center h1.hug-top Live Pair Programming h2 We live pair program every Tuesday from 6 p.m. to 7 p.m. (Pacific Time). - h2 Our next session is tonight (January 6th, 2015) at 6 p.m. EST! - a.btn.btn-big.btn-primary.big-break(href="http://www.crowdcast.io/e/quincylarson11" target='_blank') Watch us Pair Program on JavaScript Algorithms - h2 Previous Live Pair Programming Sessions + h2 Our next session will be January 13th, 2015 at 6 p.m. PST! + //a.btn.btn-big.btn-primary.big-break(href="http://www.crowdcast.io/e/quincylarson11" target='_blank') Watch us Pair Program on JavaScript Algorithms + h3 Previous Live Pair Programming Sessions: .embed-responsive.embed-responsive-16by9.big-break iframe.embed-responsive-item(src='//www.youtube.com/embed/cBtysq16kqo') .embed-responsive.embed-responsive-16by9.big-break From 2240381a06fb5524ce93c43b4c83eb28dc0d9608 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Wed, 7 Jan 2015 13:30:27 -0800 Subject: [PATCH 8/8] update Michael's description' --- views/partials/about.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/partials/about.jade b/views/partials/about.jade index 9ec12663926..ea78d6efa1e 100644 --- a/views/partials/about.jade +++ b/views/partials/about.jade @@ -232,7 +232,7 @@ h4.negative-10.text-nowrap Nonprofit Coordinator img.profile-image(src='https://s3.amazonaws.com/freecodecamp/michael-johnson.jpeg' alt="Michael Johnson's picture") h4.text-nowrap Washington, D.C. - p.negative-10 "I'm a recent Harvard graduate who took a pass on Wall Street to code for a cause. Coding is the 21st century literacy." + p.negative-10 "I’m a recent Harvard University graduate who took a pass on Wall Street to code for a cause, and help others do the same." .col-xs-12.col-sm-4.col-md-3.team-member h3.negative-10.text-nowrap Berkeley Martinez h4.negative-10.text-nowrap JavaScript Engineer