AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"bulkactions.min.js","sources":["../src/bulkactions.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 * Javascript module for bulk actions.\n *\n * @module gradereport_singleview/bulkactions\n * @copyright 2022 Ilya Tregubov <ilya@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\
n */\n\nimport Pending from 'core/pending';\nimport CustomEvents from \"core/custom_interaction_events\";\nimport ModalSaveCancel from 'core/modal_save_cancel';\nimport Templates from 'core/templates';\nimport ModalEvents from 'core/modal_events';\nimport * as Str from 'core/str';\nimport Notification from 'core/notification';\nimport selectors from 'gradereport_singleview/selectors';\n\n/**\n * Initialize module.\n */\nexport const init = () => {\n const pendingPromise = new Pending();\n registerListenerEvents();\n pendingPromise.resolve();\n};\n\n/**\n * Register bulk actions related event listeners.\n *\n * @method registerListenerEvents\n */\nconst registerListenerEvents = () => {\n const events = [\n 'click',\n CustomEvents.events.activate,\n CustomEvents.events.keyboardActivate\n ];\n CustomEvents.define(document, events);\n\n // Register events.\n events.forEach((event) => {\n document.addEventListener(event, async(e) => {\n const trigger
= e.target.closest(selectors.actions.bulkaction);\n\n if (!trigger) {\n return;\n }\n if ((trigger.dataset.action === 'overrideallgrades') || (trigger.dataset.action === 'overridenonegrades')) {\n const override = document.querySelectorAll(selectors.elements.override);\n\n if (trigger.dataset.action === 'overridenonegrades') {\n // Alert for removing all grade overrides on page.\n Str.get_strings([\n {key: 'removeoverride', component: 'gradereport_singleview'},\n {key: 'overridenoneconfirm', component: 'gradereport_singleview'},\n {key: 'removeoverridesave', component: 'gradereport_singleview'},\n {key: 'cancel', component: 'moodle'},\n ])\n .then((strings) => {\n return Notification.confirm(\n strings[0],\n
strings[1],\n strings[2],\n strings[3],\n () => {\n // Uncheck each override checkbox - this will make grade and feedback input fields disabled.\n override.forEach((el) => {\n if (el.checked) {\n el.click();\n }\n });\n });\n })\n .catch(Notification.exception);\n\n } else {\n // Check each override checkbox - this will make grade and feedback input fields enabled.\n override.forEach((el) => {\n if (!el.checked) {\n el.click();\n }\n });\n }\n } else if ((trigger.dataset.action ===
'excludeallgrades') || (trigger.dataset.action === 'excludenonegrades')) {\n const exclude = document.querySelectorAll(selectors.elements.exclude);\n const checked = (trigger.dataset.action === 'excludeallgrades');\n // Uncheck or check each exclude checkbox.\n exclude.forEach((el) => {\n el.checked = checked;\n });\n } else if (trigger.dataset.action === 'bulklegend') {\n // Modal for bulk insert grades.\n Str.get_strings([\n {key: 'bulklegend', component: 'gradereport_singleview'},\n {key: 'save', component: 'moodle'},\n ])\n .then((strings) => {\n return ModalSaveCancel.create({\n body: Templates.render('gradereport_singleview/bulkinsert', {\n id: 'bulkinsertmodal',\n name: 'bulkinsertmodal'\n
}),\n title: strings[0],\n buttons: {\n save: strings[1],\n },\n removeOnClose: true,\n show: true,\n });\n })\n .then((modal) => {\n modal.getFooter().find(selectors.elements.modalsave).attr('disabled', true);\n\n // We need to acknowledge that we understand risks of loosing data.\n // Only when acknowledge checkbox is checked we allow selecting insert options.\n modal.getRoot().on('change', selectors.elements.warningcheckbox,\n (e) => {\n e.preventDefault();\n if (e.target.checked) {\n modal.getRoot().find(selectors.elements.modalformdata).removeClass('dimmed_text');\n modal.getRoot().find(selectors.el
ements.modalradio).removeAttr('disabled');\n modal.getRoot().find(selectors.elements.modalinput).removeAttr('disabled');\n\n const formRadioData = modal.getRoot().find(selectors.elements.modalradiochecked).val();\n // We allow saving grades only when all needed data present on form.\n if (formRadioData) {\n modal.getFooter().find(selectors.elements.modalsave).removeAttr('disabled');\n }\n } else {\n modal.getRoot().find(selectors.elements.modalformdata).addClass('dimmed_text');\n modal.getRoot().find(selectors.elements.modalradio).attr('disabled', true);\n modal.getRoot().find(selectors.elements.modalinput).attr('disabled', true);\n modal.getFooter().find(selectors.elements
.modalsave).attr('disabled', true);\n }\n });\n\n // We allow saving grades only when all needed data present on form.\n modal.getRoot().on('change', selectors.elements.modalradio, (e) => {\n e.preventDefault();\n modal.getFooter().find(selectors.elements.modalsave).removeAttr('disabled');\n });\n\n modal.getRoot().on(ModalEvents.save, () => {\n // When save button is clicked in modal form we insert data from modal\n // into preexisted hidden bulk insert form and Save button for table form.\n document.querySelector(selectors.elements.enablebulkinsert).checked = true;\n const formRadioData = modal.getRoot().find(selectors.elements.modalradiochecked).val();\n const $select = document.querySelector(selectors.elements.
formradio);\n $select.value = formRadioData;\n\n const formData = modal.getRoot().find(selectors.elements.modalgrade).val();\n document.querySelector(selectors.elements.formgrade).value = formData;\n document.querySelector(selectors.elements.formsave).click();\n });\n\n return modal;\n })\n .catch(Notification.exception);\n }\n });\n });\n};\n"],"names":["pendingPromise","Pending","registerListenerEvents","resolve","events","CustomEvents","activate","keyboardActivate","define","document","forEach","event","addEventListener","async","trigger","e","target","closest","selectors","actions","bulkaction","dataset","action","override","querySelectorAll","elements","Str","get_strings","key","component","then","strings","Notification","confirm","el","checked","click","catch","exception","exclude","ModalSaveCancel","create","body","Template
s","render","id","name","title","buttons","save","removeOnClose","show","modal","getFooter","find","modalsave","attr","getRoot","on","warningcheckbox","preventDefault","modalformdata","removeClass","modalradio","removeAttr","modalinput","modalradiochecked","val","addClass","ModalEvents","querySelector","enablebulkinsert","formRadioData","formradio","value","formData","modalgrade","formgrade","formsave"],"mappings":"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"}