From 701b5623afe710e5120c4564e0ff0f14a9a3eaef Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Tue, 3 Mar 2015 13:14:57 +0100 Subject: [PATCH] extracted methods --- app/assets/javascripts/base.js | 4 ++++ app/assets/javascripts/editor.js | 39 +++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/base.js b/app/assets/javascripts/base.js index 48f5c432..8c38fcaa 100644 --- a/app/assets/javascripts/base.js +++ b/app/assets/javascripts/base.js @@ -1,3 +1,7 @@ +Array.prototype.includes = function(element) { + return this.indexOf(element) !== -1; +}; + $(function() { var ANIMATION_DURATION = 500; diff --git a/app/assets/javascripts/editor.js b/app/assets/javascripts/editor.js index 9ced54c5..863c9524 100644 --- a/app/assets/javascripts/editor.js +++ b/app/assets/javascripts/editor.js @@ -284,6 +284,26 @@ $(function() { $('#start-over').on('click', confirmReset); }; + var isActiveFileExecutable = function() { + return 'executable' in active_frame.data(); + }; + + var isActiveFileRenderable = function() { + return 'renderable' in active_frame.data(); + }; + + var isActiveFileRunnable = function() { + return isActiveFileExecutable() && ['main_file', 'user_defined_file'].includes(active_frame.data('role')); + }; + + var isActiveFileStoppable = function() { + return isActiveFileRunnable() && running; + }; + + var isActiveFileTestable = function() { + return isActiveFileExecutable() && ['teacher_defined_test', 'user_defined_test'].includes(active_frame.data('role')); + }; + var populatePanel = function(panel, result, index) { panel.removeClass('panel-default').addClass(getPanelClass(result)); panel.find('.panel-title .filename').text(result.filename); @@ -578,18 +598,15 @@ $(function() { }; var toggleButtonStates = function() { - var is_renderable = active_frame.data('renderable') !== undefined; - var is_runnable = active_frame.data('executable') !== undefined && _.contains(['main_file', 'user_defined_file'], active_frame.data('role')); - var is_testable = active_frame.data('executable') !== undefined && _.contains(['teacher_defined_test', 'user_defined_test'], active_frame.data('role')); $('#destroy-file').prop('disabled', active_frame.data('role') !== 'user_defined_file'); - $('#dropdown-render').toggleClass('disabled', !is_renderable); - $('#dropdown-run').toggleClass('disabled', !(is_runnable && !running)); - $('#dropdown-stop').toggleClass('disabled', !(is_runnable && running)); - $('#dropdown-test').toggleClass('disabled', !is_testable); - $('#render').toggle(is_renderable); - $('#run').toggle(is_runnable && !running); - $('#stop').toggle(is_runnable && running); - $('#test').toggle(is_testable); + $('#dropdown-render').toggleClass('disabled', !isActiveFileRenderable()); + $('#dropdown-run').toggleClass('disabled', !isActiveFileRunnable() || running); + $('#dropdown-stop').toggleClass('disabled', !isActiveFileStoppable()); + $('#dropdown-test').toggleClass('disabled', !isActiveFileTestable()); + $('#render').toggle(isActiveFileRenderable()); + $('#run').toggle(isActiveFileRunnable() && !running); + $('#stop').toggle(isActiveFileStoppable()); + $('#test').toggle(isActiveFileTestable()); }; if ($('#editor').isPresent()) {