add time estimates to challenge blocks on map
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Advanced Algorithm Scripting",
 | 
			
		||||
  "order": 15,
 | 
			
		||||
  "time": "50h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "aff0395860f5d3034dc0bfc9",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "AngularJS",
 | 
			
		||||
  "order": 16,
 | 
			
		||||
  "time": "5h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7154d8c441eddfaeb5bdef",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Automated Testing and Debugging",
 | 
			
		||||
  "order": 14,
 | 
			
		||||
  "time": "15m",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id":"cf1111c1c16feddfaeb6bdef",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Full Stack JavaScript Projects",
 | 
			
		||||
  "order": 20,
 | 
			
		||||
  "time": "300h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7158d8c443eddfaeb5bcef",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Basic Algorithm Scripting",
 | 
			
		||||
  "order": 8,
 | 
			
		||||
  "time": "50h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "ad7123c8c441eddfaeb5bdef",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Basic JavaScript",
 | 
			
		||||
  "order": 6,
 | 
			
		||||
  "time": "3h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id":"bd7123c9c441eddfaeb4bdef",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Basic Front End Development Projects",
 | 
			
		||||
  "order": 9,
 | 
			
		||||
  "time": "100h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7158d8c442eddfbeb5bd1f",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Responsive Design with Bootstrap",
 | 
			
		||||
  "order": 3,
 | 
			
		||||
  "time": "2h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bad87fee1348bd9acde08712",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Claim Your Front End Development Certificate",
 | 
			
		||||
  "order": 12,
 | 
			
		||||
  "time": "5m",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "561add10cb82ac38a17513be",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Claim Your Full Stack Development Certificate",
 | 
			
		||||
  "order": 21,
 | 
			
		||||
  "time": "5m",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "660add10cb82ac38a17513be",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Gear up for Success",
 | 
			
		||||
  "order": 4,
 | 
			
		||||
  "time": "10m",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "560add65cb82ac38a17513c2",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Get Started with Free Code Camp",
 | 
			
		||||
  "order": 1,
 | 
			
		||||
  "time": "10m",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "560add10cb82ac38a17513be",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Git",
 | 
			
		||||
  "order" : 17,
 | 
			
		||||
  "time": "3h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7353d8c341eddeaeb5bd0f",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Hikes",
 | 
			
		||||
  "order": 0.050,
 | 
			
		||||
  "time": "3h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7128d8c441eddfbeb5bddf",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "HTML5 and CSS",
 | 
			
		||||
  "order": 2,
 | 
			
		||||
  "time": "3h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7123c8c441eddfaeb5bdef",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Intermediate Algorithm Scripting",
 | 
			
		||||
  "order": 10,
 | 
			
		||||
  "time": "50h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "a3566b1109230028080c9345",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Intermediate Front End Development Projects",
 | 
			
		||||
  "order": 11,
 | 
			
		||||
  "time": "200h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7158d8c442eddfaeb5bd10",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "jQuery",
 | 
			
		||||
  "order": 5,
 | 
			
		||||
  "time": "2h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bad87fee1348bd9acdd08826",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "MongoDB",
 | 
			
		||||
  "order" : 19,
 | 
			
		||||
  "time": "3h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7243d8c341eddeaeb5bd0f",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Node.js and Express.js",
 | 
			
		||||
  "order" : 18,
 | 
			
		||||
  "time": "20h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "bd7153d8c441eddfaeb5bd0f",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Object Oriented and Functional Programming",
 | 
			
		||||
  "order": 7,
 | 
			
		||||
  "time": "1h",
 | 
			
		||||
  "note": [
 | 
			
		||||
    "Methods",
 | 
			
		||||
    "Closures",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Upper Intermediate Algorithm Scripting",
 | 
			
		||||
  "order": 13,
 | 
			
		||||
  "time": "50h",
 | 
			
		||||
  "challenges": [
 | 
			
		||||
    {
 | 
			
		||||
      "id": "a2f1d72d9b908d0bd72bb9f6",
 | 
			
		||||
 
 | 
			
		||||
@@ -68,6 +68,7 @@ Challenge.destroyAll(function(err, info) {
 | 
			
		||||
        challenge.suborder = index + 1;
 | 
			
		||||
        challenge.block = block;
 | 
			
		||||
        challenge.isBeta = challenge.isBeta || isBeta;
 | 
			
		||||
        challenge.time = challengeSpec.time;
 | 
			
		||||
 | 
			
		||||
        return challenge;
 | 
			
		||||
      });
 | 
			
		||||
 
 | 
			
		||||
@@ -555,7 +555,8 @@ module.exports = function(app) {
 | 
			
		||||
          name: blockArray[0].block,
 | 
			
		||||
          dashedName: dasherize(blockArray[0].block),
 | 
			
		||||
          challenges: blockArray,
 | 
			
		||||
          completed: completedCount / blockArray.length * 100
 | 
			
		||||
          completed: completedCount / blockArray.length * 100,
 | 
			
		||||
          time: blockArray[0] && blockArray[0].time || "???"
 | 
			
		||||
        };
 | 
			
		||||
      })
 | 
			
		||||
      .filter(({ name }) => name !== 'Hikes')
 | 
			
		||||
 
 | 
			
		||||
@@ -85,40 +85,44 @@ block content
 | 
			
		||||
                        .spacer.negative-55
 | 
			
		||||
 | 
			
		||||
                    .row
 | 
			
		||||
                        .col-xs-12.col-sm-8.col-sm-offset-2
 | 
			
		||||
                            h3 #{challengeBlock.name}
 | 
			
		||||
                        .hidden-xs.col-sm-3.col-md-2
 | 
			
		||||
                            h3.text-primary.text-right
 | 
			
		||||
                                i.fa.fa-clock-o #{challengeBlock.time}
 | 
			
		||||
                        .col-xs-12.col-sm-9.col-md-10
 | 
			
		||||
                            h3 #{challengeBlock.name}  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    .row
 | 
			
		||||
                        .col-xs-12
 | 
			
		||||
                            ol
 | 
			
		||||
                                for challenge in challengeBlock.challenges
 | 
			
		||||
                                    if challenge.completed
 | 
			
		||||
                                        .row
 | 
			
		||||
                                            .hidden-xs.col-sm-3.col-md-2.text-primary.ion-checkmark-circled.padded-ionic-icon.text-center.map-p.negative-10
 | 
			
		||||
                                            .col-xs-12.col-sm-9.col-md-10
 | 
			
		||||
                                                li.faded.map-p.negative-10
 | 
			
		||||
                                                    a(href="/challenges/#{challenge.dashedName}")
 | 
			
		||||
                                                        span.capitalize= challenge.type + ': '
 | 
			
		||||
                                                        span= challenge.title
 | 
			
		||||
                                                            span.sr-only= " Complete"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                                    else
 | 
			
		||||
                                        .row
 | 
			
		||||
                                            .hidden-xs.col-sm-3.col-md-2
 | 
			
		||||
                                                span.negative-10
 | 
			
		||||
                                            .col-xs-12.col-sm-9.col-md-10
 | 
			
		||||
                                                li.map-p.negative-10
 | 
			
		||||
                                                    a(href="/challenges/#{challenge.dashedName}")
 | 
			
		||||
                                                        span.capitalize= challenge.type + ': '
 | 
			
		||||
                                                        span= challenge.title
 | 
			
		||||
                                                            span.sr-only= " Incomplete"
 | 
			
		||||
 | 
			
		||||
                                if (challengeBlock.completed === 100)
 | 
			
		||||
                                    .button-spacer
 | 
			
		||||
                        ol
 | 
			
		||||
                            for challenge in challengeBlock.challenges
 | 
			
		||||
                                if challenge.completed
 | 
			
		||||
                                    .row
 | 
			
		||||
                                        .col-xs-12.col-sm-8.col-md-6.col-sm-offset-3.col-md-offset-2.hidden
 | 
			
		||||
                                            a.btn.btn-lg.btn-block.signup-btn.map-challenge-block-share Section complete. Share your Portfolio with your friends.
 | 
			
		||||
                                                .hidden(id="#{challengeBlock.name}")
 | 
			
		||||
                                        .hidden-xs.col-sm-3.col-md-2.text-primary.ion-checkmark-circled.padded-ionic-icon.text-center.map-p.negative-10
 | 
			
		||||
                                        .col-xs-12.col-sm-9.col-md-10
 | 
			
		||||
                                            li.faded.map-p.negative-10
 | 
			
		||||
                                                a(href="/challenges/#{challenge.dashedName}")
 | 
			
		||||
                                                    span.capitalize= challenge.type + ': '
 | 
			
		||||
                                                    span= challenge.title
 | 
			
		||||
                                                        span.sr-only= " Complete"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                                else
 | 
			
		||||
                                    .row
 | 
			
		||||
                                        .hidden-xs.col-sm-3.col-md-2
 | 
			
		||||
                                            span.negative-10
 | 
			
		||||
                                        .col-xs-12.col-sm-9.col-md-10
 | 
			
		||||
                                            li.map-p.negative-10
 | 
			
		||||
                                                a(href="/challenges/#{challenge.dashedName}")
 | 
			
		||||
                                                    span.capitalize= challenge.type + ': '
 | 
			
		||||
                                                    span= challenge.title
 | 
			
		||||
                                                        span.sr-only= " Incomplete"
 | 
			
		||||
 | 
			
		||||
                            if (challengeBlock.completed === 100)
 | 
			
		||||
                                .button-spacer
 | 
			
		||||
                                .row
 | 
			
		||||
                                    .col-xs-12.col-sm-8.col-md-6.col-sm-offset-3.col-md-offset-2.hidden
 | 
			
		||||
                                        a.btn.btn-lg.btn-block.signup-btn.map-challenge-block-share Section complete. Share your Portfolio with your friends.
 | 
			
		||||
                                            .hidden(id="#{challengeBlock.name}")
 | 
			
		||||
    script.
 | 
			
		||||
        var username = !{JSON.stringify(user && user.username || '')};
 | 
			
		||||
        var lastCompleted = !{JSON.stringify(lastCompleted || false)}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user