adding eslint
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Button Group Functionality
|
||||
*/
|
||||
|
||||
|
||||
$('.btn-group button').click(function() {
|
||||
$(this).siblings().removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
|
@ -5,9 +5,9 @@
|
||||
//= require_self
|
||||
//= require_tree ./channels
|
||||
|
||||
(function() {
|
||||
this.App || (this.App = {});
|
||||
|
||||
App.cable = ActionCable.createConsumer();
|
||||
|
||||
}).call(this);
|
||||
// (function() {
|
||||
// this.App || (this.App = {});
|
||||
//
|
||||
// App.cable = ActionCable.createConsumer();
|
||||
//
|
||||
// }).call(this);
|
||||
|
154
app/assets/javascripts/jquery-linedtextarea-moser.js
vendored
154
app/assets/javascripts/jquery-linedtextarea-moser.js
vendored
@ -1,5 +1,6 @@
|
||||
/**
|
||||
* NOTE: MARK MOSER EDITED COPY. DO NOT USE BOWER.
|
||||
*
|
||||
* jQuery Lined Textarea Plugin
|
||||
* http://alan.blog-city.com/jquerylinedtextarea.htm
|
||||
*
|
||||
@ -29,99 +30,96 @@
|
||||
*
|
||||
*/
|
||||
(function($) {
|
||||
$.fn.linedtextarea = function(options) {
|
||||
|
||||
$.fn.linedtextarea = function(options) {
|
||||
// Get the Options
|
||||
var opts = $.extend({}, $.fn.linedtextarea.defaults, options);
|
||||
|
||||
// Get the Options
|
||||
var opts = $.extend({}, $.fn.linedtextarea.defaults, options);
|
||||
/*
|
||||
* Helper function to make sure the line numbers are always
|
||||
* kept up to the current system
|
||||
*/
|
||||
var fillOutLines = function(codeLines, h, lineNo){
|
||||
while ( (codeLines.height() - h ) <= 0 ){
|
||||
if ( lineNo == opts.selectedLine )
|
||||
codeLines.append("<div class='lineno lineselect'>" + lineNo + "</div>");
|
||||
else
|
||||
codeLines.append("<div class='lineno'>" + lineNo + "</div>");
|
||||
|
||||
lineNo++;
|
||||
}
|
||||
return lineNo;
|
||||
};
|
||||
|
||||
/*
|
||||
* Iterate through each of the elements are to be applied to
|
||||
*/
|
||||
return this.each(function() {
|
||||
var lineNo = 1;
|
||||
var textarea = $(this);
|
||||
|
||||
/* Turn off the wrapping of as we don't want to screw up the line numbers */
|
||||
textarea.attr("wrap", "off");
|
||||
textarea.css({resize:'none'});
|
||||
// var originalTextAreaWidth = textarea.outerWidth();
|
||||
|
||||
/* Wrap the text area in the elements we need */
|
||||
textarea.wrap("<div class='linedtextarea'></div>");
|
||||
var linedTextAreaDiv = textarea.parent().wrap("<div class='linedwrap'></div>");
|
||||
var linedWrapDiv = linedTextAreaDiv.parent();
|
||||
|
||||
linedWrapDiv.prepend("<div class='lines'></div>");
|
||||
|
||||
var linesDiv = linedWrapDiv.find(".lines");
|
||||
linesDiv.height( textarea.height() + 4 );
|
||||
|
||||
|
||||
/*
|
||||
* Helper function to make sure the line numbers are always
|
||||
* kept up to the current system
|
||||
*/
|
||||
var fillOutLines = function(codeLines, h, lineNo){
|
||||
while ( (codeLines.height() - h ) <= 0 ){
|
||||
if ( lineNo == opts.selectedLine )
|
||||
codeLines.append("<div class='lineno lineselect'>" + lineNo + "</div>");
|
||||
else
|
||||
codeLines.append("<div class='lineno'>" + lineNo + "</div>");
|
||||
/* Draw the number bar; filling it out where necessary */
|
||||
linesDiv.append( "<div class='codelines'></div>" );
|
||||
var codeLinesDiv = linesDiv.find(".codelines");
|
||||
lineNo = fillOutLines( codeLinesDiv, linesDiv.height(), 1 );
|
||||
|
||||
lineNo++;
|
||||
}
|
||||
return lineNo;
|
||||
};
|
||||
/* Move the textarea to the selected line */
|
||||
if ( opts.selectedLine != -1 && !isNaN(opts.selectedLine) ){
|
||||
var fontSize = parseInt( textarea.height() / (lineNo-2) );
|
||||
var position = parseInt( fontSize * opts.selectedLine ) - (textarea.height()/2);
|
||||
textarea[0].scrollTop = position;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Iterate through each of the elements are to be applied to
|
||||
*/
|
||||
return this.each(function() {
|
||||
var lineNo = 1;
|
||||
var textarea = $(this);
|
||||
|
||||
/* Turn off the wrapping of as we don't want to screw up the line numbers */
|
||||
textarea.attr("wrap", "off");
|
||||
textarea.css({resize:'none'});
|
||||
var originalTextAreaWidth = textarea.outerWidth();
|
||||
|
||||
/* Wrap the text area in the elements we need */
|
||||
textarea.wrap("<div class='linedtextarea'></div>");
|
||||
var linedTextAreaDiv = textarea.parent().wrap("<div class='linedwrap'></div>");
|
||||
var linedWrapDiv = linedTextAreaDiv.parent();
|
||||
|
||||
linedWrapDiv.prepend("<div class='lines'></div>");
|
||||
|
||||
var linesDiv = linedWrapDiv.find(".lines");
|
||||
linesDiv.height( textarea.height() + 4 );
|
||||
|
||||
|
||||
/* Draw the number bar; filling it out where necessary */
|
||||
linesDiv.append( "<div class='codelines'></div>" );
|
||||
var codeLinesDiv = linesDiv.find(".codelines");
|
||||
lineNo = fillOutLines( codeLinesDiv, linesDiv.height(), 1 );
|
||||
|
||||
/* Move the textarea to the selected line */
|
||||
if ( opts.selectedLine != -1 && !isNaN(opts.selectedLine) ){
|
||||
var fontSize = parseInt( textarea.height() / (lineNo-2) );
|
||||
var position = parseInt( fontSize * opts.selectedLine ) - (textarea.height()/2);
|
||||
textarea[0].scrollTop = position;
|
||||
}
|
||||
|
||||
|
||||
/* Set the width */
|
||||
// var sidebarWidth = linesDiv.outerWidth();
|
||||
// var paddingHorizontal = parseInt( linedWrapDiv.css("border-left-width") ) + parseInt( linedWrapDiv.css("border-right-width") ) + parseInt( linedWrapDiv.css("padding-left") ) + parseInt( linedWrapDiv.css("padding-right") );
|
||||
// var linedWrapDivNewWidth = originalTextAreaWidth - paddingHorizontal;
|
||||
// var textareaNewWidth = originalTextAreaWidth - sidebarWidth - paddingHorizontal - 20;
|
||||
//
|
||||
// textarea.width( textareaNewWidth );
|
||||
// linedWrapDiv.width( linedWrapDivNewWidth );
|
||||
/* Set the width */
|
||||
// var sidebarWidth = linesDiv.outerWidth();
|
||||
// var paddingHorizontal = parseInt( linedWrapDiv.css("border-left-width") ) + parseInt( linedWrapDiv.css("border-right-width") ) + parseInt( linedWrapDiv.css("padding-left") ) + parseInt( linedWrapDiv.css("padding-right") );
|
||||
// var linedWrapDivNewWidth = originalTextAreaWidth - paddingHorizontal;
|
||||
// var textareaNewWidth = originalTextAreaWidth - sidebarWidth - paddingHorizontal - 20;
|
||||
//
|
||||
// textarea.width( textareaNewWidth );
|
||||
// linedWrapDiv.width( linedWrapDivNewWidth );
|
||||
|
||||
|
||||
|
||||
/* React to the scroll event */
|
||||
textarea.scroll( function(tn){
|
||||
var domTextArea = $(this)[0];
|
||||
var scrollTop = domTextArea.scrollTop;
|
||||
var clientHeight = domTextArea.clientHeight;
|
||||
codeLinesDiv.css( {'margin-top': (-1*scrollTop) + "px"} );
|
||||
lineNo = fillOutLines( codeLinesDiv, scrollTop + clientHeight, lineNo );
|
||||
});
|
||||
/* React to the scroll event */
|
||||
textarea.scroll( function(){
|
||||
var domTextArea = $(this)[0];
|
||||
var scrollTop = domTextArea.scrollTop;
|
||||
var clientHeight = domTextArea.clientHeight;
|
||||
codeLinesDiv.css( {'margin-top': (-1*scrollTop) + "px"} );
|
||||
lineNo = fillOutLines( codeLinesDiv, scrollTop + clientHeight, lineNo );
|
||||
});
|
||||
|
||||
|
||||
/* Should the textarea get resized outside of our control */
|
||||
textarea.resize( function(tn){
|
||||
var domTextArea = $(this)[0];
|
||||
linesDiv.height( domTextArea.clientHeight + 4 );
|
||||
});
|
||||
/* Should the textarea get resized outside of our control */
|
||||
textarea.resize( function(){
|
||||
var domTextArea = $(this)[0];
|
||||
linesDiv.height( domTextArea.clientHeight + 4 );
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
// default options
|
||||
$.fn.linedtextarea.defaults = {
|
||||
selectedLine: -1,
|
||||
selectedClass: 'lineselect'
|
||||
selectedLine: -1,
|
||||
selectedClass: 'lineselect'
|
||||
};
|
||||
})(jQuery);
|
||||
|
@ -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 codeCss = $(elem).find('.code-css')[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");
|
||||
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);
|
||||
|
||||
var codeStyle = document.createElement("style");
|
||||
@ -92,7 +95,7 @@ function indentSelection(e){
|
||||
}
|
||||
|
||||
|
||||
timer = 0;
|
||||
var timer = 0;
|
||||
$(function(){
|
||||
// wait a half second before updating results
|
||||
// restart the timer if they resume typing
|
||||
|
@ -41,7 +41,7 @@ var editClickHandler = function(e) {
|
||||
else if(thisEd.find('input').attr('type') == 'checkbox') {
|
||||
$(thisEd.find('input')).each(function() {
|
||||
if($(this).prop('checked') === true) {
|
||||
existingValue.push($(this).val());
|
||||
existingValue.push($(this).val());
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -66,13 +66,13 @@ var cancelClickHandler = function(e) {
|
||||
var thisEd = $(e.delegateTarget);
|
||||
if(thisEd.find('input').attr('type') == 'radio') {
|
||||
$(thisEd.find('input')).each(function() {
|
||||
if($(this).val()!=existingValue) {
|
||||
$(this).attr('checked', false).prop('checked', false);
|
||||
}
|
||||
else {
|
||||
$(this).prop('checked', true);
|
||||
}
|
||||
});
|
||||
if($(this).val()!=existingValue) {
|
||||
$(this).attr('checked', false).prop('checked', false);
|
||||
}
|
||||
else {
|
||||
$(this).prop('checked', true);
|
||||
}
|
||||
});
|
||||
}
|
||||
else if(thisEd.find('input').attr('type') == 'checkbox') {
|
||||
$(existingValue).each(function(index, value) {
|
||||
@ -137,39 +137,39 @@ var saveClickHandler = function(e) {
|
||||
$(thisEd).before('<div class="error">Please select or enter a value.</div>');
|
||||
} else {
|
||||
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({
|
||||
type: "POST",
|
||||
url: url,
|
||||
url: postUrl,
|
||||
data: ({
|
||||
'answer': $.extend(data, {'question_id': questionId, 'answer_id': answerId}),
|
||||
'submit': true
|
||||
}),
|
||||
success: function(data){
|
||||
success: function(){ //unused data
|
||||
executeQuery = true;
|
||||
},
|
||||
error: function(data){
|
||||
error: function(){ //unused data
|
||||
executeQuery = false;
|
||||
}
|
||||
}).done(function() {
|
||||
if(executeQuery === true) {
|
||||
$('.success, .error').remove();
|
||||
$(thisEd).before('<div class="success">Your answer has been updated successfully!</div>');
|
||||
$(thisEd).find('.code-answer').attr('disabled', true);
|
||||
}
|
||||
if(executeQuery === false) {
|
||||
$('.error, .success').remove();
|
||||
$(thisEd).before('<div class="error">Oops! There was an error processing your request. Please try again.</div>');
|
||||
}
|
||||
if(executeQuery === true) {
|
||||
$('.success, .error').remove();
|
||||
$(thisEd).before('<div class="success">Your answer has been updated successfully!</div>');
|
||||
$(thisEd).find('.code-answer').attr('disabled', true);
|
||||
}
|
||||
if(executeQuery === false) {
|
||||
$('.error, .success').remove();
|
||||
$(thisEd).before('<div class="error">Oops! There was an error processing your request. Please try again.</div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('.button-edit, .submit-button').removeClass('disabled-button');
|
||||
thisEd.removeClass('editable');
|
||||
thisEd.find('.answer-block').prop('disabled', true);
|
||||
thisEd.find('.button-edit').show();
|
||||
thisEd.find('.button-save, .button-cancel').hide();
|
||||
}
|
||||
$('.button-edit, .submit-button').removeClass('disabled-button');
|
||||
thisEd.removeClass('editable');
|
||||
thisEd.find('.answer-block').prop('disabled', true);
|
||||
thisEd.find('.button-edit').show();
|
||||
thisEd.find('.button-save, .button-cancel').hide();
|
||||
}
|
||||
};
|
||||
|
||||
$('.answer-block').prop('disabled', true);
|
||||
|
@ -1,30 +1,28 @@
|
||||
$(document).ready(function() {
|
||||
setTextAreaLimit();
|
||||
setTextAreaLimit();
|
||||
|
||||
function setTextAreaLimit() {
|
||||
$.fn.extend({
|
||||
limiter: function(limit, elem) {
|
||||
$('textarea').on("keyup focus show", function() {
|
||||
setCount(this, elem);
|
||||
});
|
||||
|
||||
function setCount(src, elem) {
|
||||
if(src != undefined) {
|
||||
var chars = src.value.length;
|
||||
if (chars > limit) {
|
||||
src.value = src.value.substr(0, limit);
|
||||
chars = limit;
|
||||
}
|
||||
elem.html(limit - chars);
|
||||
}
|
||||
}
|
||||
setCount($(this)[0], elem);
|
||||
}
|
||||
function setTextAreaLimit() {
|
||||
$.fn.extend({
|
||||
limiter: function(limit, elem) {
|
||||
$('textarea').on("keyup focus show", function() {
|
||||
setCount(this, elem);
|
||||
});
|
||||
var elem = $(".chars span");
|
||||
$('textarea').limiter(1000, elem);
|
||||
//$('input').limiter(1000, elem);
|
||||
//$('.Question-1').addClass('active');
|
||||
}
|
||||
|
||||
});
|
||||
function setCount(src, elem) {
|
||||
if(src !== undefined) {
|
||||
var chars = src.value.length;
|
||||
if (chars > limit) {
|
||||
src.value = src.value.substr(0, limit);
|
||||
chars = limit;
|
||||
}
|
||||
elem.html(limit - chars);
|
||||
}
|
||||
}
|
||||
setCount($(this)[0], elem);
|
||||
}
|
||||
});
|
||||
|
||||
var elem = $(".chars span");
|
||||
$('textarea').limiter(1000, elem);
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user