Use only one editor to reduce complexity
This commit is contained in:
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user