xAPI-vle/moodle-logstore_xapi

View on GitHub
amd/build/replayevents.min.js.map

Summary

Maintainability
Test Coverage
{"version":3,"file":"replayevents.min.js","sources":["../src/replayevents.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 <http://www.gnu.org/licenses/>.\n/*\n * @package logstore_xapi\n * @copyright 2020 Learning Pool Ltd <http://learningpool.com>\n * @author Záborski László <laszlo.zaborski@learningpool.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\ndefine(['core/str', 'core/config', 'core/notification', 'core/templates', 'jquery', 'jqueryui'],\n function(str, mdlcfg, notification, templates, $) {\n\n /**\n * Store a sum.\n */\n var countedEvents = 0;\n\n /**\n * Store allowed resend state.\n */\n var canResend;\n\n /**\n * Store restrict resend state.\n */\n var canNotResend;\n\n /**\n * Selector changed.\n */\n var selectorChanged = false;\n\n /**\n * Name of resend button.\n */\n var labelResendButton = 'resendevents';\n\n /**\n * Title of confirmation window.\n */\n var labelConfirmTitle = 'confirmresendeventsheader';\n\n /**\n * Content of confirmation window.\n */\n var labelConfirmContent = 'confirmresendevents';\n\n /**\n * Store load HTML snippet.\n */\n var loadHTML = '';\n\n /**\n * Store replay HTML snippet.\n */\n var replayHTML = '';\n\n /**\n * Store done HTML snippet.\n */\n var doneHTML = '';\n\n /**\n * Store failed HTML snippet.\n */\n var failedHTML = '';\n\n /**\n * Store jquery selectors.\n */\n var SELECTORS = {\n CHECKBOXES: '#xapierrorlog_form .form-check-input',\n CHECKBOX_DATEFROM: '#xapierrorlog_form #id_datefrom_enabled',\n CHECKBOX_DATETO: '#xapierrorlog_form #id_dateto_enabled',\n FORM: '#xapierrorlog_form .mform',\n PAGE_LINKS: '.pagination .page-item .page-link',\n REPLAY_EVENTS: '#xapierrorlog_data .reply-event',\n SELECTS: '#xapierrorlog_form .custom-select',\n SELECT_CONTEXT: '#xapierrorlog_form #id_eventcontext',\n SELECT_ERRORTYPE: '#xapierrorlog_form #id_errortype',\n SELECT_EVENTNAME: '#xapierrorlog_form #id_eventnames',\n SELECT_RESPONSE: '#xapierrorlog_form #id_response',\n SELECT_DATAFROM: '#xapierrorlog_form #id_datefrom .custom-select',\n SELECT_DATATO: '#xapierrorlog_form #id_dateto .custom-select',\n SEND_BUTTON: '#xapierrorlog_form #id_resendselected',\n SEND_CAN_DO: '#xapierrorlog_form input[name^=\"resend\"]',\n SEND_ID: '#xapierrorlog_form input[name^=\"id\"]',\n SUBMIT_FORM: '#xapierrorlog_form #id_submitbutton',\n };\n\n /**\n * Added prefix to the replay event id.\n */\n var REPLAY_EVENT_ID_PREFIX = 'reply-event-id-';\n\n var replayevents = {\n\n /**\n * Initialisation method called by php js_call_amd()\n * @param {Number} counts The number of events.\n * @param {Number} notResend Whether or not to resend the events.\n * @param {Number} Resend Appears to be unused. TODO: Remove.\n */\n init: function(counts, notResend, Resend) {\n countedEvents = counts;\n canNotResend = notResend;\n canResend = Resend;\n\n // Set resend variable always to not allowed state.\n $(SELECTORS.SEND_CAN_DO).val(canNotResend);\n\n // Set labels.\n if ($(SELECTORS.SEND_ID).val() == 1) {\n labelConfirmTitle = 'confirmsendeventsheader';\n labelConfirmContent = 'confirmsendevents';\n labelResendButton = 'sendevents';\n }\n\n this.registerOnChangeSelectEvents();\n this.updateResend();\n this.registerResendEvent();\n\n this.addReplyEvents();\n },\n\n /**\n * Register reply an individual event listeners.\n */\n addReplyEvents: function() {\n if ($(SELECTORS.REPLAY_EVENTS).length == 0) {\n return;\n }\n this.generateLoadHTML();\n this.generateDoneHTML();\n this.generateFailedHTML();\n this.generateReplayHTML();\n this.registerReplyEventListeners();\n },\n\n /**\n * Register reply an individual event listeners.\n */\n registerReplyEventListeners: function() {\n var self = this;\n\n $(SELECTORS.REPLAY_EVENTS).click(function(e) {\n e.stopPropagation();\n e.preventDefault();\n\n self.disableFormControls();\n self.disablePagination();\n\n var element = $(this);\n\n element.off('click');\n element.addClass('disabled');\n\n var id = element.attr('id');\n var eventId = id.replace(REPLAY_EVENT_ID_PREFIX, '');\n\n self.doReplayEvent(eventId);\n });\n },\n\n /**\n * Replay an individual event using ajax.\n * @param {Number} eventId The event id.\n */\n doReplayEvent: function(eventId) {\n var url = mdlcfg.wwwroot + '/admin/tool/log/store/xapi/ajax/moveback_to_log.php';\n var eventIds = [eventId];\n var self = this;\n var element = $('#' + REPLAY_EVENT_ID_PREFIX + eventId);\n var historical = $(SELECTORS.SEND_ID).val();\n\n element.empty();\n element.append(loadHTML);\n element.removeClass('reply-event');\n\n $.ajax({\n type: \"POST\",\n url: url,\n data: {\n 'events': eventIds,\n 'historical': historical,\n 'sesskey': M.cfg.sesskey\n },\n success: function(data) {\n element.empty();\n\n if (data.success) {\n element.append(doneHTML);\n countedEvents--;\n self.updateResend();\n } else {\n element.append(failedHTML);\n }\n self.enableFormControls();\n self.enablePagination();\n },\n fail: function(ex) {\n notification.exception(ex);\n\n element.empty();\n element.append(failedHTML);\n self.enableFormControls();\n self.enablePagination();\n }\n });\n },\n\n /**\n * Disable resend event when select has been changed.\n */\n registerOnChangeSelectEvents: function() {\n var self = this;\n\n $(SELECTORS.SELECTS).change(function() {\n selectorChanged = true;\n self.disableResend();\n });\n },\n\n /**\n * Register click on resend button.\n */\n registerResendEvent: function() {\n var self = this;\n\n if (selectorChanged) {\n return;\n }\n\n $(SELECTORS.SEND_BUTTON).click(function() {\n self.disableFormControls();\n self.disablePagination();\n\n str.get_strings([\n {\n key: labelConfirmTitle,\n component: 'logstore_xapi'\n },\n {\n key: labelConfirmContent,\n component: 'logstore_xapi',\n param: {\n count: countedEvents\n }\n },\n {\n key: 'yes',\n component: 'moodle'\n },\n {\n key: 'no',\n component: 'moodle'\n }\n ]).done(function(s) {\n notification.confirm(s[0], s[1], s[2], s[3],\n function() {\n $(SELECTORS.SEND_CAN_DO).val(canResend);\n self.enableFormControls();\n $(SELECTORS.FORM).submit();\n },\n function() {\n self.enableFormControls();\n self.enablePagination();\n }\n );\n });\n });\n },\n\n /**\n * Update Send/Resend button label.\n */\n updateResend: function() {\n var element = $(SELECTORS.SEND_BUTTON);\n var self = this;\n\n str.get_strings([\n {\n key: labelResendButton,\n component: 'logstore_xapi',\n param: {\n count: countedEvents\n }\n }\n ]).done(function(resend) {\n element.attr('Value', countedEvents);\n element.html(resend);\n\n if (countedEvents != 0 && selectorChanged === false) {\n self.enableResend();\n }\n });\n },\n\n /**\n * Disable given elements.\n * @param {Array} elements The elements to disable.\n */\n disableElements: function(elements) {\n elements.addClass(\"disabled\");\n elements.attr(\"disabled\", \"disabled\");\n elements.prop('disabled', true);\n },\n\n /**\n * Enable given elements.\n * @param {Array} elements The elements to enable.\n */\n enableElements: function(elements) {\n elements.removeClass(\"disabled\");\n elements.prop('disabled', false);\n elements.removeAttr(\"disabled\");\n },\n\n /**\n * Disable page links.\n */\n disablePagination: function() {\n if ($(SELECTORS.PAGE_LINKS).length == 0) {\n return;\n }\n\n var elements = $(SELECTORS.PAGE_LINKS);\n\n this.disableElements(elements);\n elements.bind('click', function(e) {\n e.preventDefault();\n });\n },\n\n /**\n * Enable page links.\n */\n enablePagination: function() {\n if ($(SELECTORS.PAGE_LINKS).length == 0) {\n return;\n }\n var elements = $(SELECTORS.PAGE_LINKS);\n\n this.enableElements(elements);\n elements.unbind('click');\n },\n\n /**\n * Disable Resend button.\n */\n disableResend: function() {\n this.disableElements($(SELECTORS.SEND_BUTTON));\n },\n\n /**\n * Enable Resend button.\n */\n enableResend: function() {\n this.enableElements($(SELECTORS.SEND_BUTTON));\n },\n\n /**\n * Disable submit form control.\n */\n disableReplyEvents: function() {\n $(SELECTORS.REPLAY_EVENTS).off('click');\n this.disableElements($(SELECTORS.REPLAY_EVENTS));\n },\n\n /**\n * Enable submit form control.\n */\n enableReplyEvents: function() {\n this.enableElements($(SELECTORS.REPLAY_EVENTS));\n this.registerReplyEventListeners();\n },\n\n /**\n * Disable submit form control.\n */\n disableFormSubmit: function() {\n this.disableElements($(SELECTORS.SUBMIT_FORM));\n },\n\n /**\n * Enable submit form control.\n */\n enableFormSubmit: function() {\n this.enableElements($(SELECTORS.SUBMIT_FORM));\n },\n\n /**\n * Disable form selects.\n */\n disableFormSelects: function() {\n this.disableElements($(SELECTORS.SELECTS));\n },\n\n /**\n * Enable form selects.\n */\n enableFormSelects: function() {\n this.enableElements($(SELECTORS.SELECT_ERRORTYPE));\n this.enableElements($(SELECTORS.SELECT_EVENTNAME));\n this.enableElements($(SELECTORS.SELECT_RESPONSE));\n this.enableElements($(SELECTORS.SELECT_CONTEXT));\n\n if ($(SELECTORS.CHECKBOX_DATEFROM).is(':checked')) {\n this.enableElements($(SELECTORS.SELECT_DATAFROM));\n }\n\n if ($(SELECTORS.CHECKBOX_DATETO).is(':checked')) {\n this.enableElements($(SELECTORS.SELECT_DATATO));\n }\n },\n\n /**\n * Disable form checkboxes.\n */\n disableFormCheckboxes: function() {\n this.disableElements($(SELECTORS.CHECKBOXES));\n },\n\n /**\n * Enable form checkboxes.\n */\n enableFormCheckboxes: function() {\n this.enableElements($(SELECTORS.CHECKBOXES));\n },\n\n /**\n * Disable form controls.\n */\n disableFormControls: function() {\n this.disableFormSubmit();\n this.disableFormCheckboxes();\n this.disableFormSelects();\n this.disableResend();\n },\n\n /**\n * Disable form controls.\n */\n enableFormControls: function() {\n this.enableFormCheckboxes();\n this.enableFormSelects();\n this.enableFormSubmit();\n this.enableResend();\n },\n\n /**\n * Generate load icon.\n */\n generateLoadHTML: function() {\n str.get_strings([\n {\n key: 'loadinghelp',\n component: 'moodle'\n }\n ]).done(function(loadStr) {\n loadHTML = '<span aria-hidden=\"true\"' +\n ' class=\"fa fa-spinner fa-spin fa-pulse\"' +\n ' title=\"' + loadStr + '\"></span>' +\n '<span class=\"sr-only\">' + loadStr + '</span>';\n });\n },\n\n /**\n * Generate done icon.\n */\n generateDoneHTML: function() {\n str.get_strings([\n {\n key: 'success',\n component: 'moodle'\n }\n ]).done(function(doneStr) {\n doneHTML = '<span aria-hidden=\"true\"' +\n ' class=\"fa fa-check\"' +\n ' title=\"' + doneStr + '\"></span>' +\n '<span class=\"sr-only\">' + doneStr + '</span>';\n });\n },\n\n /**\n * Generate failed icon.\n */\n generateFailedHTML: function() {\n str.get_strings([\n {\n key: 'failed',\n component: 'logstore_xapi'\n }\n ]).done(function(failedStr) {\n failedHTML = '<span aria-hidden=\"true\"' +\n ' class=\"fa fa-remove\"' +\n ' title=\"' + failedStr + '\"></span>' +\n '<span class=\"sr-only\">' + failedStr + '</span>';\n });\n },\n\n /**\n * Generate replay icon.\n */\n generateReplayHTML: function() {\n str.get_strings([\n {\n key: 'replayevent',\n component: 'logstore_xapi'\n }\n ]).done(function(replayStr) {\n replayHTML = '<span aria-hidden=\"true\"' +\n ' class=\"fa fa-repeat\"' +\n ' title=\"' + replayStr + '\"></span>' +\n '<span class=\"sr-only\">' + replayStr + ' </span>';\n $(SELECTORS.REPLAY_EVENTS).append(replayHTML);\n });\n },\n };\n\n return replayevents;\n});\n\n"],"names":["define","str","mdlcfg","notification","templates","$","canResend","canNotResend","countedEvents","selectorChanged","labelResendButton","labelConfirmTitle","labelConfirmContent","loadHTML","replayHTML","doneHTML","failedHTML","SELECTORS","init","counts","notResend","Resend","val","registerOnChangeSelectEvents","updateResend","registerResendEvent","addReplyEvents","length","generateLoadHTML","generateDoneHTML","generateFailedHTML","generateReplayHTML","registerReplyEventListeners","self","this","click","e","stopPropagation","preventDefault","disableFormControls","disablePagination","element","off","addClass","eventId","attr","replace","doReplayEvent","url","wwwroot","eventIds","historical","empty","append","removeClass","ajax","type","data","M","cfg","sesskey","success","enableFormControls","enablePagination","fail","ex","exception","change","disableResend","get_strings","key","component","param","count","done","s","confirm","submit","resend","html","enableResend","disableElements","elements","prop","enableElements","removeAttr","bind","unbind","disableReplyEvents","enableReplyEvents","disableFormSubmit","enableFormSubmit","disableFormSelects","enableFormSelects","is","disableFormCheckboxes","enableFormCheckboxes","loadStr","doneStr","failedStr","replayStr"],"mappings":";;;;;;AAqBAA,oCAAO,CAAC,WAAY,cAAe,oBAAqB,iBAAkB,SAAU,aAChF,SAASC,IAAKC,OAAQC,aAAcC,UAAWC,OAUvCC,UAKAC,aAVAC,cAAgB,EAehBC,iBAAkB,EAKlBC,kBAAoB,eAKpBC,kBAAoB,4BAKpBC,oBAAsB,sBAKtBC,SAAW,GAKXC,WAAa,GAKbC,SAAW,GAKXC,WAAa,GAKbC,qBACY,uCADZA,4BAEmB,0CAFnBA,0BAGiB,wCAHjBA,eAIM,4BAJNA,qBAKY,oCALZA,wBAMe,kCANfA,kBAOS,oCAPTA,yBAQgB,sCARhBA,2BASkB,mCATlBA,2BAUkB,oCAVlBA,0BAWiB,kCAXjBA,0BAYiB,iDAZjBA,wBAae,+CAbfA,sBAca,wCAdbA,sBAea,2CAfbA,kBAgBS,uCAhBTA,sBAiBa,4CAQE,CAQfC,KAAM,SAASC,OAAQC,UAAWC,QAC9Bb,cAAgBW,OAChBZ,aAAea,UACfd,UAAYe,OAGZhB,EAAEY,uBAAuBK,IAAIf,cAGK,GAA9BF,EAAEY,mBAAmBK,QACrBX,kBAAoB,0BACpBC,oBAAsB,oBACtBF,kBAAoB,mBAGnBa,oCACAC,oBACAC,2BAEAC,kBAMTA,eAAgB,WAC6B,GAArCrB,EAAEY,yBAAyBU,cAG1BC,wBACAC,wBACAC,0BACAC,0BACAC,gCAMTA,4BAA6B,eACrBC,KAAOC,KAEX7B,EAAEY,yBAAyBkB,OAAM,SAASC,GACtCA,EAAEC,kBACFD,EAAEE,iBAEFL,KAAKM,sBACLN,KAAKO,wBAEDC,QAAUpC,EAAE6B,MAEhBO,QAAQC,IAAI,SACZD,QAAQE,SAAS,gBAGbC,QADKH,QAAQI,KAAK,MACLC,QAjEA,kBAiEgC,IAEjDb,KAAKc,cAAcH,aAQ3BG,cAAe,SAASH,aAChBI,IAAM9C,OAAO+C,QAAU,sDACvBC,SAAW,CAACN,SACZX,KAAOC,KACPO,QAAUpC,EAAE,mBAA+BuC,SAC3CO,WAAa9C,EAAEY,mBAAmBK,MAEtCmB,QAAQW,QACRX,QAAQY,OAAOxC,UACf4B,QAAQa,YAAY,eAEpBjD,EAAEkD,KAAK,CACHC,KAAM,OACNR,IAAKA,IACLS,KAAM,QACQP,oBACIC,mBACHO,EAAEC,IAAIC,SAErBC,QAAS,SAASJ,MACdhB,QAAQW,QAEJK,KAAKI,SACLpB,QAAQY,OAAOtC,UACfP,gBACAyB,KAAKT,gBAELiB,QAAQY,OAAOrC,YAEnBiB,KAAK6B,qBACL7B,KAAK8B,oBAETC,KAAM,SAASC,IACX9D,aAAa+D,UAAUD,IAEvBxB,QAAQW,QACRX,QAAQY,OAAOrC,YACfiB,KAAK6B,qBACL7B,KAAK8B,uBAQjBxC,6BAA8B,eACtBU,KAAOC,KAEX7B,EAAEY,mBAAmBkD,QAAO,WACxB1D,iBAAkB,EAClBwB,KAAKmC,oBAOb3C,oBAAqB,eACbQ,KAAOC,KAEPzB,iBAIJJ,EAAEY,uBAAuBkB,OAAM,WAC3BF,KAAKM,sBACLN,KAAKO,oBAELvC,IAAIoE,YAAY,CACZ,CACIC,IAAK3D,kBACL4D,UAAW,iBAEf,CACID,IAAK1D,oBACL2D,UAAW,gBACXC,MAAO,CACHC,MAAOjE,gBAGf,CACI8D,IAAK,MACLC,UAAW,UAEf,CACID,IAAK,KACLC,UAAW,YAEhBG,MAAK,SAASC,GACbxE,aAAayE,QAAQD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IACrC,WACItE,EAAEY,uBAAuBK,IAAIhB,WAC7B2B,KAAK6B,qBACLzD,EAAEY,gBAAgB4D,YAEtB,WACI5C,KAAK6B,qBACL7B,KAAK8B,6BAUzBvC,aAAc,eACNiB,QAAUpC,EAAEY,uBACZgB,KAAOC,KAEXjC,IAAIoE,YAAY,CACZ,CACIC,IAAK5D,kBACL6D,UAAW,gBACXC,MAAO,CACHC,MAAOjE,kBAGhBkE,MAAK,SAASI,QACbrC,QAAQI,KAAK,QAASrC,eACtBiC,QAAQsC,KAAKD,QAEQ,GAAjBtE,gBAA0C,IAApBC,iBACtBwB,KAAK+C,mBASjBC,gBAAiB,SAASC,UACtBA,SAASvC,SAAS,YAClBuC,SAASrC,KAAK,WAAY,YAC1BqC,SAASC,KAAK,YAAY,IAO9BC,eAAgB,SAASF,UACrBA,SAAS5B,YAAY,YACrB4B,SAASC,KAAK,YAAY,GAC1BD,SAASG,WAAW,aAMxB7C,kBAAmB,cACuB,GAAlCnC,EAAEY,sBAAsBU,YAIxBuD,SAAW7E,EAAEY,2BAEZgE,gBAAgBC,UACrBA,SAASI,KAAK,SAAS,SAASlD,GAC5BA,EAAEE,sBAOVyB,iBAAkB,cACwB,GAAlC1D,EAAEY,sBAAsBU,YAGxBuD,SAAW7E,EAAEY,2BAEZmE,eAAeF,UACpBA,SAASK,OAAO,WAMpBnB,cAAe,gBACNa,gBAAgB5E,EAAEY,yBAM3B+D,aAAc,gBACLI,eAAe/E,EAAEY,yBAM1BuE,mBAAoB,WAChBnF,EAAEY,yBAAyByB,IAAI,cAC1BuC,gBAAgB5E,EAAEY,2BAM3BwE,kBAAmB,gBACVL,eAAe/E,EAAEY,+BACjBe,+BAMT0D,kBAAmB,gBACVT,gBAAgB5E,EAAEY,yBAM3B0E,iBAAkB,gBACTP,eAAe/E,EAAEY,yBAM1B2E,mBAAoB,gBACXX,gBAAgB5E,EAAEY,qBAM3B4E,kBAAmB,gBACVT,eAAe/E,EAAEY,kCACjBmE,eAAe/E,EAAEY,kCACjBmE,eAAe/E,EAAEY,iCACjBmE,eAAe/E,EAAEY,2BAElBZ,EAAEY,6BAA6B6E,GAAG,kBAC7BV,eAAe/E,EAAEY,4BAGtBZ,EAAEY,2BAA2B6E,GAAG,kBAC3BV,eAAe/E,EAAEY,2BAO9B8E,sBAAuB,gBACdd,gBAAgB5E,EAAEY,wBAM3B+E,qBAAsB,gBACbZ,eAAe/E,EAAEY,wBAM1BsB,oBAAqB,gBACZmD,yBACAK,6BACAH,0BACAxB,iBAMTN,mBAAoB,gBACXkC,4BACAH,yBACAF,wBACAX,gBAMTpD,iBAAkB,WACd3B,IAAIoE,YAAY,CACZ,CACIC,IAAK,cACLC,UAAW,YAEhBG,MAAK,SAASuB,SACbpF,SAAW,0EAEMoF,QAFN,kCAGoBA,QAAU,cAOjDpE,iBAAkB,WACd5B,IAAIoE,YAAY,CACZ,CACIC,IAAK,UACLC,UAAW,YAEhBG,MAAK,SAASwB,SACbnF,SAAW,uDAEMmF,QAFN,kCAGoBA,QAAU,cAOjDpE,mBAAoB,WAChB7B,IAAIoE,YAAY,CACZ,CACIC,IAAK,SACLC,UAAW,mBAEhBG,MAAK,SAASyB,WACbnF,WAAa,wDAEImF,UAFJ,kCAGkBA,UAAY,cAOnDpE,mBAAoB,WAChB9B,IAAIoE,YAAY,CACZ,CACIC,IAAK,cACLC,UAAW,mBAEhBG,MAAK,SAAS0B,WACbtF,WAAa,wDAEIsF,UAFJ,kCAGkBA,UAAY,WAC3C/F,EAAEY,yBAAyBoC,OAAOvC"}