From 268157743f644dea137a577aec5da9f113cc1f57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikel=20Mart=C3=ADn?= Date: Mon, 29 Nov 2021 11:59:36 +0100 Subject: [PATCH] MDL-73116 reportbuilder: Use triggerElement parameter to return focus --- reportbuilder/amd/build/audience.min.js | 2 +- reportbuilder/amd/build/audience.min.js.map | 2 +- reportbuilder/amd/build/local/editor/columns.min.js | 2 +- .../amd/build/local/editor/columns.min.js.map | 2 +- .../amd/build/local/editor/conditions.min.js | 2 +- .../amd/build/local/editor/conditions.min.js.map | 2 +- reportbuilder/amd/build/local/editor/filters.min.js | 2 +- .../amd/build/local/editor/filters.min.js.map | 2 +- reportbuilder/amd/build/reports_list.min.js | 2 +- reportbuilder/amd/build/reports_list.min.js.map | 2 +- reportbuilder/amd/build/schedules.min.js | 2 +- reportbuilder/amd/build/schedules.min.js.map | 2 +- reportbuilder/amd/src/audience.js | 12 ++++++------ reportbuilder/amd/src/local/editor/columns.js | 3 ++- reportbuilder/amd/src/local/editor/conditions.js | 6 ++++-- reportbuilder/amd/src/local/editor/filters.js | 3 ++- reportbuilder/amd/src/reports_list.js | 5 +++-- reportbuilder/amd/src/schedules.js | 6 ++++-- 18 files changed, 33 insertions(+), 26 deletions(-) diff --git a/reportbuilder/amd/build/audience.min.js b/reportbuilder/amd/build/audience.min.js index 881eba1990b59..3f8d852c343c3 100644 --- a/reportbuilder/amd/build/audience.min.js +++ b/reportbuilder/amd/build/audience.min.js @@ -1,2 +1,2 @@ -function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/audience",["exports","core/templates","core/notification","core/pending","core/prefetch","core/str","core_form/dynamicform","core/toast","core_reportbuilder/local/repository/audiences","core_reportbuilder/local/selectors","core/fragment","core_form/changechecker"],function(a,b,c,d,e,f,g,h,i,j,k,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=o(b);c=o(c);d=o(d);g=o(g);j=n(j);function m(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;m=function(){return a};return a}function n(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=m();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function o(a){return a&&a.__esModule?a:{default:a}}var p=0,q=0,r=function(a,e){var g=new d.default("core_reportbuilder/audience:add"),i=document.querySelector(j.regions.audiencesContainer),m=i.querySelectorAll(j.regions.audienceCard).length,n={classname:a,reportid:p,showormessage:0.\n\n/**\n * Report builder audiences\n *\n * @module core_reportbuilder/audience\n * @copyright 2021 David Matamoros \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport Templates from 'core/templates';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {get_string as getString} from 'core/str';\nimport DynamicForm from 'core_form/dynamicform';\nimport {add as addToast} from 'core/toast';\nimport {deleteAudience} from 'core_reportbuilder/local/repository/audiences';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {loadFragment} from 'core/fragment';\nimport {markFormAsDirty} from 'core_form/changechecker';\n\nlet reportId = 0;\nlet contextId = 0;\n\n/**\n * Add audience card\n *\n * @param {String} className\n * @param {String} title\n */\nconst addAudienceCard = (className, title) => {\n const pendingPromise = new Pending('core_reportbuilder/audience:add');\n\n const audiencesContainer = document.querySelector(reportSelectors.regions.audiencesContainer);\n const audienceCardLength = audiencesContainer.querySelectorAll(reportSelectors.regions.audienceCard).length;\n\n const params = {\n classname: className,\n reportid: reportId,\n showormessage: (audienceCardLength > 0),\n title: title,\n };\n\n // Load audience card fragment, render and then initialise the form within.\n loadFragment('core_reportbuilder', 'audience_form', contextId, params)\n .then((html, js) => {\n const audienceCard = Templates.appendNodeContents(audiencesContainer, html, js)[0];\n const audienceEmptyMessage = audiencesContainer.querySelector(reportSelectors.regions.audienceEmptyMessage);\n\n const audienceForm = initAudienceCardForm(audienceCard);\n // Mark as dirty new audience form created to prevent users leaving the page without saving it.\n markFormAsDirty(audienceForm.getFormNode());\n audienceEmptyMessage.classList.add('hidden');\n\n return getString('audienceadded', 'core_reportbuilder', title);\n })\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n};\n\n/**\n * Edit audience card\n *\n * @param {Element} audienceCard\n */\nconst editAudienceCard = audienceCard => {\n const pendingPromise = new Pending('core_reportbuilder/audience:edit');\n\n const audienceForm = initAudienceCardForm(audienceCard);\n const audienceFormData = {\n reportid: reportId,\n id: audienceCard.dataset.instanceid,\n classname: audienceCard.dataset.classname\n };\n\n // Load audience form with data for editing, then toggle visible controls in the card.\n audienceForm.load(audienceFormData)\n .then(() => {\n const audienceFormContainer = audienceCard.querySelector(reportSelectors.regions.audienceFormContainer);\n const audienceDescription = audienceCard.querySelector(reportSelectors.regions.audienceDescription);\n const audienceEdit = audienceCard.querySelector(reportSelectors.actions.audienceEdit);\n\n audienceFormContainer.classList.remove('hidden');\n audienceDescription.classList.add('hidden');\n audienceEdit.disabled = true;\n\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n};\n\n/**\n * Initialise dynamic form within given audience card\n *\n * @param {Element} audienceCard\n * @return {DynamicForm}\n */\nconst initAudienceCardForm = audienceCard => {\n const audienceFormContainer = audienceCard.querySelector(reportSelectors.regions.audienceFormContainer);\n const audienceForm = new DynamicForm(audienceFormContainer, '\\\\core_reportbuilder\\\\form\\\\audience');\n\n // After submitting the form, update the card instance and description properties.\n audienceForm.addEventListener(audienceForm.events.FORM_SUBMITTED, data => {\n const audienceDescription = audienceCard.querySelector(reportSelectors.regions.audienceDescription);\n\n audienceCard.dataset.instanceid = data.detail.instanceid;\n audienceDescription.innerHTML = data.detail.description;\n\n closeAudienceCardForm(audienceCard);\n\n return getString('audiencesaved', 'core_reportbuilder')\n .then(addToast);\n });\n\n // If cancelling the form, close the card or remove it if it was never created.\n audienceForm.addEventListener(audienceForm.events.FORM_CANCELLED, () => {\n if (audienceCard.dataset.instanceid > 0) {\n closeAudienceCardForm(audienceCard);\n } else {\n removeAudienceCard(audienceCard);\n }\n });\n\n return audienceForm;\n};\n\n/**\n * Delete audience card\n *\n * @param {Element} audienceCard\n */\nconst deleteAudienceCard = audienceCard => {\n const audienceTitle = audienceCard.dataset.title;\n\n Notification.saveCancelPromise(\n getString('deleteaudience', 'core_reportbuilder', audienceTitle),\n getString('deleteaudienceconfirm', 'core_reportbuilder', audienceTitle),\n getString('delete', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/audience:delete');\n\n return deleteAudience(reportId, audienceCard.dataset.instanceid)\n .then(() => addToast(getString('audiencedeleted', 'core_reportbuilder', audienceTitle)))\n .then(() => {\n removeAudienceCard(audienceCard);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n};\n\n/**\n * Close audience card form\n *\n * @param {Element} audienceCard\n */\nconst closeAudienceCardForm = audienceCard => {\n // Remove the [data-region=\"audience-form-container\"] (with all the event listeners attached to it), and create it again.\n const audienceFormContainer = audienceCard.querySelector(reportSelectors.regions.audienceFormContainer);\n const NewAudienceFormContainer = audienceFormContainer.cloneNode(false);\n audienceCard.querySelector(reportSelectors.regions.audienceForm).replaceChild(NewAudienceFormContainer, audienceFormContainer);\n // Show the description container and enable the action buttons.\n audienceCard.querySelector(reportSelectors.regions.audienceDescription).classList.remove('hidden');\n audienceCard.querySelector(reportSelectors.actions.audienceEdit).disabled = false;\n audienceCard.querySelector(reportSelectors.actions.audienceDelete).disabled = false;\n};\n\n/**\n * Remove audience card\n *\n * @param {Element} audienceCard\n */\nconst removeAudienceCard = audienceCard => {\n audienceCard.remove();\n\n const audiencesContainer = document.querySelector(reportSelectors.regions.audiencesContainer);\n const audienceCards = audiencesContainer.querySelectorAll(reportSelectors.regions.audienceCard);\n\n // Show message if there are no cards remaining, ensure first card's separator is not present.\n if (audienceCards.length === 0) {\n const audienceEmptyMessage = document.querySelector(reportSelectors.regions.audienceEmptyMessage);\n audienceEmptyMessage.classList.remove('hidden');\n } else {\n const audienceFirstCardSeparator = audienceCards[0].querySelector('.audience-separator');\n audienceFirstCardSeparator?.remove();\n }\n};\n\nlet initialized = false;\n\n/**\n * Initialise audiences tab.\n *\n * @param {Number} id\n * @param {Number} contextid\n */\nexport const init = (id, contextid) => {\n prefetchStrings('core_reportbuilder', [\n 'audienceadded',\n 'audiencedeleted',\n 'audiencesaved',\n 'deleteaudience',\n 'deleteaudienceconfirm',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n reportId = id;\n contextId = contextid;\n\n if (initialized) {\n // We already added the event listeners (can be called multiple times by mustache template).\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add instance.\n const audienceAdd = event.target.closest(reportSelectors.actions.audienceAdd);\n if (audienceAdd) {\n event.preventDefault();\n addAudienceCard(audienceAdd.dataset.uniqueIdentifier, audienceAdd.dataset.name);\n }\n\n // Edit instance.\n const audienceEdit = event.target.closest(reportSelectors.actions.audienceEdit);\n if (audienceEdit) {\n const audienceEditCard = audienceEdit.closest(reportSelectors.regions.audienceCard);\n\n event.preventDefault();\n editAudienceCard(audienceEditCard);\n }\n\n // Delete instance.\n const audienceDelete = event.target.closest(reportSelectors.actions.audienceDelete);\n if (audienceDelete) {\n const audienceDeleteCard = audienceDelete.closest(reportSelectors.regions.audienceCard);\n\n event.preventDefault();\n deleteAudienceCard(audienceDeleteCard);\n }\n });\n\n initialized = true;\n};\n"],"file":"audience.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/audience.js"],"names":["reportId","contextId","addAudienceCard","className","title","pendingPromise","Pending","audiencesContainer","document","querySelector","reportSelectors","regions","audienceCardLength","querySelectorAll","audienceCard","length","params","classname","reportid","showormessage","then","html","js","Templates","appendNodeContents","audienceEmptyMessage","audienceForm","initAudienceCardForm","getFormNode","classList","add","addToast","resolve","catch","Notification","exception","editAudienceCard","audienceFormData","id","dataset","instanceid","load","audienceFormContainer","audienceDescription","audienceEdit","actions","remove","disabled","DynamicForm","addEventListener","events","FORM_SUBMITTED","data","detail","innerHTML","description","closeAudienceCardForm","FORM_CANCELLED","removeAudienceCard","deleteAudienceCard","audienceDelete","closest","audienceTitle","saveCancelPromise","triggerElement","NewAudienceFormContainer","cloneNode","replaceChild","audienceCards","audienceFirstCardSeparator","initialized","init","contextid","event","audienceAdd","target","preventDefault","uniqueIdentifier","name","audienceEditCard"],"mappings":"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","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 * Report builder audiences\n *\n * @module core_reportbuilder/audience\n * @copyright 2021 David Matamoros \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport Templates from 'core/templates';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {get_string as getString} from 'core/str';\nimport DynamicForm from 'core_form/dynamicform';\nimport {add as addToast} from 'core/toast';\nimport {deleteAudience} from 'core_reportbuilder/local/repository/audiences';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {loadFragment} from 'core/fragment';\nimport {markFormAsDirty} from 'core_form/changechecker';\n\nlet reportId = 0;\nlet contextId = 0;\n\n/**\n * Add audience card\n *\n * @param {String} className\n * @param {String} title\n */\nconst addAudienceCard = (className, title) => {\n const pendingPromise = new Pending('core_reportbuilder/audience:add');\n\n const audiencesContainer = document.querySelector(reportSelectors.regions.audiencesContainer);\n const audienceCardLength = audiencesContainer.querySelectorAll(reportSelectors.regions.audienceCard).length;\n\n const params = {\n classname: className,\n reportid: reportId,\n showormessage: (audienceCardLength > 0),\n title: title,\n };\n\n // Load audience card fragment, render and then initialise the form within.\n loadFragment('core_reportbuilder', 'audience_form', contextId, params)\n .then((html, js) => {\n const audienceCard = Templates.appendNodeContents(audiencesContainer, html, js)[0];\n const audienceEmptyMessage = audiencesContainer.querySelector(reportSelectors.regions.audienceEmptyMessage);\n\n const audienceForm = initAudienceCardForm(audienceCard);\n // Mark as dirty new audience form created to prevent users leaving the page without saving it.\n markFormAsDirty(audienceForm.getFormNode());\n audienceEmptyMessage.classList.add('hidden');\n\n return getString('audienceadded', 'core_reportbuilder', title);\n })\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n};\n\n/**\n * Edit audience card\n *\n * @param {Element} audienceCard\n */\nconst editAudienceCard = audienceCard => {\n const pendingPromise = new Pending('core_reportbuilder/audience:edit');\n\n const audienceForm = initAudienceCardForm(audienceCard);\n const audienceFormData = {\n reportid: reportId,\n id: audienceCard.dataset.instanceid,\n classname: audienceCard.dataset.classname\n };\n\n // Load audience form with data for editing, then toggle visible controls in the card.\n audienceForm.load(audienceFormData)\n .then(() => {\n const audienceFormContainer = audienceCard.querySelector(reportSelectors.regions.audienceFormContainer);\n const audienceDescription = audienceCard.querySelector(reportSelectors.regions.audienceDescription);\n const audienceEdit = audienceCard.querySelector(reportSelectors.actions.audienceEdit);\n\n audienceFormContainer.classList.remove('hidden');\n audienceDescription.classList.add('hidden');\n audienceEdit.disabled = true;\n\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n};\n\n/**\n * Initialise dynamic form within given audience card\n *\n * @param {Element} audienceCard\n * @return {DynamicForm}\n */\nconst initAudienceCardForm = audienceCard => {\n const audienceFormContainer = audienceCard.querySelector(reportSelectors.regions.audienceFormContainer);\n const audienceForm = new DynamicForm(audienceFormContainer, '\\\\core_reportbuilder\\\\form\\\\audience');\n\n // After submitting the form, update the card instance and description properties.\n audienceForm.addEventListener(audienceForm.events.FORM_SUBMITTED, data => {\n const audienceDescription = audienceCard.querySelector(reportSelectors.regions.audienceDescription);\n\n audienceCard.dataset.instanceid = data.detail.instanceid;\n audienceDescription.innerHTML = data.detail.description;\n\n closeAudienceCardForm(audienceCard);\n\n return getString('audiencesaved', 'core_reportbuilder')\n .then(addToast);\n });\n\n // If cancelling the form, close the card or remove it if it was never created.\n audienceForm.addEventListener(audienceForm.events.FORM_CANCELLED, () => {\n if (audienceCard.dataset.instanceid > 0) {\n closeAudienceCardForm(audienceCard);\n } else {\n removeAudienceCard(audienceCard);\n }\n });\n\n return audienceForm;\n};\n\n/**\n * Delete audience card\n *\n * @param {Element} audienceDelete\n */\nconst deleteAudienceCard = audienceDelete => {\n const audienceCard = audienceDelete.closest(reportSelectors.regions.audienceCard);\n const audienceTitle = audienceCard.dataset.title;\n\n Notification.saveCancelPromise(\n getString('deleteaudience', 'core_reportbuilder', audienceTitle),\n getString('deleteaudienceconfirm', 'core_reportbuilder', audienceTitle),\n getString('delete', 'core'),\n {triggerElement: audienceDelete}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/audience:delete');\n\n return deleteAudience(reportId, audienceCard.dataset.instanceid)\n .then(() => addToast(getString('audiencedeleted', 'core_reportbuilder', audienceTitle)))\n .then(() => {\n removeAudienceCard(audienceCard);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n};\n\n/**\n * Close audience card form\n *\n * @param {Element} audienceCard\n */\nconst closeAudienceCardForm = audienceCard => {\n // Remove the [data-region=\"audience-form-container\"] (with all the event listeners attached to it), and create it again.\n const audienceFormContainer = audienceCard.querySelector(reportSelectors.regions.audienceFormContainer);\n const NewAudienceFormContainer = audienceFormContainer.cloneNode(false);\n audienceCard.querySelector(reportSelectors.regions.audienceForm).replaceChild(NewAudienceFormContainer, audienceFormContainer);\n // Show the description container and enable the action buttons.\n audienceCard.querySelector(reportSelectors.regions.audienceDescription).classList.remove('hidden');\n audienceCard.querySelector(reportSelectors.actions.audienceEdit).disabled = false;\n audienceCard.querySelector(reportSelectors.actions.audienceDelete).disabled = false;\n};\n\n/**\n * Remove audience card\n *\n * @param {Element} audienceCard\n */\nconst removeAudienceCard = audienceCard => {\n audienceCard.remove();\n\n const audiencesContainer = document.querySelector(reportSelectors.regions.audiencesContainer);\n const audienceCards = audiencesContainer.querySelectorAll(reportSelectors.regions.audienceCard);\n\n // Show message if there are no cards remaining, ensure first card's separator is not present.\n if (audienceCards.length === 0) {\n const audienceEmptyMessage = document.querySelector(reportSelectors.regions.audienceEmptyMessage);\n audienceEmptyMessage.classList.remove('hidden');\n } else {\n const audienceFirstCardSeparator = audienceCards[0].querySelector('.audience-separator');\n audienceFirstCardSeparator?.remove();\n }\n};\n\nlet initialized = false;\n\n/**\n * Initialise audiences tab.\n *\n * @param {Number} id\n * @param {Number} contextid\n */\nexport const init = (id, contextid) => {\n prefetchStrings('core_reportbuilder', [\n 'audienceadded',\n 'audiencedeleted',\n 'audiencesaved',\n 'deleteaudience',\n 'deleteaudienceconfirm',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n reportId = id;\n contextId = contextid;\n\n if (initialized) {\n // We already added the event listeners (can be called multiple times by mustache template).\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add instance.\n const audienceAdd = event.target.closest(reportSelectors.actions.audienceAdd);\n if (audienceAdd) {\n event.preventDefault();\n addAudienceCard(audienceAdd.dataset.uniqueIdentifier, audienceAdd.dataset.name);\n }\n\n // Edit instance.\n const audienceEdit = event.target.closest(reportSelectors.actions.audienceEdit);\n if (audienceEdit) {\n const audienceEditCard = audienceEdit.closest(reportSelectors.regions.audienceCard);\n\n event.preventDefault();\n editAudienceCard(audienceEditCard);\n }\n\n // Delete instance.\n const audienceDelete = event.target.closest(reportSelectors.actions.audienceDelete);\n if (audienceDelete) {\n event.preventDefault();\n deleteAudienceCard(audienceDelete);\n }\n });\n\n initialized = true;\n};\n"],"file":"audience.min.js"} \ No newline at end of file diff --git a/reportbuilder/amd/build/local/editor/columns.min.js b/reportbuilder/amd/build/local/editor/columns.min.js index 6a4533356c89d..8e41ec9784999 100644 --- a/reportbuilder/amd/build/local/editor/columns.min.js +++ b/reportbuilder/amd/build/local/editor/columns.min.js @@ -1,2 +1,2 @@ -function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/columns",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/local/inplace_editable/events","core/notification","core/pending","core/prefetch","core/pubsub","core/sortable_list","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/columns","core_reportbuilder/local/repository/sorting"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=s(b);f=s(f);g=s(g);j=s(j);m=r(m);n=r(n);function q(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;q=function(){return a};return a}function r(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=q();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function s(a){return a&&a.__esModule?a:{default:a}}var t=function(a){(0,h.prefetchStrings)("core_reportbuilder",["columnadded","columnaggregated","columndeleted","columnmoved","deletecolumn","deletecolumnconfirm"]);(0,h.prefetchStrings)("core",["delete"]);if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(n.actions.reportAddColumn);if(b){a.preventDefault();var d=new g.default("core_reportbuilder/columns:add"),e=b.closest(n.regions.report);(0,o.addColumn)(e.dataset.reportId,b.dataset.uniqueIdentifier).then(function(a){return(0,i.publish)(m.publish.reportColumnsUpdated,a)}).then(function(){return(0,k.get_string)("columnadded","core_reportbuilder",b.dataset.name)}).then(l.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{preservePagination:!0},e);return d.resolve()}).catch(f.default.exception)}var h=a.target.closest(n.actions.reportRemoveColumn);if(h){a.preventDefault();var j=h.closest(n.regions.report),p=h.closest(n.regions.columnHeader),q=p.dataset.columnName;f.default.saveCancelPromise((0,k.get_string)("deletecolumn","core_reportbuilder",q),(0,k.get_string)("deletecolumnconfirm","core_reportbuilder",q),(0,k.get_string)("delete","core")).then(function(){var a=new g.default("core_reportbuilder/columns:remove");return(0,o.deleteColumn)(j.dataset.reportId,p.dataset.columnId).then(function(a){return(0,i.publish)(m.publish.reportColumnsUpdated,a)}).then(function(){return(0,l.add)((0,k.get_string)("columndeleted","core_reportbuilder",q))}).then(function(){(0,c.dispatchEvent)(m.tableReload,{preservePagination:!0},j);return a.resolve()}).catch(f.default.exception)}).catch(function(){})}});var d=new j.default("".concat(n.regions.reportTable," thead tr"),{isHorizontal:!0});d.getElementName=function(a){return Promise.resolve(a.data("columnName"))};(0,b.default)(document).on(j.default.EVENTS.DRAG,"".concat(n.regions.report," th[data-column-id]"),function(a,c){var d=a.target.closest(n.regions.report),e=c.element.data("columnPosition"),f=c.targetNextElement.data("columnPosition");(0,b.default)(d).find("tbody tr").each(function(){var a=(0,b.default)(this).children("td.c".concat(e-1))[0];if(f){var c=(0,b.default)(this).children("td.c".concat(f-1))[0];this.insertBefore(a,c)}else{this.appendChild(a)}})});(0,b.default)(document).on(j.default.EVENTS.DROP,"".concat(n.regions.report," th[data-column-id]"),function(a,b){if(b.positionChanged){var d=new g.default("core_reportbuilder/columns:reorder"),e=a.target.closest(n.regions.report),h=b.element.data("columnId"),i=b.element.data("columnName"),j=b.element.data("columnPosition"),p=b.targetNextElement.data("columnPosition")||b.element.siblings().length+2;if(p>j){p--}(0,o.reorderColumn)(e.dataset.reportId,h,p).then(function(){return(0,k.get_string)("columnmoved","core_reportbuilder",i)}).then(l.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{preservePagination:!0},e);return d.resolve()}).catch(f.default.exception)}});document.addEventListener(e.eventTypes.elementUpdated,function(a){var b=a.target.closest("[data-itemtype=\"columnaggregation\"]");if(b){var d=new g.default("core_reportbuilder/columns:aggregate"),e=b.closest(n.regions.report),h=b.closest(n.regions.columnHeader);(0,k.get_string)("columnaggregated","core_reportbuilder",h.dataset.columnName).then(l.add).then(function(){var a="[data-itemtype=\"columnaggregation\"][data-itemid=\""+"".concat(b.dataset.itemid,"\"] > a");(0,c.dispatchEvent)(m.tableReload,{preserveTriggerElement:a},e);return(0,p.getColumnSorting)(e.dataset.reportId)}).then(function(a){return(0,i.publish)(m.publish.reportColumnsUpdated,a)}).then(function(){return d.resolve()}).catch(f.default.exception)}})};a.init=t}); +function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/columns",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/local/inplace_editable/events","core/notification","core/pending","core/prefetch","core/pubsub","core/sortable_list","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/columns","core_reportbuilder/local/repository/sorting"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=s(b);f=s(f);g=s(g);j=s(j);m=r(m);n=r(n);function q(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;q=function(){return a};return a}function r(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=q();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function s(a){return a&&a.__esModule?a:{default:a}}var t=function(a){(0,h.prefetchStrings)("core_reportbuilder",["columnadded","columnaggregated","columndeleted","columnmoved","deletecolumn","deletecolumnconfirm"]);(0,h.prefetchStrings)("core",["delete"]);if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(n.actions.reportAddColumn);if(b){a.preventDefault();var d=new g.default("core_reportbuilder/columns:add"),e=b.closest(n.regions.report);(0,o.addColumn)(e.dataset.reportId,b.dataset.uniqueIdentifier).then(function(a){return(0,i.publish)(m.publish.reportColumnsUpdated,a)}).then(function(){return(0,k.get_string)("columnadded","core_reportbuilder",b.dataset.name)}).then(l.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{preservePagination:!0},e);return d.resolve()}).catch(f.default.exception)}var h=a.target.closest(n.actions.reportRemoveColumn);if(h){a.preventDefault();var j=h.closest(n.regions.report),p=h.closest(n.regions.columnHeader),q=p.dataset.columnName;f.default.saveCancelPromise((0,k.get_string)("deletecolumn","core_reportbuilder",q),(0,k.get_string)("deletecolumnconfirm","core_reportbuilder",q),(0,k.get_string)("delete","core"),{triggerElement:h}).then(function(){var a=new g.default("core_reportbuilder/columns:remove");return(0,o.deleteColumn)(j.dataset.reportId,p.dataset.columnId).then(function(a){return(0,i.publish)(m.publish.reportColumnsUpdated,a)}).then(function(){return(0,l.add)((0,k.get_string)("columndeleted","core_reportbuilder",q))}).then(function(){(0,c.dispatchEvent)(m.tableReload,{preservePagination:!0},j);return a.resolve()}).catch(f.default.exception)}).catch(function(){})}});var d=new j.default("".concat(n.regions.reportTable," thead tr"),{isHorizontal:!0});d.getElementName=function(a){return Promise.resolve(a.data("columnName"))};(0,b.default)(document).on(j.default.EVENTS.DRAG,"".concat(n.regions.report," th[data-column-id]"),function(a,c){var d=a.target.closest(n.regions.report),e=c.element.data("columnPosition"),f=c.targetNextElement.data("columnPosition");(0,b.default)(d).find("tbody tr").each(function(){var a=(0,b.default)(this).children("td.c".concat(e-1))[0];if(f){var c=(0,b.default)(this).children("td.c".concat(f-1))[0];this.insertBefore(a,c)}else{this.appendChild(a)}})});(0,b.default)(document).on(j.default.EVENTS.DROP,"".concat(n.regions.report," th[data-column-id]"),function(a,b){if(b.positionChanged){var d=new g.default("core_reportbuilder/columns:reorder"),e=a.target.closest(n.regions.report),h=b.element.data("columnId"),i=b.element.data("columnName"),j=b.element.data("columnPosition"),p=b.targetNextElement.data("columnPosition")||b.element.siblings().length+2;if(p>j){p--}(0,o.reorderColumn)(e.dataset.reportId,h,p).then(function(){return(0,k.get_string)("columnmoved","core_reportbuilder",i)}).then(l.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{preservePagination:!0},e);return d.resolve()}).catch(f.default.exception)}});document.addEventListener(e.eventTypes.elementUpdated,function(a){var b=a.target.closest("[data-itemtype=\"columnaggregation\"]");if(b){var d=new g.default("core_reportbuilder/columns:aggregate"),e=b.closest(n.regions.report),h=b.closest(n.regions.columnHeader);(0,k.get_string)("columnaggregated","core_reportbuilder",h.dataset.columnName).then(l.add).then(function(){var a="[data-itemtype=\"columnaggregation\"][data-itemid=\""+"".concat(b.dataset.itemid,"\"] > a");(0,c.dispatchEvent)(m.tableReload,{preserveTriggerElement:a},e);return(0,p.getColumnSorting)(e.dataset.reportId)}).then(function(a){return(0,i.publish)(m.publish.reportColumnsUpdated,a)}).then(function(){return d.resolve()}).catch(f.default.exception)}})};a.init=t}); //# sourceMappingURL=columns.min.js.map diff --git a/reportbuilder/amd/build/local/editor/columns.min.js.map b/reportbuilder/amd/build/local/editor/columns.min.js.map index 384d5e505cf5f..a53fbaceb5c99 100644 --- a/reportbuilder/amd/build/local/editor/columns.min.js.map +++ b/reportbuilder/amd/build/local/editor/columns.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/local/editor/columns.js"],"names":["init","initialized","document","addEventListener","event","reportAddColumn","target","closest","reportSelectors","actions","preventDefault","pendingPromise","Pending","reportElement","regions","report","dataset","reportId","uniqueIdentifier","then","data","reportEvents","publish","reportColumnsUpdated","name","addToast","tableReload","preservePagination","resolve","catch","Notification","exception","reportRemoveColumn","columnHeader","columnName","saveCancelPromise","columnId","columnSortableList","SortableList","reportTable","isHorizontal","getElementName","element","Promise","on","EVENTS","DRAG","info","columnPosition","targetColumnPosition","targetNextElement","find","each","cell","children","beforeCell","insertBefore","appendChild","DROP","positionChanged","siblings","length","inplaceEditableEvents","elementUpdated","columnAggregation","columnAggregationLink","itemid","preserveTriggerElement"],"mappings":"0vBAuBA,a,+DAEA,OAIA,OACA,OAGA,OAGA,OACA,O,ylBASO,GAAMA,CAAAA,CAAI,CAAG,SAAAC,CAAW,CAAI,CAC/B,sBAAgB,oBAAhB,CAAsC,CAClC,aADkC,CAElC,kBAFkC,CAGlC,eAHkC,CAIlC,aAJkC,CAKlC,cALkC,CAMlC,qBANkC,CAAtC,EASA,sBAAgB,MAAhB,CAAwB,CACpB,QADoB,CAAxB,EAIA,GAAIA,CAAJ,CAAiB,CACb,MACH,CAEDC,QAAQ,CAACC,gBAAT,CAA0B,OAA1B,CAAmC,SAAAC,CAAK,CAAI,CAGxC,GAAMC,CAAAA,CAAe,CAAGD,CAAK,CAACE,MAAN,CAAaC,OAAb,CAAqBC,CAAe,CAACC,OAAhB,CAAwBJ,eAA7C,CAAxB,CACA,GAAIA,CAAJ,CAAqB,CACjBD,CAAK,CAACM,cAAN,GADiB,GAGXC,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,gCAAZ,CAHN,CAIXC,CAAa,CAAGR,CAAe,CAACE,OAAhB,CAAwBC,CAAe,CAACM,OAAhB,CAAwBC,MAAhD,CAJL,CAMjB,gBAAUF,CAAa,CAACG,OAAd,CAAsBC,QAAhC,CAA0CZ,CAAe,CAACW,OAAhB,CAAwBE,gBAAlE,EACKC,IADL,CACU,SAAAC,CAAI,QAAI,cAAQC,CAAY,CAACC,OAAb,CAAqBC,oBAA7B,CAAmDH,CAAnD,CAAJ,CADd,EAEKD,IAFL,CAEU,iBAAM,iBAAU,aAAV,CAAyB,oBAAzB,CAA+Cd,CAAe,CAACW,OAAhB,CAAwBQ,IAAvE,CAAN,CAFV,EAGKL,IAHL,CAGUM,KAHV,EAIKN,IAJL,CAIU,UAAM,CACR,oBAAcE,CAAY,CAACK,WAA3B,CAAwC,CAACC,kBAAkB,GAAnB,CAAxC,CAAoEd,CAApE,EACA,MAAOF,CAAAA,CAAc,CAACiB,OAAf,EACV,CAPL,EAQKC,KARL,CAQWC,UAAaC,SARxB,CASH,CAGD,GAAMC,CAAAA,CAAkB,CAAG5B,CAAK,CAACE,MAAN,CAAaC,OAAb,CAAqBC,CAAe,CAACC,OAAhB,CAAwBuB,kBAA7C,CAA3B,CACA,GAAIA,CAAJ,CAAwB,CACpB5B,CAAK,CAACM,cAAN,GADoB,GAGdG,CAAAA,CAAa,CAAGmB,CAAkB,CAACzB,OAAnB,CAA2BC,CAAe,CAACM,OAAhB,CAAwBC,MAAnD,CAHF,CAIdkB,CAAY,CAAGD,CAAkB,CAACzB,OAAnB,CAA2BC,CAAe,CAACM,OAAhB,CAAwBmB,YAAnD,CAJD,CAKdC,CAAU,CAAGD,CAAY,CAACjB,OAAb,CAAqBkB,UALpB,CAOpBJ,UAAaK,iBAAb,CACI,iBAAU,cAAV,CAA0B,oBAA1B,CAAgDD,CAAhD,CADJ,CAEI,iBAAU,qBAAV,CAAiC,oBAAjC,CAAuDA,CAAvD,CAFJ,CAGI,iBAAU,QAAV,CAAoB,MAApB,CAHJ,EAIEf,IAJF,CAIO,UAAM,CACT,GAAMR,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,mCAAZ,CAAvB,CAEA,MAAO,mBAAaC,CAAa,CAACG,OAAd,CAAsBC,QAAnC,CAA6CgB,CAAY,CAACjB,OAAb,CAAqBoB,QAAlE,EACFjB,IADE,CACG,SAAAC,CAAI,QAAI,cAAQC,CAAY,CAACC,OAAb,CAAqBC,oBAA7B,CAAmDH,CAAnD,CAAJ,CADP,EAEFD,IAFE,CAEG,iBAAM,UAAS,iBAAU,eAAV,CAA2B,oBAA3B,CAAiDe,CAAjD,CAAT,CAAN,CAFH,EAGFf,IAHE,CAGG,UAAM,CACR,oBAAcE,CAAY,CAACK,WAA3B,CAAwC,CAACC,kBAAkB,GAAnB,CAAxC,CAAoEd,CAApE,EACA,MAAOF,CAAAA,CAAc,CAACiB,OAAf,EACV,CANE,EAOFC,KAPE,CAOIC,UAAaC,SAPjB,CAQV,CAfD,EAeGF,KAfH,CAeS,UAAM,CAEd,CAjBD,CAkBH,CACJ,CAjDD,EAoDA,GAAIQ,CAAAA,CAAkB,CAAG,GAAIC,UAAJ,WAAoB9B,CAAe,CAACM,OAAhB,CAAwByB,WAA5C,cAAoE,CAACC,YAAY,GAAb,CAApE,CAAzB,CACAH,CAAkB,CAACI,cAAnB,CAAoC,SAAAC,CAAO,QAAIC,CAAAA,OAAO,CAACf,OAAR,CAAgBc,CAAO,CAACtB,IAAR,CAAa,YAAb,CAAhB,CAAJ,CAA3C,CAEA,cAAElB,QAAF,EAAY0C,EAAZ,CAAeN,UAAaO,MAAb,CAAoBC,IAAnC,WAA4CtC,CAAe,CAACM,OAAhB,CAAwBC,MAApE,wBAAiG,SAACX,CAAD,CAAQ2C,CAAR,CAAiB,IACxGlC,CAAAA,CAAa,CAAGT,CAAK,CAACE,MAAN,CAAaC,OAAb,CAAqBC,CAAe,CAACM,OAAhB,CAAwBC,MAA7C,CADwF,CAExGiC,CAAc,CAAGD,CAAI,CAACL,OAAL,CAAatB,IAAb,CAAkB,gBAAlB,CAFuF,CAGxG6B,CAAoB,CAAGF,CAAI,CAACG,iBAAL,CAAuB9B,IAAvB,CAA4B,gBAA5B,CAHiF,CAK9G,cAAEP,CAAF,EAAiBsC,IAAjB,CAAsB,UAAtB,EAAkCC,IAAlC,CAAuC,UAAW,CAC9C,GAAMC,CAAAA,CAAI,CAAG,cAAE,IAAF,EAAQC,QAAR,eAAwBN,CAAc,CAAG,CAAzC,GAA8C,CAA9C,CAAb,CACA,GAAIC,CAAJ,CAA0B,CACtB,GAAIM,CAAAA,CAAU,CAAG,cAAE,IAAF,EAAQD,QAAR,eAAwBL,CAAoB,CAAG,CAA/C,GAAoD,CAApD,CAAjB,CACA,KAAKO,YAAL,CAAkBH,CAAlB,CAAwBE,CAAxB,CACH,CAHD,IAGO,CACH,KAAKE,WAAL,CAAiBJ,CAAjB,CACH,CACJ,CARD,CASH,CAdD,EAgBA,cAAEnD,QAAF,EAAY0C,EAAZ,CAAeN,UAAaO,MAAb,CAAoBa,IAAnC,WAA4ClD,CAAe,CAACM,OAAhB,CAAwBC,MAApE,wBAAiG,SAACX,CAAD,CAAQ2C,CAAR,CAAiB,CAC9G,GAAIA,CAAI,CAACY,eAAT,CAA0B,IAChBhD,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,oCAAZ,CADD,CAEhBC,CAAa,CAAGT,CAAK,CAACE,MAAN,CAAaC,OAAb,CAAqBC,CAAe,CAACM,OAAhB,CAAwBC,MAA7C,CAFA,CAGhBqB,CAAQ,CAAGW,CAAI,CAACL,OAAL,CAAatB,IAAb,CAAkB,UAAlB,CAHK,CAIhBc,CAAU,CAAGa,CAAI,CAACL,OAAL,CAAatB,IAAb,CAAkB,YAAlB,CAJG,CAKhB4B,CAAc,CAAGD,CAAI,CAACL,OAAL,CAAatB,IAAb,CAAkB,gBAAlB,CALD,CAQlB6B,CAAoB,CAAGF,CAAI,CAACG,iBAAL,CAAuB9B,IAAvB,CAA4B,gBAA5B,GAAiD2B,CAAI,CAACL,OAAL,CAAakB,QAAb,GAAwBC,MAAxB,CAAiC,CARvF,CAStB,GAAIZ,CAAoB,CAAGD,CAA3B,CAA2C,CACvCC,CAAoB,EACvB,CAED,oBAAcpC,CAAa,CAACG,OAAd,CAAsBC,QAApC,CAA8CmB,CAA9C,CAAwDa,CAAxD,EACK9B,IADL,CACU,iBAAM,iBAAU,aAAV,CAAyB,oBAAzB,CAA+Ce,CAA/C,CAAN,CADV,EAEKf,IAFL,CAEUM,KAFV,EAGKN,IAHL,CAGU,UAAM,CACR,oBAAcE,CAAY,CAACK,WAA3B,CAAwC,CAACC,kBAAkB,GAAnB,CAAxC,CAAoEd,CAApE,EACA,MAAOF,CAAAA,CAAc,CAACiB,OAAf,EACV,CANL,EAOKC,KAPL,CAOWC,UAAaC,SAPxB,CAQH,CACJ,CAvBD,EA0BA7B,QAAQ,CAACC,gBAAT,CAA0B2D,aAAsBC,cAAhD,CAAgE,SAAA3D,CAAK,CAAI,CAErE,GAAM4D,CAAAA,CAAiB,CAAG5D,CAAK,CAACE,MAAN,CAAaC,OAAb,CAAqB,uCAArB,CAA1B,CACA,GAAIyD,CAAJ,CAAuB,IACbrD,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,sCAAZ,CADJ,CAEbC,CAAa,CAAGmD,CAAiB,CAACzD,OAAlB,CAA0BC,CAAe,CAACM,OAAhB,CAAwBC,MAAlD,CAFH,CAGbkB,CAAY,CAAG+B,CAAiB,CAACzD,OAAlB,CAA0BC,CAAe,CAACM,OAAhB,CAAwBmB,YAAlD,CAHF,CAKnB,iBAAU,kBAAV,CAA8B,oBAA9B,CAAoDA,CAAY,CAACjB,OAAb,CAAqBkB,UAAzE,EACKf,IADL,CACUM,KADV,EAEKN,IAFL,CAEU,UAAM,CAER,GAAM8C,CAAAA,CAAqB,CAAG,iEACrBD,CAAiB,CAAChD,OAAlB,CAA0BkD,MADL,WAA9B,CAIA,oBAAc7C,CAAY,CAACK,WAA3B,CAAwC,CAACyC,sBAAsB,CAAEF,CAAzB,CAAxC,CAAyFpD,CAAzF,EACA,MAAO,uBAAiBA,CAAa,CAACG,OAAd,CAAsBC,QAAvC,CACV,CAVL,EAWKE,IAXL,CAWU,SAAAC,CAAI,QAAI,cAAQC,CAAY,CAACC,OAAb,CAAqBC,oBAA7B,CAAmDH,CAAnD,CAAJ,CAXd,EAYKD,IAZL,CAYU,iBAAMR,CAAAA,CAAc,CAACiB,OAAf,EAAN,CAZV,EAaKC,KAbL,CAaWC,UAAaC,SAbxB,CAcH,CACJ,CAvBD,CAwBH,CA3IM,C","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 * Report builder columns editor\n *\n * @module core_reportbuilder/local/editor/columns\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport {eventTypes as inplaceEditableEvents} from 'core/local/inplace_editable/events';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {publish} from 'core/pubsub';\nimport SortableList from 'core/sortable_list';\nimport {get_string as getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {addColumn, deleteColumn, reorderColumn} from 'core_reportbuilder/local/repository/columns';\nimport {getColumnSorting} from 'core_reportbuilder/local/repository/sorting';\n\n/**\n * Initialise module, prefetch all required strings\n *\n * @param {Boolean} initialized Ensure we only add our listeners once\n */\nexport const init = initialized => {\n prefetchStrings('core_reportbuilder', [\n 'columnadded',\n 'columnaggregated',\n 'columndeleted',\n 'columnmoved',\n 'deletecolumn',\n 'deletecolumnconfirm',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n if (initialized) {\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add column to report.\n const reportAddColumn = event.target.closest(reportSelectors.actions.reportAddColumn);\n if (reportAddColumn) {\n event.preventDefault();\n\n const pendingPromise = new Pending('core_reportbuilder/columns:add');\n const reportElement = reportAddColumn.closest(reportSelectors.regions.report);\n\n addColumn(reportElement.dataset.reportId, reportAddColumn.dataset.uniqueIdentifier)\n .then(data => publish(reportEvents.publish.reportColumnsUpdated, data))\n .then(() => getString('columnadded', 'core_reportbuilder', reportAddColumn.dataset.name))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n\n // Remove column from report.\n const reportRemoveColumn = event.target.closest(reportSelectors.actions.reportRemoveColumn);\n if (reportRemoveColumn) {\n event.preventDefault();\n\n const reportElement = reportRemoveColumn.closest(reportSelectors.regions.report);\n const columnHeader = reportRemoveColumn.closest(reportSelectors.regions.columnHeader);\n const columnName = columnHeader.dataset.columnName;\n\n Notification.saveCancelPromise(\n getString('deletecolumn', 'core_reportbuilder', columnName),\n getString('deletecolumnconfirm', 'core_reportbuilder', columnName),\n getString('delete', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/columns:remove');\n\n return deleteColumn(reportElement.dataset.reportId, columnHeader.dataset.columnId)\n .then(data => publish(reportEvents.publish.reportColumnsUpdated, data))\n .then(() => addToast(getString('columndeleted', 'core_reportbuilder', columnName)))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n // Initialize sortable list to handle column moving (note JQuery dependency, see MDL-72293 for resolution).\n var columnSortableList = new SortableList(`${reportSelectors.regions.reportTable} thead tr`, {isHorizontal: true});\n columnSortableList.getElementName = element => Promise.resolve(element.data('columnName'));\n\n $(document).on(SortableList.EVENTS.DRAG, `${reportSelectors.regions.report} th[data-column-id]`, (event, info) => {\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const columnPosition = info.element.data('columnPosition');\n const targetColumnPosition = info.targetNextElement.data('columnPosition');\n\n $(reportElement).find('tbody tr').each(function() {\n const cell = $(this).children(`td.c${columnPosition - 1}`)[0];\n if (targetColumnPosition) {\n var beforeCell = $(this).children(`td.c${targetColumnPosition - 1}`)[0];\n this.insertBefore(cell, beforeCell);\n } else {\n this.appendChild(cell);\n }\n });\n });\n\n $(document).on(SortableList.EVENTS.DROP, `${reportSelectors.regions.report} th[data-column-id]`, (event, info) => {\n if (info.positionChanged) {\n const pendingPromise = new Pending('core_reportbuilder/columns:reorder');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const columnId = info.element.data('columnId');\n const columnName = info.element.data('columnName');\n const columnPosition = info.element.data('columnPosition');\n\n // Select target position, if moving to the end then count number of element siblings.\n let targetColumnPosition = info.targetNextElement.data('columnPosition') || info.element.siblings().length + 2;\n if (targetColumnPosition > columnPosition) {\n targetColumnPosition--;\n }\n\n reorderColumn(reportElement.dataset.reportId, columnId, targetColumnPosition)\n .then(() => getString('columnmoved', 'core_reportbuilder', columnName))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n });\n\n // Initialize inplace editable listeners for column aggregation.\n document.addEventListener(inplaceEditableEvents.elementUpdated, event => {\n\n const columnAggregation = event.target.closest('[data-itemtype=\"columnaggregation\"]');\n if (columnAggregation) {\n const pendingPromise = new Pending('core_reportbuilder/columns:aggregate');\n const reportElement = columnAggregation.closest(reportSelectors.regions.report);\n const columnHeader = columnAggregation.closest(reportSelectors.regions.columnHeader);\n\n getString('columnaggregated', 'core_reportbuilder', columnHeader.dataset.columnName)\n .then(addToast)\n .then(() => {\n // Pass preserveTriggerElement parameter so columnAggregationLink will be focused after the report reload.\n const columnAggregationLink = `[data-itemtype=\"columnaggregation\"][data-itemid=\"`\n + `${columnAggregation.dataset.itemid}\"] > a`;\n\n // Now reload the table, and notify listeners that columns have been updated.\n dispatchEvent(reportEvents.tableReload, {preserveTriggerElement: columnAggregationLink}, reportElement);\n return getColumnSorting(reportElement.dataset.reportId);\n })\n .then(data => publish(reportEvents.publish.reportColumnsUpdated, data))\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }\n });\n};\n"],"file":"columns.min.js"} \ No newline at end of file +{"version":3,"sources":["../../../src/local/editor/columns.js"],"names":["init","initialized","document","addEventListener","event","reportAddColumn","target","closest","reportSelectors","actions","preventDefault","pendingPromise","Pending","reportElement","regions","report","dataset","reportId","uniqueIdentifier","then","data","reportEvents","publish","reportColumnsUpdated","name","addToast","tableReload","preservePagination","resolve","catch","Notification","exception","reportRemoveColumn","columnHeader","columnName","saveCancelPromise","triggerElement","columnId","columnSortableList","SortableList","reportTable","isHorizontal","getElementName","element","Promise","on","EVENTS","DRAG","info","columnPosition","targetColumnPosition","targetNextElement","find","each","cell","children","beforeCell","insertBefore","appendChild","DROP","positionChanged","siblings","length","inplaceEditableEvents","elementUpdated","columnAggregation","columnAggregationLink","itemid","preserveTriggerElement"],"mappings":"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","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 * Report builder columns editor\n *\n * @module core_reportbuilder/local/editor/columns\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport {eventTypes as inplaceEditableEvents} from 'core/local/inplace_editable/events';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {publish} from 'core/pubsub';\nimport SortableList from 'core/sortable_list';\nimport {get_string as getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {addColumn, deleteColumn, reorderColumn} from 'core_reportbuilder/local/repository/columns';\nimport {getColumnSorting} from 'core_reportbuilder/local/repository/sorting';\n\n/**\n * Initialise module, prefetch all required strings\n *\n * @param {Boolean} initialized Ensure we only add our listeners once\n */\nexport const init = initialized => {\n prefetchStrings('core_reportbuilder', [\n 'columnadded',\n 'columnaggregated',\n 'columndeleted',\n 'columnmoved',\n 'deletecolumn',\n 'deletecolumnconfirm',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n if (initialized) {\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add column to report.\n const reportAddColumn = event.target.closest(reportSelectors.actions.reportAddColumn);\n if (reportAddColumn) {\n event.preventDefault();\n\n const pendingPromise = new Pending('core_reportbuilder/columns:add');\n const reportElement = reportAddColumn.closest(reportSelectors.regions.report);\n\n addColumn(reportElement.dataset.reportId, reportAddColumn.dataset.uniqueIdentifier)\n .then(data => publish(reportEvents.publish.reportColumnsUpdated, data))\n .then(() => getString('columnadded', 'core_reportbuilder', reportAddColumn.dataset.name))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n\n // Remove column from report.\n const reportRemoveColumn = event.target.closest(reportSelectors.actions.reportRemoveColumn);\n if (reportRemoveColumn) {\n event.preventDefault();\n\n const reportElement = reportRemoveColumn.closest(reportSelectors.regions.report);\n const columnHeader = reportRemoveColumn.closest(reportSelectors.regions.columnHeader);\n const columnName = columnHeader.dataset.columnName;\n\n Notification.saveCancelPromise(\n getString('deletecolumn', 'core_reportbuilder', columnName),\n getString('deletecolumnconfirm', 'core_reportbuilder', columnName),\n getString('delete', 'core'),\n {triggerElement: reportRemoveColumn}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/columns:remove');\n\n return deleteColumn(reportElement.dataset.reportId, columnHeader.dataset.columnId)\n .then(data => publish(reportEvents.publish.reportColumnsUpdated, data))\n .then(() => addToast(getString('columndeleted', 'core_reportbuilder', columnName)))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n // Initialize sortable list to handle column moving (note JQuery dependency, see MDL-72293 for resolution).\n var columnSortableList = new SortableList(`${reportSelectors.regions.reportTable} thead tr`, {isHorizontal: true});\n columnSortableList.getElementName = element => Promise.resolve(element.data('columnName'));\n\n $(document).on(SortableList.EVENTS.DRAG, `${reportSelectors.regions.report} th[data-column-id]`, (event, info) => {\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const columnPosition = info.element.data('columnPosition');\n const targetColumnPosition = info.targetNextElement.data('columnPosition');\n\n $(reportElement).find('tbody tr').each(function() {\n const cell = $(this).children(`td.c${columnPosition - 1}`)[0];\n if (targetColumnPosition) {\n var beforeCell = $(this).children(`td.c${targetColumnPosition - 1}`)[0];\n this.insertBefore(cell, beforeCell);\n } else {\n this.appendChild(cell);\n }\n });\n });\n\n $(document).on(SortableList.EVENTS.DROP, `${reportSelectors.regions.report} th[data-column-id]`, (event, info) => {\n if (info.positionChanged) {\n const pendingPromise = new Pending('core_reportbuilder/columns:reorder');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const columnId = info.element.data('columnId');\n const columnName = info.element.data('columnName');\n const columnPosition = info.element.data('columnPosition');\n\n // Select target position, if moving to the end then count number of element siblings.\n let targetColumnPosition = info.targetNextElement.data('columnPosition') || info.element.siblings().length + 2;\n if (targetColumnPosition > columnPosition) {\n targetColumnPosition--;\n }\n\n reorderColumn(reportElement.dataset.reportId, columnId, targetColumnPosition)\n .then(() => getString('columnmoved', 'core_reportbuilder', columnName))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n });\n\n // Initialize inplace editable listeners for column aggregation.\n document.addEventListener(inplaceEditableEvents.elementUpdated, event => {\n\n const columnAggregation = event.target.closest('[data-itemtype=\"columnaggregation\"]');\n if (columnAggregation) {\n const pendingPromise = new Pending('core_reportbuilder/columns:aggregate');\n const reportElement = columnAggregation.closest(reportSelectors.regions.report);\n const columnHeader = columnAggregation.closest(reportSelectors.regions.columnHeader);\n\n getString('columnaggregated', 'core_reportbuilder', columnHeader.dataset.columnName)\n .then(addToast)\n .then(() => {\n // Pass preserveTriggerElement parameter so columnAggregationLink will be focused after the report reload.\n const columnAggregationLink = `[data-itemtype=\"columnaggregation\"][data-itemid=\"`\n + `${columnAggregation.dataset.itemid}\"] > a`;\n\n // Now reload the table, and notify listeners that columns have been updated.\n dispatchEvent(reportEvents.tableReload, {preserveTriggerElement: columnAggregationLink}, reportElement);\n return getColumnSorting(reportElement.dataset.reportId);\n })\n .then(data => publish(reportEvents.publish.reportColumnsUpdated, data))\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }\n });\n};\n"],"file":"columns.min.js"} \ No newline at end of file diff --git a/reportbuilder/amd/build/local/editor/conditions.min.js b/reportbuilder/amd/build/local/editor/conditions.min.js index 00f3c31f2e473..f47c81535fe44 100644 --- a/reportbuilder/amd/build/local/editor/conditions.min.js +++ b/reportbuilder/amd/build/local/editor/conditions.min.js @@ -1,2 +1,2 @@ -function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/conditions",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/templates","core/toast","core_form/dynamicform","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/conditions"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=r(b);e=r(e);f=r(f);h=r(h);j=r(j);l=r(l);m=q(m);n=q(n);function p(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;p=function(){return a};return a}function q(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=p();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function r(a){return a&&a.__esModule?a:{default:a}}var s=function(a,b){var c=new f.default("core_reportbuilder/conditions:reload"),d=a.querySelector(n.regions.settingsConditions);return j.default.renderForPromise("core_reportbuilder/local/settings/conditions",{conditions:b}).then(function(e){var f=e.html,g=e.js;j.default.replaceNode(d,f,g+b.javascript);var h=a.querySelector(n.actions.reportAddCondition);null===h||void 0===h?void 0:h.focus();t(a);return c.resolve()})},t=function(){var a=document.querySelector(n.regions.report),b=a.querySelector(n.regions.settingsConditions);if(!b){return}var d=new l.default(b,"\\core_reportbuilder\\form\\condition");d.addEventListener(d.events.FORM_SUBMITTED,function(b){b.preventDefault();(0,i.get_string)("conditionsapplied","core_reportbuilder").then(k.add).catch(e.default.exception);(0,c.dispatchEvent)(m.tableReload,{},a)});d.addEventListener(d.events.NOSUBMIT_BUTTON_PRESSED,function(b){b.preventDefault();e.default.saveCancelPromise((0,i.get_string)("resetconditions","core_reportbuilder"),(0,i.get_string)("resetconditionsconfirm","core_reportbuilder"),(0,i.get_string)("resetall","core_reportbuilder")).then(function(){var b=new f.default("core_reportbuilder/conditions:reset");return(0,o.resetConditions)(a.dataset.reportId).then(function(b){return s(a,b)}).then(function(){return(0,k.add)((0,i.get_string)("conditionsreset","core_reportbuilder"))}).then(function(){(0,c.dispatchEvent)(m.tableReload,{},a);return b.resolve()}).catch(e.default.exception)}).catch(function(){})})},u=function(a){(0,g.prefetchStrings)("core_reportbuilder",["conditionadded","conditiondeleted","conditionmoved","conditionsapplied","conditionsreset","deletecondition","deleteconditionconfirm","resetall","resetconditions","resetconditionsconfirm"]);(0,g.prefetchStrings)("core",["delete"]);t();if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(n.actions.reportAddCondition);if(b){a.preventDefault();var l=b.closest(n.regions.report);if("0"===b.value){return}var p=new f.default("core_reportbuilder/conditions:add");(0,o.addCondition)(l.dataset.reportId,b.value).then(function(a){return s(l,a)}).then(function(){return(0,i.get_string)("conditionadded","core_reportbuilder",b.options[b.selectedIndex].text)}).then(k.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{},l);return p.resolve()}).catch(e.default.exception)}var d=a.target.closest(n.actions.reportRemoveCondition);if(d){a.preventDefault();var g=d.closest(n.regions.report),h=d.closest(n.regions.activeCondition),j=h.dataset.conditionName;e.default.saveCancelPromise((0,i.get_string)("deletecondition","core_reportbuilder",j),(0,i.get_string)("deleteconditionconfirm","core_reportbuilder",j),(0,i.get_string)("delete","core")).then(function(){var a=new f.default("core_reportbuilder/conditions:remove");return(0,o.deleteCondition)(g.dataset.reportId,h.dataset.conditionId).then(function(a){return s(g,a)}).then(function(){return(0,k.add)((0,i.get_string)("conditiondeleted","core_reportbuilder",j))}).then(function(){(0,c.dispatchEvent)(m.tableReload,{},g);return a.resolve()}).catch(e.default.exception)}).catch(function(){})}});var d=new h.default("".concat(n.regions.activeConditions),{isHorizontal:!1});d.getElementName=function(a){return Promise.resolve(a.data("conditionName"))};(0,b.default)(document).on(h.default.EVENTS.DROP,n.regions.activeCondition,function(a,b){if(b.positionChanged){var d=new f.default("core_reportbuilder/conditions:reorder"),g=a.target.closest(n.regions.report),h=b.element.data("conditionId"),j=b.element.data("conditionPosition"),l=b.targetNextElement.data("conditionPosition")||b.element.siblings().length+2;if(l>j){l--}(0,o.reorderCondition)(g.dataset.reportId,h,l).then(function(a){return s(g,a)}).then(function(){return(0,i.get_string)("conditionmoved","core_reportbuilder",b.element.data("conditionName"))}).then(k.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{},g);return d.resolve()}).catch(e.default.exception)}})};a.init=u}); +function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/conditions",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/templates","core/toast","core_form/dynamicform","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/conditions"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=r(b);e=r(e);f=r(f);h=r(h);j=r(j);l=r(l);m=q(m);n=q(n);function p(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;p=function(){return a};return a}function q(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=p();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function r(a){return a&&a.__esModule?a:{default:a}}var s=function(a,b){var c=new f.default("core_reportbuilder/conditions:reload"),d=a.querySelector(n.regions.settingsConditions);return j.default.renderForPromise("core_reportbuilder/local/settings/conditions",{conditions:b}).then(function(e){var f=e.html,g=e.js;j.default.replaceNode(d,f,g+b.javascript);var h=a.querySelector(n.actions.reportAddCondition);null===h||void 0===h?void 0:h.focus();t(a);return c.resolve()})},t=function(){var a=document.querySelector(n.regions.report),b=a.querySelector(n.regions.settingsConditions);if(!b){return}var d=new l.default(b,"\\core_reportbuilder\\form\\condition");d.addEventListener(d.events.FORM_SUBMITTED,function(b){b.preventDefault();(0,i.get_string)("conditionsapplied","core_reportbuilder").then(k.add).catch(e.default.exception);(0,c.dispatchEvent)(m.tableReload,{},a)});d.addEventListener(d.events.NOSUBMIT_BUTTON_PRESSED,function(b){b.preventDefault();e.default.saveCancelPromise((0,i.get_string)("resetconditions","core_reportbuilder"),(0,i.get_string)("resetconditionsconfirm","core_reportbuilder"),(0,i.get_string)("resetall","core_reportbuilder"),{triggerElement:b.detail}).then(function(){var b=new f.default("core_reportbuilder/conditions:reset");return(0,o.resetConditions)(a.dataset.reportId).then(function(b){return s(a,b)}).then(function(){return(0,k.add)((0,i.get_string)("conditionsreset","core_reportbuilder"))}).then(function(){(0,c.dispatchEvent)(m.tableReload,{},a);return b.resolve()}).catch(e.default.exception)}).catch(function(){})})},u=function(a){(0,g.prefetchStrings)("core_reportbuilder",["conditionadded","conditiondeleted","conditionmoved","conditionsapplied","conditionsreset","deletecondition","deleteconditionconfirm","resetall","resetconditions","resetconditionsconfirm"]);(0,g.prefetchStrings)("core",["delete"]);t();if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(n.actions.reportAddCondition);if(b){a.preventDefault();var l=b.closest(n.regions.report);if("0"===b.value){return}var p=new f.default("core_reportbuilder/conditions:add");(0,o.addCondition)(l.dataset.reportId,b.value).then(function(a){return s(l,a)}).then(function(){return(0,i.get_string)("conditionadded","core_reportbuilder",b.options[b.selectedIndex].text)}).then(k.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{},l);return p.resolve()}).catch(e.default.exception)}var d=a.target.closest(n.actions.reportRemoveCondition);if(d){a.preventDefault();var g=d.closest(n.regions.report),h=d.closest(n.regions.activeCondition),j=h.dataset.conditionName;e.default.saveCancelPromise((0,i.get_string)("deletecondition","core_reportbuilder",j),(0,i.get_string)("deleteconditionconfirm","core_reportbuilder",j),(0,i.get_string)("delete","core"),{triggerElement:d}).then(function(){var a=new f.default("core_reportbuilder/conditions:remove");return(0,o.deleteCondition)(g.dataset.reportId,h.dataset.conditionId).then(function(a){return s(g,a)}).then(function(){return(0,k.add)((0,i.get_string)("conditiondeleted","core_reportbuilder",j))}).then(function(){(0,c.dispatchEvent)(m.tableReload,{},g);return a.resolve()}).catch(e.default.exception)}).catch(function(){})}});var d=new h.default("".concat(n.regions.activeConditions),{isHorizontal:!1});d.getElementName=function(a){return Promise.resolve(a.data("conditionName"))};(0,b.default)(document).on(h.default.EVENTS.DROP,n.regions.activeCondition,function(a,b){if(b.positionChanged){var d=new f.default("core_reportbuilder/conditions:reorder"),g=a.target.closest(n.regions.report),h=b.element.data("conditionId"),j=b.element.data("conditionPosition"),l=b.targetNextElement.data("conditionPosition")||b.element.siblings().length+2;if(l>j){l--}(0,o.reorderCondition)(g.dataset.reportId,h,l).then(function(a){return s(g,a)}).then(function(){return(0,i.get_string)("conditionmoved","core_reportbuilder",b.element.data("conditionName"))}).then(k.add).then(function(){(0,c.dispatchEvent)(m.tableReload,{},g);return d.resolve()}).catch(e.default.exception)}})};a.init=u}); //# sourceMappingURL=conditions.min.js.map diff --git a/reportbuilder/amd/build/local/editor/conditions.min.js.map b/reportbuilder/amd/build/local/editor/conditions.min.js.map index 92f0c0a15bfc1..9ab75bc67bc22 100644 --- a/reportbuilder/amd/build/local/editor/conditions.min.js.map +++ b/reportbuilder/amd/build/local/editor/conditions.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/local/editor/conditions.js"],"names":["reloadSettingsConditionsRegion","reportElement","templateContext","pendingPromise","Pending","settingsConditionsRegion","querySelector","reportSelectors","regions","settingsConditions","Templates","renderForPromise","conditions","then","html","js","replaceNode","javascript","reportAddCondition","actions","focus","initConditionsForm","resolve","document","report","conditionFormContainer","conditionForm","DynamicForm","addEventListener","events","FORM_SUBMITTED","event","preventDefault","addToast","catch","Notification","exception","reportEvents","tableReload","NOSUBMIT_BUTTON_PRESSED","saveCancelPromise","dataset","reportId","data","init","initialized","target","closest","value","options","selectedIndex","text","reportRemoveCondition","conditionContainer","activeCondition","conditionName","conditionId","activeConditionsSortableList","SortableList","activeConditions","isHorizontal","getElementName","element","Promise","on","EVENTS","DROP","info","positionChanged","conditionPosition","targetConditionPosition","targetNextElement","siblings","length"],"mappings":"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","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 * Report builder conditions editor\n *\n * @module core_reportbuilder/local/editor/conditions\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport SortableList from 'core/sortable_list';\nimport {get_string as getString} from 'core/str';\nimport Templates from 'core/templates';\nimport {add as addToast} from 'core/toast';\nimport DynamicForm from 'core_form/dynamicform';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {addCondition, deleteCondition, reorderCondition, resetConditions} from 'core_reportbuilder/local/repository/conditions';\n\n/**\n * Reload conditions settings region\n *\n * @param {Element} reportElement\n * @param {Object} templateContext\n * @return {Promise}\n */\nconst reloadSettingsConditionsRegion = (reportElement, templateContext) => {\n const pendingPromise = new Pending('core_reportbuilder/conditions:reload');\n const settingsConditionsRegion = reportElement.querySelector(reportSelectors.regions.settingsConditions);\n\n return Templates.renderForPromise('core_reportbuilder/local/settings/conditions', {conditions: templateContext})\n .then(({html, js}) => {\n Templates.replaceNode(settingsConditionsRegion, html, js + templateContext.javascript);\n // Re-focus the add condition element after reloading the region.\n const reportAddCondition = reportElement.querySelector(reportSelectors.actions.reportAddCondition);\n reportAddCondition?.focus();\n initConditionsForm(reportElement);\n return pendingPromise.resolve();\n });\n};\n\n/**\n * Initialise conditions form, must be called on each init because the form container is re-created when switching editor modes\n */\nconst initConditionsForm = () => {\n // Handle dynamic conditions form.\n const reportElement = document.querySelector(reportSelectors.regions.report);\n const conditionFormContainer = reportElement.querySelector(reportSelectors.regions.settingsConditions);\n if (!conditionFormContainer) {\n return;\n }\n const conditionForm = new DynamicForm(conditionFormContainer, '\\\\core_reportbuilder\\\\form\\\\condition');\n\n // Submit report conditions.\n conditionForm.addEventListener(conditionForm.events.FORM_SUBMITTED, event => {\n event.preventDefault();\n\n getString('conditionsapplied', 'core_reportbuilder')\n .then(addToast)\n .catch(Notification.exception);\n\n // After the form has been submitted, we should trigger report table reload.\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n });\n\n // Reset report conditions.\n conditionForm.addEventListener(conditionForm.events.NOSUBMIT_BUTTON_PRESSED, event => {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('resetconditions', 'core_reportbuilder'),\n getString('resetconditionsconfirm', 'core_reportbuilder'),\n getString('resetall', 'core_reportbuilder')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/conditions:reset');\n\n return resetConditions(reportElement.dataset.reportId)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => addToast(getString('conditionsreset', 'core_reportbuilder')))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n });\n};\n\n/**\n * Initialise module, prefetch all required strings\n *\n * @param {Boolean} initialized Ensure we only add our listeners once\n */\nexport const init = initialized => {\n prefetchStrings('core_reportbuilder', [\n 'conditionadded',\n 'conditiondeleted',\n 'conditionmoved',\n 'conditionsapplied',\n 'conditionsreset',\n 'deletecondition',\n 'deleteconditionconfirm',\n 'resetall',\n 'resetconditions',\n 'resetconditionsconfirm',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n initConditionsForm();\n if (initialized) {\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add condition to report.\n const reportAddCondition = event.target.closest(reportSelectors.actions.reportAddCondition);\n if (reportAddCondition) {\n event.preventDefault();\n\n const reportElement = reportAddCondition.closest(reportSelectors.regions.report);\n\n // Check if dropdown is closed with no condition selected.\n if (reportAddCondition.value === '0') {\n return;\n }\n\n const pendingPromise = new Pending('core_reportbuilder/conditions:add');\n\n addCondition(reportElement.dataset.reportId, reportAddCondition.value)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => getString('conditionadded', 'core_reportbuilder',\n reportAddCondition.options[reportAddCondition.selectedIndex].text))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n\n // Remove condition from report.\n const reportRemoveCondition = event.target.closest(reportSelectors.actions.reportRemoveCondition);\n if (reportRemoveCondition) {\n event.preventDefault();\n\n const reportElement = reportRemoveCondition.closest(reportSelectors.regions.report);\n const conditionContainer = reportRemoveCondition.closest(reportSelectors.regions.activeCondition);\n const conditionName = conditionContainer.dataset.conditionName;\n\n Notification.saveCancelPromise(\n getString('deletecondition', 'core_reportbuilder', conditionName),\n getString('deleteconditionconfirm', 'core_reportbuilder', conditionName),\n getString('delete', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/conditions:remove');\n\n return deleteCondition(reportElement.dataset.reportId, conditionContainer.dataset.conditionId)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => addToast(getString('conditiondeleted', 'core_reportbuilder', conditionName)))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n // Initialize sortable list to handle active conditions moving (note JQuery dependency, see MDL-72293 for resolution).\n var activeConditionsSortableList = new SortableList(`${reportSelectors.regions.activeConditions}`,\n {isHorizontal: false});\n activeConditionsSortableList.getElementName = element => Promise.resolve(element.data('conditionName'));\n\n $(document).on(SortableList.EVENTS.DROP, reportSelectors.regions.activeCondition, (event, info) => {\n if (info.positionChanged) {\n const pendingPromise = new Pending('core_reportbuilder/conditions:reorder');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const conditionId = info.element.data('conditionId');\n const conditionPosition = info.element.data('conditionPosition');\n\n // Select target position, if moving to the end then count number of element siblings.\n let targetConditionPosition = info.targetNextElement.data('conditionPosition') || info.element.siblings().length + 2;\n if (targetConditionPosition > conditionPosition) {\n targetConditionPosition--;\n }\n\n reorderCondition(reportElement.dataset.reportId, conditionId, targetConditionPosition)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => getString('conditionmoved', 'core_reportbuilder', info.element.data('conditionName')))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n });\n};\n"],"file":"conditions.min.js"} \ No newline at end of file +{"version":3,"sources":["../../../src/local/editor/conditions.js"],"names":["reloadSettingsConditionsRegion","reportElement","templateContext","pendingPromise","Pending","settingsConditionsRegion","querySelector","reportSelectors","regions","settingsConditions","Templates","renderForPromise","conditions","then","html","js","replaceNode","javascript","reportAddCondition","actions","focus","initConditionsForm","resolve","document","report","conditionFormContainer","conditionForm","DynamicForm","addEventListener","events","FORM_SUBMITTED","event","preventDefault","addToast","catch","Notification","exception","reportEvents","tableReload","NOSUBMIT_BUTTON_PRESSED","saveCancelPromise","triggerElement","detail","dataset","reportId","data","init","initialized","target","closest","value","options","selectedIndex","text","reportRemoveCondition","conditionContainer","activeCondition","conditionName","conditionId","activeConditionsSortableList","SortableList","activeConditions","isHorizontal","getElementName","element","Promise","on","EVENTS","DROP","info","positionChanged","conditionPosition","targetConditionPosition","targetNextElement","siblings","length"],"mappings":"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","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 * Report builder conditions editor\n *\n * @module core_reportbuilder/local/editor/conditions\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport SortableList from 'core/sortable_list';\nimport {get_string as getString} from 'core/str';\nimport Templates from 'core/templates';\nimport {add as addToast} from 'core/toast';\nimport DynamicForm from 'core_form/dynamicform';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {addCondition, deleteCondition, reorderCondition, resetConditions} from 'core_reportbuilder/local/repository/conditions';\n\n/**\n * Reload conditions settings region\n *\n * @param {Element} reportElement\n * @param {Object} templateContext\n * @return {Promise}\n */\nconst reloadSettingsConditionsRegion = (reportElement, templateContext) => {\n const pendingPromise = new Pending('core_reportbuilder/conditions:reload');\n const settingsConditionsRegion = reportElement.querySelector(reportSelectors.regions.settingsConditions);\n\n return Templates.renderForPromise('core_reportbuilder/local/settings/conditions', {conditions: templateContext})\n .then(({html, js}) => {\n Templates.replaceNode(settingsConditionsRegion, html, js + templateContext.javascript);\n // Re-focus the add condition element after reloading the region.\n const reportAddCondition = reportElement.querySelector(reportSelectors.actions.reportAddCondition);\n reportAddCondition?.focus();\n initConditionsForm(reportElement);\n return pendingPromise.resolve();\n });\n};\n\n/**\n * Initialise conditions form, must be called on each init because the form container is re-created when switching editor modes\n */\nconst initConditionsForm = () => {\n // Handle dynamic conditions form.\n const reportElement = document.querySelector(reportSelectors.regions.report);\n const conditionFormContainer = reportElement.querySelector(reportSelectors.regions.settingsConditions);\n if (!conditionFormContainer) {\n return;\n }\n const conditionForm = new DynamicForm(conditionFormContainer, '\\\\core_reportbuilder\\\\form\\\\condition');\n\n // Submit report conditions.\n conditionForm.addEventListener(conditionForm.events.FORM_SUBMITTED, event => {\n event.preventDefault();\n\n getString('conditionsapplied', 'core_reportbuilder')\n .then(addToast)\n .catch(Notification.exception);\n\n // After the form has been submitted, we should trigger report table reload.\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n });\n\n // Reset report conditions.\n conditionForm.addEventListener(conditionForm.events.NOSUBMIT_BUTTON_PRESSED, event => {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('resetconditions', 'core_reportbuilder'),\n getString('resetconditionsconfirm', 'core_reportbuilder'),\n getString('resetall', 'core_reportbuilder'),\n {triggerElement: event.detail}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/conditions:reset');\n\n return resetConditions(reportElement.dataset.reportId)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => addToast(getString('conditionsreset', 'core_reportbuilder')))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n });\n};\n\n/**\n * Initialise module, prefetch all required strings\n *\n * @param {Boolean} initialized Ensure we only add our listeners once\n */\nexport const init = initialized => {\n prefetchStrings('core_reportbuilder', [\n 'conditionadded',\n 'conditiondeleted',\n 'conditionmoved',\n 'conditionsapplied',\n 'conditionsreset',\n 'deletecondition',\n 'deleteconditionconfirm',\n 'resetall',\n 'resetconditions',\n 'resetconditionsconfirm',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n initConditionsForm();\n if (initialized) {\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add condition to report.\n const reportAddCondition = event.target.closest(reportSelectors.actions.reportAddCondition);\n if (reportAddCondition) {\n event.preventDefault();\n\n const reportElement = reportAddCondition.closest(reportSelectors.regions.report);\n\n // Check if dropdown is closed with no condition selected.\n if (reportAddCondition.value === '0') {\n return;\n }\n\n const pendingPromise = new Pending('core_reportbuilder/conditions:add');\n\n addCondition(reportElement.dataset.reportId, reportAddCondition.value)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => getString('conditionadded', 'core_reportbuilder',\n reportAddCondition.options[reportAddCondition.selectedIndex].text))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n\n // Remove condition from report.\n const reportRemoveCondition = event.target.closest(reportSelectors.actions.reportRemoveCondition);\n if (reportRemoveCondition) {\n event.preventDefault();\n\n const reportElement = reportRemoveCondition.closest(reportSelectors.regions.report);\n const conditionContainer = reportRemoveCondition.closest(reportSelectors.regions.activeCondition);\n const conditionName = conditionContainer.dataset.conditionName;\n\n Notification.saveCancelPromise(\n getString('deletecondition', 'core_reportbuilder', conditionName),\n getString('deleteconditionconfirm', 'core_reportbuilder', conditionName),\n getString('delete', 'core'),\n {triggerElement: reportRemoveCondition}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/conditions:remove');\n\n return deleteCondition(reportElement.dataset.reportId, conditionContainer.dataset.conditionId)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => addToast(getString('conditiondeleted', 'core_reportbuilder', conditionName)))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n // Initialize sortable list to handle active conditions moving (note JQuery dependency, see MDL-72293 for resolution).\n var activeConditionsSortableList = new SortableList(`${reportSelectors.regions.activeConditions}`,\n {isHorizontal: false});\n activeConditionsSortableList.getElementName = element => Promise.resolve(element.data('conditionName'));\n\n $(document).on(SortableList.EVENTS.DROP, reportSelectors.regions.activeCondition, (event, info) => {\n if (info.positionChanged) {\n const pendingPromise = new Pending('core_reportbuilder/conditions:reorder');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const conditionId = info.element.data('conditionId');\n const conditionPosition = info.element.data('conditionPosition');\n\n // Select target position, if moving to the end then count number of element siblings.\n let targetConditionPosition = info.targetNextElement.data('conditionPosition') || info.element.siblings().length + 2;\n if (targetConditionPosition > conditionPosition) {\n targetConditionPosition--;\n }\n\n reorderCondition(reportElement.dataset.reportId, conditionId, targetConditionPosition)\n .then(data => reloadSettingsConditionsRegion(reportElement, data))\n .then(() => getString('conditionmoved', 'core_reportbuilder', info.element.data('conditionName')))\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n });\n};\n"],"file":"conditions.min.js"} \ No newline at end of file diff --git a/reportbuilder/amd/build/local/editor/filters.min.js b/reportbuilder/amd/build/local/editor/filters.min.js index 42788c35c0ef6..d61fd54d1b4f7 100644 --- a/reportbuilder/amd/build/local/editor/filters.min.js +++ b/reportbuilder/amd/build/local/editor/filters.min.js @@ -1,2 +1,2 @@ -function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/filters",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/templates","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/filters"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=q(b);e=q(e);f=q(f);h=q(h);j=q(j);l=p(l);m=p(m);function o(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;o=function(){return a};return a}function p(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=o();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function q(a){return a&&a.__esModule?a:{default:a}}var r=function(a,b){var c=new f.default("core_reportbuilder/filters:reload"),d=a.querySelector(m.regions.settingsFilters);return j.default.renderForPromise("core_reportbuilder/local/settings/filters",{filters:b}).then(function(b){var e=b.html,f=b.js;j.default.replaceNode(d,e,f);var g=a.querySelector(m.actions.reportAddFilter);null===g||void 0===g?void 0:g.focus();return c.resolve()})},s=function(a){(0,g.prefetchStrings)("core_reportbuilder",["deletefilter","deletefilterconfirm","filteradded","filterdeleted","filtermoved"]);(0,g.prefetchStrings)("core",["delete"]);if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(m.actions.reportAddFilter);if(b){a.preventDefault();var o=b.closest(m.regions.report);if("0"===b.value){return}var p=new f.default("core_reportbuilder/filters:add");(0,n.addFilter)(o.dataset.reportId,b.value).then(function(a){return r(o,a)}).then(function(){return(0,i.get_string)("filteradded","core_reportbuilder",b.options[b.selectedIndex].text)}).then(k.add).then(function(){return p.resolve()}).catch(e.default.exception)}var d=a.target.closest(m.actions.reportRemoveFilter);if(d){a.preventDefault();var g=d.closest(m.regions.report),h=d.closest(m.regions.activeFilter),j=h.dataset.filterName;e.default.saveCancelPromise((0,i.get_string)("deletefilter","core_reportbuilder",j),(0,i.get_string)("deletefilterconfirm","core_reportbuilder",j),(0,i.get_string)("delete","core")).then(function(){var a=new f.default("core_reportbuilder/filters:remove");return(0,n.deleteFilter)(g.dataset.reportId,h.dataset.filterId).then(function(a){return r(g,a)}).then(function(){return(0,k.add)((0,i.get_string)("filterdeleted","core_reportbuilder",j))}).then(function(){(0,c.dispatchEvent)(l.tableReload,{},g);return a.resolve()}).catch(e.default.exception)}).catch(function(){})}});var d=new h.default("".concat(m.regions.activeFilters," ul"),{isHorizontal:!1});d.getElementName=function(a){return Promise.resolve(a.data("filterName"))};(0,b.default)(document).on(h.default.EVENTS.DROP,"".concat(m.regions.report," li[data-filter-id]"),function(a,b){if(b.positionChanged){var c=new f.default("core_reportbuilder/filters:reorder"),d=a.target.closest(m.regions.report),g=b.element.data("filterId"),h=b.element.data("filterPosition"),j=b.targetNextElement.data("filterPosition")||b.element.siblings().length+2;if(j>h){j--}(0,n.reorderFilter)(d.dataset.reportId,g,j).then(function(a){return r(d,a)}).then(function(){return(0,i.get_string)("filtermoved","core_reportbuilder",b.element.data("filterName"))}).then(k.add).then(function(){return c.resolve()}).catch(e.default.exception)}})};a.init=s}); +function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/filters",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/templates","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/filters"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=q(b);e=q(e);f=q(f);h=q(h);j=q(j);l=p(l);m=p(m);function o(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;o=function(){return a};return a}function p(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=o();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function q(a){return a&&a.__esModule?a:{default:a}}var r=function(a,b){var c=new f.default("core_reportbuilder/filters:reload"),d=a.querySelector(m.regions.settingsFilters);return j.default.renderForPromise("core_reportbuilder/local/settings/filters",{filters:b}).then(function(b){var e=b.html,f=b.js;j.default.replaceNode(d,e,f);var g=a.querySelector(m.actions.reportAddFilter);null===g||void 0===g?void 0:g.focus();return c.resolve()})},s=function(a){(0,g.prefetchStrings)("core_reportbuilder",["deletefilter","deletefilterconfirm","filteradded","filterdeleted","filtermoved"]);(0,g.prefetchStrings)("core",["delete"]);if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(m.actions.reportAddFilter);if(b){a.preventDefault();var o=b.closest(m.regions.report);if("0"===b.value){return}var p=new f.default("core_reportbuilder/filters:add");(0,n.addFilter)(o.dataset.reportId,b.value).then(function(a){return r(o,a)}).then(function(){return(0,i.get_string)("filteradded","core_reportbuilder",b.options[b.selectedIndex].text)}).then(k.add).then(function(){return p.resolve()}).catch(e.default.exception)}var d=a.target.closest(m.actions.reportRemoveFilter);if(d){a.preventDefault();var g=d.closest(m.regions.report),h=d.closest(m.regions.activeFilter),j=h.dataset.filterName;e.default.saveCancelPromise((0,i.get_string)("deletefilter","core_reportbuilder",j),(0,i.get_string)("deletefilterconfirm","core_reportbuilder",j),(0,i.get_string)("delete","core"),{triggerElement:d}).then(function(){var a=new f.default("core_reportbuilder/filters:remove");return(0,n.deleteFilter)(g.dataset.reportId,h.dataset.filterId).then(function(a){return r(g,a)}).then(function(){return(0,k.add)((0,i.get_string)("filterdeleted","core_reportbuilder",j))}).then(function(){(0,c.dispatchEvent)(l.tableReload,{},g);return a.resolve()}).catch(e.default.exception)}).catch(function(){})}});var d=new h.default("".concat(m.regions.activeFilters," ul"),{isHorizontal:!1});d.getElementName=function(a){return Promise.resolve(a.data("filterName"))};(0,b.default)(document).on(h.default.EVENTS.DROP,"".concat(m.regions.report," li[data-filter-id]"),function(a,b){if(b.positionChanged){var c=new f.default("core_reportbuilder/filters:reorder"),d=a.target.closest(m.regions.report),g=b.element.data("filterId"),h=b.element.data("filterPosition"),j=b.targetNextElement.data("filterPosition")||b.element.siblings().length+2;if(j>h){j--}(0,n.reorderFilter)(d.dataset.reportId,g,j).then(function(a){return r(d,a)}).then(function(){return(0,i.get_string)("filtermoved","core_reportbuilder",b.element.data("filterName"))}).then(k.add).then(function(){return c.resolve()}).catch(e.default.exception)}})};a.init=s}); //# sourceMappingURL=filters.min.js.map diff --git a/reportbuilder/amd/build/local/editor/filters.min.js.map b/reportbuilder/amd/build/local/editor/filters.min.js.map index 7da936631c309..649bfa4714978 100644 --- a/reportbuilder/amd/build/local/editor/filters.min.js.map +++ b/reportbuilder/amd/build/local/editor/filters.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/local/editor/filters.js"],"names":["reloadSettingsFiltersRegion","reportElement","templateContext","pendingPromise","Pending","settingsFiltersRegion","querySelector","reportSelectors","regions","settingsFilters","Templates","renderForPromise","filters","then","html","js","replaceNode","reportAddFilter","actions","focus","resolve","init","initialized","document","addEventListener","event","target","closest","preventDefault","report","value","dataset","reportId","data","options","selectedIndex","text","addToast","catch","Notification","exception","reportRemoveFilter","filterContainer","activeFilter","filterName","saveCancelPromise","filterId","reportEvents","tableReload","activeFiltersSortableList","SortableList","activeFilters","isHorizontal","getElementName","element","Promise","on","EVENTS","DROP","info","positionChanged","filterPosition","targetFilterPosition","targetNextElement","siblings","length"],"mappings":"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","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 * Report builder filters editor\n *\n * @module core_reportbuilder/local/editor/filters\n * @copyright 2021 David Matamoros \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport SortableList from 'core/sortable_list';\nimport {get_string as getString} from 'core/str';\nimport Templates from 'core/templates';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {addFilter, deleteFilter, reorderFilter} from 'core_reportbuilder/local/repository/filters';\n\n/**\n * Reload filters settings region\n *\n * @param {Element} reportElement\n * @param {Object} templateContext\n * @return {Promise}\n */\nconst reloadSettingsFiltersRegion = (reportElement, templateContext) => {\n const pendingPromise = new Pending('core_reportbuilder/filters:reload');\n const settingsFiltersRegion = reportElement.querySelector(reportSelectors.regions.settingsFilters);\n\n return Templates.renderForPromise('core_reportbuilder/local/settings/filters', {filters: templateContext})\n .then(({html, js}) => {\n Templates.replaceNode(settingsFiltersRegion, html, js);\n // Re-focus the add filter element after reloading the region.\n const reportAddFilter = reportElement.querySelector(reportSelectors.actions.reportAddFilter);\n reportAddFilter?.focus();\n return pendingPromise.resolve();\n });\n};\n\n/**\n * Initialise module, prefetch all required strings\n *\n * @param {Boolean} initialized Ensure we only add our listeners once\n */\nexport const init = initialized => {\n prefetchStrings('core_reportbuilder', [\n 'deletefilter',\n 'deletefilterconfirm',\n 'filteradded',\n 'filterdeleted',\n 'filtermoved',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n if (initialized) {\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add filter to report.\n const reportAddFilter = event.target.closest(reportSelectors.actions.reportAddFilter);\n if (reportAddFilter) {\n event.preventDefault();\n\n const reportElement = reportAddFilter.closest(reportSelectors.regions.report);\n\n // Check if dropdown is closed with no filter selected.\n if (reportAddFilter.value === '0') {\n return;\n }\n\n const pendingPromise = new Pending('core_reportbuilder/filters:add');\n\n addFilter(reportElement.dataset.reportId, reportAddFilter.value)\n .then(data => reloadSettingsFiltersRegion(reportElement, data))\n .then(() => getString('filteradded', 'core_reportbuilder',\n reportAddFilter.options[reportAddFilter.selectedIndex].text))\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }\n\n // Remove filter from report.\n const reportRemoveFilter = event.target.closest(reportSelectors.actions.reportRemoveFilter);\n if (reportRemoveFilter) {\n event.preventDefault();\n\n const reportElement = reportRemoveFilter.closest(reportSelectors.regions.report);\n const filterContainer = reportRemoveFilter.closest(reportSelectors.regions.activeFilter);\n const filterName = filterContainer.dataset.filterName;\n\n Notification.saveCancelPromise(\n getString('deletefilter', 'core_reportbuilder', filterName),\n getString('deletefilterconfirm', 'core_reportbuilder', filterName),\n getString('delete', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/filters:remove');\n\n return deleteFilter(reportElement.dataset.reportId, filterContainer.dataset.filterId)\n .then(data => reloadSettingsFiltersRegion(reportElement, data))\n .then(() => addToast(getString('filterdeleted', 'core_reportbuilder', filterName)))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n // Initialize sortable list to handle active filters moving (note JQuery dependency, see MDL-72293 for resolution).\n var activeFiltersSortableList = new SortableList(`${reportSelectors.regions.activeFilters} ul`, {isHorizontal: false});\n activeFiltersSortableList.getElementName = element => Promise.resolve(element.data('filterName'));\n\n $(document).on(SortableList.EVENTS.DROP, `${reportSelectors.regions.report} li[data-filter-id]`, (event, info) => {\n if (info.positionChanged) {\n const pendingPromise = new Pending('core_reportbuilder/filters:reorder');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const filterId = info.element.data('filterId');\n const filterPosition = info.element.data('filterPosition');\n\n // Select target position, if moving to the end then count number of element siblings.\n let targetFilterPosition = info.targetNextElement.data('filterPosition') || info.element.siblings().length + 2;\n if (targetFilterPosition > filterPosition) {\n targetFilterPosition--;\n }\n\n reorderFilter(reportElement.dataset.reportId, filterId, targetFilterPosition)\n .then(data => reloadSettingsFiltersRegion(reportElement, data))\n .then(() => getString('filtermoved', 'core_reportbuilder', info.element.data('filterName')))\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }\n });\n};\n"],"file":"filters.min.js"} \ No newline at end of file +{"version":3,"sources":["../../../src/local/editor/filters.js"],"names":["reloadSettingsFiltersRegion","reportElement","templateContext","pendingPromise","Pending","settingsFiltersRegion","querySelector","reportSelectors","regions","settingsFilters","Templates","renderForPromise","filters","then","html","js","replaceNode","reportAddFilter","actions","focus","resolve","init","initialized","document","addEventListener","event","target","closest","preventDefault","report","value","dataset","reportId","data","options","selectedIndex","text","addToast","catch","Notification","exception","reportRemoveFilter","filterContainer","activeFilter","filterName","saveCancelPromise","triggerElement","filterId","reportEvents","tableReload","activeFiltersSortableList","SortableList","activeFilters","isHorizontal","getElementName","element","Promise","on","EVENTS","DROP","info","positionChanged","filterPosition","targetFilterPosition","targetNextElement","siblings","length"],"mappings":"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","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 * Report builder filters editor\n *\n * @module core_reportbuilder/local/editor/filters\n * @copyright 2021 David Matamoros \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport SortableList from 'core/sortable_list';\nimport {get_string as getString} from 'core/str';\nimport Templates from 'core/templates';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {addFilter, deleteFilter, reorderFilter} from 'core_reportbuilder/local/repository/filters';\n\n/**\n * Reload filters settings region\n *\n * @param {Element} reportElement\n * @param {Object} templateContext\n * @return {Promise}\n */\nconst reloadSettingsFiltersRegion = (reportElement, templateContext) => {\n const pendingPromise = new Pending('core_reportbuilder/filters:reload');\n const settingsFiltersRegion = reportElement.querySelector(reportSelectors.regions.settingsFilters);\n\n return Templates.renderForPromise('core_reportbuilder/local/settings/filters', {filters: templateContext})\n .then(({html, js}) => {\n Templates.replaceNode(settingsFiltersRegion, html, js);\n // Re-focus the add filter element after reloading the region.\n const reportAddFilter = reportElement.querySelector(reportSelectors.actions.reportAddFilter);\n reportAddFilter?.focus();\n return pendingPromise.resolve();\n });\n};\n\n/**\n * Initialise module, prefetch all required strings\n *\n * @param {Boolean} initialized Ensure we only add our listeners once\n */\nexport const init = initialized => {\n prefetchStrings('core_reportbuilder', [\n 'deletefilter',\n 'deletefilterconfirm',\n 'filteradded',\n 'filterdeleted',\n 'filtermoved',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n if (initialized) {\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Add filter to report.\n const reportAddFilter = event.target.closest(reportSelectors.actions.reportAddFilter);\n if (reportAddFilter) {\n event.preventDefault();\n\n const reportElement = reportAddFilter.closest(reportSelectors.regions.report);\n\n // Check if dropdown is closed with no filter selected.\n if (reportAddFilter.value === '0') {\n return;\n }\n\n const pendingPromise = new Pending('core_reportbuilder/filters:add');\n\n addFilter(reportElement.dataset.reportId, reportAddFilter.value)\n .then(data => reloadSettingsFiltersRegion(reportElement, data))\n .then(() => getString('filteradded', 'core_reportbuilder',\n reportAddFilter.options[reportAddFilter.selectedIndex].text))\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }\n\n // Remove filter from report.\n const reportRemoveFilter = event.target.closest(reportSelectors.actions.reportRemoveFilter);\n if (reportRemoveFilter) {\n event.preventDefault();\n\n const reportElement = reportRemoveFilter.closest(reportSelectors.regions.report);\n const filterContainer = reportRemoveFilter.closest(reportSelectors.regions.activeFilter);\n const filterName = filterContainer.dataset.filterName;\n\n Notification.saveCancelPromise(\n getString('deletefilter', 'core_reportbuilder', filterName),\n getString('deletefilterconfirm', 'core_reportbuilder', filterName),\n getString('delete', 'core'),\n {triggerElement: reportRemoveFilter}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/filters:remove');\n\n return deleteFilter(reportElement.dataset.reportId, filterContainer.dataset.filterId)\n .then(data => reloadSettingsFiltersRegion(reportElement, data))\n .then(() => addToast(getString('filterdeleted', 'core_reportbuilder', filterName)))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n // Initialize sortable list to handle active filters moving (note JQuery dependency, see MDL-72293 for resolution).\n var activeFiltersSortableList = new SortableList(`${reportSelectors.regions.activeFilters} ul`, {isHorizontal: false});\n activeFiltersSortableList.getElementName = element => Promise.resolve(element.data('filterName'));\n\n $(document).on(SortableList.EVENTS.DROP, `${reportSelectors.regions.report} li[data-filter-id]`, (event, info) => {\n if (info.positionChanged) {\n const pendingPromise = new Pending('core_reportbuilder/filters:reorder');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n const filterId = info.element.data('filterId');\n const filterPosition = info.element.data('filterPosition');\n\n // Select target position, if moving to the end then count number of element siblings.\n let targetFilterPosition = info.targetNextElement.data('filterPosition') || info.element.siblings().length + 2;\n if (targetFilterPosition > filterPosition) {\n targetFilterPosition--;\n }\n\n reorderFilter(reportElement.dataset.reportId, filterId, targetFilterPosition)\n .then(data => reloadSettingsFiltersRegion(reportElement, data))\n .then(() => getString('filtermoved', 'core_reportbuilder', info.element.data('filterName')))\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }\n });\n};\n"],"file":"filters.min.js"} \ No newline at end of file diff --git a/reportbuilder/amd/build/reports_list.min.js b/reportbuilder/amd/build/reports_list.min.js index b87b779d1e315..3647dd6e91ad8 100644 --- a/reportbuilder/amd/build/reports_list.min.js +++ b/reportbuilder/amd/build/reports_list.min.js @@ -1,2 +1,2 @@ -function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/reports_list",["exports","core/event_dispatcher","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/reports","core_reportbuilder/local/repository/modals"],function(a,b,c,d,e,f,g,h,i,j,k){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;c=n(c);d=n(d);h=m(h);i=m(i);function l(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;l=function(){return a};return a}function m(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=l();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function n(a){return a&&a.__esModule?a:{default:a}}a.init=function init(){(0,e.prefetchStrings)("core_reportbuilder",["deletereport","deletereportconfirm","editreportdetails","newreport","reportdeleted","reportupdated"]);(0,e.prefetchStrings)("core",["delete"]);document.addEventListener("click",function(a){var e=a.target.closest(i.actions.reportCreate);if(e){a.preventDefault();var n=(0,k.createReportModal)(a.target,(0,f.get_string)("newreport","core_reportbuilder"));n.addEventListener(n.events.FORM_SUBMITTED,function(a){window.location.href=a.detail});n.show()}var l=a.target.closest(i.actions.reportEdit);if(l){a.preventDefault();var o=(0,k.createReportModal)(a.target,(0,f.get_string)("editreportdetails","core_reportbuilder"),l.dataset.reportId);o.addEventListener(o.events.FORM_SUBMITTED,function(){var d=a.target.closest(i.regions.report);(0,f.get_string)("reportupdated","core_reportbuilder").then(g.add).then(function(){(0,b.dispatchEvent)(h.tableReload,{preservePagination:!0},d)}).catch(c.default.exception)});o.show()}var m=a.target.closest(i.actions.reportDelete);if(m){a.preventDefault();c.default.saveCancelPromise((0,f.get_string)("deletereport","core_reportbuilder"),(0,f.get_string)("deletereportconfirm","core_reportbuilder",m.dataset.reportName),(0,f.get_string)("delete","core")).then(function(){var e=new d.default("core_reportbuilder/reports:delete"),k=a.target.closest(i.regions.report);return(0,j.deleteReport)(m.dataset.reportId).then(function(){return(0,g.add)((0,f.get_string)("reportdeleted","core_reportbuilder"))}).then(function(){(0,b.dispatchEvent)(h.tableReload,{preservePagination:!0},k);return e.resolve()}).catch(c.default.exception)}).catch(function(){})}})}}); +function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/reports_list",["exports","core/event_dispatcher","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/reports","core_reportbuilder/local/repository/modals"],function(a,b,c,d,e,f,g,h,i,j,k){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;c=n(c);d=n(d);h=m(h);i=m(i);function l(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;l=function(){return a};return a}function m(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=l();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function n(a){return a&&a.__esModule?a:{default:a}}a.init=function init(){(0,e.prefetchStrings)("core_reportbuilder",["deletereport","deletereportconfirm","editreportdetails","newreport","reportdeleted","reportupdated"]);(0,e.prefetchStrings)("core",["delete"]);document.addEventListener("click",function(a){var e=a.target.closest(i.actions.reportCreate);if(e){a.preventDefault();var n=(0,k.createReportModal)(a.target,(0,f.get_string)("newreport","core_reportbuilder"));n.addEventListener(n.events.FORM_SUBMITTED,function(a){window.location.href=a.detail});n.show()}var l=a.target.closest(i.actions.reportEdit);if(l){a.preventDefault();var o=(0,k.createReportModal)(l,(0,f.get_string)("editreportdetails","core_reportbuilder"),l.dataset.reportId);o.addEventListener(o.events.FORM_SUBMITTED,function(){var d=a.target.closest(i.regions.report);(0,f.get_string)("reportupdated","core_reportbuilder").then(g.add).then(function(){(0,b.dispatchEvent)(h.tableReload,{preservePagination:!0},d)}).catch(c.default.exception)});o.show()}var m=a.target.closest(i.actions.reportDelete);if(m){a.preventDefault();c.default.saveCancelPromise((0,f.get_string)("deletereport","core_reportbuilder"),(0,f.get_string)("deletereportconfirm","core_reportbuilder",m.dataset.reportName),(0,f.get_string)("delete","core"),{triggerElement:m}).then(function(){var e=new d.default("core_reportbuilder/reports:delete"),k=a.target.closest(i.regions.report);return(0,j.deleteReport)(m.dataset.reportId).then(function(){return(0,g.add)((0,f.get_string)("reportdeleted","core_reportbuilder"))}).then(function(){(0,b.dispatchEvent)(h.tableReload,{preservePagination:!0},k);return e.resolve()}).catch(c.default.exception)}).catch(function(){})}})}}); //# sourceMappingURL=reports_list.min.js.map diff --git a/reportbuilder/amd/build/reports_list.min.js.map b/reportbuilder/amd/build/reports_list.min.js.map index fe5c10d242236..ce8a85c711460 100644 --- a/reportbuilder/amd/build/reports_list.min.js.map +++ b/reportbuilder/amd/build/reports_list.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/reports_list.js"],"names":["init","document","addEventListener","event","reportCreate","target","closest","reportSelectors","actions","preventDefault","reportModal","events","FORM_SUBMITTED","window","location","href","detail","show","reportEdit","dataset","reportId","reportElement","regions","report","then","addToast","reportEvents","tableReload","preservePagination","catch","Notification","exception","reportDelete","saveCancelPromise","reportName","pendingPromise","Pending","resolve"],"mappings":"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","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 * Report builder reports list management\n *\n * @module core_reportbuilder/reports_list\n * @copyright 2021 David Matamoros \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {get_string as getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {deleteReport} from 'core_reportbuilder/local/repository/reports';\nimport {createReportModal} from 'core_reportbuilder/local/repository/modals';\n\n/**\n * Initialise module\n */\nexport const init = () => {\n prefetchStrings('core_reportbuilder', [\n 'deletereport',\n 'deletereportconfirm',\n 'editreportdetails',\n 'newreport',\n 'reportdeleted',\n 'reportupdated',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n document.addEventListener('click', event => {\n const reportCreate = event.target.closest(reportSelectors.actions.reportCreate);\n if (reportCreate) {\n event.preventDefault();\n\n // Redirect user to editing interface for the report after submission.\n const reportModal = createReportModal(event.target, getString('newreport', 'core_reportbuilder'));\n reportModal.addEventListener(reportModal.events.FORM_SUBMITTED, event => {\n window.location.href = event.detail;\n });\n\n reportModal.show();\n }\n\n const reportEdit = event.target.closest(reportSelectors.actions.reportEdit);\n if (reportEdit) {\n event.preventDefault();\n\n // Reload current report page after submission.\n const reportModal = createReportModal(event.target, getString('editreportdetails', 'core_reportbuilder'),\n reportEdit.dataset.reportId);\n reportModal.addEventListener(reportModal.events.FORM_SUBMITTED, () => {\n const reportElement = event.target.closest(reportSelectors.regions.report);\n\n getString('reportupdated', 'core_reportbuilder')\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return;\n })\n .catch(Notification.exception);\n });\n\n reportModal.show();\n }\n\n const reportDelete = event.target.closest(reportSelectors.actions.reportDelete);\n if (reportDelete) {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('deletereport', 'core_reportbuilder'),\n getString('deletereportconfirm', 'core_reportbuilder', reportDelete.dataset.reportName),\n getString('delete', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/reports:delete');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n\n return deleteReport(reportDelete.dataset.reportId)\n .then(() => addToast(getString('reportdeleted', 'core_reportbuilder')))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n};\n"],"file":"reports_list.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/reports_list.js"],"names":["init","document","addEventListener","event","reportCreate","target","closest","reportSelectors","actions","preventDefault","reportModal","events","FORM_SUBMITTED","window","location","href","detail","show","reportEdit","dataset","reportId","reportElement","regions","report","then","addToast","reportEvents","tableReload","preservePagination","catch","Notification","exception","reportDelete","saveCancelPromise","reportName","triggerElement","pendingPromise","Pending","resolve"],"mappings":"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","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 * Report builder reports list management\n *\n * @module core_reportbuilder/reports_list\n * @copyright 2021 David Matamoros \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {get_string as getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {deleteReport} from 'core_reportbuilder/local/repository/reports';\nimport {createReportModal} from 'core_reportbuilder/local/repository/modals';\n\n/**\n * Initialise module\n */\nexport const init = () => {\n prefetchStrings('core_reportbuilder', [\n 'deletereport',\n 'deletereportconfirm',\n 'editreportdetails',\n 'newreport',\n 'reportdeleted',\n 'reportupdated',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n ]);\n\n document.addEventListener('click', event => {\n const reportCreate = event.target.closest(reportSelectors.actions.reportCreate);\n if (reportCreate) {\n event.preventDefault();\n\n // Redirect user to editing interface for the report after submission.\n const reportModal = createReportModal(event.target, getString('newreport', 'core_reportbuilder'));\n reportModal.addEventListener(reportModal.events.FORM_SUBMITTED, event => {\n window.location.href = event.detail;\n });\n\n reportModal.show();\n }\n\n const reportEdit = event.target.closest(reportSelectors.actions.reportEdit);\n if (reportEdit) {\n event.preventDefault();\n\n // Reload current report page after submission.\n const reportModal = createReportModal(reportEdit, getString('editreportdetails', 'core_reportbuilder'),\n reportEdit.dataset.reportId);\n reportModal.addEventListener(reportModal.events.FORM_SUBMITTED, () => {\n const reportElement = event.target.closest(reportSelectors.regions.report);\n\n getString('reportupdated', 'core_reportbuilder')\n .then(addToast)\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return;\n })\n .catch(Notification.exception);\n });\n\n reportModal.show();\n }\n\n const reportDelete = event.target.closest(reportSelectors.actions.reportDelete);\n if (reportDelete) {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('deletereport', 'core_reportbuilder'),\n getString('deletereportconfirm', 'core_reportbuilder', reportDelete.dataset.reportName),\n getString('delete', 'core'),\n {triggerElement: reportDelete}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/reports:delete');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n\n return deleteReport(reportDelete.dataset.reportId)\n .then(() => addToast(getString('reportdeleted', 'core_reportbuilder')))\n .then(() => {\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n};\n"],"file":"reports_list.min.js"} \ No newline at end of file diff --git a/reportbuilder/amd/build/schedules.min.js b/reportbuilder/amd/build/schedules.min.js index fccb99df7da03..6538b58c802c6 100644 --- a/reportbuilder/amd/build/schedules.min.js +++ b/reportbuilder/amd/build/schedules.min.js @@ -1,2 +1,2 @@ -function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/schedules",["exports","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/modals","core_reportbuilder/local/repository/schedules"],function(a,b,c,d,e,f,g,h,i,j,k,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;d=o(d);e=o(e);i=n(i);j=n(j);function m(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;m=function(){return a};return a}function n(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=m();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function o(a){return a&&a.__esModule?a:{default:a}}var p=!1,q=function(a){(0,f.prefetchStrings)("core_reportbuilder",["deleteschedule","deletescheduleconfirm","disableschedule","editscheduledetails","enableschedule","newschedule","schedulecreated","scheduledeleted","schedulesent","scheduleupdated","sendschedule","sendscheduleconfirm"]);(0,f.prefetchStrings)("core",["confirm","delete"]);if(p){return}document.addEventListener("click",function(c){var f=c.target.closest(j.actions.scheduleCreate);if(f){c.preventDefault();var s=(0,k.createScheduleModal)(c.target,(0,g.get_string)("newschedule","core_reportbuilder"),a);s.addEventListener(s.events.FORM_SUBMITTED,function(){(0,g.get_string)("schedulecreated","core_reportbuilder").then(h.add).then(function(){var a=document.querySelector(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});s.show()}var m=c.target.closest(j.actions.scheduleToggle);if(m){var n=new e.default("core_reportbuilder/schedules:toggle"),o=+!+m.dataset.state;(0,l.toggleSchedule)(a,m.dataset.id,o).then(function(){var a=m.closest("tr");a.classList.toggle("dimmed_text");m.dataset.state=o;var b=o?"disableschedule":"enableschedule";return(0,g.get_string)(b,"core_reportbuilder")}).then(function(a){var b=m.parentElement.querySelector("label[for=\"".concat(m.id,"\"] > span"));b.innerHTML=a;return n.resolve()}).catch(d.default.exception)}var p=c.target.closest(j.actions.scheduleEdit);if(p){c.preventDefault();var t=(0,k.createScheduleModal)(p,(0,g.get_string)("editscheduledetails","core_reportbuilder"),a,p.dataset.scheduleId);t.addEventListener(t.events.FORM_SUBMITTED,function(){(0,g.get_string)("scheduleupdated","core_reportbuilder").then(h.add).then(function(){var a=p.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});t.show()}var q=c.target.closest(j.actions.scheduleSend);if(q){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("sendschedule","core_reportbuilder"),(0,g.get_string)("sendscheduleconfirm","core_reportbuilder",q.dataset.scheduleName),(0,g.get_string)("confirm","core")).then(function(){var b=new e.default("core_reportbuilder/schedules:send");return(0,l.sendSchedule)(a,q.dataset.scheduleId).then((0,h.add)((0,g.get_string)("schedulesent","core_reportbuilder"))).then(function(){return b.resolve()}).catch(d.default.exception)}).catch(function(){})}var r=c.target.closest(j.actions.scheduleDelete);if(r){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("deleteschedule","core_reportbuilder"),(0,g.get_string)("deletescheduleconfirm","core_reportbuilder",r.dataset.scheduleName),(0,g.get_string)("delete","core")).then(function(){var c=new e.default("core_reportbuilder/schedules:delete");return(0,l.deleteSchedule)(a,r.dataset.scheduleId).then((0,h.add)((0,g.get_string)("scheduledeleted","core_reportbuilder"))).then(function(){var a=r.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{preservePagination:!0},a);return c.resolve()}).catch(d.default.exception)}).catch(function(){})}});p=!0};a.init=q}); +function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/schedules",["exports","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/modals","core_reportbuilder/local/repository/schedules"],function(a,b,c,d,e,f,g,h,i,j,k,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;d=o(d);e=o(e);i=n(i);j=n(j);function m(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;m=function(){return a};return a}function n(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=m();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function o(a){return a&&a.__esModule?a:{default:a}}var p=!1,q=function(a){(0,f.prefetchStrings)("core_reportbuilder",["deleteschedule","deletescheduleconfirm","disableschedule","editscheduledetails","enableschedule","newschedule","schedulecreated","scheduledeleted","schedulesent","scheduleupdated","sendschedule","sendscheduleconfirm"]);(0,f.prefetchStrings)("core",["confirm","delete"]);if(p){return}document.addEventListener("click",function(c){var f=c.target.closest(j.actions.scheduleCreate);if(f){c.preventDefault();var s=(0,k.createScheduleModal)(c.target,(0,g.get_string)("newschedule","core_reportbuilder"),a);s.addEventListener(s.events.FORM_SUBMITTED,function(){(0,g.get_string)("schedulecreated","core_reportbuilder").then(h.add).then(function(){var a=document.querySelector(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});s.show()}var m=c.target.closest(j.actions.scheduleToggle);if(m){var n=new e.default("core_reportbuilder/schedules:toggle"),o=+!+m.dataset.state;(0,l.toggleSchedule)(a,m.dataset.id,o).then(function(){var a=m.closest("tr");a.classList.toggle("dimmed_text");m.dataset.state=o;var b=o?"disableschedule":"enableschedule";return(0,g.get_string)(b,"core_reportbuilder")}).then(function(a){var b=m.parentElement.querySelector("label[for=\"".concat(m.id,"\"] > span"));b.innerHTML=a;return n.resolve()}).catch(d.default.exception)}var p=c.target.closest(j.actions.scheduleEdit);if(p){c.preventDefault();var t=(0,k.createScheduleModal)(p,(0,g.get_string)("editscheduledetails","core_reportbuilder"),a,p.dataset.scheduleId);t.addEventListener(t.events.FORM_SUBMITTED,function(){(0,g.get_string)("scheduleupdated","core_reportbuilder").then(h.add).then(function(){var a=p.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});t.show()}var q=c.target.closest(j.actions.scheduleSend);if(q){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("sendschedule","core_reportbuilder"),(0,g.get_string)("sendscheduleconfirm","core_reportbuilder",q.dataset.scheduleName),(0,g.get_string)("confirm","core"),{triggerElement:q}).then(function(){var b=new e.default("core_reportbuilder/schedules:send");return(0,l.sendSchedule)(a,q.dataset.scheduleId).then((0,h.add)((0,g.get_string)("schedulesent","core_reportbuilder"))).then(function(){return b.resolve()}).catch(d.default.exception)}).catch(function(){})}var r=c.target.closest(j.actions.scheduleDelete);if(r){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("deleteschedule","core_reportbuilder"),(0,g.get_string)("deletescheduleconfirm","core_reportbuilder",r.dataset.scheduleName),(0,g.get_string)("delete","core"),{triggerElement:r}).then(function(){var c=new e.default("core_reportbuilder/schedules:delete");return(0,l.deleteSchedule)(a,r.dataset.scheduleId).then((0,h.add)((0,g.get_string)("scheduledeleted","core_reportbuilder"))).then(function(){var a=r.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{preservePagination:!0},a);return c.resolve()}).catch(d.default.exception)}).catch(function(){})}});p=!0};a.init=q}); //# sourceMappingURL=schedules.min.js.map diff --git a/reportbuilder/amd/build/schedules.min.js.map b/reportbuilder/amd/build/schedules.min.js.map index 23fade8a18c2b..bacffc263ebfd 100644 --- a/reportbuilder/amd/build/schedules.min.js.map +++ b/reportbuilder/amd/build/schedules.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/schedules.js"],"names":["initialized","init","reportId","document","addEventListener","event","scheduleCreate","target","closest","reportSelectors","actions","preventDefault","scheduleModal","events","FORM_SUBMITTED","then","addToast","reportElement","querySelector","regions","report","reportEvents","tableReload","catch","Notification","exception","show","scheduleToggle","pendingPromise","Pending","scheduleStateToggle","dataset","state","id","tableRow","classList","toggle","stringKey","toggleLabel","labelContainer","parentElement","innerHTML","resolve","scheduleEdit","scheduleId","scheduleSend","saveCancelPromise","scheduleName","scheduleDelete","preservePagination"],"mappings":"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","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 * Report builder audiences\n *\n * @module core_reportbuilder/schedules\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {get_string as getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {createScheduleModal} from 'core_reportbuilder/local/repository/modals';\nimport {deleteSchedule, sendSchedule, toggleSchedule} from 'core_reportbuilder/local/repository/schedules';\n\nlet initialized = false;\n\n/**\n * Initialise schedules tab\n *\n * @param {Number} reportId\n */\nexport const init = reportId => {\n prefetchStrings('core_reportbuilder', [\n 'deleteschedule',\n 'deletescheduleconfirm',\n 'disableschedule',\n 'editscheduledetails',\n 'enableschedule',\n 'newschedule',\n 'schedulecreated',\n 'scheduledeleted',\n 'schedulesent',\n 'scheduleupdated',\n 'sendschedule',\n 'sendscheduleconfirm',\n ]);\n\n prefetchStrings('core', [\n 'confirm',\n 'delete',\n ]);\n\n if (initialized) {\n // We already added the event listeners (can be called multiple times by mustache template).\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Create schedule.\n const scheduleCreate = event.target.closest(reportSelectors.actions.scheduleCreate);\n if (scheduleCreate) {\n event.preventDefault();\n\n const scheduleModal = createScheduleModal(event.target, getString('newschedule', 'core_reportbuilder'), reportId);\n scheduleModal.addEventListener(scheduleModal.events.FORM_SUBMITTED, () => {\n getString('schedulecreated', 'core_reportbuilder')\n .then(addToast)\n .then(() => {\n const reportElement = document.querySelector(reportSelectors.regions.report);\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return;\n })\n .catch(Notification.exception);\n });\n\n scheduleModal.show();\n }\n\n // Toggle schedule.\n const scheduleToggle = event.target.closest(reportSelectors.actions.scheduleToggle);\n if (scheduleToggle) {\n const pendingPromise = new Pending('core_reportbuilder/schedules:toggle');\n const scheduleStateToggle = +!Number(scheduleToggle.dataset.state);\n\n toggleSchedule(reportId, scheduleToggle.dataset.id, scheduleStateToggle)\n .then(() => {\n const tableRow = scheduleToggle.closest('tr');\n tableRow.classList.toggle('dimmed_text');\n\n scheduleToggle.dataset.state = scheduleStateToggle;\n\n const stringKey = scheduleStateToggle ? 'disableschedule' : 'enableschedule';\n return getString(stringKey, 'core_reportbuilder');\n })\n .then(toggleLabel => {\n const labelContainer = scheduleToggle.parentElement.querySelector(`label[for=\"${scheduleToggle.id}\"] > span`);\n labelContainer.innerHTML = toggleLabel;\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n\n // Edit schedule.\n const scheduleEdit = event.target.closest(reportSelectors.actions.scheduleEdit);\n if (scheduleEdit) {\n event.preventDefault();\n\n const scheduleModal = createScheduleModal(scheduleEdit, getString('editscheduledetails', 'core_reportbuilder'),\n reportId, scheduleEdit.dataset.scheduleId);\n scheduleModal.addEventListener(scheduleModal.events.FORM_SUBMITTED, () => {\n getString('scheduleupdated', 'core_reportbuilder')\n .then(addToast)\n .then(() => {\n const reportElement = scheduleEdit.closest(reportSelectors.regions.report);\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return;\n })\n .catch(Notification.exception);\n });\n\n scheduleModal.show();\n }\n\n // Send schedule.\n const scheduleSend = event.target.closest(reportSelectors.actions.scheduleSend);\n if (scheduleSend) {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('sendschedule', 'core_reportbuilder'),\n getString('sendscheduleconfirm', 'core_reportbuilder', scheduleSend.dataset.scheduleName),\n getString('confirm', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/schedules:send');\n\n return sendSchedule(reportId, scheduleSend.dataset.scheduleId)\n .then(addToast(getString('schedulesent', 'core_reportbuilder')))\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n\n // Delete schedule.\n const scheduleDelete = event.target.closest(reportSelectors.actions.scheduleDelete);\n if (scheduleDelete) {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('deleteschedule', 'core_reportbuilder'),\n getString('deletescheduleconfirm', 'core_reportbuilder', scheduleDelete.dataset.scheduleName),\n getString('delete', 'core')\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/schedules:delete');\n\n return deleteSchedule(reportId, scheduleDelete.dataset.scheduleId)\n .then(addToast(getString('scheduledeleted', 'core_reportbuilder')))\n .then(() => {\n const reportElement = scheduleDelete.closest(reportSelectors.regions.report);\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n initialized = true;\n};\n"],"file":"schedules.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/schedules.js"],"names":["initialized","init","reportId","document","addEventListener","event","scheduleCreate","target","closest","reportSelectors","actions","preventDefault","scheduleModal","events","FORM_SUBMITTED","then","addToast","reportElement","querySelector","regions","report","reportEvents","tableReload","catch","Notification","exception","show","scheduleToggle","pendingPromise","Pending","scheduleStateToggle","dataset","state","id","tableRow","classList","toggle","stringKey","toggleLabel","labelContainer","parentElement","innerHTML","resolve","scheduleEdit","scheduleId","scheduleSend","saveCancelPromise","scheduleName","triggerElement","scheduleDelete","preservePagination"],"mappings":"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","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 * Report builder audiences\n *\n * @module core_reportbuilder/schedules\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport 'core/inplace_editable';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {get_string as getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {createScheduleModal} from 'core_reportbuilder/local/repository/modals';\nimport {deleteSchedule, sendSchedule, toggleSchedule} from 'core_reportbuilder/local/repository/schedules';\n\nlet initialized = false;\n\n/**\n * Initialise schedules tab\n *\n * @param {Number} reportId\n */\nexport const init = reportId => {\n prefetchStrings('core_reportbuilder', [\n 'deleteschedule',\n 'deletescheduleconfirm',\n 'disableschedule',\n 'editscheduledetails',\n 'enableschedule',\n 'newschedule',\n 'schedulecreated',\n 'scheduledeleted',\n 'schedulesent',\n 'scheduleupdated',\n 'sendschedule',\n 'sendscheduleconfirm',\n ]);\n\n prefetchStrings('core', [\n 'confirm',\n 'delete',\n ]);\n\n if (initialized) {\n // We already added the event listeners (can be called multiple times by mustache template).\n return;\n }\n\n document.addEventListener('click', event => {\n\n // Create schedule.\n const scheduleCreate = event.target.closest(reportSelectors.actions.scheduleCreate);\n if (scheduleCreate) {\n event.preventDefault();\n\n const scheduleModal = createScheduleModal(event.target, getString('newschedule', 'core_reportbuilder'), reportId);\n scheduleModal.addEventListener(scheduleModal.events.FORM_SUBMITTED, () => {\n getString('schedulecreated', 'core_reportbuilder')\n .then(addToast)\n .then(() => {\n const reportElement = document.querySelector(reportSelectors.regions.report);\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return;\n })\n .catch(Notification.exception);\n });\n\n scheduleModal.show();\n }\n\n // Toggle schedule.\n const scheduleToggle = event.target.closest(reportSelectors.actions.scheduleToggle);\n if (scheduleToggle) {\n const pendingPromise = new Pending('core_reportbuilder/schedules:toggle');\n const scheduleStateToggle = +!Number(scheduleToggle.dataset.state);\n\n toggleSchedule(reportId, scheduleToggle.dataset.id, scheduleStateToggle)\n .then(() => {\n const tableRow = scheduleToggle.closest('tr');\n tableRow.classList.toggle('dimmed_text');\n\n scheduleToggle.dataset.state = scheduleStateToggle;\n\n const stringKey = scheduleStateToggle ? 'disableschedule' : 'enableschedule';\n return getString(stringKey, 'core_reportbuilder');\n })\n .then(toggleLabel => {\n const labelContainer = scheduleToggle.parentElement.querySelector(`label[for=\"${scheduleToggle.id}\"] > span`);\n labelContainer.innerHTML = toggleLabel;\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }\n\n // Edit schedule.\n const scheduleEdit = event.target.closest(reportSelectors.actions.scheduleEdit);\n if (scheduleEdit) {\n event.preventDefault();\n\n const scheduleModal = createScheduleModal(scheduleEdit, getString('editscheduledetails', 'core_reportbuilder'),\n reportId, scheduleEdit.dataset.scheduleId);\n scheduleModal.addEventListener(scheduleModal.events.FORM_SUBMITTED, () => {\n getString('scheduleupdated', 'core_reportbuilder')\n .then(addToast)\n .then(() => {\n const reportElement = scheduleEdit.closest(reportSelectors.regions.report);\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n return;\n })\n .catch(Notification.exception);\n });\n\n scheduleModal.show();\n }\n\n // Send schedule.\n const scheduleSend = event.target.closest(reportSelectors.actions.scheduleSend);\n if (scheduleSend) {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('sendschedule', 'core_reportbuilder'),\n getString('sendscheduleconfirm', 'core_reportbuilder', scheduleSend.dataset.scheduleName),\n getString('confirm', 'core'),\n {triggerElement: scheduleSend}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/schedules:send');\n\n return sendSchedule(reportId, scheduleSend.dataset.scheduleId)\n .then(addToast(getString('schedulesent', 'core_reportbuilder')))\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n\n // Delete schedule.\n const scheduleDelete = event.target.closest(reportSelectors.actions.scheduleDelete);\n if (scheduleDelete) {\n event.preventDefault();\n\n Notification.saveCancelPromise(\n getString('deleteschedule', 'core_reportbuilder'),\n getString('deletescheduleconfirm', 'core_reportbuilder', scheduleDelete.dataset.scheduleName),\n getString('delete', 'core'),\n {triggerElement: scheduleDelete}\n ).then(() => {\n const pendingPromise = new Pending('core_reportbuilder/schedules:delete');\n\n return deleteSchedule(reportId, scheduleDelete.dataset.scheduleId)\n .then(addToast(getString('scheduledeleted', 'core_reportbuilder')))\n .then(() => {\n const reportElement = scheduleDelete.closest(reportSelectors.regions.report);\n dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n }).catch(() => {\n return;\n });\n }\n });\n\n initialized = true;\n};\n"],"file":"schedules.min.js"} \ No newline at end of file diff --git a/reportbuilder/amd/src/audience.js b/reportbuilder/amd/src/audience.js index 021aac49eea23..041e76a351114 100644 --- a/reportbuilder/amd/src/audience.js +++ b/reportbuilder/amd/src/audience.js @@ -144,15 +144,17 @@ const initAudienceCardForm = audienceCard => { /** * Delete audience card * - * @param {Element} audienceCard + * @param {Element} audienceDelete */ -const deleteAudienceCard = audienceCard => { +const deleteAudienceCard = audienceDelete => { + const audienceCard = audienceDelete.closest(reportSelectors.regions.audienceCard); const audienceTitle = audienceCard.dataset.title; Notification.saveCancelPromise( getString('deleteaudience', 'core_reportbuilder', audienceTitle), getString('deleteaudienceconfirm', 'core_reportbuilder', audienceTitle), - getString('delete', 'core') + getString('delete', 'core'), + {triggerElement: audienceDelete} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/audience:delete'); @@ -255,10 +257,8 @@ export const init = (id, contextid) => { // Delete instance. const audienceDelete = event.target.closest(reportSelectors.actions.audienceDelete); if (audienceDelete) { - const audienceDeleteCard = audienceDelete.closest(reportSelectors.regions.audienceCard); - event.preventDefault(); - deleteAudienceCard(audienceDeleteCard); + deleteAudienceCard(audienceDelete); } }); diff --git a/reportbuilder/amd/src/local/editor/columns.js b/reportbuilder/amd/src/local/editor/columns.js index 4dbcfa0c3bfcc..3a812b637f302 100644 --- a/reportbuilder/amd/src/local/editor/columns.js +++ b/reportbuilder/amd/src/local/editor/columns.js @@ -95,7 +95,8 @@ export const init = initialized => { Notification.saveCancelPromise( getString('deletecolumn', 'core_reportbuilder', columnName), getString('deletecolumnconfirm', 'core_reportbuilder', columnName), - getString('delete', 'core') + getString('delete', 'core'), + {triggerElement: reportRemoveColumn} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/columns:remove'); diff --git a/reportbuilder/amd/src/local/editor/conditions.js b/reportbuilder/amd/src/local/editor/conditions.js index 02ff02d0e3a12..183e18dbd0d57 100644 --- a/reportbuilder/amd/src/local/editor/conditions.js +++ b/reportbuilder/amd/src/local/editor/conditions.js @@ -91,7 +91,8 @@ const initConditionsForm = () => { Notification.saveCancelPromise( getString('resetconditions', 'core_reportbuilder'), getString('resetconditionsconfirm', 'core_reportbuilder'), - getString('resetall', 'core_reportbuilder') + getString('resetall', 'core_reportbuilder'), + {triggerElement: event.detail} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/conditions:reset'); @@ -177,7 +178,8 @@ export const init = initialized => { Notification.saveCancelPromise( getString('deletecondition', 'core_reportbuilder', conditionName), getString('deleteconditionconfirm', 'core_reportbuilder', conditionName), - getString('delete', 'core') + getString('delete', 'core'), + {triggerElement: reportRemoveCondition} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/conditions:remove'); diff --git a/reportbuilder/amd/src/local/editor/filters.js b/reportbuilder/amd/src/local/editor/filters.js index fac30fff6f600..9e3b8c53f477a 100644 --- a/reportbuilder/amd/src/local/editor/filters.js +++ b/reportbuilder/amd/src/local/editor/filters.js @@ -117,7 +117,8 @@ export const init = initialized => { Notification.saveCancelPromise( getString('deletefilter', 'core_reportbuilder', filterName), getString('deletefilterconfirm', 'core_reportbuilder', filterName), - getString('delete', 'core') + getString('delete', 'core'), + {triggerElement: reportRemoveFilter} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/filters:remove'); diff --git a/reportbuilder/amd/src/reports_list.js b/reportbuilder/amd/src/reports_list.js index deff2ef6a3182..bf5c91dcc1942 100644 --- a/reportbuilder/amd/src/reports_list.js +++ b/reportbuilder/amd/src/reports_list.js @@ -70,7 +70,7 @@ export const init = () => { event.preventDefault(); // Reload current report page after submission. - const reportModal = createReportModal(event.target, getString('editreportdetails', 'core_reportbuilder'), + const reportModal = createReportModal(reportEdit, getString('editreportdetails', 'core_reportbuilder'), reportEdit.dataset.reportId); reportModal.addEventListener(reportModal.events.FORM_SUBMITTED, () => { const reportElement = event.target.closest(reportSelectors.regions.report); @@ -94,7 +94,8 @@ export const init = () => { Notification.saveCancelPromise( getString('deletereport', 'core_reportbuilder'), getString('deletereportconfirm', 'core_reportbuilder', reportDelete.dataset.reportName), - getString('delete', 'core') + getString('delete', 'core'), + {triggerElement: reportDelete} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/reports:delete'); const reportElement = event.target.closest(reportSelectors.regions.report); diff --git a/reportbuilder/amd/src/schedules.js b/reportbuilder/amd/src/schedules.js index 6911edb56f566..ce78d35c11c5f 100644 --- a/reportbuilder/amd/src/schedules.js +++ b/reportbuilder/amd/src/schedules.js @@ -143,7 +143,8 @@ export const init = reportId => { Notification.saveCancelPromise( getString('sendschedule', 'core_reportbuilder'), getString('sendscheduleconfirm', 'core_reportbuilder', scheduleSend.dataset.scheduleName), - getString('confirm', 'core') + getString('confirm', 'core'), + {triggerElement: scheduleSend} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/schedules:send'); @@ -164,7 +165,8 @@ export const init = reportId => { Notification.saveCancelPromise( getString('deleteschedule', 'core_reportbuilder'), getString('deletescheduleconfirm', 'core_reportbuilder', scheduleDelete.dataset.scheduleName), - getString('delete', 'core') + getString('delete', 'core'), + {triggerElement: scheduleDelete} ).then(() => { const pendingPromise = new Pending('core_reportbuilder/schedules:delete');