Commit f85ebb83 by Stephen Sanchez

Explicit action to begin turbo mode.

parent f4b4a5ff
......@@ -11,11 +11,35 @@
<span class="step__status__value">
<i class="ico icon-ok"></i>
<span class="copy">
{% blocktrans with graded=graded must_grade=must_grade %}Complete (<span class="step__status__value--completed">{{ graded }}</span> of <span class="step__status__value--required">{{ must_grade }}</span>){% endblocktrans %}
<span class="step__status__value--completed">{{ graded }}</span> {% trans "Completed" %}
</span>
</span>
</span>
{% endblock %}
{% block body %}
<div class="ui-toggle-visibility__content">
<div class="wrapper--step__content">
<div class="step__message message message--complete">
<h3 class="message__title">{% trans "Peer Assessments Complete" %}</h3>
<div class="message__content">{% trans "You have successfully completed all of the required peer assessments for this assignment. You may assess additional peer responses if you want to. Completing additional assessments will not affect your final grade." %}</div>
</div>
<div class="step__actions">
<div class="message message--inline message--error message--error-server">
<h3 class="message__title">{% trans "We could not retrieve additional submissions for assessment" %}</h3>
</div>
<ul class="list list--actions">
<li class="list--actions__item">
<button type="submit" id="peer-assessment__continue__grading" class="action action--continue--grading">
<span class="copy">{% trans "Continue Assessing Peers" %}</span>
<i class="ico icon-caret-right"></i>
</button>
</li>
</ul>
</div>
</div>
</div>
{% endblock %}
......@@ -411,7 +411,6 @@ hr.divider,
100% {
opacity: 0.50; } }
@-moz-keyframes pulse {
0% {
opacity: 0.50; }
......@@ -421,7 +420,6 @@ hr.divider,
100% {
opacity: 0.50; } }
@-o-keyframes pulse {
0% {
opacity: 0.50; }
......@@ -431,7 +429,6 @@ hr.divider,
100% {
opacity: 0.50; } }
@keyframes pulse {
0% {
opacity: 0.50; }
......@@ -441,7 +438,6 @@ hr.divider,
100% {
opacity: 0.50; } }
.wrapper--xblock .problem__header {
margin-bottom: 20px;
color: #aeafb3; }
......@@ -449,7 +445,7 @@ hr.divider,
.wrapper--xblock {
background: transparent; }
.wrapper--xblock strong, .wrapper--xblock .emphasis, .openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .staff-info__status .action--submit, .staff-info__student .action--submit, .openassessment .step--response .response__submission__actions .action--save .copy, .openassessment .submission__feedback__actions .action--submit .copy, .staff-info__status .action--submit .copy, .staff-info__student .action--submit .copy, .wrapper--xblock input[type="text"],
.wrapper--xblock strong, .wrapper--xblock .emphasis, .openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--continue--grading, .openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .copy, .openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading, .staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading, .staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading, .openassessment .step--response .response__submission__actions .action--save .copy, .openassessment .submission__feedback__actions .action--submit .copy, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading .copy, .staff-info__status .action--submit .copy, .staff-info__status .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .staff-info__status .action--continue--grading .copy, .staff-info__student .action--submit .copy, .staff-info__student .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .staff-info__student .action--continue--grading .copy, .wrapper--xblock input[type="text"],
.wrapper--xblock input[type="email"],
.wrapper--xblock input[type="password"],
.wrapper--xblock textarea, .wrapper--xblock .field--textarea .label, .wrapper--xblock .field--textarea label, .wrapper--xblock .field-group__label, .wrapper--xblock .field--radio .option__label, .wrapper--xblock .field--checkbox .option__label, .wrapper--xblock .is--transitioning .transition__status .copy, .openassessment .openassessment__steps__step .step__title .step__label, .openassessment .step--grade .step__title .grade__value__title, .wrapper--xblock .message .message__title, .openassessment .step--peer-assessment .peer-assessment__assessment .assessment__rubric__question .question__title__copy, .openassessment .step--self-assessment .self-assessment__assessment .assessment__rubric__question .question__title__copy, .step--student-training .student-training__assessment .assessment__rubric__question .question__title__copy, .wrapper--xblock .ui-staff__title, .openassessment .step--peer-assessment .peer-assessment__display__header .peer-assessment__display__title, .openassessment .step--self-assessment .self-assessment__display__title, .openassessment .submission__answer__display__title, .openassessment .submission__peer-evaluations__title, .openassessment .submission__peer-evaluations__questions .question__title__copy, .openassessment .submission__feedback__title, .openassessment .submission__feedback__title__copy, .step--student-training .student-training__display__title, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .answer__points, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .answer__points, .step--student-training .student-training__assessment .question__answers .answer__points, .openassessment .openassessment__steps__step .step__status .copy, .openassessment .step--response .response__submission__content .tip, .openassessment .step--response .response__submission__status__title, .openassessment .submission__peer-evaluations__questions .question__score, .openassessment .submission__peer-evaluations__questions .answer__score, .openassessment .submission__peer-evaluations__questions .answer__score__value, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .wrapper--input .answer__label, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .wrapper--input .answer__label, .step--student-training .student-training__assessment .question__answers .wrapper--input .answer__label, .wrapper--xblock .staff-info__title__copy, .wrapper--xblock .staff-info__summary .value, .wrapper--xblock .staff-info__status__table .value, .wrapper--xblock .staff-info__classifierset__table .value, .openassessment .openassessment__steps__step .step__title .step__counter:before, .openassessment .step--peer-assessment .peer-assessment__display__header span, .openassessment .step--grade .step__title .grade__value__title .grade__value__earned, .openassessment .step--grade .step__title .grade__value__title .grade__value__potential, .openassessment .submission__peer-evaluations__questions .question__score__value, .openassessment .submission__peer-evaluations__questions .question__score__potential, .openassessment .submission__peer-evaluations__questions .question__score__potential .unit, .openassessment .submission__peer-evaluations__questions .answer__source, .openassessment .submission__peer-evaluations__questions .answer__value__value, .openassessment .answer--feedback .feedback__source, .openassessment .openassessment__steps .openassessment__steps__step .step__header h2.step__title .step__counter:before {
......@@ -474,11 +470,11 @@ hr.divider,
font-size: 12px;
line-height: 18px; }
.wrapper--xblock .message .message__title, .openassessment .step--peer-assessment .peer-assessment__assessment .assessment__rubric__question .question__title__copy, .openassessment .step--self-assessment .self-assessment__assessment .assessment__rubric__question .question__title__copy, .step--student-training .student-training__assessment .assessment__rubric__question .question__title__copy, .wrapper--xblock .ui-staff__title, .openassessment .step--peer-assessment .peer-assessment__display__header .peer-assessment__display__title, .openassessment .step--self-assessment .self-assessment__display__title, .openassessment .submission__answer__display__title, .openassessment .submission__peer-evaluations__title, .openassessment .submission__peer-evaluations__questions .question__title__copy, .openassessment .submission__feedback__title, .openassessment .submission__feedback__title__copy, .step--student-training .student-training__display__title, .openassessment .openassessment__steps__step .step__title .step__deadline, .wrapper--xblock .field label, .wrapper--xblock .field .label, .wrapper--xblock .field .field-group__label, .wrapper--xblock .field--radio .option__label, .wrapper--xblock .field--checkbox .option__label, .wrapper--xblock .message .message__content, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .wrapper--input .answer__label, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .wrapper--input .answer__label, .step--student-training .student-training__assessment .question__answers .wrapper--input .answer__label, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .answer__tip, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .answer__tip, .step--student-training .student-training__assessment .question__answers .answer__tip, .wrapper--xblock .staff-info__status__table, .wrapper--xblock .staff-info__classifierset__table, .openassessment .step--peer-assessment .peer-assessment__display__response, .openassessment .step--self-assessment .self-assessment__display__response, .openassessment .submission__answer__display__content, .openassessment .answer--feedback .feedback__value, .step--student-training .student-training__display__response, .openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .step--response .response__submission__actions .action--save, .openassessment .answer--feedback .answer--feedback__title, .openassessment .submission__feedback__actions .action--submit, .staff-info__status .action--submit, .staff-info__student .action--submit, .openassessment .openassessment__steps__step .step__status .ico {
.wrapper--xblock .message .message__title, .openassessment .step--peer-assessment .peer-assessment__assessment .assessment__rubric__question .question__title__copy, .openassessment .step--self-assessment .self-assessment__assessment .assessment__rubric__question .question__title__copy, .step--student-training .student-training__assessment .assessment__rubric__question .question__title__copy, .wrapper--xblock .ui-staff__title, .openassessment .step--peer-assessment .peer-assessment__display__header .peer-assessment__display__title, .openassessment .step--self-assessment .self-assessment__display__title, .openassessment .submission__answer__display__title, .openassessment .submission__peer-evaluations__title, .openassessment .submission__peer-evaluations__questions .question__title__copy, .openassessment .submission__feedback__title, .openassessment .submission__feedback__title__copy, .step--student-training .student-training__display__title, .openassessment .openassessment__steps__step .step__title .step__deadline, .wrapper--xblock .field label, .wrapper--xblock .field .label, .wrapper--xblock .field .field-group__label, .wrapper--xblock .field--radio .option__label, .wrapper--xblock .field--checkbox .option__label, .wrapper--xblock .message .message__content, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .wrapper--input .answer__label, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .wrapper--input .answer__label, .step--student-training .student-training__assessment .question__answers .wrapper--input .answer__label, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .answer__tip, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .answer__tip, .step--student-training .student-training__assessment .question__answers .answer__tip, .wrapper--xblock .staff-info__status__table, .wrapper--xblock .staff-info__classifierset__table, .openassessment .step--peer-assessment .peer-assessment__display__response, .openassessment .step--self-assessment .self-assessment__display__response, .openassessment .submission__answer__display__content, .openassessment .answer--feedback .feedback__value, .step--student-training .student-training__display__response, .openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--continue--grading, .openassessment .step--response .response__submission__actions .action--save, .openassessment .answer--feedback .answer--feedback__title, .openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading, .staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading, .staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading, .openassessment .openassessment__steps__step .step__status .ico {
font-size: 14px;
line-height: 21px; }
.wrapper--xblock .problem__header, .openassessment .openassessment__steps__step .step__instruction, .openassessment .openassessment__prompt__copy, .openassessment .step--grade .grade__value__description, .openassessment .step--grade .grade__summary, .openassessment .submission__feedback__instructions, .openassessment .openassessment__steps__step .step__actions .action--submit .ico {
.wrapper--xblock .problem__header, .openassessment .openassessment__steps__step .step__instruction, .openassessment .openassessment__prompt__copy, .openassessment .step--grade .grade__value__description, .openassessment .step--grade .grade__summary, .openassessment .submission__feedback__instructions, .openassessment .openassessment__steps__step .step__actions .action--submit .ico, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .ico {
font-size: 16px;
line-height: 24px; }
......@@ -515,7 +511,7 @@ hr.divider,
.wrapper--xblock .field .tip, .openassessment .step--peer-assessment .peer-assessment__assessment .question__answers .answer__points, .openassessment .step--self-assessment .self-assessment__assessment .question__answers .answer__points, .step--student-training .student-training__assessment .question__answers .answer__points, .openassessment .openassessment__steps__step .step__status .copy, .openassessment .step--response .response__submission__content .tip, .openassessment .step--response .response__submission__status__title, .openassessment .submission__peer-evaluations__questions .question__score, .openassessment .submission__peer-evaluations__questions .answer__score, .openassessment .submission__peer-evaluations__questions .answer__score__value, .wrapper--xblock .staff-info__status__table th, .wrapper--xblock .staff-info__classifierset__table th, .openassessment .ui-hint:after {
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .step--response .response__submission__actions .action--save, .openassessment .answer--feedback .answer--feedback__title, .openassessment .submission__feedback__actions .action--submit, .staff-info__status .action--submit, .staff-info__student .action--submit {
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--continue--grading, .openassessment .step--response .response__submission__actions .action--save, .openassessment .answer--feedback .answer--feedback__title, .openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading, .staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading, .staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading {
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.wrapper--xblock .message .message__content a, .openassessment .openassessment__prompt__copy a {
......@@ -532,7 +528,7 @@ hr.divider,
color: #1d9dd9;
border-color: #1d9dd9; }
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .staff-info__status .action--submit, .staff-info__student .action--submit {
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--continue--grading, .openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading, .staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading, .staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
......@@ -542,48 +538,48 @@ hr.divider,
display: inline-block;
cursor: pointer;
text-decoration: none; }
.openassessment .openassessment__steps__step .step__actions .action--submit:hover, .openassessment .step--response .response__submission__actions .action--save:hover, .openassessment .submission__feedback__actions .action--submit:hover, .staff-info__status .action--submit:hover, .staff-info__student .action--submit:hover, .openassessment .openassessment__steps__step .step__actions .action--submit:active, .openassessment .step--response .response__submission__actions .action--save:active, .openassessment .submission__feedback__actions .action--submit:active, .staff-info__status .action--submit:active, .staff-info__student .action--submit:active, .openassessment .openassessment__steps__step .step__actions .action--submit:focus, .openassessment .step--response .response__submission__actions .action--save:focus, .openassessment .submission__feedback__actions .action--submit:focus, .staff-info__status .action--submit:focus, .staff-info__student .action--submit:focus {
.openassessment .openassessment__steps__step .step__actions .action--submit:hover, .openassessment .openassessment__steps__step .step__actions .action--continue--grading:hover, .openassessment .step--response .response__submission__actions .action--save:hover, .openassessment .submission__feedback__actions .action--submit:hover, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading:hover, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading:hover, .staff-info__status .action--submit:hover, .staff-info__status .openassessment__steps__step .action--continue--grading:hover, .openassessment__steps__step .staff-info__status .action--continue--grading:hover, .staff-info__student .action--submit:hover, .staff-info__student .openassessment__steps__step .action--continue--grading:hover, .openassessment__steps__step .staff-info__student .action--continue--grading:hover, .openassessment .openassessment__steps__step .step__actions .action--submit:active, .openassessment .openassessment__steps__step .step__actions .action--continue--grading:active, .openassessment .step--response .response__submission__actions .action--save:active, .openassessment .submission__feedback__actions .action--submit:active, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading:active, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading:active, .staff-info__status .action--submit:active, .staff-info__status .openassessment__steps__step .action--continue--grading:active, .openassessment__steps__step .staff-info__status .action--continue--grading:active, .staff-info__student .action--submit:active, .staff-info__student .openassessment__steps__step .action--continue--grading:active, .openassessment__steps__step .staff-info__student .action--continue--grading:active, .openassessment .openassessment__steps__step .step__actions .action--submit:focus, .openassessment .openassessment__steps__step .step__actions .action--continue--grading:focus, .openassessment .step--response .response__submission__actions .action--save:focus, .openassessment .submission__feedback__actions .action--submit:focus, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading:focus, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading:focus, .staff-info__status .action--submit:focus, .staff-info__status .openassessment__steps__step .action--continue--grading:focus, .openassessment__steps__step .staff-info__status .action--continue--grading:focus, .staff-info__student .action--submit:focus, .staff-info__student .openassessment__steps__step .action--continue--grading:focus, .openassessment__steps__step .staff-info__student .action--continue--grading:focus {
text-decoration: none; }
.openassessment .openassessment__steps__step .step__actions .disabled.action--submit, .openassessment .step--response .response__submission__actions .disabled.action--save, .openassessment .submission__feedback__actions .disabled.action--submit, .staff-info__status .disabled.action--submit, .staff-info__student .disabled.action--submit, .openassessment .openassessment__steps__step .step__actions [disabled].action--submit, .openassessment .step--response .response__submission__actions [disabled].action--save, .openassessment .submission__feedback__actions [disabled].action--submit, .staff-info__status [disabled].action--submit, .staff-info__student [disabled].action--submit, .openassessment .openassessment__steps__step .step__actions .is--disabled.action--submit, .openassessment .step--response .response__submission__actions .is--disabled.action--save, .openassessment .submission__feedback__actions .is--disabled.action--submit, .staff-info__status .is--disabled.action--submit, .staff-info__student .is--disabled.action--submit {
.openassessment .openassessment__steps__step .step__actions .disabled.action--submit, .openassessment .openassessment__steps__step .step__actions .disabled.action--continue--grading, .openassessment .step--response .response__submission__actions .disabled.action--save, .openassessment .submission__feedback__actions .disabled.action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .disabled.action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .disabled.action--continue--grading, .staff-info__status .disabled.action--submit, .staff-info__status .openassessment__steps__step .disabled.action--continue--grading, .openassessment__steps__step .staff-info__status .disabled.action--continue--grading, .staff-info__student .disabled.action--submit, .staff-info__student .openassessment__steps__step .disabled.action--continue--grading, .openassessment__steps__step .staff-info__student .disabled.action--continue--grading, .openassessment .openassessment__steps__step .step__actions [disabled].action--submit, .openassessment .openassessment__steps__step .step__actions [disabled].action--continue--grading, .openassessment .step--response .response__submission__actions [disabled].action--save, .openassessment .submission__feedback__actions [disabled].action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step [disabled].action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions [disabled].action--continue--grading, .staff-info__status [disabled].action--submit, .staff-info__status .openassessment__steps__step [disabled].action--continue--grading, .openassessment__steps__step .staff-info__status [disabled].action--continue--grading, .staff-info__student [disabled].action--submit, .staff-info__student .openassessment__steps__step [disabled].action--continue--grading, .openassessment__steps__step .staff-info__student [disabled].action--continue--grading, .openassessment .openassessment__steps__step .step__actions .is--disabled.action--submit, .openassessment .openassessment__steps__step .step__actions .is--disabled.action--continue--grading, .openassessment .step--response .response__submission__actions .is--disabled.action--save, .openassessment .submission__feedback__actions .is--disabled.action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .is--disabled.action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .is--disabled.action--continue--grading, .staff-info__status .is--disabled.action--submit, .staff-info__status .openassessment__steps__step .is--disabled.action--continue--grading, .openassessment__steps__step .staff-info__status .is--disabled.action--continue--grading, .staff-info__student .is--disabled.action--submit, .staff-info__student .openassessment__steps__step .is--disabled.action--continue--grading, .openassessment__steps__step .staff-info__student .is--disabled.action--continue--grading {
cursor: default;
pointer-events: none; }
.openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .step--response .response__submission__actions .action--save .copy, .openassessment .submission__feedback__actions .action--submit .copy, .staff-info__status .action--submit .copy, .staff-info__student .action--submit .copy, .openassessment .openassessment__steps__step .step__actions .action--submit .ico, .openassessment .step--response .response__submission__actions .action--save .ico, .openassessment .submission__feedback__actions .action--submit .ico, .staff-info__status .action--submit .ico, .staff-info__student .action--submit .ico {
.openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .copy, .openassessment .step--response .response__submission__actions .action--save .copy, .openassessment .submission__feedback__actions .action--submit .copy, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading .copy, .staff-info__status .action--submit .copy, .staff-info__status .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .staff-info__status .action--continue--grading .copy, .staff-info__student .action--submit .copy, .staff-info__student .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .staff-info__student .action--continue--grading .copy, .openassessment .openassessment__steps__step .step__actions .action--submit .ico, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .ico, .openassessment .step--response .response__submission__actions .action--save .ico, .openassessment .submission__feedback__actions .action--submit .ico, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading .ico, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading .ico, .staff-info__status .action--submit .ico, .staff-info__status .openassessment__steps__step .action--continue--grading .ico, .openassessment__steps__step .staff-info__status .action--continue--grading .ico, .staff-info__student .action--submit .ico, .staff-info__student .openassessment__steps__step .action--continue--grading .ico, .openassessment__steps__step .staff-info__student .action--continue--grading .ico {
display: inline-block;
vertical-align: middle; }
.openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .step--response .response__submission__actions .action--save .copy, .openassessment .submission__feedback__actions .action--submit .copy, .staff-info__status .action--submit .copy, .staff-info__student .action--submit .copy {
.openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .copy, .openassessment .step--response .response__submission__actions .action--save .copy, .openassessment .submission__feedback__actions .action--submit .copy, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading .copy, .staff-info__status .action--submit .copy, .staff-info__status .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .staff-info__status .action--continue--grading .copy, .staff-info__student .action--submit .copy, .staff-info__student .openassessment__steps__step .action--continue--grading .copy, .openassessment__steps__step .staff-info__student .action--continue--grading .copy {
margin-right: 10px; }
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .staff-info__status .action--submit, .staff-info__student .action--submit {
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--continue--grading, .openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading, .staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading, .staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading {
border-radius: 4px; }
.openassessment .openassessment__steps__step .step__actions .action--submit {
.openassessment .openassessment__steps__step .step__actions .action--submit, .openassessment .openassessment__steps__step .step__actions .action--continue--grading {
padding: 10px 40px;
background: #33a6dc;
border: 1px solid #2b8dbb;
color: #eaf6fb; }
.openassessment .openassessment__steps__step .step__actions .action--submit:hover, .openassessment .openassessment__steps__step .step__actions .action--submit:active, .openassessment .openassessment__steps__step .step__actions .action--submit:focus {
.openassessment .openassessment__steps__step .step__actions .action--submit:hover, .openassessment .openassessment__steps__step .step__actions .action--continue--grading:hover, .openassessment .openassessment__steps__step .step__actions .action--submit:active, .openassessment .openassessment__steps__step .step__actions .action--continue--grading:active, .openassessment .openassessment__steps__step .step__actions .action--submit:focus, .openassessment .openassessment__steps__step .step__actions .action--continue--grading:focus {
background: #00a7f6;
border-color: #00a7f6;
color: #fcfefe; }
.openassessment .openassessment__steps__step .step__actions .current.action--submit, .openassessment .openassessment__steps__step .step__actions .active.action--submit {
.openassessment .openassessment__steps__step .step__actions .current.action--submit, .openassessment .openassessment__steps__step .step__actions .current.action--continue--grading, .openassessment .openassessment__steps__step .step__actions .active.action--submit, .openassessment .openassessment__steps__step .step__actions .active.action--continue--grading {
background: #1d9dd9;
border-color: #1d9dd9; }
.openassessment .openassessment__steps__step .step__actions .disabled.action--submit, .openassessment .openassessment__steps__step .step__actions .is--disabled.action--submit, .openassessment .openassessment__steps__step .step__actions [disabled].action--submit {
.openassessment .openassessment__steps__step .step__actions .disabled.action--submit, .openassessment .openassessment__steps__step .step__actions .disabled.action--continue--grading, .openassessment .openassessment__steps__step .step__actions .is--disabled.action--submit, .openassessment .openassessment__steps__step .step__actions .is--disabled.action--continue--grading, .openassessment .openassessment__steps__step .step__actions [disabled].action--submit, .openassessment .openassessment__steps__step .step__actions [disabled].action--continue--grading {
opacity: 0.4; }
.openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .staff-info__status .action--submit, .staff-info__student .action--submit {
.openassessment .step--response .response__submission__actions .action--save, .openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading, .staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading, .staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading {
padding: 10px 40px;
background: #878787;
border: 1px #797979;
color: #f3f3f3; }
.openassessment .step--response .response__submission__actions .action--save:hover, .openassessment .submission__feedback__actions .action--submit:hover, .staff-info__status .action--submit:hover, .staff-info__student .action--submit:hover, .openassessment .step--response .response__submission__actions .action--save:active, .openassessment .submission__feedback__actions .action--submit:active, .staff-info__status .action--submit:active, .staff-info__student .action--submit:active, .openassessment .step--response .response__submission__actions .action--save:focus, .openassessment .submission__feedback__actions .action--submit:focus, .staff-info__status .action--submit:focus, .staff-info__student .action--submit:focus {
.openassessment .step--response .response__submission__actions .action--save:hover, .openassessment .submission__feedback__actions .action--submit:hover, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading:hover, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading:hover, .staff-info__status .action--submit:hover, .staff-info__status .openassessment__steps__step .action--continue--grading:hover, .openassessment__steps__step .staff-info__status .action--continue--grading:hover, .staff-info__student .action--submit:hover, .staff-info__student .openassessment__steps__step .action--continue--grading:hover, .openassessment__steps__step .staff-info__student .action--continue--grading:hover, .openassessment .step--response .response__submission__actions .action--save:active, .openassessment .submission__feedback__actions .action--submit:active, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading:active, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading:active, .staff-info__status .action--submit:active, .staff-info__status .openassessment__steps__step .action--continue--grading:active, .openassessment__steps__step .staff-info__status .action--continue--grading:active, .staff-info__student .action--submit:active, .staff-info__student .openassessment__steps__step .action--continue--grading:active, .openassessment__steps__step .staff-info__student .action--continue--grading:active, .openassessment .step--response .response__submission__actions .action--save:focus, .openassessment .submission__feedback__actions .action--submit:focus, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading:focus, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading:focus, .staff-info__status .action--submit:focus, .staff-info__status .openassessment__steps__step .action--continue--grading:focus, .openassessment__steps__step .staff-info__status .action--continue--grading:focus, .staff-info__student .action--submit:focus, .staff-info__student .openassessment__steps__step .action--continue--grading:focus, .openassessment__steps__step .staff-info__student .action--continue--grading:focus {
background: #656565;
border-color: #656565;
color: #fdfdfd; }
.openassessment .step--response .response__submission__actions .current.action--save, .openassessment .submission__feedback__actions .current.action--submit, .staff-info__status .current.action--submit, .staff-info__student .current.action--submit, .openassessment .step--response .response__submission__actions .active.action--save, .openassessment .submission__feedback__actions .active.action--submit, .staff-info__status .active.action--submit, .staff-info__student .active.action--submit {
.openassessment .step--response .response__submission__actions .current.action--save, .openassessment .submission__feedback__actions .current.action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .current.action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .current.action--continue--grading, .staff-info__status .current.action--submit, .staff-info__status .openassessment__steps__step .current.action--continue--grading, .openassessment__steps__step .staff-info__status .current.action--continue--grading, .staff-info__student .current.action--submit, .staff-info__student .openassessment__steps__step .current.action--continue--grading, .openassessment__steps__step .staff-info__student .current.action--continue--grading, .openassessment .step--response .response__submission__actions .active.action--save, .openassessment .submission__feedback__actions .active.action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .active.action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .active.action--continue--grading, .staff-info__status .active.action--submit, .staff-info__status .openassessment__steps__step .active.action--continue--grading, .openassessment__steps__step .staff-info__status .active.action--continue--grading, .staff-info__student .active.action--submit, .staff-info__student .openassessment__steps__step .active.action--continue--grading, .openassessment__steps__step .staff-info__student .active.action--continue--grading {
background: #878787;
border-color: #878787; }
.openassessment .step--response .response__submission__actions .disabled.action--save, .openassessment .submission__feedback__actions .disabled.action--submit, .staff-info__status .disabled.action--submit, .staff-info__student .disabled.action--submit, .openassessment .step--response .response__submission__actions .is--disabled.action--save, .openassessment .submission__feedback__actions .is--disabled.action--submit, .staff-info__status .is--disabled.action--submit, .staff-info__student .is--disabled.action--submit, .openassessment .step--response .response__submission__actions [disabled].action--save, .openassessment .submission__feedback__actions [disabled].action--submit, .staff-info__status [disabled].action--submit, .staff-info__student [disabled].action--submit {
.openassessment .step--response .response__submission__actions .disabled.action--save, .openassessment .submission__feedback__actions .disabled.action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .disabled.action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .disabled.action--continue--grading, .staff-info__status .disabled.action--submit, .staff-info__status .openassessment__steps__step .disabled.action--continue--grading, .openassessment__steps__step .staff-info__status .disabled.action--continue--grading, .staff-info__student .disabled.action--submit, .staff-info__student .openassessment__steps__step .disabled.action--continue--grading, .openassessment__steps__step .staff-info__student .disabled.action--continue--grading, .openassessment .step--response .response__submission__actions .is--disabled.action--save, .openassessment .submission__feedback__actions .is--disabled.action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .is--disabled.action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .is--disabled.action--continue--grading, .staff-info__status .is--disabled.action--submit, .staff-info__status .openassessment__steps__step .is--disabled.action--continue--grading, .openassessment__steps__step .staff-info__status .is--disabled.action--continue--grading, .staff-info__student .is--disabled.action--submit, .staff-info__student .openassessment__steps__step .is--disabled.action--continue--grading, .openassessment__steps__step .staff-info__student .is--disabled.action--continue--grading, .openassessment .step--response .response__submission__actions [disabled].action--save, .openassessment .submission__feedback__actions [disabled].action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step [disabled].action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions [disabled].action--continue--grading, .staff-info__status [disabled].action--submit, .staff-info__status .openassessment__steps__step [disabled].action--continue--grading, .openassessment__steps__step .staff-info__status [disabled].action--continue--grading, .staff-info__student [disabled].action--submit, .staff-info__student .openassessment__steps__step [disabled].action--continue--grading, .openassessment__steps__step .staff-info__student [disabled].action--continue--grading {
opacity: 0.4; }
.wrapper--xblock [placeholder]:focus::-webkit-input-placeholder {
......@@ -1642,7 +1638,7 @@ hr.divider,
@media screen and (min-width: 1300px) {
.openassessment .openassessment__steps__step .step__actions {
text-align: right; } }
.openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .openassessment__steps__step .step__actions .action--submit .ico {
.openassessment .openassessment__steps__step .step__actions .action--submit .copy, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .copy, .openassessment .openassessment__steps__step .step__actions .action--submit .ico, .openassessment .openassessment__steps__step .step__actions .action--continue--grading .ico {
display: inline; }
.openassessment .openassessment__steps__step .step__actions.has--error .message {
margin-bottom: 20px;
......@@ -2065,14 +2061,14 @@ hr.divider,
padding-top: 0; }
.openassessment .submission__feedback__actions .list--actions {
padding: 0; }
.openassessment .submission__feedback__actions .action--submit {
.openassessment .submission__feedback__actions .action--submit, .openassessment .submission__feedback__actions .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .submission__feedback__actions .action--continue--grading {
margin-right: 10px; }
.view--placeholder {
background: transparent;
margin: 40px 40px; }
.staff-info__status .action--submit {
.staff-info__status .action--submit, .staff-info__status .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__status .action--continue--grading {
margin: 10px 10px 10px 10px; }
.staff-info__student {
......@@ -2083,7 +2079,7 @@ hr.divider,
.staff-info__student .label {
color: whitesmoke;
margin-bottom: 10px; }
.staff-info__student .action--submit {
.staff-info__student .action--submit, .staff-info__student .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .staff-info__student .action--continue--grading {
margin: 10px 10px 10px 10px; }
.staff-info__student .title {
color: whitesmoke;
......@@ -2231,7 +2227,7 @@ hr.divider,
width: 100% !important; }
.openassessment .step--grade .step__title .wrapper--copy {
display: block !important; }
.openassessment .action--submit, .openassessment .action--save {
.openassessment .action--submit, .openassessment .openassessment__steps__step .action--continue--grading, .openassessment__steps__step .openassessment .action--continue--grading, .openassessment .action--save {
text-shadow: none !important;
box-shadow: none !important; }
.openassessment .message p {
......
......@@ -314,6 +314,11 @@
"output": "oa_peer_assessment.html"
},
{
"template": "openassessmentblock/peer/oa_peer_complete.html",
"context": {},
"output": "oa_peer_complete.html"
},
{
"template": "openassessmentblock/grade/oa_grade_complete.html",
"context": {
"score": "",
......
if(typeof OpenAssessment=="undefined"||!OpenAssessment){OpenAssessment={}}if(typeof window.gettext==="undefined"){window.gettext=function(text){return text}}OpenAssessment.BaseView=function(runtime,element,server){this.runtime=runtime;this.element=element;this.server=server;this.responseView=new OpenAssessment.ResponseView(this.element,this.server,this);this.trainingView=new OpenAssessment.StudentTrainingView(this.element,this.server,this);this.selfView=new OpenAssessment.SelfView(this.element,this.server,this);this.peerView=new OpenAssessment.PeerView(this.element,this.server,this);this.gradeView=new OpenAssessment.GradeView(this.element,this.server,this);this.messageView=new OpenAssessment.MessageView(this.element,this.server,this);this.staffInfoView=new OpenAssessment.StaffInfoView(this.element,this.server,this)};OpenAssessment.BaseView.prototype={scrollToTop:function(){if($.scrollTo instanceof Function){$(window).scrollTo($("#openassessment__steps"),800,{offset:-50})}},setUpCollapseExpand:function(parentSel,onExpand){parentSel.find(".ui-toggle-visibility__control").click(function(eventData){var sel=$(eventData.target).closest(".ui-toggle-visibility");if(sel.hasClass("is--collapsed")&&onExpand!==undefined){onExpand()}sel.toggleClass("is--collapsed")})},load:function(){this.responseView.load();this.loadAssessmentModules();this.staffInfoView.load()},loadAssessmentModules:function(){this.trainingView.load();this.peerView.load();this.selfView.load();this.gradeView.load()},loadMessageView:function(){this.messageView.load()},toggleActionError:function(type,msg){var element=this.element;var container=null;if(type=="save"){container=".response__submission__actions"}else if(type=="submit"||type=="peer"||type=="self"||type=="student-training"){container=".step__actions"}else if(type=="feedback_assess"){container=".submission__feedback__actions"}if(container===null){if(msg!==null){console.log(msg)}}else{var msgHtml=msg===null?"":msg;$(container+" .message__content",element).html("<p>"+msgHtml+"</p>");$(container,element).toggleClass("has--error",msg!==null)}},showLoadError:function(step){var container="#openassessment__"+step;$(container).toggleClass("has--error",true);$(container+" .step__status__value i").removeClass().addClass("ico icon-warning-sign");$(container+" .step__status__value .copy").html(gettext("Unable to Load"))}};function OpenAssessmentBlock(runtime,element){var server=new OpenAssessment.Server(runtime,element);var view=new OpenAssessment.BaseView(runtime,element,server);view.load()}OpenAssessment.StudioView=function(runtime,element,server){this.runtime=runtime;this.server=server;this.codeBox=CodeMirror.fromTextArea($(element).find(".openassessment-editor").first().get(0),{mode:"xml",lineNumbers:true,lineWrapping:true});var view=this;$(element).find(".openassessment-save-button").click(function(eventData){view.save()});$(element).find(".openassessment-cancel-button").click(function(eventData){view.cancel()})};OpenAssessment.StudioView.prototype={load:function(){var view=this;this.server.loadXml().done(function(xml){view.codeBox.setValue(xml)}).fail(function(msg){view.showError(msg)})},save:function(){var view=this;this.server.checkReleased().done(function(isReleased){if(isReleased){view.confirmPostReleaseUpdate($.proxy(view.updateXml,view))}else{view.updateXml()}}).fail(function(errMsg){view.showError(msg)})},confirmPostReleaseUpdate:function(onConfirm){var msg=gettext("This problem has already been released. Any changes will apply only to future assessments.");if(confirm(msg)){onConfirm()}},updateXml:function(){this.runtime.notify("save",{state:"start"});var xml=this.codeBox.getValue();var view=this;this.server.updateXml(xml).done(function(){view.runtime.notify("save",{state:"end"});view.load()}).fail(function(msg){view.showError(msg)})},cancel:function(){this.runtime.notify("cancel",{})},showError:function(errorMsg){this.runtime.notify("error",{msg:errorMsg})}};function OpenAssessmentEditor(runtime,element){var server=new OpenAssessment.Server(runtime,element);var view=new OpenAssessment.StudioView(runtime,element,server);view.load()}OpenAssessment.GradeView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView};OpenAssessment.GradeView.prototype={load:function(){var view=this;var baseView=this.baseView;this.server.render("grade").done(function(html){$("#openassessment__grade",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){baseView.showLoadError("grade",errMsg)})},installHandlers:function(){var sel=$("#openassessment__grade",this.element);this.baseView.setUpCollapseExpand(sel);var view=this;sel.find("#feedback__submit").click(function(eventObject){eventObject.preventDefault();view.submitFeedbackOnAssessment()})},feedbackText:function(text){if(typeof text==="undefined"){return $("#feedback__remarks__value",this.element).val()}else{$("#feedback__remarks__value",this.element).val(text)}},feedbackOptions:function(options){var view=this;if(typeof options==="undefined"){return $.map($(".feedback__overall__value:checked",view.element),function(element,index){return $(element).val()})}else{$(".feedback__overall__value",this.element).prop("checked",false);$.each(options,function(index,opt){$("#feedback__overall__value--"+opt,view.element).prop("checked",true)})}},setHidden:function(sel,hidden){sel.toggleClass("is--hidden",hidden);sel.attr("aria-hidden",hidden?"true":"false")},isHidden:function(sel){return sel.hasClass("is--hidden")&&sel.attr("aria-hidden")=="true"},feedbackState:function(newState){var containerSel=$(".submission__feedback__content",this.element);var instructionsSel=containerSel.find(".submission__feedback__instructions");var fieldsSel=containerSel.find(".submission__feedback__fields");var actionsSel=containerSel.find(".submission__feedback__actions");var transitionSel=containerSel.find(".transition__status");var messageSel=containerSel.find(".message--complete");if(typeof newState==="undefined"){var isSubmitting=containerSel.hasClass("is--transitioning")&&containerSel.hasClass("is--submitting")&&!this.isHidden(transitionSel)&&this.isHidden(messageSel)&&this.isHidden(instructionsSel)&&this.isHidden(fieldsSel)&&this.isHidden(actionsSel);var hasSubmitted=containerSel.hasClass("is--submitted")&&this.isHidden(transitionSel)&&!this.isHidden(messageSel)&&this.isHidden(instructionsSel)&&this.isHidden(fieldsSel)&&this.isHidden(actionsSel);var isOpen=!containerSel.hasClass("is--submitted")&&!containerSel.hasClass("is--transitioning")&&!containerSel.hasClass("is--submitting")&&this.isHidden(transitionSel)&&this.isHidden(messageSel)&&!this.isHidden(instructionsSel)&&!this.isHidden(fieldsSel)&&!this.isHidden(actionsSel);if(isOpen){return"open"}else if(isSubmitting){return"submitting"}else if(hasSubmitted){return"submitted"}else{throw"Invalid feedback state"}}else{if(newState=="open"){containerSel.toggleClass("is--transitioning",false);containerSel.toggleClass("is--submitting",false);containerSel.toggleClass("is--submitted",false);this.setHidden(instructionsSel,false);this.setHidden(fieldsSel,false);this.setHidden(actionsSel,false);this.setHidden(transitionSel,true);this.setHidden(messageSel,true)}else if(newState=="submitting"){containerSel.toggleClass("is--transitioning",true);containerSel.toggleClass("is--submitting",true);containerSel.toggleClass("is--submitted",false);this.setHidden(instructionsSel,true);this.setHidden(fieldsSel,true);this.setHidden(actionsSel,true);this.setHidden(transitionSel,false);this.setHidden(messageSel,true)}else if(newState=="submitted"){containerSel.toggleClass("is--transitioning",false);containerSel.toggleClass("is--submitting",false);containerSel.toggleClass("is--submitted",true);this.setHidden(instructionsSel,true);this.setHidden(fieldsSel,true);this.setHidden(actionsSel,true);this.setHidden(transitionSel,true);this.setHidden(messageSel,false)}}},submitFeedbackOnAssessment:function(){var view=this;var baseView=this.baseView;$("#feedback__submit",this.element).toggleClass("is--disabled",true);view.feedbackState("submitting");this.server.submitFeedbackOnAssessment(this.feedbackText(),this.feedbackOptions()).done(function(){view.feedbackState("submitted")}).fail(function(errMsg){baseView.toggleActionError("feedback_assess",errMsg)})}};OpenAssessment.MessageView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView};OpenAssessment.MessageView.prototype={load:function(){var view=this;var baseView=this.baseView;this.server.render("message").done(function(html){$("#openassessment__message",view.element).replaceWith(html)}).fail(function(errMsg){baseView.showLoadError("message",errMsg)})}};OpenAssessment.PeerView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.rubric=null};OpenAssessment.PeerView.prototype={load:function(){var view=this;this.server.render("peer_assessment").done(function(html){$("#openassessment__peer-assessment",view.element).replaceWith(html);view.installHandlers(false)}).fail(function(errMsg){view.baseView.showLoadError("peer-assessment")});view.baseView.loadMessageView()},loadContinuedAssessment:function(){var view=this;this.server.renderContinuedPeer().done(function(html){$("#openassessment__peer-assessment",view.element).replaceWith(html);view.installHandlers(true)}).fail(function(errMsg){view.baseView.showLoadError("peer-assessment")})},installHandlers:function(isContinuedAssessment){var sel=$("#openassessment__peer-assessment",this.element);var view=this;this.baseView.setUpCollapseExpand(sel,$.proxy(view.loadContinuedAssessment,view));var rubricSelector=$("#peer-assessment--001__assessment",this.element);if(rubricSelector.size()>0){var rubricElement=rubricSelector.get(0);this.rubric=new OpenAssessment.Rubric(rubricElement)}if(this.rubric!==null){this.rubric.canSubmitCallback($.proxy(view.peerSubmitEnabled,view))}sel.find("#peer-assessment--001__assessment__submit").click(function(eventObject){eventObject.preventDefault();if(!isContinuedAssessment){view.peerAssess()}else{view.continuedPeerAssess()}})},peerSubmitEnabled:function(enabled){var button=$("#peer-assessment--001__assessment__submit",this.element);if(typeof enabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!enabled)}},peerAssess:function(){var view=this;var baseView=view.baseView;this.peerAssessRequest(function(){view.load();baseView.loadAssessmentModules();baseView.scrollToTop()})},continuedPeerAssess:function(){var view=this;var gradeView=this.baseView.gradeView;var baseView=view.baseView;view.peerAssessRequest(function(){view.loadContinuedAssessment();gradeView.load();baseView.scrollToTop()})},peerAssessRequest:function(successFunction){var view=this;view.baseView.toggleActionError("peer",null);view.peerSubmitEnabled(false);this.server.peerAssess(this.rubric.optionsSelected(),this.rubric.criterionFeedback(),this.overallFeedback()).done(successFunction).fail(function(errMsg){view.baseView.toggleActionError("peer",errMsg);view.peerSubmitEnabled(true)})},overallFeedback:function(overallFeedback){var selector="#assessment__rubric__question--feedback__value";if(typeof overallFeedback==="undefined"){return $(selector,this.element).val()}else{$(selector,this.element).val(overallFeedback)}}};OpenAssessment.ResponseView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.savedResponse="";this.lastChangeTime=Date.now();this.errorOnLastSave=false;this.autoSaveTimerId=null};OpenAssessment.ResponseView.prototype={AUTO_SAVE_POLL_INTERVAL:2e3,AUTO_SAVE_WAIT:3e4,load:function(){var view=this;this.server.render("submission").done(function(html){$("#openassessment__response",view.element).replaceWith(html);view.installHandlers();view.setAutoSaveEnabled(true)}).fail(function(errMsg){view.baseView.showLoadError("response")})},installHandlers:function(){var sel=$("#openassessment__response",this.element);var view=this;this.baseView.setUpCollapseExpand(sel);this.savedResponse=this.response();var handleChange=function(eventData){view.handleResponseChanged()};sel.find("#submission__answer__value").on("change keyup drop paste",handleChange);sel.find("#step--response__submit").click(function(eventObject){eventObject.preventDefault();view.submit()});sel.find("#submission__save").click(function(eventObject){eventObject.preventDefault();view.save()})},setAutoSaveEnabled:function(enabled){if(enabled){if(this.autoSaveTimerId===null){this.autoSaveTimerId=setInterval($.proxy(this.autoSave,this),this.AUTO_SAVE_POLL_INTERVAL)}}else{if(this.autoSaveTimerId!==null){clearInterval(this.autoSaveTimerId)}}},submitEnabled:function(enabled){var sel=$("#step--response__submit",this.element);if(typeof enabled==="undefined"){return!sel.hasClass("is--disabled")}else{sel.toggleClass("is--disabled",!enabled)}},saveEnabled:function(enabled){var sel=$("#submission__save",this.element);if(typeof enabled==="undefined"){return!sel.hasClass("is--disabled")}else{sel.toggleClass("is--disabled",!enabled)}},saveStatus:function(msg){var sel=$("#response__save_status h3",this.element);if(typeof msg==="undefined"){return sel.text()}else{var label=gettext("Status of Your Response");sel.html('<span class="sr">'+label+":"+"</span>\n"+msg)}},unsavedWarningEnabled:function(enabled){if(typeof enabled==="undefined"){return window.onbeforeunload!==null}else{if(enabled){window.onbeforeunload=function(){return gettext("If you leave this page without saving or submitting your response, you'll lose any work you've done on the response.")}}else{window.onbeforeunload=null}}},response:function(text){var sel=$("#submission__answer__value",this.element);if(typeof text==="undefined"){return sel.val()}else{sel.val(text)}},responseChanged:function(){var currentResponse=$.trim(this.response());var savedResponse=$.trim(this.savedResponse);return savedResponse!==currentResponse},autoSave:function(){var timeSinceLastChange=Date.now()-this.lastChangeTime;if(this.responseChanged()&&timeSinceLastChange>this.AUTO_SAVE_WAIT&&!this.errorOnLastSave){this.save()}},handleResponseChanged:function(){var isBlank=$.trim(this.response())!=="";this.submitEnabled(isBlank);if(this.responseChanged()){this.saveEnabled(isBlank);this.saveStatus(gettext("This response has not been saved."));this.unsavedWarningEnabled(true)}this.lastChangeTime=Date.now()},save:function(){this.errorOnLastSave=false;this.saveStatus(gettext("Saving..."));this.baseView.toggleActionError("save",null);this.unsavedWarningEnabled(false);var view=this;var savedResponse=this.response();this.server.save(savedResponse).done(function(){view.savedResponse=savedResponse;var currentResponse=view.response();view.submitEnabled(currentResponse!=="");if(currentResponse==savedResponse){view.saveEnabled(false);view.saveStatus(gettext("This response has been saved but not submitted."))}}).fail(function(errMsg){view.saveStatus(gettext("Error"));view.baseView.toggleActionError("save",errMsg);view.errorOnLastSave=true})},submit:function(){this.submitEnabled(false);var view=this;var baseView=this.baseView;this.confirmSubmission().pipe(function(){var submission=$("#submission__answer__value",view.element).val();baseView.toggleActionError("response",null);return view.server.submit(submission)}).done($.proxy(view.moveToNextStep,view)).fail(function(errCode,errMsg){if(errCode=="ENOMULTI"){view.moveToNextStep()}else{if(errMsg){baseView.toggleActionError("submit",errMsg)}view.submitEnabled(true)}})},moveToNextStep:function(){this.load();this.baseView.loadAssessmentModules();this.unsavedWarningEnabled(false)},confirmSubmission:function(){var msg="You're about to submit your response for this assignment. "+"After you submit this response, you can't change it or submit a new response.";return $.Deferred(function(defer){if(confirm(msg)){defer.resolve()}else{defer.reject()}})}};OpenAssessment.Rubric=function(element){this.element=element};OpenAssessment.Rubric.prototype={criterionFeedback:function(criterionFeedback){var selector="textarea.answer__value";var feedback={};$(selector,this.element).each(function(index,sel){if(typeof criterionFeedback!=="undefined"){$(sel).val(criterionFeedback[sel.name]);feedback[sel.name]=criterionFeedback[sel.name]}else{feedback[sel.name]=$(sel).val()}});return feedback},optionsSelected:function(optionsSelected){var selector="input[type=radio]";if(typeof optionsSelected==="undefined"){var options={};$(selector+":checked",this.element).each(function(index,sel){options[sel.name]=sel.value});return options}else{$(selector,this.element).prop("checked",false);$(selector,this.element).each(function(index,sel){if(optionsSelected.hasOwnProperty(sel.name)){if(sel.value==optionsSelected[sel.name]){$(sel).prop("checked",true)}}})}},canSubmitCallback:function(callback){$(this.element).change(function(){var numChecked=$("input[type=radio]:checked",this).length;var numAvailable=$(".field--radio.assessment__rubric__question",this).length;var canSubmit=numChecked==numAvailable;callback(canSubmit)})},showCorrections:function(corrections){var selector="input[type=radio]";var hasErrors=false;$(selector,this.element).each(function(index,sel){var listItem=$(sel).parents(".assessment__rubric__question");if(corrections.hasOwnProperty(sel.name)){hasErrors=true;listItem.find(".message--incorrect").removeClass("is--hidden");listItem.find(".message--correct").addClass("is--hidden")}else{listItem.find(".message--correct").removeClass("is--hidden");listItem.find(".message--incorrect").addClass("is--hidden")}});return hasErrors}};OpenAssessment.SelfView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.rubric=null};OpenAssessment.SelfView.prototype={load:function(){var view=this;this.server.render("self_assessment").done(function(html){$("#openassessment__self-assessment",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){view.showLoadError("self-assessment")})},installHandlers:function(){var view=this;var sel=$("#openassessment__self-assessment",view.element);this.baseView.setUpCollapseExpand(sel);var rubricSelector=$("#self-assessment--001__assessment",this.element);if(rubricSelector.size()>0){var rubricElement=rubricSelector.get(0);this.rubric=new OpenAssessment.Rubric(rubricElement)}if(this.rubric!==null){this.rubric.canSubmitCallback($.proxy(this.selfSubmitEnabled,this))}sel.find("#self-assessment--001__assessment__submit").click(function(eventObject){eventObject.preventDefault();view.selfAssess()})},selfSubmitEnabled:function(enabled){var button=$("#self-assessment--001__assessment__submit",this.element);if(typeof enabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!enabled)}},selfAssess:function(){var view=this;var baseView=this.baseView;baseView.toggleActionError("self",null);view.selfSubmitEnabled(false);var options=this.rubric.optionsSelected();this.server.selfAssess(options).done(function(){baseView.loadAssessmentModules();baseView.scrollToTop()}).fail(function(errMsg){baseView.toggleActionError("self",errMsg);view.selfSubmitEnabled(true)})}};OpenAssessment.Server=function(runtime,element){this.runtime=runtime;this.element=element};OpenAssessment.Server.prototype={url:function(handler){return this.runtime.handlerUrl(this.element,handler)},render:function(component){var url=this.url("render_"+component);return $.Deferred(function(defer){$.ajax({url:url,type:"POST",dataType:"html"}).done(function(data){defer.resolveWith(this,[data])}).fail(function(data){defer.rejectWith(this,[gettext("This section could not be loaded.")])})}).promise()},renderContinuedPeer:function(){var url=this.url("render_peer_assessment");return $.Deferred(function(defer){$.ajax({url:url,type:"POST",dataType:"html",data:{continue_grading:true}}).done(function(data){defer.resolveWith(this,[data])}).fail(function(data){defer.rejectWith(this,[gettext("This section could not be loaded.")])})}).promise()},studentInfo:function(student_id){var url=this.url("render_student_info");return $.Deferred(function(defer){$.ajax({url:url,type:"POST",dataType:"html",data:{student_id:student_id}}).done(function(data){defer.resolveWith(this,[data])}).fail(function(data){defer.rejectWith(this,[gettext("This section could not be loaded.")])})}).promise()},submit:function(submission){var url=this.url("submit");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:JSON.stringify({submission:submission})}).done(function(data){var success=data[0];if(success){var studentId=data[1];var attemptNum=data[2];defer.resolveWith(this,[studentId,attemptNum])}else{var errorNum=data[1];var errorMsg=data[2];defer.rejectWith(this,[errorNum,errorMsg])}}).fail(function(data){defer.rejectWith(this,["AJAX",gettext("This response could not be submitted.")])})}).promise()},save:function(submission){var url=this.url("save_submission");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:JSON.stringify({submission:submission})}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This response could not be saved.")])})}).promise()},submitFeedbackOnAssessment:function(text,options){var url=this.url("submit_feedback");var payload=JSON.stringify({feedback_text:text,feedback_options:options});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This feedback could not be submitted.")])})}).promise()},peerAssess:function(optionsSelected,criterionFeedback,overallFeedback){var url=this.url("peer_assess");var payload=JSON.stringify({options_selected:optionsSelected,criterion_feedback:criterionFeedback,overall_feedback:overallFeedback});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})}).promise()},selfAssess:function(optionsSelected){var url=this.url("self_assess");var payload=JSON.stringify({options_selected:optionsSelected});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})})},trainingAssess:function(optionsSelected){var url=this.url("training_assess");var payload=JSON.stringify({options_selected:optionsSelected});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolveWith(this,[data.corrections])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})})},scheduleTraining:function(){var url=this.url("schedule_training");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:'""'}).done(function(data){if(data.success){defer.resolveWith(this,[data.msg])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})})},rescheduleUnfinishedTasks:function(){var url=this.url("reschedule_unfinished_tasks");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:'""'}).done(function(data){if(data.success){defer.resolveWith(this,[data.msg])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("One or more rescheduling tasks failed.")])})})},loadXml:function(){var url=this.url("xml");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:'""'}).done(function(data){if(data.success){defer.resolveWith(this,[data.xml])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This problem could not be loaded.")])})}).promise()},updateXml:function(xml){var url=this.url("update_xml");var payload=JSON.stringify({xml:xml});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This problem could not be saved.")])})}).promise()},checkReleased:function(){var url=this.url("check_released");var payload='""';return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolveWith(this,[data.is_released])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("The server could not be contacted.")])})}).promise()}};if(typeof OpenAssessment=="undefined"||!OpenAssessment){OpenAssessment={}}if(typeof window.gettext==="undefined"){window.gettext=function(text){return text}}OpenAssessment.StaffInfoView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView};OpenAssessment.StaffInfoView.prototype={load:function(){var view=this;if($("#openassessment__staff-info",view.element).length>0){this.server.render("staff_info").done(function(html){$("#openassessment__staff-info",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){view.baseView.showLoadError("staff_info")})}},loadStudentInfo:function(){var view=this;var sel=$("#openassessment__staff-info",this.element);var student_id=sel.find("#openassessment__student_id").val();this.server.studentInfo(student_id).done(function(html){$("#openassessment__student-info",view.element).replaceWith(html)}).fail(function(errMsg){view.showLoadError("student_info")})},installHandlers:function(){var sel=$("#openassessment__staff-info",this.element);var view=this;if(sel.length<=0){return}this.baseView.setUpCollapseExpand(sel,function(){});sel.find("#openassessment_student_info_form").submit(function(eventObject){eventObject.preventDefault();view.loadStudentInfo()});sel.find("#submit_student_id").click(function(eventObject){eventObject.preventDefault();view.loadStudentInfo()});sel.find("#schedule_training").click(function(eventObject){eventObject.preventDefault();view.scheduleTraining()});sel.find("#reschedule_unfinished_tasks").click(function(eventObject){eventObject.preventDefault();view.rescheduleUnfinishedTasks()})},scheduleTraining:function(){var view=this;this.server.scheduleTraining().done(function(msg){$("#schedule_training_message",this.element).text(msg)}).fail(function(errMsg){$("#schedule_training_message",this.element).text(errMsg)})},rescheduleUnfinishedTasks:function(){var view=this;this.server.rescheduleUnfinishedTasks().done(function(msg){$("#reschedule_unfinished_tasks_message",this.element).text(msg)}).fail(function(errMsg){$("#reschedule_unfinished_tasks_message",this.element).text(errMsg)})}};OpenAssessment.StudentTrainingView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.rubric=null};OpenAssessment.StudentTrainingView.prototype={load:function(){var view=this;this.server.render("student_training").done(function(html){$("#openassessment__student-training",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){view.baseView.showLoadError("student-training")})},installHandlers:function(){var sel=$("#openassessment__student-training",this.element);var view=this;this.baseView.setUpCollapseExpand(sel);var rubricSelector=$("#student-training--001__assessment",this.element);if(rubricSelector.size()>0){var rubricElement=rubricSelector.get(0);this.rubric=new OpenAssessment.Rubric(rubricElement)}if(this.rubric!==null){this.rubric.canSubmitCallback($.proxy(this.assessButtonEnabled,this))}sel.find("#student-training--001__assessment__submit").click(function(eventObject){eventObject.preventDefault();view.assess()})},assess:function(){this.assessButtonEnabled(false);var options={};if(this.rubric!==null){options=this.rubric.optionsSelected()}var view=this;var baseView=this.baseView;this.server.trainingAssess(options).done(function(corrections){var incorrect=$("#openassessment__student-training--incorrect",this.element);var instructions=$("#openassessment__student-training--instructions",this.element);if(!view.rubric.showCorrections(corrections)){view.load();baseView.loadAssessmentModules();incorrect.addClass("is--hidden");instructions.removeClass("is--hidden")}else{instructions.addClass("is--hidden");incorrect.removeClass("is--hidden")}baseView.scrollToTop()}).fail(function(errMsg){baseView.toggleActionError("student-training",errMsg);view.assessButtonEnabled(true)})},assessButtonEnabled:function(isEnabled){var button=$("#student-training--001__assessment__submit",this.element);if(typeof isEnabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!isEnabled)}}};
\ No newline at end of file
if(typeof OpenAssessment=="undefined"||!OpenAssessment){OpenAssessment={}}if(typeof window.gettext==="undefined"){window.gettext=function(text){return text}}OpenAssessment.BaseView=function(runtime,element,server){this.runtime=runtime;this.element=element;this.server=server;this.responseView=new OpenAssessment.ResponseView(this.element,this.server,this);this.trainingView=new OpenAssessment.StudentTrainingView(this.element,this.server,this);this.selfView=new OpenAssessment.SelfView(this.element,this.server,this);this.peerView=new OpenAssessment.PeerView(this.element,this.server,this);this.gradeView=new OpenAssessment.GradeView(this.element,this.server,this);this.messageView=new OpenAssessment.MessageView(this.element,this.server,this);this.staffInfoView=new OpenAssessment.StaffInfoView(this.element,this.server,this)};OpenAssessment.BaseView.prototype={scrollToTop:function(){if($.scrollTo instanceof Function){$(window).scrollTo($("#openassessment__steps"),800,{offset:-50})}},setUpCollapseExpand:function(parentSel){parentSel.find(".ui-toggle-visibility__control").click(function(eventData){var sel=$(eventData.target).closest(".ui-toggle-visibility");sel.toggleClass("is--collapsed")})},load:function(){this.responseView.load();this.loadAssessmentModules();this.staffInfoView.load()},loadAssessmentModules:function(){this.trainingView.load();this.peerView.load();this.selfView.load();this.gradeView.load()},loadMessageView:function(){this.messageView.load()},toggleActionError:function(type,msg){var element=this.element;var container=null;if(type=="save"){container=".response__submission__actions"}else if(type=="submit"||type=="peer"||type=="self"||type=="student-training"){container=".step__actions"}else if(type=="feedback_assess"){container=".submission__feedback__actions"}if(container===null){if(msg!==null){console.log(msg)}}else{var msgHtml=msg===null?"":msg;$(container+" .message__content",element).html("<p>"+msgHtml+"</p>");$(container,element).toggleClass("has--error",msg!==null)}},showLoadError:function(step){var container="#openassessment__"+step;$(container).toggleClass("has--error",true);$(container+" .step__status__value i").removeClass().addClass("ico icon-warning-sign");$(container+" .step__status__value .copy").html(gettext("Unable to Load"))}};function OpenAssessmentBlock(runtime,element){var server=new OpenAssessment.Server(runtime,element);var view=new OpenAssessment.BaseView(runtime,element,server);view.load()}OpenAssessment.StudioView=function(runtime,element,server){this.runtime=runtime;this.server=server;this.codeBox=CodeMirror.fromTextArea($(element).find(".openassessment-editor").first().get(0),{mode:"xml",lineNumbers:true,lineWrapping:true});var view=this;$(element).find(".openassessment-save-button").click(function(eventData){view.save()});$(element).find(".openassessment-cancel-button").click(function(eventData){view.cancel()})};OpenAssessment.StudioView.prototype={load:function(){var view=this;this.server.loadXml().done(function(xml){view.codeBox.setValue(xml)}).fail(function(msg){view.showError(msg)})},save:function(){var view=this;this.server.checkReleased().done(function(isReleased){if(isReleased){view.confirmPostReleaseUpdate($.proxy(view.updateXml,view))}else{view.updateXml()}}).fail(function(errMsg){view.showError(msg)})},confirmPostReleaseUpdate:function(onConfirm){var msg=gettext("This problem has already been released. Any changes will apply only to future assessments.");if(confirm(msg)){onConfirm()}},updateXml:function(){this.runtime.notify("save",{state:"start"});var xml=this.codeBox.getValue();var view=this;this.server.updateXml(xml).done(function(){view.runtime.notify("save",{state:"end"});view.load()}).fail(function(msg){view.showError(msg)})},cancel:function(){this.runtime.notify("cancel",{})},showError:function(errorMsg){this.runtime.notify("error",{msg:errorMsg})}};function OpenAssessmentEditor(runtime,element){var server=new OpenAssessment.Server(runtime,element);var view=new OpenAssessment.StudioView(runtime,element,server);view.load()}OpenAssessment.GradeView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView};OpenAssessment.GradeView.prototype={load:function(){var view=this;var baseView=this.baseView;this.server.render("grade").done(function(html){$("#openassessment__grade",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){baseView.showLoadError("grade",errMsg)})},installHandlers:function(){var sel=$("#openassessment__grade",this.element);this.baseView.setUpCollapseExpand(sel);var view=this;sel.find("#feedback__submit").click(function(eventObject){eventObject.preventDefault();view.submitFeedbackOnAssessment()})},feedbackText:function(text){if(typeof text==="undefined"){return $("#feedback__remarks__value",this.element).val()}else{$("#feedback__remarks__value",this.element).val(text)}},feedbackOptions:function(options){var view=this;if(typeof options==="undefined"){return $.map($(".feedback__overall__value:checked",view.element),function(element,index){return $(element).val()})}else{$(".feedback__overall__value",this.element).prop("checked",false);$.each(options,function(index,opt){$("#feedback__overall__value--"+opt,view.element).prop("checked",true)})}},setHidden:function(sel,hidden){sel.toggleClass("is--hidden",hidden);sel.attr("aria-hidden",hidden?"true":"false")},isHidden:function(sel){return sel.hasClass("is--hidden")&&sel.attr("aria-hidden")=="true"},feedbackState:function(newState){var containerSel=$(".submission__feedback__content",this.element);var instructionsSel=containerSel.find(".submission__feedback__instructions");var fieldsSel=containerSel.find(".submission__feedback__fields");var actionsSel=containerSel.find(".submission__feedback__actions");var transitionSel=containerSel.find(".transition__status");var messageSel=containerSel.find(".message--complete");if(typeof newState==="undefined"){var isSubmitting=containerSel.hasClass("is--transitioning")&&containerSel.hasClass("is--submitting")&&!this.isHidden(transitionSel)&&this.isHidden(messageSel)&&this.isHidden(instructionsSel)&&this.isHidden(fieldsSel)&&this.isHidden(actionsSel);var hasSubmitted=containerSel.hasClass("is--submitted")&&this.isHidden(transitionSel)&&!this.isHidden(messageSel)&&this.isHidden(instructionsSel)&&this.isHidden(fieldsSel)&&this.isHidden(actionsSel);var isOpen=!containerSel.hasClass("is--submitted")&&!containerSel.hasClass("is--transitioning")&&!containerSel.hasClass("is--submitting")&&this.isHidden(transitionSel)&&this.isHidden(messageSel)&&!this.isHidden(instructionsSel)&&!this.isHidden(fieldsSel)&&!this.isHidden(actionsSel);if(isOpen){return"open"}else if(isSubmitting){return"submitting"}else if(hasSubmitted){return"submitted"}else{throw"Invalid feedback state"}}else{if(newState=="open"){containerSel.toggleClass("is--transitioning",false);containerSel.toggleClass("is--submitting",false);containerSel.toggleClass("is--submitted",false);this.setHidden(instructionsSel,false);this.setHidden(fieldsSel,false);this.setHidden(actionsSel,false);this.setHidden(transitionSel,true);this.setHidden(messageSel,true)}else if(newState=="submitting"){containerSel.toggleClass("is--transitioning",true);containerSel.toggleClass("is--submitting",true);containerSel.toggleClass("is--submitted",false);this.setHidden(instructionsSel,true);this.setHidden(fieldsSel,true);this.setHidden(actionsSel,true);this.setHidden(transitionSel,false);this.setHidden(messageSel,true)}else if(newState=="submitted"){containerSel.toggleClass("is--transitioning",false);containerSel.toggleClass("is--submitting",false);containerSel.toggleClass("is--submitted",true);this.setHidden(instructionsSel,true);this.setHidden(fieldsSel,true);this.setHidden(actionsSel,true);this.setHidden(transitionSel,true);this.setHidden(messageSel,false)}}},submitFeedbackOnAssessment:function(){var view=this;var baseView=this.baseView;$("#feedback__submit",this.element).toggleClass("is--disabled",true);view.feedbackState("submitting");this.server.submitFeedbackOnAssessment(this.feedbackText(),this.feedbackOptions()).done(function(){view.feedbackState("submitted")}).fail(function(errMsg){baseView.toggleActionError("feedback_assess",errMsg)})}};OpenAssessment.MessageView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView};OpenAssessment.MessageView.prototype={load:function(){var view=this;var baseView=this.baseView;this.server.render("message").done(function(html){$("#openassessment__message",view.element).replaceWith(html)}).fail(function(errMsg){baseView.showLoadError("message",errMsg)})}};OpenAssessment.PeerView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.rubric=null};OpenAssessment.PeerView.prototype={load:function(){var view=this;this.server.render("peer_assessment").done(function(html){$("#openassessment__peer-assessment",view.element).replaceWith(html);view.installHandlers(false)}).fail(function(errMsg){view.baseView.showLoadError("peer-assessment")});view.baseView.loadMessageView()},loadContinuedAssessment:function(){var view=this;view.continueAssessmentEnabled(false);this.server.renderContinuedPeer().done(function(html){$("#openassessment__peer-assessment",view.element).replaceWith(html);view.installHandlers(true)}).fail(function(errMsg){view.baseView.showLoadError("peer-assessment");view.continueAssessmentEnabled(true)})},continueAssessmentEnabled:function(enabled){var button=$("#peer-assessment__continue__grading",this.element);if(typeof enabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!enabled)}},installHandlers:function(isContinuedAssessment){var sel=$("#openassessment__peer-assessment",this.element);var view=this;this.baseView.setUpCollapseExpand(sel);var rubricSelector=$("#peer-assessment--001__assessment",this.element);if(rubricSelector.size()>0){var rubricElement=rubricSelector.get(0);this.rubric=new OpenAssessment.Rubric(rubricElement)}if(this.rubric!==null){this.rubric.canSubmitCallback($.proxy(view.peerSubmitEnabled,view))}sel.find("#peer-assessment--001__assessment__submit").click(function(eventObject){eventObject.preventDefault();if(!isContinuedAssessment){view.peerAssess()}else{view.continuedPeerAssess()}});sel.find("#peer-assessment__continue__grading").click(function(eventObject){eventObject.preventDefault();view.loadContinuedAssessment()})},peerSubmitEnabled:function(enabled){var button=$("#peer-assessment--001__assessment__submit",this.element);if(typeof enabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!enabled)}},peerAssess:function(){var view=this;var baseView=view.baseView;this.peerAssessRequest(function(){view.load();baseView.loadAssessmentModules();baseView.scrollToTop()})},continuedPeerAssess:function(){var view=this;var gradeView=this.baseView.gradeView;var baseView=view.baseView;view.peerAssessRequest(function(){view.loadContinuedAssessment();gradeView.load();baseView.scrollToTop()})},peerAssessRequest:function(successFunction){var view=this;view.baseView.toggleActionError("peer",null);view.peerSubmitEnabled(false);this.server.peerAssess(this.rubric.optionsSelected(),this.rubric.criterionFeedback(),this.overallFeedback()).done(successFunction).fail(function(errMsg){view.baseView.toggleActionError("peer",errMsg);view.peerSubmitEnabled(true)})},overallFeedback:function(overallFeedback){var selector="#assessment__rubric__question--feedback__value";if(typeof overallFeedback==="undefined"){return $(selector,this.element).val()}else{$(selector,this.element).val(overallFeedback)}}};OpenAssessment.ResponseView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.savedResponse="";this.lastChangeTime=Date.now();this.errorOnLastSave=false;this.autoSaveTimerId=null};OpenAssessment.ResponseView.prototype={AUTO_SAVE_POLL_INTERVAL:2e3,AUTO_SAVE_WAIT:3e4,load:function(){var view=this;this.server.render("submission").done(function(html){$("#openassessment__response",view.element).replaceWith(html);view.installHandlers();view.setAutoSaveEnabled(true)}).fail(function(errMsg){view.baseView.showLoadError("response")})},installHandlers:function(){var sel=$("#openassessment__response",this.element);var view=this;this.baseView.setUpCollapseExpand(sel);this.savedResponse=this.response();var handleChange=function(eventData){view.handleResponseChanged()};sel.find("#submission__answer__value").on("change keyup drop paste",handleChange);sel.find("#step--response__submit").click(function(eventObject){eventObject.preventDefault();view.submit()});sel.find("#submission__save").click(function(eventObject){eventObject.preventDefault();view.save()})},setAutoSaveEnabled:function(enabled){if(enabled){if(this.autoSaveTimerId===null){this.autoSaveTimerId=setInterval($.proxy(this.autoSave,this),this.AUTO_SAVE_POLL_INTERVAL)}}else{if(this.autoSaveTimerId!==null){clearInterval(this.autoSaveTimerId)}}},submitEnabled:function(enabled){var sel=$("#step--response__submit",this.element);if(typeof enabled==="undefined"){return!sel.hasClass("is--disabled")}else{sel.toggleClass("is--disabled",!enabled)}},saveEnabled:function(enabled){var sel=$("#submission__save",this.element);if(typeof enabled==="undefined"){return!sel.hasClass("is--disabled")}else{sel.toggleClass("is--disabled",!enabled)}},saveStatus:function(msg){var sel=$("#response__save_status h3",this.element);if(typeof msg==="undefined"){return sel.text()}else{var label=gettext("Status of Your Response");sel.html('<span class="sr">'+label+":"+"</span>\n"+msg)}},unsavedWarningEnabled:function(enabled){if(typeof enabled==="undefined"){return window.onbeforeunload!==null}else{if(enabled){window.onbeforeunload=function(){return gettext("If you leave this page without saving or submitting your response, you'll lose any work you've done on the response.")}}else{window.onbeforeunload=null}}},response:function(text){var sel=$("#submission__answer__value",this.element);if(typeof text==="undefined"){return sel.val()}else{sel.val(text)}},responseChanged:function(){var currentResponse=$.trim(this.response());var savedResponse=$.trim(this.savedResponse);return savedResponse!==currentResponse},autoSave:function(){var timeSinceLastChange=Date.now()-this.lastChangeTime;if(this.responseChanged()&&timeSinceLastChange>this.AUTO_SAVE_WAIT&&!this.errorOnLastSave){this.save()}},handleResponseChanged:function(){var isBlank=$.trim(this.response())!=="";this.submitEnabled(isBlank);if(this.responseChanged()){this.saveEnabled(isBlank);this.saveStatus(gettext("This response has not been saved."));this.unsavedWarningEnabled(true)}this.lastChangeTime=Date.now()},save:function(){this.errorOnLastSave=false;this.saveStatus(gettext("Saving..."));this.baseView.toggleActionError("save",null);this.unsavedWarningEnabled(false);var view=this;var savedResponse=this.response();this.server.save(savedResponse).done(function(){view.savedResponse=savedResponse;var currentResponse=view.response();view.submitEnabled(currentResponse!=="");if(currentResponse==savedResponse){view.saveEnabled(false);view.saveStatus(gettext("This response has been saved but not submitted."))}}).fail(function(errMsg){view.saveStatus(gettext("Error"));view.baseView.toggleActionError("save",errMsg);view.errorOnLastSave=true})},submit:function(){this.submitEnabled(false);var view=this;var baseView=this.baseView;this.confirmSubmission().pipe(function(){var submission=$("#submission__answer__value",view.element).val();baseView.toggleActionError("response",null);return view.server.submit(submission)}).done($.proxy(view.moveToNextStep,view)).fail(function(errCode,errMsg){if(errCode=="ENOMULTI"){view.moveToNextStep()}else{if(errMsg){baseView.toggleActionError("submit",errMsg)}view.submitEnabled(true)}})},moveToNextStep:function(){this.load();this.baseView.loadAssessmentModules();this.unsavedWarningEnabled(false)},confirmSubmission:function(){var msg="You're about to submit your response for this assignment. "+"After you submit this response, you can't change it or submit a new response.";return $.Deferred(function(defer){if(confirm(msg)){defer.resolve()}else{defer.reject()}})}};OpenAssessment.Rubric=function(element){this.element=element};OpenAssessment.Rubric.prototype={criterionFeedback:function(criterionFeedback){var selector="textarea.answer__value";var feedback={};$(selector,this.element).each(function(index,sel){if(typeof criterionFeedback!=="undefined"){$(sel).val(criterionFeedback[sel.name]);feedback[sel.name]=criterionFeedback[sel.name]}else{feedback[sel.name]=$(sel).val()}});return feedback},optionsSelected:function(optionsSelected){var selector="input[type=radio]";if(typeof optionsSelected==="undefined"){var options={};$(selector+":checked",this.element).each(function(index,sel){options[sel.name]=sel.value});return options}else{$(selector,this.element).prop("checked",false);$(selector,this.element).each(function(index,sel){if(optionsSelected.hasOwnProperty(sel.name)){if(sel.value==optionsSelected[sel.name]){$(sel).prop("checked",true)}}})}},canSubmitCallback:function(callback){$(this.element).change(function(){var numChecked=$("input[type=radio]:checked",this).length;var numAvailable=$(".field--radio.assessment__rubric__question",this).length;var canSubmit=numChecked==numAvailable;callback(canSubmit)})},showCorrections:function(corrections){var selector="input[type=radio]";var hasErrors=false;$(selector,this.element).each(function(index,sel){var listItem=$(sel).parents(".assessment__rubric__question");if(corrections.hasOwnProperty(sel.name)){hasErrors=true;listItem.find(".message--incorrect").removeClass("is--hidden");listItem.find(".message--correct").addClass("is--hidden")}else{listItem.find(".message--correct").removeClass("is--hidden");listItem.find(".message--incorrect").addClass("is--hidden")}});return hasErrors}};OpenAssessment.SelfView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.rubric=null};OpenAssessment.SelfView.prototype={load:function(){var view=this;this.server.render("self_assessment").done(function(html){$("#openassessment__self-assessment",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){view.showLoadError("self-assessment")})},installHandlers:function(){var view=this;var sel=$("#openassessment__self-assessment",view.element);this.baseView.setUpCollapseExpand(sel);var rubricSelector=$("#self-assessment--001__assessment",this.element);if(rubricSelector.size()>0){var rubricElement=rubricSelector.get(0);this.rubric=new OpenAssessment.Rubric(rubricElement)}if(this.rubric!==null){this.rubric.canSubmitCallback($.proxy(this.selfSubmitEnabled,this))}sel.find("#self-assessment--001__assessment__submit").click(function(eventObject){eventObject.preventDefault();view.selfAssess()})},selfSubmitEnabled:function(enabled){var button=$("#self-assessment--001__assessment__submit",this.element);if(typeof enabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!enabled)}},selfAssess:function(){var view=this;var baseView=this.baseView;baseView.toggleActionError("self",null);view.selfSubmitEnabled(false);var options=this.rubric.optionsSelected();this.server.selfAssess(options).done(function(){baseView.loadAssessmentModules();baseView.scrollToTop()}).fail(function(errMsg){baseView.toggleActionError("self",errMsg);view.selfSubmitEnabled(true)})}};OpenAssessment.Server=function(runtime,element){this.runtime=runtime;this.element=element};OpenAssessment.Server.prototype={url:function(handler){return this.runtime.handlerUrl(this.element,handler)},render:function(component){var url=this.url("render_"+component);return $.Deferred(function(defer){$.ajax({url:url,type:"POST",dataType:"html"}).done(function(data){defer.resolveWith(this,[data])}).fail(function(data){defer.rejectWith(this,[gettext("This section could not be loaded.")])})}).promise()},renderContinuedPeer:function(){var url=this.url("render_peer_assessment");return $.Deferred(function(defer){$.ajax({url:url,type:"POST",dataType:"html",data:{continue_grading:true}}).done(function(data){defer.resolveWith(this,[data])}).fail(function(data){defer.rejectWith(this,[gettext("This section could not be loaded.")])})}).promise()},studentInfo:function(student_id){var url=this.url("render_student_info");return $.Deferred(function(defer){$.ajax({url:url,type:"POST",dataType:"html",data:{student_id:student_id}}).done(function(data){defer.resolveWith(this,[data])}).fail(function(data){defer.rejectWith(this,[gettext("This section could not be loaded.")])})}).promise()},submit:function(submission){var url=this.url("submit");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:JSON.stringify({submission:submission})}).done(function(data){var success=data[0];if(success){var studentId=data[1];var attemptNum=data[2];defer.resolveWith(this,[studentId,attemptNum])}else{var errorNum=data[1];var errorMsg=data[2];defer.rejectWith(this,[errorNum,errorMsg])}}).fail(function(data){defer.rejectWith(this,["AJAX",gettext("This response could not be submitted.")])})}).promise()},save:function(submission){var url=this.url("save_submission");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:JSON.stringify({submission:submission})}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This response could not be saved.")])})}).promise()},submitFeedbackOnAssessment:function(text,options){var url=this.url("submit_feedback");var payload=JSON.stringify({feedback_text:text,feedback_options:options});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This feedback could not be submitted.")])})}).promise()},peerAssess:function(optionsSelected,criterionFeedback,overallFeedback){var url=this.url("peer_assess");var payload=JSON.stringify({options_selected:optionsSelected,criterion_feedback:criterionFeedback,overall_feedback:overallFeedback});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})}).promise()},selfAssess:function(optionsSelected){var url=this.url("self_assess");var payload=JSON.stringify({options_selected:optionsSelected});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})})},trainingAssess:function(optionsSelected){var url=this.url("training_assess");var payload=JSON.stringify({options_selected:optionsSelected});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolveWith(this,[data.corrections])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})})},scheduleTraining:function(){var url=this.url("schedule_training");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:'""'}).done(function(data){if(data.success){defer.resolveWith(this,[data.msg])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This assessment could not be submitted.")])})})},rescheduleUnfinishedTasks:function(){var url=this.url("reschedule_unfinished_tasks");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:'""'}).done(function(data){if(data.success){defer.resolveWith(this,[data.msg])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("One or more rescheduling tasks failed.")])})})},loadXml:function(){var url=this.url("xml");return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:'""'}).done(function(data){if(data.success){defer.resolveWith(this,[data.xml])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This problem could not be loaded.")])})}).promise()},updateXml:function(xml){var url=this.url("update_xml");var payload=JSON.stringify({xml:xml});return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolve()}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("This problem could not be saved.")])})}).promise()},checkReleased:function(){var url=this.url("check_released");var payload='""';return $.Deferred(function(defer){$.ajax({type:"POST",url:url,data:payload}).done(function(data){if(data.success){defer.resolveWith(this,[data.is_released])}else{defer.rejectWith(this,[data.msg])}}).fail(function(data){defer.rejectWith(this,[gettext("The server could not be contacted.")])})}).promise()}};if(typeof OpenAssessment=="undefined"||!OpenAssessment){OpenAssessment={}}if(typeof window.gettext==="undefined"){window.gettext=function(text){return text}}OpenAssessment.StaffInfoView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView};OpenAssessment.StaffInfoView.prototype={load:function(){var view=this;if($("#openassessment__staff-info",view.element).length>0){this.server.render("staff_info").done(function(html){$("#openassessment__staff-info",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){view.baseView.showLoadError("staff_info")})}},loadStudentInfo:function(){var view=this;var sel=$("#openassessment__staff-info",this.element);var student_id=sel.find("#openassessment__student_id").val();this.server.studentInfo(student_id).done(function(html){$("#openassessment__student-info",view.element).replaceWith(html)}).fail(function(errMsg){view.showLoadError("student_info")})},installHandlers:function(){var sel=$("#openassessment__staff-info",this.element);var view=this;if(sel.length<=0){return}this.baseView.setUpCollapseExpand(sel,function(){});sel.find("#openassessment_student_info_form").submit(function(eventObject){eventObject.preventDefault();view.loadStudentInfo()});sel.find("#submit_student_id").click(function(eventObject){eventObject.preventDefault();view.loadStudentInfo()});sel.find("#schedule_training").click(function(eventObject){eventObject.preventDefault();view.scheduleTraining()});sel.find("#reschedule_unfinished_tasks").click(function(eventObject){eventObject.preventDefault();view.rescheduleUnfinishedTasks()})},scheduleTraining:function(){var view=this;this.server.scheduleTraining().done(function(msg){$("#schedule_training_message",this.element).text(msg)}).fail(function(errMsg){$("#schedule_training_message",this.element).text(errMsg)})},rescheduleUnfinishedTasks:function(){var view=this;this.server.rescheduleUnfinishedTasks().done(function(msg){$("#reschedule_unfinished_tasks_message",this.element).text(msg)}).fail(function(errMsg){$("#reschedule_unfinished_tasks_message",this.element).text(errMsg)})}};OpenAssessment.StudentTrainingView=function(element,server,baseView){this.element=element;this.server=server;this.baseView=baseView;this.rubric=null};OpenAssessment.StudentTrainingView.prototype={load:function(){var view=this;this.server.render("student_training").done(function(html){$("#openassessment__student-training",view.element).replaceWith(html);view.installHandlers()}).fail(function(errMsg){view.baseView.showLoadError("student-training")})},installHandlers:function(){var sel=$("#openassessment__student-training",this.element);var view=this;this.baseView.setUpCollapseExpand(sel);var rubricSelector=$("#student-training--001__assessment",this.element);if(rubricSelector.size()>0){var rubricElement=rubricSelector.get(0);this.rubric=new OpenAssessment.Rubric(rubricElement)}if(this.rubric!==null){this.rubric.canSubmitCallback($.proxy(this.assessButtonEnabled,this))}sel.find("#student-training--001__assessment__submit").click(function(eventObject){eventObject.preventDefault();view.assess()})},assess:function(){this.assessButtonEnabled(false);var options={};if(this.rubric!==null){options=this.rubric.optionsSelected()}var view=this;var baseView=this.baseView;this.server.trainingAssess(options).done(function(corrections){var incorrect=$("#openassessment__student-training--incorrect",this.element);var instructions=$("#openassessment__student-training--instructions",this.element);if(!view.rubric.showCorrections(corrections)){view.load();baseView.loadAssessmentModules();incorrect.addClass("is--hidden");instructions.removeClass("is--hidden")}else{instructions.addClass("is--hidden");incorrect.removeClass("is--hidden")}baseView.scrollToTop()}).fail(function(errMsg){baseView.toggleActionError("student-training",errMsg);view.assessButtonEnabled(true)})},assessButtonEnabled:function(isEnabled){var button=$("#student-training--001__assessment__submit",this.element);if(typeof isEnabled==="undefined"){return!button.hasClass("is--disabled")}else{button.toggleClass("is--disabled",!isEnabled)}}};
\ No newline at end of file
......@@ -19,6 +19,10 @@ describe("OpenAssessment.PeerView", function() {
this.render = function(step) {
return successPromise;
};
this.renderContinuedPeer = function() {
return successPromise;
};
};
// Stub base view
......@@ -98,4 +102,20 @@ describe("OpenAssessment.PeerView", function() {
// Expect the submit button to have been re-enabled
expect(view.peerSubmitEnabled()).toBe(true);
});
it("Re-enables the continued grading button on error", function() {
jasmine.getFixtures().fixturesPath = 'base/fixtures';
loadFixtures('oa_peer_complete.html');
// Simulate a server error
spyOn(server, 'renderContinuedPeer').andCallFake(function() {
expect(view.continueAssessmentEnabled()).toBe(false);
return $.Deferred(function(defer) {
defer.rejectWith(this, ['Error occurred!']);
}).promise();
});
view.loadContinuedAssessment();
// Expect the submit button to have been re-enabled
expect(view.continueAssessmentEnabled()).toBe(true);
});
});
......@@ -45,18 +45,11 @@ OpenAssessment.BaseView.prototype = {
Args:
parentSel (JQuery selector): CSS selector for the container element.
onExpand (function): Function to execute when expanding (if provided). Accepts no args.
**/
setUpCollapseExpand: function(parentSel, onExpand) {
setUpCollapseExpand: function(parentSel) {
parentSel.find('.ui-toggle-visibility__control').click(
function(eventData) {
var sel = $(eventData.target).closest('.ui-toggle-visibility');
// If we're expanding and have an `onExpand` callback defined, execute it.
if (sel.hasClass('is--collapsed') && onExpand !== undefined) {
onExpand();
}
sel.toggleClass('is--collapsed');
}
);
......
......@@ -46,6 +46,7 @@ OpenAssessment.PeerView.prototype = {
**/
loadContinuedAssessment: function() {
var view = this;
view.continueAssessmentEnabled(false);
this.server.renderContinuedPeer().done(
function(html) {
// Load the HTML and install event handlers
......@@ -54,10 +55,31 @@ OpenAssessment.PeerView.prototype = {
}
).fail(function(errMsg) {
view.baseView.showLoadError('peer-assessment');
view.continueAssessmentEnabled(true);
});
},
/**
Enable and disable the continue assessment button.
Args:
enabled (bool): If specified, sets the button as enabled or disabled.
if not specified, return the current value.
Returns:
A boolean. TRUE if the continue assessment button is enabled.
**/
continueAssessmentEnabled: function(enabled) {
var button = $('#peer-assessment__continue__grading', this.element);
if (typeof enabled === 'undefined') {
return !button.hasClass('is--disabled');
} else {
button.toggleClass('is--disabled', !enabled);
}
},
/**
Install event handlers for the view.
Args:
......@@ -70,7 +92,7 @@ OpenAssessment.PeerView.prototype = {
var view = this;
// Install a click handler for collapse/expand
this.baseView.setUpCollapseExpand(sel, $.proxy(view.loadContinuedAssessment, view));
this.baseView.setUpCollapseExpand(sel);
// Initialize the rubric
var rubricSelector = $("#peer-assessment--001__assessment", this.element);
......@@ -95,6 +117,14 @@ OpenAssessment.PeerView.prototype = {
else { view.continuedPeerAssess(); }
}
);
// Install a click handler for continued assessment
sel.find('#peer-assessment__continue__grading').click(
function(eventObject) {
eventObject.preventDefault();
view.loadContinuedAssessment();
}
);
},
/**
......
......@@ -175,3 +175,10 @@
}
// Developer SASS for Continued Grading.
.openassessment__steps__step {
.action--continue--grading {
@extend .action--submit;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment