AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"filters.min.js","sources":["../src/filters.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 * Report builder filter management\n *\n * @module core_reportbuilder/filters\n * @copyright 2021 Paul Holden <paulh@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport {disp
atchEvent} from 'core/event_dispatcher';\nimport {loadFragment} from 'core/fragment';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {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 {resetFilters} from 'core_reportbuilder/local/repository/filters';\n\n/**\n * Update filter button text to indicate applied filter count\n *\n * @param {Element} reportElement\n * @param {Number} filterCount\n */\nconst setFilterButtonCount = async(reportElement, filterCount) => {\n const filterButtonLabel = reportElement.querySelector(reportSelectors.regions.filterButtonLabel);\n\n if (filterCount > 0) {\n filterButtonLabel.textContent = await getString('filtersappliedx', 'core_reportbuilder', filterCount);\n }
else {\n filterButtonLabel.textContent = await getString('filters', 'moodle');\n }\n};\n\n/**\n * Initialise module for given report\n *\n * @method\n * @param {Number} reportId\n * @param {Number} contextId\n */\nexport const init = (reportId, contextId) => {\n const reportElement = document.querySelector(reportSelectors.forReport(reportId));\n const filterFormContainer = reportElement.querySelector(reportSelectors.regions.filtersForm);\n\n // Ensure we only add our listeners once (can be called multiple times by mustache template).\n if (filterFormContainer.dataset.initialized) {\n return;\n }\n filterFormContainer.dataset.initialized = true;\n\n const filterForm = new DynamicForm(filterFormContainer, '\\\\core_reportbuilder\\\\form\\\\filter');\n\n // Submit report filters.\n filterForm.addEventListener(filterForm.events.FORM_SUBMITTED, event => {\n event.preventDefault();\n\n // After the form has been submitted, we should trigger report table rel
oad.\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n setFilterButtonCount(reportElement, event.detail);\n\n getString('filtersapplied', 'core_reportbuilder')\n .then(addToast)\n .catch(Notification.exception);\n });\n\n // Reset report filters.\n filterForm.addEventListener(filterForm.events.NOSUBMIT_BUTTON_PRESSED, event => {\n event.preventDefault();\n\n const pendingPromise = new Pending('core_reportbuilder/filters:reset');\n const reportParameters = reportElement.dataset.parameter;\n\n resetFilters(reportId, reportParameters)\n .then(() => getString('filtersreset', 'core_reportbuilder'))\n .then(addToast)\n .then(() => loadFragment('core_reportbuilder', 'filters_form', contextId, {\n reportid: reportId,\n parameters: reportParameters,\n }))\n .then((html, js) => {\n Templates.replaceNodeContents(filterFormContai
ner, html, js);\n\n dispatchEvent(reportEvents.tableReload, {}, reportElement);\n setFilterButtonCount(reportElement, 0);\n\n return pendingPromise.resolve();\n })\n .catch(Notification.exception);\n });\n\n // Modify \"region-main\" overflow for big filter forms.\n document.querySelector('#region-main').style.overflowX = \"visible\";\n};\n"],"names":["setFilterButtonCount","async","reportElement","filterCount","filterButtonLabel","querySelector","reportSelectors","regions","textContent","reportId","contextId","document","forReport","filterFormContainer","filtersForm","dataset","initialized","filterForm","DynamicForm","addEventListener","events","FORM_SUBMITTED","event","preventDefault","reportEvents","tableReload","detail","then","addToast","catch","Notification","exception","NOSUBMIT_BUTTON_PRESSED","pendingPromise","Pending","reportParameters","parameter","reportid","parameters","html","js","replaceNodeContents","resolve","style",
"overflowX"],"mappings":";;;;;;;kYAyCMA,qBAAuBC,MAAMC,cAAeC,qBACxCC,kBAAoBF,cAAcG,cAAcC,gBAAgBC,QAAQH,mBAG1EA,kBAAkBI,YADlBL,YAAc,QACwB,kBAAU,kBAAmB,qBAAsBA,mBAEnD,kBAAU,UAAW,yBAW/C,CAACM,SAAUC,mBACrBR,cAAgBS,SAASN,cAAcC,gBAAgBM,UAAUH,WACjEI,oBAAsBX,cAAcG,cAAcC,gBAAgBC,QAAQO,gBAG5ED,oBAAoBE,QAAQC,mBAGhCH,oBAAoBE,QAAQC,aAAc,QAEpCC,WAAa,IAAIC,qBAAYL,oBAAqB,sCAGxDI,WAAWE,iBAAiBF,WAAWG,OAAOC,gBAAgBC,QAC1DA,MAAMC,qDAGQC,aAAaC,YAAa,GAAIvB,eAC5CF,qBAAqBE,cAAeoB,MAAMI,2BAEhC,iBAAkB,sBACvBC,KAAKC,YACLC,MAAMC,sBAAaC,cAI5Bd,WAAWE,iBAAiBF,WAAWG,OAAOY,yBAAyBV,QACnEA,MAAMC,uBAEAU,eAAiB,IAAIC,iBAAQ,oCAC7BC,iBAAmBjC,cAAca,QAAQqB,oCAElC3B,SAAU0B,kBAClBR,MAAK,KAAM,kBAAU,eAAgB,wBACrCA,KAAKC,YACLD,MAAK,KAAM,0BAAa,qBAAsB,eAAgBjB,UAAW,CACtE2B,SAAU5B,SACV6B,WAAYH,qBAEfR,MAAK,CAACY,KAAMC,yBACCC,oBAAoB5B,oBAAqB0B,KAAMC,wCAE3ChB,aAAaC,YAAa,GAAIvB,eAC5CF,qBAAqBE,cAAe,GAE7B+B,eAAeS,aAEzBb,MAAMC,sBAAaC,cAI5BpB,SAASN,cAAc,gBAAgBsC,MAAMC,UAAY"}