Merge branch 'coderbye' of https://github.com/FreeCodeCamp/freecodecamp into coderbye
Conflicts: seed_data/coursewares.json
This commit is contained in:
@ -59,35 +59,42 @@ editor.on("change", function () {
|
||||
});
|
||||
var nodeEnv = prodOrDev === 'production' ? 'http://www.freecodecamp.com' : 'http://localhost:3001';
|
||||
function updatePreview() {
|
||||
goodTests = 0;
|
||||
var previewFrame = document.getElementById('preview');
|
||||
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
|
||||
preview.open();
|
||||
preview.write(libraryIncludes + editor.getValue());
|
||||
$('#testSuite').empty();
|
||||
preview.write(libraryIncludes + editor.getValue() + otherTestsForNow);
|
||||
preview.close();
|
||||
|
||||
}
|
||||
setTimeout(updatePreview, 300);
|
||||
|
||||
/**
|
||||
* Window postMessage receiving funtionality
|
||||
* "post" methods
|
||||
*/
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
|
||||
|
||||
// Listen to message from child window
|
||||
eventer(messageEvent,function(e) {
|
||||
if (e.data === 'CompleteAwesomeSauce') {
|
||||
showCompletion();
|
||||
}
|
||||
},false);
|
||||
|
||||
var postError = function(data) {
|
||||
console.log(Object.keys(data));
|
||||
var postSuccess = function(data) {
|
||||
var testDoc = document.createElement("div");
|
||||
$(testDoc)
|
||||
.html("<div class='row'><div class='col-xs-1 text-center'><i class='ion-close-circled big-error-icon'></i></div><div class='col-xs-11 test-output wrappable'>" + data + "</div></div><div class='ten-pixel-break'/>")
|
||||
.html("<div class='row'><div class='col-xs-2 text-center'><i class='ion-checkmark-circled big-success-icon'></i></div><div class='col-xs-10 test-output test-vertical-center wrappable'>" + JSON.parse(data) + "</div></div><div class='ten-pixel-break'/>")
|
||||
.appendTo($('#testSuite'));
|
||||
testSuccess();
|
||||
};
|
||||
|
||||
var postError = function(data) {
|
||||
var testDoc = document.createElement("div");
|
||||
$(testDoc)
|
||||
.html("<div class='row'><div class='col-xs-2 text-center'><i class='ion-close-circled big-error-icon'></i></div><div class='col-xs-10 test-output wrappable'>" + JSON.parse(data) + "</div></div><div class='ten-pixel-break'/>")
|
||||
.prependTo($('#testSuite'))
|
||||
};
|
||||
var goodTests = 0;
|
||||
var testSuccess = function() {
|
||||
goodTests++;
|
||||
if (goodTests === tests.length) {
|
||||
showCompletion();
|
||||
}
|
||||
};
|
||||
var challengeSeed = challengeSeed || null;
|
||||
var tests = tests || [];
|
||||
var allSeeds = '';
|
||||
@ -122,13 +129,12 @@ function doLinting () {
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//$('#testSuite').empty();
|
||||
function showCompletion() {
|
||||
var time = Math.floor(Date.now() / 1000) - started;
|
||||
ga('send', 'event', 'Challenge', 'solved', challengeName + ', Time: ' + time);
|
||||
$('#next-courseware-button').removeAttr('disabled');
|
||||
$('#next-courseware-button').addClass('animated tada');
|
||||
console.log(!userLoggedIn);
|
||||
if (!userLoggedIn) {
|
||||
$('#complete-courseware-dialog').modal('show');
|
||||
}
|
||||
|
@ -34,21 +34,6 @@ if (attempts) {
|
||||
attempts = 0;
|
||||
}
|
||||
|
||||
// Default value for editor if one isn't provided in (i.e. a challenge)
|
||||
var nonChallengeValue = '/*Welcome to Bonfire, Free Code Camp\'s future CoderByte replacement.\n' +
|
||||
'Please feel free to use Bonfire as an in-browser playground and linting tool.\n' +
|
||||
'Note that you can also write tests using Chai.js by using the keywords assert and expect */\n\n' +
|
||||
'function test() {\n' +
|
||||
' assert(2 !== 3, "2 is not equal to 3");\n' +
|
||||
' return [1,2,3].map(function(elem) {\n' +
|
||||
' return elem * elem;\n' +
|
||||
' });\n' +
|
||||
'}\n' +
|
||||
'expect(test()).to.be.a("array");\n\n' +
|
||||
'assert.deepEqual(test(), [1,4,9]);\n\n' +
|
||||
'var foo = test();\n' +
|
||||
'foo.should.be.a("array");\n\n' +
|
||||
'test();\n';
|
||||
|
||||
var codeOutput = CodeMirror.fromTextArea(document.getElementById("codeOutput"), {
|
||||
lineNumbers: false,
|
||||
@ -183,12 +168,13 @@ var createTestDisplay = function() {
|
||||
var test = userTests[i];
|
||||
var testDoc = document.createElement("div");
|
||||
if (test.err != null) {
|
||||
console.log('Should be displaying bad tests');
|
||||
$(testDoc)
|
||||
.html("<div class='row'><div class='col-xs-1 text-center'><i class='ion-close-circled big-error-icon'></i></div><div class='col-xs-11 test-output wrappable'>" + test.text + "</div><div class='col-xs-11 test-output wrappable'>" + test.err + "</div></div><div class='ten-pixel-break'/>")
|
||||
.html("<div class='row'><div class='col-xs-2 text-center'><i class='ion-close-circled big-error-icon'></i></div><div class='col-xs-10 test-output wrappable'>" + test.text + "</div><div class='col-xs-10 test-output wrappable'>" + test.err + "</div></div><div class='ten-pixel-break'/>")
|
||||
.prependTo($('#testSuite'))
|
||||
} else {
|
||||
$(testDoc)
|
||||
.html("<div class='row'><div class='col-xs-1 text-center'><i class='ion-checkmark-circled big-success-icon'></i></div><div class='col-xs-11 test-output test-vertical-center wrappable'>" + test.text + "</div></div><div class='ten-pixel-break'/>")
|
||||
.html("<div class='row'><div class='col-xs-2 text-center'><i class='ion-checkmark-circled big-success-icon'></i></div><div class='col-xs-10 test-output test-vertical-center wrappable'>" + test.text + "</div></div><div class='ten-pixel-break'/>")
|
||||
.appendTo($('#testSuite'));
|
||||
}
|
||||
};
|
||||
@ -220,8 +206,11 @@ var runTests = function(err, data) {
|
||||
}
|
||||
} catch(error) {
|
||||
allTestsPassed = false;
|
||||
console.log(error);
|
||||
arr[ix].err = error.name + ":" + error.message;
|
||||
} finally {
|
||||
if (!test) {
|
||||
createTestDisplay();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1,18 +1,18 @@
|
||||
(function() {
|
||||
var allTestsGood = true;
|
||||
var expect = chai.expect;
|
||||
var tests = parent.tests;
|
||||
|
||||
for (var i = 0; i < tests.length; i++) {
|
||||
|
||||
var thisTest = true;
|
||||
try {
|
||||
eval(tests[i]);
|
||||
eval(parent.tests[i]);
|
||||
} catch (err) {
|
||||
parent.postError(err);
|
||||
allTestsGood = false;
|
||||
thisTest = false;
|
||||
parent.postError(JSON.stringify(tests[i]));
|
||||
} finally {
|
||||
if (allTestsGood) {
|
||||
parent.postMessage('CompleteAwesomeSauce', parent.nodeEnv);
|
||||
if (thisTest) {
|
||||
parent.postSuccess(JSON.stringify(tests[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,10 +39,8 @@ block content
|
||||
button#less-info.btn.btn-info
|
||||
span.ion-help-circled
|
||||
| Less information
|
||||
br
|
||||
ul#testSuite.list-group
|
||||
br
|
||||
script(src='/js/lib/coursewares/coursewaresHCJQFramework_v0.1.1.js')
|
||||
|
||||
- if (cc)
|
||||
a.btn.btn-primary.btn-lg.btn-block#next-courseware-button
|
||||
| Go to my next challenge
|
||||
@ -55,7 +53,8 @@ block content
|
||||
a.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||
script.
|
||||
var userLoggedIn = false;
|
||||
div.hidden
|
||||
br
|
||||
ul#testSuite.list-group
|
||||
|
||||
br
|
||||
script(type="text/javascript").
|
||||
@ -71,7 +70,6 @@ block content
|
||||
form.code
|
||||
.form-group.codeMirrorView
|
||||
textarea#codeEditor(autofocus=true)
|
||||
script(src='/js/lib/coursewares/coursewaresHCJQFramework_v0.1.1.js')
|
||||
.col-md-4.col-lg-3
|
||||
.hidden-xs.hidden-sm
|
||||
img.iphone-position(src="https://s3.amazonaws.com/freecodecamp/iphone6-frame.png")
|
||||
@ -88,4 +86,5 @@ block content
|
||||
.text-center
|
||||
.animated.zoomInDown.delay-half
|
||||
span.completion-icon.ion-checkmark-circled.text-primary
|
||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||
script(src="/js/lib/coursewares/coursewaresHCJQFramework_v0.1.1.js")
|
||||
|
@ -42,7 +42,7 @@ block content
|
||||
.form-group.codeMirrorView
|
||||
textarea#codeOutput
|
||||
br
|
||||
#testSuite.hidden
|
||||
#testSuite
|
||||
br
|
||||
script(type="text/javascript").
|
||||
var tests = !{JSON.stringify(tests)};
|
||||
|
Reference in New Issue
Block a user