refactored JavaScript code not to use inline Ruby evaluation
This commit is contained in:
@ -1,9 +1,10 @@
|
|||||||
$(function() {
|
$(function() {
|
||||||
var ACE_FILES_PATH = '/assets/ace/';
|
var ACE_FILES_PATH = '/assets/ace/';
|
||||||
var EXECUTION_ENVIRONMENTS = <%= ExecutionEnvironment.where('file_type_id IS NOT NULL').select(:file_type_id, :id).to_json %>;
|
|
||||||
var FILE_TYPES = <%= FileType.where('file_extension IS NOT NULL').map { |file_type| [file_type.file_extension, file_type.id] }.to_h.to_json %>;
|
|
||||||
var TAB_KEY_CODE = 9;
|
var TAB_KEY_CODE = 9;
|
||||||
|
|
||||||
|
var execution_environments;
|
||||||
|
var file_types;
|
||||||
|
|
||||||
var addFileForm = function(event) {
|
var addFileForm = function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
var element = $('#dummies').children().first().clone();
|
var element = $('#dummies').children().first().clone();
|
||||||
@ -27,10 +28,16 @@ $(function() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var findFileTypeByFileExtension = function(file_extension) {
|
||||||
|
return _.find(file_types, function(file_type) {
|
||||||
|
return file_type.file_extension === file_extension;
|
||||||
|
}) || {};
|
||||||
|
};
|
||||||
|
|
||||||
var getSelectedExecutionEnvironment = function() {
|
var getSelectedExecutionEnvironment = function() {
|
||||||
return _.find(EXECUTION_ENVIRONMENTS, function(execution_environment) {
|
return _.find(execution_environments, function(execution_environment) {
|
||||||
return execution_environment.id === parseInt($('#exercise_execution_environment_id').val());
|
return execution_environment.id === parseInt($('#exercise_execution_environment_id').val());
|
||||||
}, this);
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var highlightCode = function() {
|
var highlightCode = function() {
|
||||||
@ -42,10 +49,12 @@ $(function() {
|
|||||||
var inferFileAttributes = function() {
|
var inferFileAttributes = function() {
|
||||||
$(document).on('change', 'input[type="file"]', function(event) {
|
$(document).on('change', 'input[type="file"]', function(event) {
|
||||||
var filename = $(this).val().split(/\\|\//g).pop();
|
var filename = $(this).val().split(/\\|\//g).pop();
|
||||||
var file_type_id = FILE_TYPES['.' + filename.split('.')[1]];
|
var file_extension = '.' + filename.split('.')[1];
|
||||||
|
var file_type = findFileTypeByFileExtension(file_extension);
|
||||||
|
var name = filename.split('.')[0];
|
||||||
var parent = $(this).parents('li');
|
var parent = $(this).parents('li');
|
||||||
parent.find('input[name*="name"]').val(filename.split('.')[0]);
|
parent.find('input[name*="name"]').val(name);
|
||||||
parent.find('select[name*="file_type_id"]').val(file_type_id).trigger('chosen:updated');
|
parent.find('select[name*="file_type_id"]').val(file_type.id).trigger('chosen:updated');
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -85,6 +94,8 @@ $(function() {
|
|||||||
|
|
||||||
if ($.isController('exercises')) {
|
if ($.isController('exercises')) {
|
||||||
if ($('.edit_exercise, .new_exercise').isPresent()) {
|
if ($('.edit_exercise, .new_exercise').isPresent()) {
|
||||||
|
execution_environments = $('form').data('execution-environments');
|
||||||
|
file_types = $('form').data('file-types');
|
||||||
new MarkdownEditor('#exercise_instructions');
|
new MarkdownEditor('#exercise_instructions');
|
||||||
enableInlineFileCreation();
|
enableInlineFileCreation();
|
||||||
inferFileAttributes();
|
inferFileAttributes();
|
@ -24,9 +24,9 @@ class FileType < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def set_default_values
|
def set_default_values
|
||||||
self.binary ||= false
|
self.binary ||= false if has_attribute?(:binary)
|
||||||
self.executable ||= false
|
self.executable ||= false if has_attribute?(:executable)
|
||||||
self.renderable ||= false
|
self.renderable ||= false if has_attribute?(:renderable)
|
||||||
end
|
end
|
||||||
private :set_default_values
|
private :set_default_values
|
||||||
|
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
= form_for(@exercise, multipart: true) do |f|
|
- execution_environments = ExecutionEnvironment.where('file_type_id IS NOT NULL').select(:file_type_id, :id)
|
||||||
|
- file_types = FileType.where('file_extension IS NOT NULL').select(:file_extension, :id)
|
||||||
|
|
||||||
|
= form_for(@exercise, data: {execution_environments: execution_environments, file_types: file_types}, multipart: true) do |f|
|
||||||
= render('shared/form_errors', object: @exercise)
|
= render('shared/form_errors', object: @exercise)
|
||||||
.form-group
|
.form-group
|
||||||
= f.label(:title)
|
= f.label(:title)
|
||||||
|
Reference in New Issue
Block a user