moodle/cohort/amd/build/actions.min.js.map

1 line
7.5 KiB
Plaintext

{"version":3,"file":"actions.min.js","sources":["../src/actions.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Cohorts actions.\n *\n * @module core_cohort/actions\n * @copyright 2024 David Woloszyn <david.woloszyn@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport {dispatchEvent} from 'core/event_dispatcher';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport {getString} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport {deleteCohort, deleteCohorts} from 'core_cohort/repository';\nimport * as reportEvents from 'core_reportbuilder/local/events';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport {eventTypes} from 'core/local/inplace_editable/events';\n\nconst SELECTORS = {\n CHECKBOXES: '[data-togglegroup=\"report-select-all\"][data-toggle=\"slave\"]:checked',\n DELETE: '[data-action=\"cohort-delete\"]',\n DELETEBUTTON: '[data-action=\"cohort-delete-selected\"]',\n EDITNAME: '[data-itemtype=\"cohortname\"]',\n};\n\n/**\n * Initialise module.\n */\nexport const init = () => {\n\n prefetchStrings('core_cohort', [\n 'delcohortsconfirm',\n 'delcohortssuccess',\n 'delconfirm',\n 'delsuccess',\n ]);\n\n prefetchStrings('core', [\n 'delete',\n 'deleteselected',\n 'selectitem',\n ]);\n\n registerEventListeners();\n};\n\n/**\n * Register event listeners.\n */\nexport const registerEventListeners = () => {\n\n // Edit cohort name inplace.\n document.addEventListener(eventTypes.elementUpdated, async(event) => {\n const editCohortName = event.target.closest(SELECTORS.EDITNAME);\n if (editCohortName) {\n const cohortId = event.target.dataset.itemid;\n const checkbox = document.querySelector(`input[value=\"${cohortId}\"][type=\"checkbox\"]`);\n const label = document.querySelector(`label[for=\"${checkbox.id}\"]`);\n if (label) {\n label.innerHTML = await getString('selectitem', 'core', event.target.dataset.value);\n }\n }\n });\n\n document.addEventListener('click', event => {\n\n // Delete single cohort.\n const cohortDeleteSingle = event.target.closest(SELECTORS.DELETE);\n if (cohortDeleteSingle) {\n event.preventDefault();\n\n const {cohortId, cohortName} = cohortDeleteSingle.dataset;\n\n Notification.saveCancelPromise(\n getString('deleteselected', 'core'),\n getString('delconfirm', 'core_cohort', cohortName),\n getString('delete', 'core'),\n {triggerElement: cohortDeleteSingle}\n ).then(() => {\n const pendingPromise = new Pending('core_cohort/cohort:delete');\n const reportElement = event.target.closest(reportSelectors.regions.report);\n\n // eslint-disable-next-line promise/no-nesting\n return deleteCohort(cohortId)\n .then(() => addToast(getString('delsuccess', 'core_cohort')))\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 // Delete multiple cohorts.\n const cohortDeleteMultiple = event.target.closest(SELECTORS.DELETEBUTTON);\n if (cohortDeleteMultiple) {\n event.preventDefault();\n\n const reportElement = document.querySelector(reportSelectors.regions.report);\n const cohortDeleteChecked = reportElement.querySelectorAll(SELECTORS.CHECKBOXES);\n if (cohortDeleteChecked.length === 0) {\n return;\n }\n\n Notification.saveCancelPromise(\n getString('deleteselected', 'core'),\n getString('delcohortsconfirm', 'core_cohort'),\n getString('delete', 'core'),\n {triggerElement: cohortDeleteMultiple}\n ).then(() => {\n const pendingPromise = new Pending('core_cohort/cohorts:delete');\n const deleteCohortIds = [...cohortDeleteChecked].map(check => check.value);\n\n // eslint-disable-next-line promise/no-nesting\n return deleteCohorts(deleteCohortIds)\n .then(() => addToast(getString('delcohortssuccess', 'core_cohort')))\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"],"names":["SELECTORS","registerEventListeners","document","addEventListener","eventTypes","elementUpdated","async","event","target","closest","cohortId","dataset","itemid","checkbox","querySelector","label","id","innerHTML","value","cohortDeleteSingle","preventDefault","cohortName","saveCancelPromise","triggerElement","then","pendingPromise","Pending","reportElement","reportSelectors","regions","report","reportEvents","tableReload","preservePagination","resolve","catch","Notification","exception","cohortDeleteMultiple","cohortDeleteChecked","querySelectorAll","length","deleteCohortIds","map","check"],"mappings":";;;;;;;kUAkCMA,qBACU,sEADVA,iBAEM,gCAFNA,uBAGY,yCAHZA,mBAIQ,6CAMM,mCAEA,cAAe,CAC3B,oBACA,oBACA,aACA,6CAGY,OAAQ,CACpB,SACA,iBACA,eAGJC,gCAMSA,uBAAyB,KAGlCC,SAASC,iBAAiBC,oBAAWC,gBAAgBC,MAAAA,WAC1BC,MAAMC,OAAOC,QAAQT,oBACxB,OACVU,SAAWH,MAAMC,OAAOG,QAAQC,OAChCC,SAAWX,SAASY,qCAA8BJ,iCAClDK,MAAQb,SAASY,mCAA4BD,SAASG,UACxDD,QACAA,MAAME,gBAAkB,kBAAU,aAAc,OAAQV,MAAMC,OAAOG,QAAQO,YAKzFhB,SAASC,iBAAiB,SAASI,cAGzBY,mBAAqBZ,MAAMC,OAAOC,QAAQT,qBAC5CmB,mBAAoB,CACpBZ,MAAMa,uBAEAV,SAACA,SAADW,WAAWA,YAAcF,mBAAmBR,8BAErCW,mBACT,kBAAU,iBAAkB,SAC5B,kBAAU,aAAc,cAAeD,aACvC,kBAAU,SAAU,QACpB,CAACE,eAAgBJ,qBACnBK,MAAK,WACGC,eAAiB,IAAIC,iBAAQ,6BAC7BC,cAAgBpB,MAAMC,OAAOC,QAAQmB,gBAAgBC,QAAQC,eAG5D,4BAAapB,UACfc,MAAK,KAAM,eAAS,kBAAU,aAAc,kBAC5CA,MAAK,yCACYO,aAAaC,YAAa,CAACC,oBAAoB,GAAON,eAC7DF,eAAeS,aAEzBC,MAAMC,sBAAaC,cACzBF,OAAM,eAMPG,qBAAuB/B,MAAMC,OAAOC,QAAQT,2BAC9CsC,qBAAsB,CACtB/B,MAAMa,uBAEAO,cAAgBzB,SAASY,cAAcc,gBAAgBC,QAAQC,QAC/DS,oBAAsBZ,cAAca,iBAAiBxC,yBACxB,IAA/BuC,oBAAoBE,oCAIXnB,mBACT,kBAAU,iBAAkB,SAC5B,kBAAU,oBAAqB,gBAC/B,kBAAU,SAAU,QACpB,CAACC,eAAgBe,uBACnBd,MAAK,WACGC,eAAiB,IAAIC,iBAAQ,8BAC7BgB,gBAAkB,IAAIH,qBAAqBI,KAAIC,OAASA,MAAM1B,eAG7D,6BAAcwB,iBAChBlB,MAAK,KAAM,eAAS,kBAAU,oBAAqB,kBACnDA,MAAK,yCACYO,aAAaC,YAAa,CAACC,oBAAoB,GAAON,eAC7DF,eAAeS,aAEzBC,MAAMC,sBAAaC,cACzBF,OAAM"}