diff --git a/Gruntfile.js b/Gruntfile.js index 820b5aae..596bf82d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -74,6 +74,7 @@ module.exports = function (grunt) { options: { ignores: [ ], + reporterOutput: '', }, dist: [ gruntFile, diff --git a/freetextresponse/private/view.js b/freetextresponse/private/view.js index a51c8f2f..7e601f68 100644 --- a/freetextresponse/private/view.js +++ b/freetextresponse/private/view.js @@ -15,6 +15,16 @@ function FreeTextResponseView(runtime, element) { var url = runtime.handlerUrl(element, 'submit'); var urlSave = runtime.handlerUrl(element, 'save_reponse'); + var xblockId = $element.attr('data-usage-id'); + var cachedAnswerId = xblockId + '_cached_answer'; + var problemProgressId = xblockId + '_problem_progress'; + var usedAttemptsFeedbackId = xblockId + '_used_attempts_feedback'; + if ($('body').data(cachedAnswerId) !== undefined) { + textareaStudentAnswer.text($('body').data(cachedAnswerId)); + problemProgress.text($('body').data(problemProgressId)); + usedAttemptsFeedback.text($('body').data(usedAttemptsFeedbackId)); + } + // POLYFILL notify if it does not exist. Like in the xblock workbench. runtime.notify = runtime.notify || function () { console.log('POLYFILL runtime.notify', arguments); @@ -47,6 +57,10 @@ function FreeTextResponseView(runtime, element) { userAlertMessage.text(response.user_alert); buttonSave.addClass(response.nodisplay_class); setClassForTextAreaParent(response.indicator_class); + + $('body').data(cachedAnswerId, $element.find('.student_answer').val()); + $('body').data(problemProgressId, response.problem_progress); + $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); runtime.notify('submit', { state: 'end' @@ -79,6 +93,10 @@ function FreeTextResponseView(runtime, element) { buttonSave.text(buttonSave[0].dataset.value); userAlertMessage.text(response.user_alert); + $('body').data(cachedAnswerId, $element.find('.student_answer').val()); + $('body').data(problemProgressId, response.problem_progress); + $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); + runtime.notify('save', { state: 'end' }); diff --git a/freetextresponse/public/view.js b/freetextresponse/public/view.js index a51c8f2f..7e601f68 100644 --- a/freetextresponse/public/view.js +++ b/freetextresponse/public/view.js @@ -15,6 +15,16 @@ function FreeTextResponseView(runtime, element) { var url = runtime.handlerUrl(element, 'submit'); var urlSave = runtime.handlerUrl(element, 'save_reponse'); + var xblockId = $element.attr('data-usage-id'); + var cachedAnswerId = xblockId + '_cached_answer'; + var problemProgressId = xblockId + '_problem_progress'; + var usedAttemptsFeedbackId = xblockId + '_used_attempts_feedback'; + if ($('body').data(cachedAnswerId) !== undefined) { + textareaStudentAnswer.text($('body').data(cachedAnswerId)); + problemProgress.text($('body').data(problemProgressId)); + usedAttemptsFeedback.text($('body').data(usedAttemptsFeedbackId)); + } + // POLYFILL notify if it does not exist. Like in the xblock workbench. runtime.notify = runtime.notify || function () { console.log('POLYFILL runtime.notify', arguments); @@ -47,6 +57,10 @@ function FreeTextResponseView(runtime, element) { userAlertMessage.text(response.user_alert); buttonSave.addClass(response.nodisplay_class); setClassForTextAreaParent(response.indicator_class); + + $('body').data(cachedAnswerId, $element.find('.student_answer').val()); + $('body').data(problemProgressId, response.problem_progress); + $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); runtime.notify('submit', { state: 'end' @@ -79,6 +93,10 @@ function FreeTextResponseView(runtime, element) { buttonSave.text(buttonSave[0].dataset.value); userAlertMessage.text(response.user_alert); + $('body').data(cachedAnswerId, $element.find('.student_answer').val()); + $('body').data(problemProgressId, response.problem_progress); + $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); + runtime.notify('save', { state: 'end' }); diff --git a/freetextresponse/public/view.js.min.js b/freetextresponse/public/view.js.min.js index c6b1a675..39096bfd 100644 --- a/freetextresponse/public/view.js.min.js +++ b/freetextresponse/public/view.js.min.js @@ -1,2 +1,2 @@ -function FreeTextResponseView(a,b){"use strict";function c(a){m.removeClass("correct"),m.removeClass("incorrect"),m.removeClass("unanswered"),m.addClass(a)}var d=window.jQuery,e=d(b),f=e.find(".check.Submit"),g=e.find(".save"),h=e.find(".action .used-attempts-feedback"),i=e.find(".problem-progress"),j=e.find(".submission-received"),k=e.find(".user_alert"),l=e.find(".student_answer"),m=l.parent(),n=a.handlerUrl(b,"submit"),o=a.handlerUrl(b,"save_reponse");a.notify=a.notify||function(){console.log("POLYFILL runtime.notify",arguments)},f.on("click",function(){return f.text(f[0].dataset.checking),a.notify("submit",{message:"Submitting...",state:"start"}),d.ajax(n,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){h.text(b.used_attempts_feedback),f.addClass(b.nodisplay_class),i.text(b.problem_progress),j.text(b.submitted_message),f.text(f[0].dataset.value),k.text(b.user_alert),g.addClass(b.nodisplay_class),c(b.indicator_class),a.notify("submit",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),g.on("click",function(){return g.text(g[0].dataset.checking),a.notify("save",{message:"Saving...",state:"start"}),d.ajax(o,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){f.addClass(b.nodisplay_class),g.addClass(b.nodisplay_class),h.text(b.used_attempts_feedback),i.text(b.problem_progress),j.text(b.submitted_message),g.text(g[0].dataset.value),k.text(b.user_alert),a.notify("save",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),l.on("keydown",function(){j.text(""),k.text(""),c("unanswered")})} +function FreeTextResponseView(a,b){"use strict";function c(a){m.removeClass("correct"),m.removeClass("incorrect"),m.removeClass("unanswered"),m.addClass(a)}var d=window.jQuery,e=d(b),f=e.find(".check.Submit"),g=e.find(".save"),h=e.find(".action .used-attempts-feedback"),i=e.find(".problem-progress"),j=e.find(".submission-received"),k=e.find(".user_alert"),l=e.find(".student_answer"),m=l.parent(),n=a.handlerUrl(b,"submit"),o=a.handlerUrl(b,"save_reponse"),p=e.attr("data-usage-id"),q=p+"_cached_answer",r=p+"_problem_progress",s=p+"_used_attempts_feedback";void 0!==d("body").data(q)&&(l.text(d("body").data(q)),i.text(d("body").data(r)),h.text(d("body").data(s))),a.notify=a.notify||function(){console.log("POLYFILL runtime.notify",arguments)},f.on("click",function(){return f.text(f[0].dataset.checking),a.notify("submit",{message:"Submitting...",state:"start"}),d.ajax(n,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){h.text(b.used_attempts_feedback),f.addClass(b.nodisplay_class),i.text(b.problem_progress),j.text(b.submitted_message),f.text(f[0].dataset.value),k.text(b.user_alert),g.addClass(b.nodisplay_class),c(b.indicator_class),d("body").data(q,e.find(".student_answer").val()),d("body").data(r,b.problem_progress),d("body").data(s,b.used_attempts_feedback),a.notify("submit",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),g.on("click",function(){return g.text(g[0].dataset.checking),a.notify("save",{message:"Saving...",state:"start"}),d.ajax(o,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){f.addClass(b.nodisplay_class),g.addClass(b.nodisplay_class),h.text(b.used_attempts_feedback),i.text(b.problem_progress),j.text(b.submitted_message),g.text(g[0].dataset.value),k.text(b.user_alert),d("body").data(q,e.find(".student_answer").val()),d("body").data(r,b.problem_progress),d("body").data(s,b.used_attempts_feedback),a.notify("save",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),l.on("keydown",function(){j.text(""),k.text(""),c("unanswered")})} //# sourceMappingURL=view.js.min.js.map diff --git a/freetextresponse/public/view.js.min.js.map b/freetextresponse/public/view.js.min.js.map index 72dbb27e..c7ad14c0 100644 --- a/freetextresponse/public/view.js.min.js.map +++ b/freetextresponse/public/view.js.min.js.map @@ -1 +1 @@ -{"version":3,"file":"view.js.min.js","sources":["view.js"],"names":["FreeTextResponseView","runtime","element","setClassForTextAreaParent","new_class","textareaParent","removeClass","addClass","$","window","jQuery","$element","buttonSubmit","find","buttonSave","usedAttemptsFeedback","problemProgress","submissionReceivedMessage","userAlertMessage","textareaStudentAnswer","parent","url","handlerUrl","urlSave","notify","console","log","arguments","on","text","dataset","checking","message","state","ajax","type","data","JSON","stringify","student_answer","val","success","response","used_attempts_feedback","nodisplay_class","problem_progress","submitted_message","value","user_alert","indicator_class","error"],"mappings":"AAAA,QAASA,sBAAqBC,EAASC,GACnC,YAqBA,SAASC,GAA0BC,GAC/BC,EAAeC,YAAY,WAC3BD,EAAeC,YAAY,aAC3BD,EAAeC,YAAY,cAC3BD,EAAeE,SAASH,GAvB5B,GAAII,GAAIC,OAAOC,OACXC,EAAWH,EAAEN,GACbU,EAAeD,EAASE,KAAK,iBAC7BC,EAAaH,EAASE,KAAK,SAC3BE,EAAuBJ,EAASE,KAAK,mCACrCG,EAAkBL,EAASE,KAAK,qBAChCI,EAA4BN,EAASE,KAAK,wBAC1CK,EAAmBP,EAASE,KAAK,eACjCM,EAAwBR,EAASE,KAAK,mBACtCR,EAAiBc,EAAsBC,SAEvCC,EAAMpB,EAAQqB,WAAWpB,EAAS,UAClCqB,EAAUtB,EAAQqB,WAAWpB,EAAS,eAG1CD,GAAQuB,OAASvB,EAAQuB,QAAU,WAC/BC,QAAQC,IAAI,0BAA2BC,YAU3Cf,EAAagB,GAAG,QAAS,WA6BrB,MA5BAhB,GAAaiB,KAAKjB,EAAa,GAAGkB,QAAQC,UAC1C9B,EAAQuB,OAAO,UACXQ,QAAS,gBACTC,MAAO,UAEXzB,EAAE0B,KAAKb,GACHc,KAAM,OACNC,KAAMC,KAAKC,WACPC,eAAkB5B,EAASE,KAAK,mBAAmB2B,QAEvDC,QAAS,SAA+BC,GACpC3B,EAAqBc,KAAKa,EAASC,wBACnC/B,EAAaL,SAASmC,EAASE,iBAC/B5B,EAAgBa,KAAKa,EAASG,kBAC9B5B,EAA0BY,KAAKa,EAASI,mBACxClC,EAAaiB,KAAKjB,EAAa,GAAGkB,QAAQiB,OAC1C7B,EAAiBW,KAAKa,EAASM,YAC/BlC,EAAWP,SAASmC,EAASE,iBAC7BzC,EAA0BuC,EAASO,iBAEnChD,EAAQuB,OAAO,UACXS,MAAO,SAGfiB,MAAO,WACHjD,EAAQuB,OAAO,gBAGhB,IAGXV,EAAWc,GAAG,QAAS,WA4BnB,MA3BAd,GAAWe,KAAKf,EAAW,GAAGgB,QAAQC,UACtC9B,EAAQuB,OAAO,QACXQ,QAAS,YACTC,MAAO,UAEXzB,EAAE0B,KAAKX,GACHY,KAAM,OACNC,KAAMC,KAAKC,WACPC,eAAkB5B,EAASE,KAAK,mBAAmB2B,QAEvDC,QAAS,SAA6BC,GAClC9B,EAAaL,SAASmC,EAASE,iBAC/B9B,EAAWP,SAASmC,EAASE,iBAC7B7B,EAAqBc,KAAKa,EAASC,wBACnC3B,EAAgBa,KAAKa,EAASG,kBAC9B5B,EAA0BY,KAAKa,EAASI,mBACxChC,EAAWe,KAAKf,EAAW,GAAGgB,QAAQiB,OACtC7B,EAAiBW,KAAKa,EAASM,YAE/B/C,EAAQuB,OAAO,QACXS,MAAO,SAGfiB,MAAO,WACHjD,EAAQuB,OAAO,gBAGhB,IAGXL,EAAsBS,GAAG,UAAW,WAEhCX,EAA0BY,KAAK,IAC/BX,EAAiBW,KAAK,IACtB1B,EAA0B"} \ No newline at end of file +{"version":3,"file":"view.js.min.js","sources":["view.js"],"names":["FreeTextResponseView","runtime","element","setClassForTextAreaParent","new_class","textareaParent","removeClass","addClass","$","window","jQuery","$element","buttonSubmit","find","buttonSave","usedAttemptsFeedback","problemProgress","submissionReceivedMessage","userAlertMessage","textareaStudentAnswer","parent","url","handlerUrl","urlSave","xblockId","attr","cachedAnswerId","problemProgressId","usedAttemptsFeedbackId","undefined","data","text","notify","console","log","arguments","on","dataset","checking","message","state","ajax","type","JSON","stringify","student_answer","val","success","response","used_attempts_feedback","nodisplay_class","problem_progress","submitted_message","value","user_alert","indicator_class","error"],"mappings":"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"} \ No newline at end of file