diff --git a/report/progress/amd/build/completion_override.min.js b/report/progress/amd/build/completion_override.min.js index 7cc1a4f6c8d..b377ace109d 100644 --- a/report/progress/amd/build/completion_override.min.js +++ b/report/progress/amd/build/completion_override.min.js @@ -6,6 +6,6 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @since 3.1 */ -define("report_progress/completion_override",["jquery","core/ajax","core/str","core/modal_factory","core/modal_events","core/notification","core/custom_interaction_events","core/templates"],(function($,Ajax,Str,ModalFactory,ModalEvents,Notification,CustomEvents,Templates){var userFullName,triggerElement,userConfirm=function(e,data){data.originalEvent.preventDefault(),data.originalEvent.stopPropagation(),e.preventDefault(),e.stopPropagation();var elemData=(triggerElement=$(e.currentTarget)).data("changecompl").split("-"),override={userid:elemData[0],cmid:elemData[1],newstate:elemData[2]},newStateStr=1==override.newstate?"completion-y":"completion-n";Str.get_strings([{key:newStateStr,component:"completion"}]).then((function(strings){return Str.get_strings([{key:"confirm",component:"moodle"},{key:"areyousureoverridecompletion",component:"completion",param:strings[0]}])})).then((function(strings){return ModalFactory.create({type:ModalFactory.types.SAVE_CANCEL,title:strings[0],body:strings[1]})})).then((function(modal){modal.getRoot().on(ModalEvents.save,(function(){!function(override){Templates.render("core/loading",{}).then((function(html){return triggerElement.append(html),Ajax.call([{methodname:"core_completion_override_activity_completion_status",args:override}])[0]})).then((function(results){var completionState=results.state>0?1:0,tooltipKey=completionState?"completion-y-override":"completion-n-override";Str.get_string(tooltipKey,"completion",userFullName).then((function(stateString){var params={state:stateString,date:"",user:triggerElement.attr("data-userfullname"),activity:triggerElement.attr("data-activityname")};return Str.get_string("progress-title","completion",params)})).then((function(titleString){var tracking,completionTracking=triggerElement.attr("data-completiontracking");return Templates.renderPix((tracking=completionTracking,completionState>0?"i/completion-"+tracking+"-y-override":"i/completion-"+tracking+"-n-override"),"core",titleString)})).then((function(html){var oppositeState=completionState>0?0:1;triggerElement.find(".loading-icon").remove(),triggerElement.data("changecompl",override.userid+"-"+override.cmid+"-"+oppositeState),triggerElement.attr("data-changecompl",override.userid+"-"+override.cmid+"-"+oppositeState),triggerElement.children("img").replaceWith(html)})).catch(Notification.exception)})).catch(Notification.exception)}(override)})),modal.getRoot().on(ModalEvents.hidden,(function(){triggerElement.focus(),modal.destroy()})),modal.show()})).catch(Notification.exception)};return{init:function(fullName){userFullName=fullName,$("#completion-progress a.changecompl").each((function(index,element){CustomEvents.define(element,[CustomEvents.events.activate])})),$("#completion-progress").on(CustomEvents.events.activate,"a.changecompl",(function(e,data){userConfirm(e,data)}))}}})); +define("report_progress/completion_override",["jquery","core/ajax","core/str","core/modal_factory","core/modal_events","core/notification","core/custom_interaction_events","core/templates","core/pending"],(function($,Ajax,Str,ModalFactory,ModalEvents,Notification,CustomEvents,Templates,Pending){var userFullName,triggerElement,userConfirm=function(e,data){data.originalEvent.preventDefault(),data.originalEvent.stopPropagation(),e.preventDefault(),e.stopPropagation();var elemData=(triggerElement=$(e.currentTarget)).data("changecompl").split("-"),override={userid:elemData[0],cmid:elemData[1],newstate:elemData[2]},newStateStr=1==override.newstate?"completion-y":"completion-n";Str.get_strings([{key:newStateStr,component:"completion"}]).then((function(strings){return Str.get_strings([{key:"confirm",component:"moodle"},{key:"areyousureoverridecompletion",component:"completion",param:strings[0]}])})).then((function(strings){return ModalFactory.create({type:ModalFactory.types.SAVE_CANCEL,title:strings[0],body:strings[1]})})).then((function(modal){modal.getRoot().on(ModalEvents.save,(function(){!function(override){const pendingPromise=new Pending("report_progress/compeletion_override/setOverride");Templates.render("core/loading",{}).then((function(html){return triggerElement.append(html),Ajax.call([{methodname:"core_completion_override_activity_completion_status",args:override}])[0]})).then((function(results){var completionState=results.state>0?1:0,tooltipKey=completionState?"completion-y-override":"completion-n-override";Str.get_string(tooltipKey,"completion",userFullName).then((function(stateString){var params={state:stateString,date:"",user:triggerElement.attr("data-userfullname"),activity:triggerElement.attr("data-activityname")};return Str.get_string("progress-title","completion",params)})).then((function(titleString){var tracking,completionTracking=triggerElement.attr("data-completiontracking");return Templates.renderPix((tracking=completionTracking,completionState>0?"i/completion-"+tracking+"-y-override":"i/completion-"+tracking+"-n-override"),"core",titleString)})).then((function(html){var oppositeState=completionState>0?0:1;triggerElement.find(".loading-icon").remove(),triggerElement.data("changecompl",override.userid+"-"+override.cmid+"-"+oppositeState),triggerElement.attr("data-changecompl",override.userid+"-"+override.cmid+"-"+oppositeState),triggerElement.children("img").replaceWith(html)})).catch(Notification.exception)})).then((()=>{pendingPromise.resolve()})).catch(Notification.exception)}(override)})),modal.getRoot().on(ModalEvents.hidden,(function(){triggerElement.focus(),modal.destroy()})),modal.show()})).catch(Notification.exception)};return{init:function(fullName){userFullName=fullName,$("#completion-progress a.changecompl").each((function(index,element){CustomEvents.define(element,[CustomEvents.events.activate])})),$("#completion-progress").on(CustomEvents.events.activate,"a.changecompl",(function(e,data){userConfirm(e,data)}))}}})); //# sourceMappingURL=completion_override.min.js.map \ No newline at end of file diff --git a/report/progress/amd/build/completion_override.min.js.map b/report/progress/amd/build/completion_override.min.js.map index b53f70086a5..363b86de0f1 100644 --- a/report/progress/amd/build/completion_override.min.js.map +++ b/report/progress/amd/build/completion_override.min.js.map @@ -1 +1 @@ -{"version":3,"file":"completion_override.min.js","sources":["../src/completion_override.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * AMD module to handle overriding activity completion status.\n *\n * @module report_progress/completion_override\n * @copyright 2016 onwards Eiz Eddin Al Katrib \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 3.1\n */\ndefine(['jquery', 'core/ajax', 'core/str', 'core/modal_factory', 'core/modal_events', 'core/notification',\n 'core/custom_interaction_events', 'core/templates'],\n function($, Ajax, Str, ModalFactory, ModalEvents, Notification, CustomEvents, Templates) {\n\n /**\n * @var {String} the full name of the current user.\n * @private\n */\n var userFullName;\n\n /**\n * @var {JQuery} JQuery object containing the element (completion link) that was most recently activated.\n * @private\n */\n var triggerElement;\n\n /**\n * Helper function to get the pix icon key based on the completion state.\n * @method getIconDescriptorFromState\n * @param {number} state The current completion state.\n * @param {string} tracking The completion tracking type, either 'manual' or 'auto'.\n * @return {string} the key for the respective icon.\n * @private\n */\n var getIconKeyFromState = function(state, tracking) {\n return state > 0 ? 'i/completion-' + tracking + '-y-override' : 'i/completion-' + tracking + '-n-override';\n };\n\n /**\n * Handles the confirmation of an override change, calling the web service to update it.\n * @method setOverride\n * @param {Object} override the override data\n * @private\n */\n var setOverride = function(override) {\n // Generate a loading spinner while we're working.\n Templates.render('core/loading', {}).then(function(html) {\n // Append the loading spinner to the trigger element.\n triggerElement.append(html);\n\n // Update the completion status override.\n return Ajax.call([{\n methodname: 'core_completion_override_activity_completion_status',\n args: override\n }])[0];\n }).then(function(results) {\n var completionState = (results.state > 0) ? 1 : 0;\n\n // Now, build the new title string, get the new icon, and update the DOM.\n var tooltipKey = completionState ? 'completion-y-override' : 'completion-n-override';\n Str.get_string(tooltipKey, 'completion', userFullName).then(function(stateString) {\n var params = {\n state: stateString,\n date: '',\n user: triggerElement.attr('data-userfullname'),\n activity: triggerElement.attr('data-activityname')\n };\n return Str.get_string('progress-title', 'completion', params);\n }).then(function(titleString) {\n var completionTracking = triggerElement.attr('data-completiontracking');\n return Templates.renderPix(getIconKeyFromState(completionState, completionTracking), 'core', titleString);\n }).then(function(html) {\n var oppositeState = completionState > 0 ? 0 : 1;\n triggerElement.find('.loading-icon').remove();\n triggerElement.data('changecompl', override.userid + '-' + override.cmid + '-' + oppositeState);\n triggerElement.attr('data-changecompl', override.userid + '-' + override.cmid + '-' + oppositeState);\n triggerElement.children(\"img\").replaceWith(html);\n return;\n }).catch(Notification.exception);\n\n return;\n }).catch(Notification.exception);\n };\n\n /**\n * Handler for activation of a completion status button element.\n * @method userConfirm\n * @param {Event} e the CustomEvents event (CustomEvents.events.activate in this case)\n * @param {Object} data an object containing the original event (click, keydown, etc.).\n * @private\n */\n var userConfirm = function(e, data) {\n data.originalEvent.preventDefault();\n data.originalEvent.stopPropagation();\n e.preventDefault();\n e.stopPropagation();\n\n triggerElement = $(e.currentTarget);\n var elemData = triggerElement.data('changecompl').split('-');\n var override = {\n userid: elemData[0],\n cmid: elemData[1],\n newstate: elemData[2]\n };\n var newStateStr = (override.newstate == 1) ? 'completion-y' : 'completion-n';\n\n Str.get_strings([\n {key: newStateStr, component: 'completion'}\n ]).then(function(strings) {\n return Str.get_strings([\n {key: 'confirm', component: 'moodle'},\n {key: 'areyousureoverridecompletion', component: 'completion', param: strings[0]}\n ]);\n }).then(function(strings) {\n // Create a save/cancel modal.\n return ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL,\n title: strings[0],\n body: strings[1],\n });\n }).then(function(modal) {\n // Now set up the handlers for the confirmation or cancellation of the modal, and show it.\n\n // Confirmation only.\n modal.getRoot().on(ModalEvents.save, function() {\n setOverride(override);\n });\n\n // Confirming, closing, or cancelling will destroy the modal and return focus to the trigger element.\n modal.getRoot().on(ModalEvents.hidden, function() {\n triggerElement.focus();\n modal.destroy();\n });\n\n // Display.\n modal.show();\n return;\n }).catch(Notification.exception);\n };\n\n /**\n * Init this module which allows activity completion state to be changed via ajax.\n * @method init\n * @param {string} fullName The current user's full name.\n * @private\n */\n var init = function(fullName) {\n userFullName = fullName;\n\n // Register the click, space and enter events as activators for the trigger element.\n $('#completion-progress a.changecompl').each(function(index, element) {\n CustomEvents.define(element, [CustomEvents.events.activate]);\n });\n\n // Set the handler on the parent element (the table), but filter so the callback is only called for type children\n // having the '.changecompl' class. The element can then be accessed in the callback via e.currentTarget.\n $('#completion-progress').on(CustomEvents.events.activate, \"a.changecompl\", function(e, data) {\n userConfirm(e, data);\n });\n };\n\n return /** @alias module:report_progress/completion_override */ {\n init: init\n };\n });\n"],"names":["define","$","Ajax","Str","ModalFactory","ModalEvents","Notification","CustomEvents","Templates","userFullName","triggerElement","userConfirm","e","data","originalEvent","preventDefault","stopPropagation","elemData","currentTarget","split","override","userid","cmid","newstate","newStateStr","get_strings","key","component","then","strings","param","create","type","types","SAVE_CANCEL","title","body","modal","getRoot","on","save","render","html","append","call","methodname","args","results","completionState","state","tooltipKey","get_string","stateString","params","date","user","attr","activity","titleString","tracking","completionTracking","renderPix","oppositeState","find","remove","children","replaceWith","catch","exception","setOverride","hidden","focus","destroy","show","init","fullName","each","index","element","events","activate"],"mappings":";;;;;;;;AAuBAA,6CAAO,CAAC,SAAU,YAAa,WAAY,qBAAsB,oBAAqB,oBAC9E,iCAAkC,mBACtC,SAASC,EAAGC,KAAMC,IAAKC,aAAcC,YAAaC,aAAcC,aAAcC,eAMtEC,aAMAC,eAmEAC,YAAc,SAASC,EAAGC,MAC1BA,KAAKC,cAAcC,iBACnBF,KAAKC,cAAcE,kBACnBJ,EAAEG,iBACFH,EAAEI,sBAGEC,UADJP,eAAiBT,EAAEW,EAAEM,gBACSL,KAAK,eAAeM,MAAM,KACpDC,SAAW,CACXC,OAAQJ,SAAS,GACjBK,KAAML,SAAS,GACfM,SAAUN,SAAS,IAEnBO,YAAoC,GAArBJ,SAASG,SAAiB,eAAiB,eAE9DpB,IAAIsB,YAAY,CACZ,CAACC,IAAKF,YAAaG,UAAW,gBAC/BC,MAAK,SAASC,gBACN1B,IAAIsB,YAAY,CACnB,CAACC,IAAK,UAAWC,UAAW,UAC5B,CAACD,IAAK,+BAAgCC,UAAW,aAAcG,MAAOD,QAAQ,SAEnFD,MAAK,SAASC,gBAENzB,aAAa2B,OAAO,CACvBC,KAAM5B,aAAa6B,MAAMC,YACzBC,MAAON,QAAQ,GACfO,KAAMP,QAAQ,QAEnBD,MAAK,SAASS,OAIbA,MAAMC,UAAUC,GAAGlC,YAAYmC,MAAM,YAhF3B,SAASpB,UAEvBZ,UAAUiC,OAAO,eAAgB,IAAIb,MAAK,SAASc,aAE/ChC,eAAeiC,OAAOD,MAGfxC,KAAK0C,KAAK,CAAC,CACdC,WAAY,sDACZC,KAAM1B,YACN,MACLQ,MAAK,SAASmB,aACTC,gBAAmBD,QAAQE,MAAQ,EAAK,EAAI,EAG5CC,WAAaF,gBAAkB,wBAA0B,wBAC7D7C,IAAIgD,WAAWD,WAAY,aAAczC,cAAcmB,MAAK,SAASwB,iBAC7DC,OAAS,CACTJ,MAAOG,YACPE,KAAM,GACNC,KAAM7C,eAAe8C,KAAK,qBAC1BC,SAAU/C,eAAe8C,KAAK,6BAE3BrD,IAAIgD,WAAW,iBAAkB,aAAcE,WACvDzB,MAAK,SAAS8B,iBAlCiBC,SAmC1BC,mBAAqBlD,eAAe8C,KAAK,kCACtChD,UAAUqD,WApCaF,SAoCkCC,mBAAjBZ,gBAnCxC,EAAI,gBAAkBW,SAAW,cAAgB,gBAAkBA,SAAW,eAmCA,OAAQD,gBAC9F9B,MAAK,SAASc,UACToB,cAAgBd,gBAAkB,EAAI,EAAI,EAC9CtC,eAAeqD,KAAK,iBAAiBC,SACrCtD,eAAeG,KAAK,cAAeO,SAASC,OAAS,IAAMD,SAASE,KAAO,IAAMwC,eACjFpD,eAAe8C,KAAK,mBAAoBpC,SAASC,OAAS,IAAMD,SAASE,KAAO,IAAMwC,eACtFpD,eAAeuD,SAAS,OAAOC,YAAYxB,SAE5CyB,MAAM7D,aAAa8D,cAGvBD,MAAM7D,aAAa8D,WA4CdC,CAAYjD,aAIhBiB,MAAMC,UAAUC,GAAGlC,YAAYiE,QAAQ,WACnC5D,eAAe6D,QACflC,MAAMmC,aAIVnC,MAAMoC,UAEPN,MAAM7D,aAAa8D,kBAwBsC,CAC5DM,KAhBO,SAASC,UAChBlE,aAAekE,SAGf1E,EAAE,sCAAsC2E,MAAK,SAASC,MAAOC,SACzDvE,aAAaP,OAAO8E,QAAS,CAACvE,aAAawE,OAAOC,cAKtD/E,EAAE,wBAAwBsC,GAAGhC,aAAawE,OAAOC,SAAU,iBAAiB,SAASpE,EAAGC,MACpFF,YAAYC,EAAGC"} \ No newline at end of file +{"version":3,"file":"completion_override.min.js","sources":["../src/completion_override.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * AMD module to handle overriding activity completion status.\n *\n * @module report_progress/completion_override\n * @copyright 2016 onwards Eiz Eddin Al Katrib \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 3.1\n */\ndefine(['jquery', 'core/ajax', 'core/str', 'core/modal_factory', 'core/modal_events', 'core/notification',\n 'core/custom_interaction_events', 'core/templates', 'core/pending'],\n function($, Ajax, Str, ModalFactory, ModalEvents, Notification, CustomEvents, Templates, Pending) {\n\n /**\n * @var {String} the full name of the current user.\n * @private\n */\n var userFullName;\n\n /**\n * @var {JQuery} JQuery object containing the element (completion link) that was most recently activated.\n * @private\n */\n var triggerElement;\n\n /**\n * Helper function to get the pix icon key based on the completion state.\n * @method getIconDescriptorFromState\n * @param {number} state The current completion state.\n * @param {string} tracking The completion tracking type, either 'manual' or 'auto'.\n * @return {string} the key for the respective icon.\n * @private\n */\n var getIconKeyFromState = function(state, tracking) {\n return state > 0 ? 'i/completion-' + tracking + '-y-override' : 'i/completion-' + tracking + '-n-override';\n };\n\n /**\n * Handles the confirmation of an override change, calling the web service to update it.\n * @method setOverride\n * @param {Object} override the override data\n * @private\n */\n var setOverride = function(override) {\n const pendingPromise = new Pending('report_progress/compeletion_override/setOverride');\n // Generate a loading spinner while we're working.\n Templates.render('core/loading', {}).then(function(html) {\n // Append the loading spinner to the trigger element.\n triggerElement.append(html);\n\n // Update the completion status override.\n return Ajax.call([{\n methodname: 'core_completion_override_activity_completion_status',\n args: override\n }])[0];\n }).then(function(results) {\n var completionState = (results.state > 0) ? 1 : 0;\n\n // Now, build the new title string, get the new icon, and update the DOM.\n var tooltipKey = completionState ? 'completion-y-override' : 'completion-n-override';\n Str.get_string(tooltipKey, 'completion', userFullName).then(function(stateString) {\n var params = {\n state: stateString,\n date: '',\n user: triggerElement.attr('data-userfullname'),\n activity: triggerElement.attr('data-activityname')\n };\n return Str.get_string('progress-title', 'completion', params);\n }).then(function(titleString) {\n var completionTracking = triggerElement.attr('data-completiontracking');\n return Templates.renderPix(getIconKeyFromState(completionState, completionTracking), 'core', titleString);\n }).then(function(html) {\n var oppositeState = completionState > 0 ? 0 : 1;\n triggerElement.find('.loading-icon').remove();\n triggerElement.data('changecompl', override.userid + '-' + override.cmid + '-' + oppositeState);\n triggerElement.attr('data-changecompl', override.userid + '-' + override.cmid + '-' + oppositeState);\n triggerElement.children(\"img\").replaceWith(html);\n return;\n }).catch(Notification.exception);\n\n return;\n })\n .then(() => {\n pendingPromise.resolve();\n return;\n }).catch(Notification.exception);\n };\n\n /**\n * Handler for activation of a completion status button element.\n * @method userConfirm\n * @param {Event} e the CustomEvents event (CustomEvents.events.activate in this case)\n * @param {Object} data an object containing the original event (click, keydown, etc.).\n * @private\n */\n var userConfirm = function(e, data) {\n data.originalEvent.preventDefault();\n data.originalEvent.stopPropagation();\n e.preventDefault();\n e.stopPropagation();\n\n triggerElement = $(e.currentTarget);\n var elemData = triggerElement.data('changecompl').split('-');\n var override = {\n userid: elemData[0],\n cmid: elemData[1],\n newstate: elemData[2]\n };\n var newStateStr = (override.newstate == 1) ? 'completion-y' : 'completion-n';\n\n Str.get_strings([\n {key: newStateStr, component: 'completion'}\n ]).then(function(strings) {\n return Str.get_strings([\n {key: 'confirm', component: 'moodle'},\n {key: 'areyousureoverridecompletion', component: 'completion', param: strings[0]}\n ]);\n }).then(function(strings) {\n // Create a save/cancel modal.\n return ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL,\n title: strings[0],\n body: strings[1],\n });\n }).then(function(modal) {\n // Now set up the handlers for the confirmation or cancellation of the modal, and show it.\n\n // Confirmation only.\n modal.getRoot().on(ModalEvents.save, function() {\n setOverride(override);\n });\n\n // Confirming, closing, or cancelling will destroy the modal and return focus to the trigger element.\n modal.getRoot().on(ModalEvents.hidden, function() {\n triggerElement.focus();\n modal.destroy();\n });\n\n // Display.\n modal.show();\n return;\n }).catch(Notification.exception);\n };\n\n /**\n * Init this module which allows activity completion state to be changed via ajax.\n * @method init\n * @param {string} fullName The current user's full name.\n * @private\n */\n var init = function(fullName) {\n userFullName = fullName;\n\n // Register the click, space and enter events as activators for the trigger element.\n $('#completion-progress a.changecompl').each(function(index, element) {\n CustomEvents.define(element, [CustomEvents.events.activate]);\n });\n\n // Set the handler on the parent element (the table), but filter so the callback is only called for type children\n // having the '.changecompl' class. The element can then be accessed in the callback via e.currentTarget.\n $('#completion-progress').on(CustomEvents.events.activate, \"a.changecompl\", function(e, data) {\n userConfirm(e, data);\n });\n };\n\n return /** @alias module:report_progress/completion_override */ {\n init: init\n };\n });\n"],"names":["define","$","Ajax","Str","ModalFactory","ModalEvents","Notification","CustomEvents","Templates","Pending","userFullName","triggerElement","userConfirm","e","data","originalEvent","preventDefault","stopPropagation","elemData","currentTarget","split","override","userid","cmid","newstate","newStateStr","get_strings","key","component","then","strings","param","create","type","types","SAVE_CANCEL","title","body","modal","getRoot","on","save","pendingPromise","render","html","append","call","methodname","args","results","completionState","state","tooltipKey","get_string","stateString","params","date","user","attr","activity","titleString","tracking","completionTracking","renderPix","oppositeState","find","remove","children","replaceWith","catch","exception","resolve","setOverride","hidden","focus","destroy","show","init","fullName","each","index","element","events","activate"],"mappings":";;;;;;;;AAuBAA,6CAAO,CAAC,SAAU,YAAa,WAAY,qBAAsB,oBAAqB,oBAC9E,iCAAkC,iBAAkB,iBACxD,SAASC,EAAGC,KAAMC,IAAKC,aAAcC,YAAaC,aAAcC,aAAcC,UAAWC,aAMjFC,aAMAC,eAwEAC,YAAc,SAASC,EAAGC,MAC1BA,KAAKC,cAAcC,iBACnBF,KAAKC,cAAcE,kBACnBJ,EAAEG,iBACFH,EAAEI,sBAGEC,UADJP,eAAiBV,EAAEY,EAAEM,gBACSL,KAAK,eAAeM,MAAM,KACpDC,SAAW,CACXC,OAAQJ,SAAS,GACjBK,KAAML,SAAS,GACfM,SAAUN,SAAS,IAEnBO,YAAoC,GAArBJ,SAASG,SAAiB,eAAiB,eAE9DrB,IAAIuB,YAAY,CACZ,CAACC,IAAKF,YAAaG,UAAW,gBAC/BC,MAAK,SAASC,gBACN3B,IAAIuB,YAAY,CACnB,CAACC,IAAK,UAAWC,UAAW,UAC5B,CAACD,IAAK,+BAAgCC,UAAW,aAAcG,MAAOD,QAAQ,SAEnFD,MAAK,SAASC,gBAEN1B,aAAa4B,OAAO,CACvBC,KAAM7B,aAAa8B,MAAMC,YACzBC,MAAON,QAAQ,GACfO,KAAMP,QAAQ,QAEnBD,MAAK,SAASS,OAIbA,MAAMC,UAAUC,GAAGnC,YAAYoC,MAAM,YArF3B,SAASpB,gBACjBqB,eAAiB,IAAIjC,QAAQ,oDAEnCD,UAAUmC,OAAO,eAAgB,IAAId,MAAK,SAASe,aAE/CjC,eAAekC,OAAOD,MAGf1C,KAAK4C,KAAK,CAAC,CACdC,WAAY,sDACZC,KAAM3B,YACN,MACLQ,MAAK,SAASoB,aACTC,gBAAmBD,QAAQE,MAAQ,EAAK,EAAI,EAG5CC,WAAaF,gBAAkB,wBAA0B,wBAC7D/C,IAAIkD,WAAWD,WAAY,aAAc1C,cAAcmB,MAAK,SAASyB,iBAC7DC,OAAS,CACTJ,MAAOG,YACPE,KAAM,GACNC,KAAM9C,eAAe+C,KAAK,qBAC1BC,SAAUhD,eAAe+C,KAAK,6BAE3BvD,IAAIkD,WAAW,iBAAkB,aAAcE,WACvD1B,MAAK,SAAS+B,iBAnCiBC,SAoC1BC,mBAAqBnD,eAAe+C,KAAK,kCACtClD,UAAUuD,WArCaF,SAqCkCC,mBAAjBZ,gBApCxC,EAAI,gBAAkBW,SAAW,cAAgB,gBAAkBA,SAAW,eAoCA,OAAQD,gBAC9F/B,MAAK,SAASe,UACToB,cAAgBd,gBAAkB,EAAI,EAAI,EAC9CvC,eAAesD,KAAK,iBAAiBC,SACrCvD,eAAeG,KAAK,cAAeO,SAASC,OAAS,IAAMD,SAASE,KAAO,IAAMyC,eACjFrD,eAAe+C,KAAK,mBAAoBrC,SAASC,OAAS,IAAMD,SAASE,KAAO,IAAMyC,eACtFrD,eAAewD,SAAS,OAAOC,YAAYxB,SAE5CyB,MAAM/D,aAAagE,cAIzBzC,MAAK,KACFa,eAAe6B,aAEhBF,MAAM/D,aAAagE,WA4CdE,CAAYnD,aAIhBiB,MAAMC,UAAUC,GAAGnC,YAAYoE,QAAQ,WACnC9D,eAAe+D,QACfpC,MAAMqC,aAIVrC,MAAMsC,UAEPP,MAAM/D,aAAagE,kBAwBsC,CAC5DO,KAhBO,SAASC,UAChBpE,aAAeoE,SAGf7E,EAAE,sCAAsC8E,MAAK,SAASC,MAAOC,SACzD1E,aAAaP,OAAOiF,QAAS,CAAC1E,aAAa2E,OAAOC,cAKtDlF,EAAE,wBAAwBuC,GAAGjC,aAAa2E,OAAOC,SAAU,iBAAiB,SAAStE,EAAGC,MACpFF,YAAYC,EAAGC"} \ No newline at end of file diff --git a/report/progress/amd/src/completion_override.js b/report/progress/amd/src/completion_override.js index fb0a4161f26..40855418bfd 100644 --- a/report/progress/amd/src/completion_override.js +++ b/report/progress/amd/src/completion_override.js @@ -22,8 +22,8 @@ * @since 3.1 */ define(['jquery', 'core/ajax', 'core/str', 'core/modal_factory', 'core/modal_events', 'core/notification', - 'core/custom_interaction_events', 'core/templates'], - function($, Ajax, Str, ModalFactory, ModalEvents, Notification, CustomEvents, Templates) { + 'core/custom_interaction_events', 'core/templates', 'core/pending'], + function($, Ajax, Str, ModalFactory, ModalEvents, Notification, CustomEvents, Templates, Pending) { /** * @var {String} the full name of the current user. @@ -56,6 +56,7 @@ define(['jquery', 'core/ajax', 'core/str', 'core/modal_factory', 'core/modal_eve * @private */ var setOverride = function(override) { + const pendingPromise = new Pending('report_progress/compeletion_override/setOverride'); // Generate a loading spinner while we're working. Templates.render('core/loading', {}).then(function(html) { // Append the loading spinner to the trigger element. @@ -91,6 +92,10 @@ define(['jquery', 'core/ajax', 'core/str', 'core/modal_factory', 'core/modal_eve return; }).catch(Notification.exception); + return; + }) + .then(() => { + pendingPromise.resolve(); return; }).catch(Notification.exception); };