From 6a2d365b9a99aaa18473d3ac423c1c186c1b95e9 Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Wed, 27 May 2015 14:40:06 -0400 Subject: [PATCH] Update framework version, set cursor to line 15 on load to force full display. Closes #653 --- .../coursewaresHCJQFramework_0.1.3.js | 154 ----------------- .../coursewaresHCJQFramework_0.1.4.js | 155 ++++++++++++++++++ views/coursewares/showHTML.jade | 2 +- 3 files changed, 156 insertions(+), 155 deletions(-) delete mode 100644 public/js/lib/coursewares/coursewaresHCJQFramework_0.1.3.js create mode 100644 public/js/lib/coursewares/coursewaresHCJQFramework_0.1.4.js diff --git a/public/js/lib/coursewares/coursewaresHCJQFramework_0.1.3.js b/public/js/lib/coursewares/coursewaresHCJQFramework_0.1.3.js deleted file mode 100644 index 7cd54b3210..0000000000 --- a/public/js/lib/coursewares/coursewaresHCJQFramework_0.1.3.js +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Created by nathanleniz on 2/2/15. - */ - -var widgets = []; -var editor = CodeMirror.fromTextArea(document.getElementById("codeEditor"), { - lineNumbers: true, - mode: "text/html", - theme: 'monokai', - runnable: true, - matchBrackets: true, - autoCloseBrackets: true, - scrollbarStyle: 'null', - lineWrapping: true, - gutters: ["CodeMirror-lint-markers"], - onKeyEvent: doLinting -}); - - -// Hijack tab key to insert two spaces instead -editor.setOption("extraKeys", { - Tab: function(cm) { - if (cm.somethingSelected()){ - cm.indentSelection("add"); - } else { - var spaces = Array(cm.getOption("indentUnit") + 1).join(" "); - cm.replaceSelection(spaces); - } - }, - "Shift-Tab": function(cm) { - if (cm.somethingSelected()){ - cm.indentSelection("subtract"); - } else { - var spaces = Array(cm.getOption("indentUnit") + 1).join(" "); - cm.replaceSelection(spaces); - } - } -}); - -editor.setSize("100%", "auto"); - -var libraryIncludes = "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - ""; - -var allTests = ''; -(function() { - tests.forEach(function(elem) { - allTests += elem + ' '; - }); -})(); - -var otherTestsForNow = ""; - -var delay; -// Initialize CodeMirror editor with a nice html5 canvas demo. -editor.on("keypress", function () { - clearTimeout(delay); - delay = setTimeout(updatePreview, 300); -}); -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(); - $('#testSuite').empty(); - preview.write(libraryIncludes + editor.getValue() + otherTestsForNow); - preview.close(); - -} -setTimeout(updatePreview, 300); - -/** - * "post" methods - */ - -var postSuccess = function(data) { - var testDoc = document.createElement("div"); - $(testDoc) - .html("
" + JSON.parse(data) + "
") - .appendTo($('#testSuite')); - testSuccess(); -}; - -var postError = function(data) { - var testDoc = document.createElement("div"); - $(testDoc) - .html("
" + JSON.parse(data) + "
") - .prependTo($('#testSuite')) -}; -var goodTests = 0; -var testSuccess = function() { - goodTests++; - if (goodTests === tests.length) { - showCompletion(); - } -}; -var challengeSeed = challengeSeed || null; -var tests = tests || []; -var allSeeds = ''; -(function() { - challengeSeed.forEach(function(elem) { - allSeeds += elem.replace(/fccss/g, '') + '\n'; - }); - editor.setValue(allSeeds); -})(); - - -function doLinting () { - editor.operation(function () { - for (var i = 0; i < widgets.length; ++i) - editor.removeLineWidget(widgets[i]); - widgets.length = 0; - JSHINT(editor.getValue()); - for (var i = 0; i < JSHINT.errors.length; ++i) { - var err = JSHINT.errors[i]; - if (!err) continue; - var msg = document.createElement("div"); - var icon = msg.appendChild(document.createElement("span")); - icon.innerHTML = "!!"; - icon.className = "lint-error-icon"; - msg.appendChild(document.createTextNode(err.reason)); - msg.className = "lint-error"; - widgets.push(editor.addLineWidget(err.line - 1, msg, { - coverGutter: false, - noHScroll: true - })); - } - }); -}; - -//$('#testSuite').empty(); -function showCompletion() { - var time = Math.floor(Date.now()) - started; - ga('send', 'event', 'Challenge', 'solved', challenge_Name + ', Time: ' + time); - $('#next-courseware-button').removeAttr('disabled'); - $('#next-courseware-button').addClass('animated tada'); - if (!userLoggedIn) { - $('#complete-courseware-dialog').modal('show'); - } - $('body').keydown(function(e) { - if (e.ctrlKey && e.keyCode == 13) { - $('#next-courseware-button').click(); - $('#next-courseware-button').unbind('click'); - } - }); -} diff --git a/public/js/lib/coursewares/coursewaresHCJQFramework_0.1.4.js b/public/js/lib/coursewares/coursewaresHCJQFramework_0.1.4.js new file mode 100644 index 0000000000..ee9916b4ec --- /dev/null +++ b/public/js/lib/coursewares/coursewaresHCJQFramework_0.1.4.js @@ -0,0 +1,155 @@ +/** + * Created by nathanleniz on 2/2/15. + */ + +var widgets = []; +var editor = CodeMirror.fromTextArea(document.getElementById("codeEditor"), { + lineNumbers: true, + mode: "text/html", + theme: 'monokai', + runnable: true, + matchBrackets: true, + autoCloseBrackets: true, + scrollbarStyle: 'null', + lineWrapping: true, + gutters: ["CodeMirror-lint-markers"], + onKeyEvent: doLinting +}); + + +// Hijack tab key to insert two spaces instead +editor.setOption("extraKeys", { + Tab: function(cm) { + if (cm.somethingSelected()){ + cm.indentSelection("add"); + } else { + var spaces = Array(cm.getOption("indentUnit") + 1).join(" "); + cm.replaceSelection(spaces); + } + }, + "Shift-Tab": function(cm) { + if (cm.somethingSelected()){ + cm.indentSelection("subtract"); + } else { + var spaces = Array(cm.getOption("indentUnit") + 1).join(" "); + cm.replaceSelection(spaces); + } + } +}); + +editor.setSize("100%", "auto"); + +var libraryIncludes = "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + +var allTests = ''; +(function() { + tests.forEach(function(elem) { + allTests += elem + ' '; + }); +})(); + +var otherTestsForNow = ""; + +var delay; +// Initialize CodeMirror editor with a nice html5 canvas demo. +editor.on("keypress", function () { + clearTimeout(delay); + delay = setTimeout(updatePreview, 300); +}); +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(); + $('#testSuite').empty(); + preview.write(libraryIncludes + editor.getValue() + otherTestsForNow); + preview.close(); + +} +setTimeout(updatePreview, 300); + +/** + * "post" methods + */ + +var postSuccess = function(data) { + var testDoc = document.createElement("div"); + $(testDoc) + .html("
" + JSON.parse(data) + "
") + .appendTo($('#testSuite')); + testSuccess(); +}; + +var postError = function(data) { + var testDoc = document.createElement("div"); + $(testDoc) + .html("
" + JSON.parse(data) + "
") + .prependTo($('#testSuite')) +}; +var goodTests = 0; +var testSuccess = function() { + goodTests++; + if (goodTests === tests.length) { + showCompletion(); + } +}; +var challengeSeed = challengeSeed || null; +var tests = tests || []; +var allSeeds = ''; +(function() { + challengeSeed.forEach(function(elem) { + allSeeds += elem.replace(/fccss/g, '') + '\n'; + }); + editor.setValue(allSeeds); + editor.setCursor(15); +})(); + + +function doLinting () { + editor.operation(function () { + for (var i = 0; i < widgets.length; ++i) + editor.removeLineWidget(widgets[i]); + widgets.length = 0; + JSHINT(editor.getValue()); + for (var i = 0; i < JSHINT.errors.length; ++i) { + var err = JSHINT.errors[i]; + if (!err) continue; + var msg = document.createElement("div"); + var icon = msg.appendChild(document.createElement("span")); + icon.innerHTML = "!!"; + icon.className = "lint-error-icon"; + msg.appendChild(document.createTextNode(err.reason)); + msg.className = "lint-error"; + widgets.push(editor.addLineWidget(err.line - 1, msg, { + coverGutter: false, + noHScroll: true + })); + } + }); +}; + +//$('#testSuite').empty(); +function showCompletion() { + var time = Math.floor(Date.now()) - started; + ga('send', 'event', 'Challenge', 'solved', challenge_Name + ', Time: ' + time); + $('#next-courseware-button').removeAttr('disabled'); + $('#next-courseware-button').addClass('animated tada'); + if (!userLoggedIn) { + $('#complete-courseware-dialog').modal('show'); + } + $('body').keydown(function(e) { + if (e.ctrlKey && e.keyCode == 13) { + $('#next-courseware-button').click(); + $('#next-courseware-button').unbind('click'); + } + }); +} diff --git a/views/coursewares/showHTML.jade b/views/coursewares/showHTML.jade index 34d0d268ed..de6f076aa9 100644 --- a/views/coursewares/showHTML.jade +++ b/views/coursewares/showHTML.jade @@ -91,4 +91,4 @@ block content .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 - script(src="/js/lib/coursewares/coursewaresHCJQFramework_0.1.3.js") + script(src="/js/lib/coursewares/coursewaresHCJQFramework_0.1.4.js")