diff --git a/common/lib/xmodule/xmodule/css/poll/display.scss b/common/lib/xmodule/xmodule/css/poll/display.scss index 53192823be..cfc03bcf91 100644 --- a/common/lib/xmodule/xmodule/css/poll/display.scss +++ b/common/lib/xmodule/xmodule/css/poll/display.scss @@ -214,13 +214,8 @@ section.poll_question { text-shadow: rgb(7, 103, 148) 0px 1px 0px; } - .graph_answer { - display: none; + .button.reset-button { clear: both; - width: 400px; - height: 400px; - margin-top: 30px; - margin-left: auto; - margin-right: auto; + float: right; } } diff --git a/common/lib/xmodule/xmodule/js/src/conditional/display.coffee b/common/lib/xmodule/xmodule/js/src/conditional/display.coffee index af59a3a465..3301acf1b0 100644 --- a/common/lib/xmodule/xmodule/js/src/conditional/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/conditional/display.coffee @@ -1,16 +1,20 @@ class @Conditional - constructor: (element, callerElId) -> + constructor: (element, callerElId, reset) -> @el = $(element).find('.conditional-wrapper') @callerElId = callerElId - if @el.data('passed') is true - return - else if @el.data('passed') is false - @passed = false - else + if reset is true + @el.data('passed', null) @passed = null + else + if @el.data('passed') is true + return + else if @el.data('passed') is false + @passed = false + else + @passed = null if callerElId isnt undefined and @passed isnt null dependencies = @el.data('depends') diff --git a/common/lib/xmodule/xmodule/js/src/poll/poll_main.js b/common/lib/xmodule/xmodule/js/src/poll/poll_main.js index b32b4e8bca..3e1c015852 100644 --- a/common/lib/xmodule/xmodule/js/src/poll/poll_main.js +++ b/common/lib/xmodule/xmodule/js/src/poll/poll_main.js @@ -50,7 +50,10 @@ PollMain.prototype = { _this.ajax_url + '/' + answer, {}, function (response) { _this.showAnswerGraph(response.poll_answers, response.total); + _this.resetButton.show(); + + // Initialize Conditional constructors. if (_this.wrapperSectionEl !== null) { $(_this.wrapperSectionEl).find('.xmodule_ConditionalModule').each(function (index, value) { new window.Conditional(value, _this.id.replace(/^poll_/, '')); @@ -65,20 +68,25 @@ PollMain.prototype = { 'submitReset': function () { var _this; + _this = this; + // Send the data to the server as an AJAX request. Attach a callback that will // be fired on server's response. $.postWithPrefix( - _this.ajax_url + '/' + 'reset', {}, + this.ajax_url + '/' + 'reset_poll', + {}, function (response) { _this.questionAnswered = false; - $(_this.questionEl).find('.button').removeClass('answered'); - _this.graphAnswerEl.hide(); - $(_this.questionEl).find('.stats').hide(); + _this.questionEl.find('.button.answered').removeClass('answered'); + _this.questionEl.find('.stats').hide(); _this.resetButton.hide(); + + // Initialize Conditional constructors. We will specify the third parameter as 'true' + // notifying the constructor that this is a reset operation. if (_this.wrapperSectionEl !== null) { $(_this.wrapperSectionEl).find('.xmodule_ConditionalModule').each(function (index, value) { - new window.Conditional(value, _this.id.replace(/^poll_/, '')); + new window.Conditional(value, _this.id.replace(/^poll_/, ''), true); }); } } @@ -179,19 +187,20 @@ PollMain.prototype = { } }); - this.graphAnswerEl = $('
'); - this.graphAnswerEl.hide(); - this.graphAnswerEl.appendTo(this.questionEl); + if (this.jsonConfig.reset === "True"){ + this.resetButton = $(''); - if (_this.jsonConfig.reset === "True") - { - _this.resetButton = $(''); - _this.resetButton.appendTo(_this.questionEl); - _this.resetButton.hide(); - _this.resetButton.on('click', function () { - _this.submitReset(); - }); + if (this.questionAnswered === false) { + this.resetButton.hide(); } + + this.resetButton.appendTo(this.questionEl); + + this.resetButton.on('click', function () { + _this.submitReset(); + }); + } + // If it turns out that the user already answered the question, show the answers graph. if (this.questionAnswered === true) { this.showAnswerGraph(this.jsonConfig.poll_answers, this.jsonConfig.total);