refactored JavaScript code not to use inline Ruby evaluation
This commit is contained in:
@ -1,9 +1,10 @@
|
||||
$(function() {
|
||||
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 execution_environments;
|
||||
var file_types;
|
||||
|
||||
var addFileForm = function(event) {
|
||||
event.preventDefault();
|
||||
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() {
|
||||
return _.find(EXECUTION_ENVIRONMENTS, function(execution_environment) {
|
||||
return _.find(execution_environments, function(execution_environment) {
|
||||
return execution_environment.id === parseInt($('#exercise_execution_environment_id').val());
|
||||
}, this);
|
||||
});
|
||||
};
|
||||
|
||||
var highlightCode = function() {
|
||||
@ -42,10 +49,12 @@ $(function() {
|
||||
var inferFileAttributes = function() {
|
||||
$(document).on('change', 'input[type="file"]', function(event) {
|
||||
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');
|
||||
parent.find('input[name*="name"]').val(filename.split('.')[0]);
|
||||
parent.find('select[name*="file_type_id"]').val(file_type_id).trigger('chosen:updated');
|
||||
parent.find('input[name*="name"]').val(name);
|
||||
parent.find('select[name*="file_type_id"]').val(file_type.id).trigger('chosen:updated');
|
||||
});
|
||||
};
|
||||
|
||||
@ -85,6 +94,8 @@ $(function() {
|
||||
|
||||
if ($.isController('exercises')) {
|
||||
if ($('.edit_exercise, .new_exercise').isPresent()) {
|
||||
execution_environments = $('form').data('execution-environments');
|
||||
file_types = $('form').data('file-types');
|
||||
new MarkdownEditor('#exercise_instructions');
|
||||
enableInlineFileCreation();
|
||||
inferFileAttributes();
|
@ -24,9 +24,9 @@ class FileType < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def set_default_values
|
||||
self.binary ||= false
|
||||
self.executable ||= false
|
||||
self.renderable ||= false
|
||||
self.binary ||= false if has_attribute?(:binary)
|
||||
self.executable ||= false if has_attribute?(:executable)
|
||||
self.renderable ||= false if has_attribute?(:renderable)
|
||||
end
|
||||
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)
|
||||
.form-group
|
||||
= f.label(:title)
|
||||
|
Reference in New Issue
Block a user