From b7b0bf826ef08f4e5df07b5b150b17eaf1019164 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Thu, 3 Dec 2015 14:52:33 +0100 Subject: [PATCH] Use only one editor to reduce complexity --- .../javascripts/submission_statistics.js | 61 ++++++++----------- .../external_users/statistics.html.slim | 15 ++--- 2 files changed, 30 insertions(+), 46 deletions(-) diff --git a/app/assets/javascripts/submission_statistics.js b/app/assets/javascripts/submission_statistics.js index 8618a516..5428061d 100644 --- a/app/assets/javascripts/submission_statistics.js +++ b/app/assets/javascripts/submission_statistics.js @@ -6,28 +6,31 @@ $(function() { var currentSubmission = 0; var active_file = undefined; 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); - }; - - var showActiveFrame = function() { - var frame = $('.data[data-file-id="' + active_file.id + '"]').parent().find('.frame'); - $('.frame').hide(); - frame.show(); + $(fileTrees[currentSubmission]).jstree().select_node(active_file.file_id); }; var initializeFileTree = function() { $('.files').each(function(index, element) { fileTree = $(element).jstree($(element).data('entries')); fileTree.on('click', 'li.jstree-leaf', function() { - active_file = { - filename: $(this).text(), - id: parseInt($(this).attr('id')) - }; - showActiveFrame() + var id = parseInt($(this).attr('id')) + _.each(files[currentSubmission], function(file) { + if (file.file_id === id) { + active_file = file; + } + }); + showActiveFile(); }); fileTrees.push(fileTree); }); @@ -44,42 +47,26 @@ $(function() { ace.config.set(attribute, ACE_FILES_PATH); }); - var editors = $('.editor'); var slider = $('#slider>input'); var submissions = $('#data').data('submissions'); var files = $('#data').data('files'); - editors.each(function(index, element) { - currentEditor = ace.edit(element); - - var file_id = $(element).data('file-id'); - var content = $('.editor-content[data-file-id=' + file_id + ']'); - - 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()); - }); + editor = ace.edit('current-file'); + editor.setShowPrintMargin(false); + editor.setTheme(THEME); + editor.$blockScrolling = Infinity; + editor.setReadOnly(true); slider.on('change', function(event) { currentSubmission = slider.val(); - showFileTree(currentSubmission); var currentFiles = files[currentSubmission]; - console.log(currentFiles); active_file = currentFiles[0]; - showFirstFile(); + showActiveFile(); }); active_file = files[0][0] initializeFileTree(); - showFirstFile(); + showActiveFile(); } }); diff --git a/app/views/exercises/external_users/statistics.html.slim b/app/views/exercises/external_users/statistics.html.slim index 583adc83..58a50c43 100644 --- a/app/views/exercises/external_users/statistics.html.slim +++ b/app/views/exercises/external_users/statistics.html.slim @@ -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) - - index = 0 - - all_files.each do |files| - #stats-editor.row + #stats-editor.row + - index = 0 + - 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 - .frames class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9') - - files.each do |file| - .frame-container - = render('editor_frame', exercise: @exercise, file: file) - .hidden.data data-file-id=file.id - - index += 1 + - index += 1 + div class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9') + #current-file.editor style="height: 400px" #slider input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0