Use only one editor to reduce complexity

This commit is contained in:
Maximilian Grundke
2015-12-03 14:52:33 +01:00
parent efe3895894
commit b7b0bf826e
2 changed files with 30 additions and 46 deletions

View File

@ -6,28 +6,31 @@ $(function() {
var currentSubmission = 0; var currentSubmission = 0;
var active_file = undefined; var active_file = undefined;
var fileTrees = [] var fileTrees = []
var editor = undefined;
var showActiveFile = function() {
var session = editor.getSession();
//session.setMode(active_file.file_type.editor_mode);
//session.setTabSize(active_file.file_type.indent_size);
session.setValue(active_file.content);
session.setUseSoftTabs(true);
session.setUseWrapMode(true);
var showFirstFile = function() {
$(fileTrees[currentSubmission]).jstree().select_node(active_file.file_id);
showActiveFrame();
showFileTree(currentSubmission); showFileTree(currentSubmission);
}; $(fileTrees[currentSubmission]).jstree().select_node(active_file.file_id);
var showActiveFrame = function() {
var frame = $('.data[data-file-id="' + active_file.id + '"]').parent().find('.frame');
$('.frame').hide();
frame.show();
}; };
var initializeFileTree = function() { var initializeFileTree = function() {
$('.files').each(function(index, element) { $('.files').each(function(index, element) {
fileTree = $(element).jstree($(element).data('entries')); fileTree = $(element).jstree($(element).data('entries'));
fileTree.on('click', 'li.jstree-leaf', function() { fileTree.on('click', 'li.jstree-leaf', function() {
active_file = { var id = parseInt($(this).attr('id'))
filename: $(this).text(), _.each(files[currentSubmission], function(file) {
id: parseInt($(this).attr('id')) if (file.file_id === id) {
}; active_file = file;
showActiveFrame() }
});
showActiveFile();
}); });
fileTrees.push(fileTree); fileTrees.push(fileTree);
}); });
@ -44,42 +47,26 @@ $(function() {
ace.config.set(attribute, ACE_FILES_PATH); ace.config.set(attribute, ACE_FILES_PATH);
}); });
var editors = $('.editor');
var slider = $('#slider>input'); var slider = $('#slider>input');
var submissions = $('#data').data('submissions'); var submissions = $('#data').data('submissions');
var files = $('#data').data('files'); var files = $('#data').data('files');
editors.each(function(index, element) { editor = ace.edit('current-file');
currentEditor = ace.edit(element); editor.setShowPrintMargin(false);
editor.setTheme(THEME);
var file_id = $(element).data('file-id'); editor.$blockScrolling = Infinity;
var content = $('.editor-content[data-file-id=' + file_id + ']'); editor.setReadOnly(true);
currentEditor.setShowPrintMargin(false);
currentEditor.setTheme(THEME);
currentEditor.$blockScrolling = Infinity;
currentEditor.setReadOnly(true);
var session = currentEditor.getSession();
session.setMode($(element).data('mode'));
session.setTabSize($(element).data('indent-size'));
session.setUseSoftTabs(true);
session.setUseWrapMode(true);
session.setValue(content.text());
});
slider.on('change', function(event) { slider.on('change', function(event) {
currentSubmission = slider.val(); currentSubmission = slider.val();
showFileTree(currentSubmission);
var currentFiles = files[currentSubmission]; var currentFiles = files[currentSubmission];
console.log(currentFiles);
active_file = currentFiles[0]; active_file = currentFiles[0];
showFirstFile(); showActiveFile();
}); });
active_file = files[0][0] active_file = files[0][0]
initializeFileTree(); initializeFileTree();
showFirstFile(); showActiveFile();
} }
}); });

View File

@ -10,16 +10,13 @@ h1 = "#{@exercise} (external user #{@external_user})"
.hidden#data data-submissions=ActiveSupport::JSON.encode(submissions) data-files=ActiveSupport::JSON.encode(all_files) .hidden#data data-submissions=ActiveSupport::JSON.encode(submissions) data-files=ActiveSupport::JSON.encode(all_files)
- index = 0 #stats-editor.row
- all_files.each do |files| - index = 0
#stats-editor.row - all_files.each do |files|
.files class=(@exercise.hide_file_tree ? 'hidden col-sm-3' : 'col-sm-3') data-index=index data-entries=FileTree.new(files).to_js_tree .files class=(@exercise.hide_file_tree ? 'hidden col-sm-3' : 'col-sm-3') data-index=index data-entries=FileTree.new(files).to_js_tree
.frames class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9') - index += 1
- files.each do |file| div class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9')
.frame-container #current-file.editor style="height: 400px"
= render('editor_frame', exercise: @exercise, file: file)
.hidden.data data-file-id=file.id
- index += 1
#slider #slider
input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0 input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0