adding eslint

This commit is contained in:
Mark Moser 2016-08-09 11:36:52 -05:00
parent 5f395dcf41
commit 084a1a2326
13 changed files with 190 additions and 144 deletions

19
.eslintrc.yml Normal file
View File

@ -0,0 +1,19 @@
# http://eslint.org/docs/user-guide/configuring
# http://eslint.org/docs/2.0.0/rules/
env:
browser: true
jquery: true
extends: 'eslint:recommended'
rules:
indent:
- error
- 2
linebreak-style:
- error
- unix
no-trailing-spaces:
- warn
quotes: off
semi:
- error
- always

View File

@ -19,6 +19,10 @@ RUN apt-get update \
&& echo "alias la='ls -ahl'" >> /root/.bashrc \ && echo "alias la='ls -ahl'" >> /root/.bashrc \
&& echo "export HISTCONTROL=ignoredups" >> /root/.bashrc && echo "export HISTCONTROL=ignoredups" >> /root/.bashrc
# RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
# RUN apt-get update\
# && apt-get install --yes nodejs
# install current Ruby # install current Ruby
RUN curl -L --progress https://github.com/postmodern/ruby-install/archive/v0.6.0.tar.gz | tar xz \ RUN curl -L --progress https://github.com/postmodern/ruby-install/archive/v0.6.0.tar.gz | tar xz \
&& cd ruby-install-0.6.0 \ && cd ruby-install-0.6.0 \

View File

@ -21,10 +21,10 @@ gem 'neat'
gem 'bitters' gem 'bitters'
group :development do group :development do
gem 'better_errors'
gem 'rack-livereload' gem 'rack-livereload'
gem 'rails-erd' gem 'rails-erd'
gem 'web-console' gem 'web-console'
gem 'better_errors'
end end
group :development, :test do group :development, :test do

View File

@ -23,7 +23,7 @@ guard :minitest, spring: true do # , all_after_pass: true
end end
guard 'livereload' do guard 'livereload' do
watch(%r{app/assets/.+\.(scss|css|js)}) watch(%r{app/assets/.+\.(scss|css|js|erb)})
watch(%r{app/views/.+\.(erb|haml|slim)$}) watch(%r{app/views/.+\.(erb|haml|slim)$})
watch(%r{app/controllers/.+\.rb}) watch(%r{app/controllers/.+\.rb})
watch(%r{app/helpers/.+\.rb}) watch(%r{app/helpers/.+\.rb})
@ -31,7 +31,7 @@ guard 'livereload' do
watch(%r{config/locales/.+\.yml}) watch(%r{config/locales/.+\.yml})
# Rails Assets Pipeline # Rails Assets Pipeline
watch(%r{(app|vendor)(/assets/\w+/(.+\.(scss|css|js|html|png|jpg))).*}) do |m| watch(%r{(app|vendor)(/assets/\w+/(.+\.(scss|css|js|erb|html|png|jpg))).*}) do |m|
"/assets/#{m[3]}" "/assets/#{m[3]}"
end end
end end
@ -41,3 +41,10 @@ guard :rubocop do
watch(/Rakefile/) watch(/Rakefile/)
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) } watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
end end
# ESLint
guard :shell, all_on_start: true do
watch %r{app/assets/javascripts/*/.*} do |file|
`eslint #{file[0]}`
end
end

View File

@ -5,9 +5,9 @@
//= require_self //= require_self
//= require_tree ./channels //= require_tree ./channels
(function() { // (function() {
this.App || (this.App = {}); // this.App || (this.App = {});
//
App.cable = ActionCable.createConsumer(); // App.cable = ActionCable.createConsumer();
//
}).call(this); // }).call(this);

View File

@ -1,5 +1,6 @@
/** /**
* NOTE: MARK MOSER EDITED COPY. DO NOT USE BOWER. * NOTE: MARK MOSER EDITED COPY. DO NOT USE BOWER.
*
* jQuery Lined Textarea Plugin * jQuery Lined Textarea Plugin
* http://alan.blog-city.com/jquerylinedtextarea.htm * http://alan.blog-city.com/jquerylinedtextarea.htm
* *
@ -29,13 +30,11 @@
* *
*/ */
(function($) { (function($) {
$.fn.linedtextarea = function(options) { $.fn.linedtextarea = function(options) {
// Get the Options // Get the Options
var opts = $.extend({}, $.fn.linedtextarea.defaults, options); var opts = $.extend({}, $.fn.linedtextarea.defaults, options);
/* /*
* Helper function to make sure the line numbers are always * Helper function to make sure the line numbers are always
* kept up to the current system * kept up to the current system
@ -52,7 +51,6 @@
return lineNo; return lineNo;
}; };
/* /*
* Iterate through each of the elements are to be applied to * Iterate through each of the elements are to be applied to
*/ */
@ -63,7 +61,7 @@
/* Turn off the wrapping of as we don't want to screw up the line numbers */ /* Turn off the wrapping of as we don't want to screw up the line numbers */
textarea.attr("wrap", "off"); textarea.attr("wrap", "off");
textarea.css({resize:'none'}); textarea.css({resize:'none'});
var originalTextAreaWidth = textarea.outerWidth(); // var originalTextAreaWidth = textarea.outerWidth();
/* Wrap the text area in the elements we need */ /* Wrap the text area in the elements we need */
textarea.wrap("<div class='linedtextarea'></div>"); textarea.wrap("<div class='linedtextarea'></div>");
@ -101,7 +99,7 @@
/* React to the scroll event */ /* React to the scroll event */
textarea.scroll( function(tn){ textarea.scroll( function(){
var domTextArea = $(this)[0]; var domTextArea = $(this)[0];
var scrollTop = domTextArea.scrollTop; var scrollTop = domTextArea.scrollTop;
var clientHeight = domTextArea.clientHeight; var clientHeight = domTextArea.clientHeight;
@ -111,7 +109,7 @@
/* Should the textarea get resized outside of our control */ /* Should the textarea get resized outside of our control */
textarea.resize( function(tn){ textarea.resize( function(){
var domTextArea = $(this)[0]; var domTextArea = $(this)[0];
linesDiv.height( domTextArea.clientHeight + 4 ); linesDiv.height( domTextArea.clientHeight + 4 );
}); });

View File

@ -1,4 +1,5 @@
function updateResults(elem) { var resultsContainer = $(elem).find('[data-id="results"]')[0]; function updateResults(elem) {
var resultsContainer = $(elem).find('[data-id="results"]')[0];
var codeHtml = $(elem).find('.code-html')[0].value.trim(); var codeHtml = $(elem).find('.code-html')[0].value.trim();
var codeCss = $(elem).find('.code-css')[0].value.trim(); var codeCss = $(elem).find('.code-css')[0].value.trim();
var codeJs = $(elem).find('.code-js')[0].value.trim(); var codeJs = $(elem).find('.code-js')[0].value.trim();
@ -15,7 +16,9 @@ function updateResults(elem) { var resultsContainer = $(elem).find('[data-id="r
var jqueryNode = document.createElement("script"); var jqueryNode = document.createElement("script");
jqueryNode.setAttribute("type", "text/javascript"); jqueryNode.setAttribute("type", "text/javascript");
jqueryNode.setAttribute("src", "<%= "//#{ENV['full_app_url']}#{javascript_path "jquery"}" %>"); // TODO: fix eslint runner to handle erb snippets
// jqueryNode.setAttribute("src", "<%= "//#{ENV['full_app_url']}#{javascript_path "jquery"}" %>");
jqueryNode.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js");
iHead.appendChild(jqueryNode); iHead.appendChild(jqueryNode);
var codeStyle = document.createElement("style"); var codeStyle = document.createElement("style");
@ -92,7 +95,7 @@ function indentSelection(e){
} }
timer = 0; var timer = 0;
$(function(){ $(function(){
// wait a half second before updating results // wait a half second before updating results
// restart the timer if they resume typing // restart the timer if they resume typing

View File

@ -137,19 +137,19 @@ var saveClickHandler = function(e) {
$(thisEd).before('<div class="error">Please select or enter a value.</div>'); $(thisEd).before('<div class="error">Please select or enter a value.</div>');
} else { } else {
thisEd.find('textarea:not(.code-answer)').replaceWith('<p class="text-answer answer-container">' + $.trim(thisEd.find('textarea').val()) + '</p>'); thisEd.find('textarea:not(.code-answer)').replaceWith('<p class="text-answer answer-container">' + $.trim(thisEd.find('textarea').val()) + '</p>');
url = thisEd.closest('form').attr('action'); var postUrl = thisEd.closest('form').attr('action');
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: url, url: postUrl,
data: ({ data: ({
'answer': $.extend(data, {'question_id': questionId, 'answer_id': answerId}), 'answer': $.extend(data, {'question_id': questionId, 'answer_id': answerId}),
'submit': true 'submit': true
}), }),
success: function(data){ success: function(){ //unused data
executeQuery = true; executeQuery = true;
}, },
error: function(data){ error: function(){ //unused data
executeQuery = false; executeQuery = false;
} }
}).done(function() { }).done(function() {

View File

@ -9,7 +9,7 @@ function setTextAreaLimit() {
}); });
function setCount(src, elem) { function setCount(src, elem) {
if(src != undefined) { if(src !== undefined) {
var chars = src.value.length; var chars = src.value.length;
if (chars > limit) { if (chars > limit) {
src.value = src.value.substr(0, limit); src.value = src.value.substr(0, limit);
@ -21,10 +21,8 @@ function setTextAreaLimit() {
setCount($(this)[0], elem); setCount($(this)[0], elem);
} }
}); });
var elem = $(".chars span"); var elem = $(".chars span");
$('textarea').limiter(1000, elem); $('textarea').limiter(1000, elem);
//$('input').limiter(1000, elem);
//$('.Question-1').addClass('active');
} }
}); });

15
package.json Normal file
View File

@ -0,0 +1,15 @@
{
"name": "skill-assessment-app",
"version": "1.0.0",
"description": "This application manages quizzes intended to be used as pre-interview skill assessments.",
"dependencies": {
"bower": "^1.7.9",
"eslint": "^3.2.2"
},
"devDependencies": {},
"repository": {
"type": "git",
"url": "git@gitlab.perficientxd.com:pdr/skill-assessment-app.git"
},
"license": "ISC"
}

View File

@ -2,6 +2,7 @@
if [ -d '/usr/app' ]; then if [ -d '/usr/app' ]; then
cd /usr/app cd /usr/app
bundle bundle
npm install
bower install bower install
cd vendor/assets/ && bitters install && cd /usr/app cd vendor/assets/ && bitters install && cd /usr/app

View File

@ -2,6 +2,7 @@
if [ -d '/usr/app' ]; then if [ -d '/usr/app' ]; then
cd /usr/app cd /usr/app
bundle bundle
npm install
bower install bower install
cd vendor/assets/ && bitters install && cd /usr/app cd vendor/assets/ && bitters install && cd /usr/app