11 |
efrain |
1 |
{"version":3,"file":"gradebooksetup_forms.min.js","sources":["../src/gradebooksetup_forms.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 * Prints the add item gradebook form\n *\n * @module core_grades\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU Public License\n */\n\nimport ModalForm from 'core_form/modalform';\nimport {getString} from 'core/str';\nimport Notification from 'core/notification';\nimport * as FormChangeChecker from 'core_form/changechecker';\nimport PendingPromise from 'core/pending';\n\nconst Selectors = {\n advancedFormLink: 'a.showadvancedform'\n};\n\nconst getDetailsFromEvent = (event) => {\n if (event.target.closest('[data-trigger=\"add-item-form\"]')) {\n const trigger = event.target.closest('[data-trigger=\"add-item-form\"]');\n\n return {\n trigger,\n formClass: 'core_grades\\\\form\\\\add_item',\n titleKey: trigger.getAttribute('data-itemid') === '-1' ? 'newitem' : 'itemsedit',\n args: {\n itemid: trigger.getAttribute('data-itemid'),\n },\n };\n } else if (event.target.closest('[data-trigger=\"add-category-form\"]')) {\n const trigger = event.target.closest('[data-trigger=\"add-category-form\"]');\n return {\n trigger,\n formClass: 'core_grades\\\\form\\\\add_category',\n titleKey: trigger.getAttribute('data-category') === '-1' ? 'newcategory' : 'categoryedit',\n args: {\n category: trigger.getAttribute('data-category'),\n },\n };\n } else if (event.target.closest('[data-trigger=\"add-outcome-form\"]')) {\n const trigger = event.target.closest('[data-trigger=\"add-outcome-form\"]');\n return {\n trigger,\n formClass: 'core_grades\\\\form\\\\add_outcome',\n titleKey: trigger.getAttribute('data-itemid') === '-1' ? 'newoutcomeitem' : 'outcomeitemsedit',\n args: {\n itemid: trigger.getAttribute('data-itemid'),\n },\n };\n }\n\n return null;\n};\n\n/**\n * Initialize module\n */\nexport const init = () => {\n // Sometimes the trigger does not exist, so lets conditionally add it.\n document.addEventListener('click', event => {\n const triggerData = getDetailsFromEvent(event);\n\n if (triggerData) {\n event.preventDefault();\n const pendingPromise = new PendingPromise(`core_grades:add_item:${triggerData.args.itemid}`);\n\n const {trigger, formClass, titleKey, args} = triggerData;\n args.courseid = trigger.getAttribute('data-courseid');\n args.gpr_plugin = trigger.getAttribute('data-gprplugin');\n\n const modalForm = new ModalForm({\n modalConfig: {\n title: getString(titleKey, 'core_grades'),\n },\n formClass: formClass,\n args: args,\n saveButtonText: getString('save', 'core'),\n returnFocus: trigger,\n });\n\n // Show a toast notification when the form is submitted.\n modalForm.addEventListener(modalForm.events.FORM_SUBMITTED, event => {\n if (event.detail.result) {\n new PendingPromise('core_grades:form_submitted');\n window.location.assign(event.detail.url);\n } else {\n Notification.addNotification({\n type: 'error',\n message: getString('saving_failed', 'core_grades')\n });\n }\n });\n\n modalForm.show();\n pendingPromise.resolve();\n }\n\n const showAdvancedForm = event.target.closest(Selectors.advancedFormLink);\n if (showAdvancedForm) {\n // Navigate to the advanced form page and cary over any entered data.\n event.preventDefault();\n\n // Do not resolve this pendingPromise - it will be cleared when the page changes.\n new PendingPromise('core_grades:show_advanced_form');\n const form = event.target.closest('form');\n form.action = showAdvancedForm.href;\n // Disable the form change checker as we are going to carry over the data to the advanced form.\n FormChangeChecker.disableAllChecks();\n form.submit();\n }\n });\n};\n"],"names":["Selectors","document","addEventListener","event","triggerData","target","closest","trigger","formClass","titleKey","getAttribute","args","itemid","category","getDetailsFromEvent","preventDefault","pendingPromise","PendingPromise","courseid","gpr_plugin","modalForm","ModalForm","modalConfig","title","saveButtonText","returnFocus","events","FORM_SUBMITTED","detail","result","window","location","assign","url","addNotification","type","message","show","resolve","showAdvancedForm","form","action","href","FormChangeChecker","disableAllChecks","submit"],"mappings":";;;;;;;s5BA6BMA,2BACgB,mCA2CF,KAEhBC,SAASC,iBAAiB,SAASC,cACzBC,YA3CeD,CAAAA,WACrBA,MAAME,OAAOC,QAAQ,kCAAmC,OAClDC,QAAUJ,MAAME,OAAOC,QAAQ,wCAE9B,CACHC,QAAAA,QACAC,UAAW,8BACXC,SAAkD,OAAxCF,QAAQG,aAAa,eAA0B,UAAY,YACrEC,KAAM,CACFC,OAAQL,QAAQG,aAAa,iBAGlC,GAAIP,MAAME,OAAOC,QAAQ,sCAAuC,OAC7DC,QAAUJ,MAAME,OAAOC,QAAQ,4CAC9B,CACHC,QAAAA,QACAC,UAAW,kCACXC,SAAoD,OAA1CF,QAAQG,aAAa,iBAA4B,cAAgB,eAC3EC,KAAM,CACFE,SAAUN,QAAQG,aAAa,mBAGpC,GAAIP,MAAME,OAAOC,QAAQ,qCAAsC,OAC5DC,QAAUJ,MAAME,OAAOC,QAAQ,2CAC9B,CACHC,QAAAA,QACAC,UAAW,iCACXC,SAAkD,OAAxCF,QAAQG,aAAa,eAA0B,iBAAmB,mBAC5EC,KAAM,CACFC,OAAQL,QAAQG,aAAa,wBAKlC,MASiBI,CAAoBX,UAEpCC,YAAa,CACbD,MAAMY,uBACAC,eAAiB,IAAIC,gDAAuCb,YAAYO,KAAKC,UAE7EL,QAACA,QAADC,UAAUA,UAAVC,SAAqBA,SAArBE,KAA+BA,MAAQP,YAC7CO,KAAKO,SAAWX,QAAQG,aAAa,iBACrCC,KAAKQ,WAAaZ,QAAQG,aAAa,wBAEjCU,UAAY,IAAIC,mBAAU,CAC5BC,YAAa,CACTC,OAAO,kBAAUd,SAAU,gBAE/BD,UAAWA,UACXG,KAAMA,KACNa,gBAAgB,kBAAU,OAAQ,QAClCC,YAAalB,UAIjBa,UAAUlB,iBAAiBkB,UAAUM,OAAOC,gBAAgBxB,QACpDA,MAAMyB,OAAOC,YACTZ,iBAAe,8BACnBa,OAAOC,SAASC,OAAO7B,MAAMyB,OAAOK,4BAEvBC,gBAAgB,CACzBC,KAAM,QACNC,SAAS,kBAAU,gBAAiB,oBAKhDhB,UAAUiB,OACVrB,eAAesB,gBAGbC,iBAAmBpC,MAAME,OAAOC,QAAQN,+BAC1CuC,iBAAkB,CAElBpC,MAAMY,qBAGFE,iBAAe,wCACbuB,KAAOrC,MAAME,OAAOC,QAAQ,QAClCkC,KAAKC,OAASF,iBAAiBG,KAE/BC,kBAAkBC,mBAClBJ,KAAKK"}
|