diff --git a/reportbuilder/amd/build/local/selectors.min.js b/reportbuilder/amd/build/local/selectors.min.js index 6963addaa54..f54592f3e25 100644 --- a/reportbuilder/amd/build/local/selectors.min.js +++ b/reportbuilder/amd/build/local/selectors.min.js @@ -6,6 +6,6 @@ define("core_reportbuilder/local/selectors",["exports"],(function(_exports){Obje * @copyright 2021 Paul Holden * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -const SELECTORS={regions:{report:'[data-region="core_reportbuilder/report"]',reportTable:'[data-region="reportbuilder-table"]',columnHeader:'[data-region="column-header"]',filterButtonLabel:'[data-region="filter-button-label"]',filtersForm:'[data-region="filters-form"]',sidebarMenu:'[data-region="sidebar-menu"]',sidebarCard:'[data-region="sidebar-card"]',settingsConditions:'[data-region="settings-conditions"]',activeConditions:'[data-region="active-conditions"]',activeCondition:'[data-region="active-condition"]',settingsFilters:'[data-region="settings-filters"]',activeFilters:'[data-region="active-filters"]',activeFilter:'[data-region="active-filter"]',settingsSorting:'[data-region="settings-sorting"]',audiencesContainer:'[data-region="audiences"]',audienceFormContainer:'[data-region="audience-form-container"]',audienceCard:'[data-region="audience-card"]',audienceHeading:'[data-region="audience-heading"]',audienceForm:'[data-region="audience-form"]',audienceEmptyMessage:"[data-region=no-instances-message]",audienceDescription:"[data-region=audience-description]",audienceNotSavedLabel:"[data-region=audience-not-saved]",settingsCardView:'[data-region="settings-cardview"]'},actions:{reportActionPopup:'[data-action="report-action-popup"]',reportCreate:'[data-action="report-create"]',reportEdit:'[data-action="report-edit"]',reportDelete:'[data-action="report-delete"]',reportAddColumn:'[data-action="report-add-column"]',reportRemoveColumn:'[data-action="report-remove-column"]',reportAddCondition:'[data-action="report-add-condition"]',reportRemoveCondition:'[data-action="report-remove-condition"]',reportAddFilter:'[data-action="report-add-filter"]',reportRemoveFilter:'[data-action="report-remove-filter"]',reportToggleColumnSort:'[data-action="report-toggle-column-sorting"]',reportToggleColumnSortDirection:'[data-action="report-toggle-sort-direction"]',sidebarSearch:'[data-action="sidebar-search"]',toggleEditPreview:'[data-action="toggle-edit-preview"]',audienceAdd:'[data-action="add-audience"]',audienceEdit:'[data-action="edit-audience"]',audienceDelete:'[data-action="delete-audience"]',toggleCardView:'[data-action="toggle-card"]',scheduleCreate:'[data-action="schedule-create"]',scheduleToggle:'[data-action="schedule-toggle"]',scheduleEdit:'[data-action="schedule-edit"]',scheduleSend:'[data-action="schedule-send"]',scheduleDelete:'[data-action="schedule-delete"]'},forReport:reportId=>"".concat(SELECTORS.regions.report,'[data-report-id="').concat(reportId,'"]')};var _default=SELECTORS;return _exports.default=_default,_exports.default})); +const SELECTORS={regions:{report:'[data-region="core_reportbuilder/report"]',reportTable:'[data-region="reportbuilder-table"]',columnHeader:'[data-region="column-header"]',filterButtonLabel:'[data-region="filter-button-label"]',filtersForm:'[data-region="filters-form"]',sidebarMenu:'[data-region="sidebar-menu"]',sidebarCard:'[data-region="sidebar-card"]',sidebarItem:'[data-region="sidebar-item"]',settingsConditions:'[data-region="settings-conditions"]',activeConditions:'[data-region="active-conditions"]',activeCondition:'[data-region="active-condition"]',settingsFilters:'[data-region="settings-filters"]',activeFilters:'[data-region="active-filters"]',activeFilter:'[data-region="active-filter"]',settingsSorting:'[data-region="settings-sorting"]',audiencesContainer:'[data-region="audiences"]',audienceFormContainer:'[data-region="audience-form-container"]',audienceCard:'[data-region="audience-card"]',audienceHeading:'[data-region="audience-heading"]',audienceForm:'[data-region="audience-form"]',audienceEmptyMessage:"[data-region=no-instances-message]",audienceDescription:"[data-region=audience-description]",audienceNotSavedLabel:"[data-region=audience-not-saved]",settingsCardView:'[data-region="settings-cardview"]'},actions:{reportActionPopup:'[data-action="report-action-popup"]',reportCreate:'[data-action="report-create"]',reportEdit:'[data-action="report-edit"]',reportDelete:'[data-action="report-delete"]',reportAddColumn:'[data-action="report-add-column"]',reportRemoveColumn:'[data-action="report-remove-column"]',reportAddCondition:'[data-action="report-add-condition"]',reportRemoveCondition:'[data-action="report-remove-condition"]',reportAddFilter:'[data-action="report-add-filter"]',reportRemoveFilter:'[data-action="report-remove-filter"]',reportToggleColumnSort:'[data-action="report-toggle-column-sorting"]',reportToggleColumnSortDirection:'[data-action="report-toggle-sort-direction"]',sidebarSearch:'[data-action="sidebar-search"]',toggleEditPreview:'[data-action="toggle-edit-preview"]',audienceAdd:'[data-action="add-audience"]',audienceEdit:'[data-action="edit-audience"]',audienceDelete:'[data-action="delete-audience"]',toggleCardView:'[data-action="toggle-card"]',scheduleCreate:'[data-action="schedule-create"]',scheduleToggle:'[data-action="schedule-toggle"]',scheduleEdit:'[data-action="schedule-edit"]',scheduleSend:'[data-action="schedule-send"]',scheduleDelete:'[data-action="schedule-delete"]'},forReport:reportId=>"".concat(SELECTORS.regions.report,'[data-report-id="').concat(reportId,'"]')};var _default=SELECTORS;return _exports.default=_default,_exports.default})); //# sourceMappingURL=selectors.min.js.map \ No newline at end of file diff --git a/reportbuilder/amd/build/local/selectors.min.js.map b/reportbuilder/amd/build/local/selectors.min.js.map index 0e4ec7427e6..61d23bc47ab 100644 --- a/reportbuilder/amd/build/local/selectors.min.js.map +++ b/reportbuilder/amd/build/local/selectors.min.js.map @@ -1 +1 @@ -{"version":3,"file":"selectors.min.js","sources":["../../src/local/selectors.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 .\n\n/**\n * Report builder selectors\n *\n * @module core_reportbuilder/local/selectors\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n/**\n * Selectors for the Report builder subsystem\n *\n * @property {Object} regions\n * @property {String} regions.systemReport System report page region\n * @property {String} regions.filterButtonLabel Filters form toggle region\n * @property {String} regions.filtersForm Filters form page region\n */\nconst SELECTORS = {\n regions: {\n report: '[data-region=\"core_reportbuilder/report\"]',\n reportTable: '[data-region=\"reportbuilder-table\"]',\n columnHeader: '[data-region=\"column-header\"]',\n filterButtonLabel: '[data-region=\"filter-button-label\"]',\n filtersForm: '[data-region=\"filters-form\"]',\n sidebarMenu: '[data-region=\"sidebar-menu\"]',\n sidebarCard: '[data-region=\"sidebar-card\"]',\n settingsConditions: '[data-region=\"settings-conditions\"]',\n activeConditions: '[data-region=\"active-conditions\"]',\n activeCondition: '[data-region=\"active-condition\"]',\n settingsFilters: '[data-region=\"settings-filters\"]',\n activeFilters: '[data-region=\"active-filters\"]',\n activeFilter: '[data-region=\"active-filter\"]',\n settingsSorting: '[data-region=\"settings-sorting\"]',\n audiencesContainer: '[data-region=\"audiences\"]',\n audienceFormContainer: '[data-region=\"audience-form-container\"]',\n audienceCard: '[data-region=\"audience-card\"]',\n audienceHeading: '[data-region=\"audience-heading\"]',\n audienceForm: '[data-region=\"audience-form\"]',\n audienceEmptyMessage: '[data-region=no-instances-message]',\n audienceDescription: '[data-region=audience-description]',\n audienceNotSavedLabel: '[data-region=audience-not-saved]',\n settingsCardView: '[data-region=\"settings-cardview\"]',\n },\n actions: {\n reportActionPopup: '[data-action=\"report-action-popup\"]',\n reportCreate: '[data-action=\"report-create\"]',\n reportEdit: '[data-action=\"report-edit\"]',\n reportDelete: '[data-action=\"report-delete\"]',\n reportAddColumn: '[data-action=\"report-add-column\"]',\n reportRemoveColumn: '[data-action=\"report-remove-column\"]',\n reportAddCondition: '[data-action=\"report-add-condition\"]',\n reportRemoveCondition: '[data-action=\"report-remove-condition\"]',\n reportAddFilter: '[data-action=\"report-add-filter\"]',\n reportRemoveFilter: '[data-action=\"report-remove-filter\"]',\n reportToggleColumnSort: '[data-action=\"report-toggle-column-sorting\"]',\n reportToggleColumnSortDirection: '[data-action=\"report-toggle-sort-direction\"]',\n sidebarSearch: '[data-action=\"sidebar-search\"]',\n toggleEditPreview: '[data-action=\"toggle-edit-preview\"]',\n audienceAdd: '[data-action=\"add-audience\"]',\n audienceEdit: '[data-action=\"edit-audience\"]',\n audienceDelete: '[data-action=\"delete-audience\"]',\n toggleCardView: '[data-action=\"toggle-card\"]',\n scheduleCreate: '[data-action=\"schedule-create\"]',\n scheduleToggle: '[data-action=\"schedule-toggle\"]',\n scheduleEdit: '[data-action=\"schedule-edit\"]',\n scheduleSend: '[data-action=\"schedule-send\"]',\n scheduleDelete: '[data-action=\"schedule-delete\"]',\n },\n};\n\n/**\n * Selector for given report\n *\n * @method forReport\n * @param {Number} reportId\n * @return {String}\n */\nSELECTORS.forReport = reportId => `${SELECTORS.regions.report}[data-report-id=\"${reportId}\"]`;\n\nexport default SELECTORS;\n"],"names":["SELECTORS","regions","report","reportTable","columnHeader","filterButtonLabel","filtersForm","sidebarMenu","sidebarCard","settingsConditions","activeConditions","activeCondition","settingsFilters","activeFilters","activeFilter","settingsSorting","audiencesContainer","audienceFormContainer","audienceCard","audienceHeading","audienceForm","audienceEmptyMessage","audienceDescription","audienceNotSavedLabel","settingsCardView","actions","reportActionPopup","reportCreate","reportEdit","reportDelete","reportAddColumn","reportRemoveColumn","reportAddCondition","reportRemoveCondition","reportAddFilter","reportRemoveFilter","reportToggleColumnSort","reportToggleColumnSortDirection","sidebarSearch","toggleEditPreview","audienceAdd","audienceEdit","audienceDelete","toggleCardView","scheduleCreate","scheduleToggle","scheduleEdit","scheduleSend","scheduleDelete","reportId"],"mappings":";;;;;;;;MA+BMA,UAAY,CACdC,QAAS,CACLC,OAAQ,4CACRC,YAAa,sCACbC,aAAc,gCACdC,kBAAmB,sCACnBC,YAAa,+BACbC,YAAa,+BACbC,YAAa,+BACbC,mBAAoB,sCACpBC,iBAAkB,oCAClBC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,cAAe,iCACfC,aAAc,gCACdC,gBAAiB,mCACjBC,mBAAoB,4BACpBC,sBAAuB,0CACvBC,aAAc,gCACdC,gBAAiB,mCACjBC,aAAc,gCACdC,qBAAsB,qCACtBC,oBAAqB,qCACrBC,sBAAuB,mCACvBC,iBAAkB,qCAEtBC,QAAS,CACLC,kBAAmB,sCACnBC,aAAc,gCACdC,WAAY,8BACZC,aAAc,gCACdC,gBAAiB,oCACjBC,mBAAoB,uCACpBC,mBAAoB,uCACpBC,sBAAuB,0CACvBC,gBAAiB,oCACjBC,mBAAoB,uCACpBC,uBAAwB,+CACxBC,gCAAiC,+CACjCC,cAAe,iCACfC,kBAAmB,sCACnBC,YAAa,+BACbC,aAAc,gCACdC,eAAgB,kCAChBC,eAAgB,8BAChBC,eAAgB,kCAChBC,eAAgB,kCAChBC,aAAc,gCACdC,aAAc,gCACdC,eAAgB,mCAWxBhD,UAAsBiD,oBAAejD,UAAUC,QAAQC,mCAA0B+C,6BAElEjD"} \ No newline at end of file +{"version":3,"file":"selectors.min.js","sources":["../../src/local/selectors.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 .\n\n/**\n * Report builder selectors\n *\n * @module core_reportbuilder/local/selectors\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n/**\n * Selectors for the Report builder subsystem\n *\n * @property {Object} regions\n * @property {String} regions.systemReport System report page region\n * @property {String} regions.filterButtonLabel Filters form toggle region\n * @property {String} regions.filtersForm Filters form page region\n */\nconst SELECTORS = {\n regions: {\n report: '[data-region=\"core_reportbuilder/report\"]',\n reportTable: '[data-region=\"reportbuilder-table\"]',\n columnHeader: '[data-region=\"column-header\"]',\n filterButtonLabel: '[data-region=\"filter-button-label\"]',\n filtersForm: '[data-region=\"filters-form\"]',\n sidebarMenu: '[data-region=\"sidebar-menu\"]',\n sidebarCard: '[data-region=\"sidebar-card\"]',\n sidebarItem: '[data-region=\"sidebar-item\"]',\n settingsConditions: '[data-region=\"settings-conditions\"]',\n activeConditions: '[data-region=\"active-conditions\"]',\n activeCondition: '[data-region=\"active-condition\"]',\n settingsFilters: '[data-region=\"settings-filters\"]',\n activeFilters: '[data-region=\"active-filters\"]',\n activeFilter: '[data-region=\"active-filter\"]',\n settingsSorting: '[data-region=\"settings-sorting\"]',\n audiencesContainer: '[data-region=\"audiences\"]',\n audienceFormContainer: '[data-region=\"audience-form-container\"]',\n audienceCard: '[data-region=\"audience-card\"]',\n audienceHeading: '[data-region=\"audience-heading\"]',\n audienceForm: '[data-region=\"audience-form\"]',\n audienceEmptyMessage: '[data-region=no-instances-message]',\n audienceDescription: '[data-region=audience-description]',\n audienceNotSavedLabel: '[data-region=audience-not-saved]',\n settingsCardView: '[data-region=\"settings-cardview\"]',\n },\n actions: {\n reportActionPopup: '[data-action=\"report-action-popup\"]',\n reportCreate: '[data-action=\"report-create\"]',\n reportEdit: '[data-action=\"report-edit\"]',\n reportDelete: '[data-action=\"report-delete\"]',\n reportAddColumn: '[data-action=\"report-add-column\"]',\n reportRemoveColumn: '[data-action=\"report-remove-column\"]',\n reportAddCondition: '[data-action=\"report-add-condition\"]',\n reportRemoveCondition: '[data-action=\"report-remove-condition\"]',\n reportAddFilter: '[data-action=\"report-add-filter\"]',\n reportRemoveFilter: '[data-action=\"report-remove-filter\"]',\n reportToggleColumnSort: '[data-action=\"report-toggle-column-sorting\"]',\n reportToggleColumnSortDirection: '[data-action=\"report-toggle-sort-direction\"]',\n sidebarSearch: '[data-action=\"sidebar-search\"]',\n toggleEditPreview: '[data-action=\"toggle-edit-preview\"]',\n audienceAdd: '[data-action=\"add-audience\"]',\n audienceEdit: '[data-action=\"edit-audience\"]',\n audienceDelete: '[data-action=\"delete-audience\"]',\n toggleCardView: '[data-action=\"toggle-card\"]',\n scheduleCreate: '[data-action=\"schedule-create\"]',\n scheduleToggle: '[data-action=\"schedule-toggle\"]',\n scheduleEdit: '[data-action=\"schedule-edit\"]',\n scheduleSend: '[data-action=\"schedule-send\"]',\n scheduleDelete: '[data-action=\"schedule-delete\"]',\n },\n};\n\n/**\n * Selector for given report\n *\n * @method forReport\n * @param {Number} reportId\n * @return {String}\n */\nSELECTORS.forReport = reportId => `${SELECTORS.regions.report}[data-report-id=\"${reportId}\"]`;\n\nexport default SELECTORS;\n"],"names":["SELECTORS","regions","report","reportTable","columnHeader","filterButtonLabel","filtersForm","sidebarMenu","sidebarCard","sidebarItem","settingsConditions","activeConditions","activeCondition","settingsFilters","activeFilters","activeFilter","settingsSorting","audiencesContainer","audienceFormContainer","audienceCard","audienceHeading","audienceForm","audienceEmptyMessage","audienceDescription","audienceNotSavedLabel","settingsCardView","actions","reportActionPopup","reportCreate","reportEdit","reportDelete","reportAddColumn","reportRemoveColumn","reportAddCondition","reportRemoveCondition","reportAddFilter","reportRemoveFilter","reportToggleColumnSort","reportToggleColumnSortDirection","sidebarSearch","toggleEditPreview","audienceAdd","audienceEdit","audienceDelete","toggleCardView","scheduleCreate","scheduleToggle","scheduleEdit","scheduleSend","scheduleDelete","reportId"],"mappings":";;;;;;;;MA+BMA,UAAY,CACdC,QAAS,CACLC,OAAQ,4CACRC,YAAa,sCACbC,aAAc,gCACdC,kBAAmB,sCACnBC,YAAa,+BACbC,YAAa,+BACbC,YAAa,+BACbC,YAAa,+BACbC,mBAAoB,sCACpBC,iBAAkB,oCAClBC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,cAAe,iCACfC,aAAc,gCACdC,gBAAiB,mCACjBC,mBAAoB,4BACpBC,sBAAuB,0CACvBC,aAAc,gCACdC,gBAAiB,mCACjBC,aAAc,gCACdC,qBAAsB,qCACtBC,oBAAqB,qCACrBC,sBAAuB,mCACvBC,iBAAkB,qCAEtBC,QAAS,CACLC,kBAAmB,sCACnBC,aAAc,gCACdC,WAAY,8BACZC,aAAc,gCACdC,gBAAiB,oCACjBC,mBAAoB,uCACpBC,mBAAoB,uCACpBC,sBAAuB,0CACvBC,gBAAiB,oCACjBC,mBAAoB,uCACpBC,uBAAwB,+CACxBC,gCAAiC,+CACjCC,cAAe,iCACfC,kBAAmB,sCACnBC,YAAa,+BACbC,aAAc,gCACdC,eAAgB,kCAChBC,eAAgB,8BAChBC,eAAgB,kCAChBC,eAAgB,kCAChBC,aAAc,gCACdC,aAAc,gCACdC,eAAgB,mCAWxBjD,UAAsBkD,oBAAelD,UAAUC,QAAQC,mCAA0BgD,6BAElElD"} \ No newline at end of file diff --git a/reportbuilder/amd/build/sidebar.min.js b/reportbuilder/amd/build/sidebar.min.js index 68b5da6635d..302edf0a441 100644 --- a/reportbuilder/amd/build/sidebar.min.js +++ b/reportbuilder/amd/build/sidebar.min.js @@ -5,6 +5,6 @@ define("core_reportbuilder/sidebar",["exports","core/pending","core/utils","core * @module core_reportbuilder/sidebar * @copyright 2021 Paul Holden * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_pending=(obj=_pending)&&obj.__esModule?obj:{default:obj},reportSelectors=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(reportSelectors);const CLASSES_EXPANDED="show",CLASSES_COLLAPSED="collapsed",CLASSES_SHOW="d-flex",CLASSES_HIDE="d-none",sidebarCardFilter=(event,sidebarMenu)=>{const pendingPromise=new _pending.default("core_reportbuilder/sidebar:cardFilter"),sidebarCards=sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarCard),sidebarItems=sidebarMenu.querySelectorAll(".list-group-item"),searchTerm=event.target.value.toLowerCase();sidebarItems.forEach((item=>{item.dataset.name.toLowerCase().includes(searchTerm)?item.classList.replace(CLASSES_HIDE,CLASSES_SHOW):item.classList.replace(CLASSES_SHOW,CLASSES_HIDE)})),sidebarCards.forEach((card=>{card.querySelectorAll(".".concat(CLASSES_SHOW)).length>0?(card.classList.remove(CLASSES_HIDE),expandCard(card)):card.classList.add(CLASSES_HIDE)})),pendingPromise.resolve()},expandCard=card=>{let cardButton=card.querySelector('[data-toggle="collapse"]');if(cardButton.classList.contains(CLASSES_COLLAPSED)){cardButton.classList.remove(CLASSES_COLLAPSED),cardButton.setAttribute("aria-expanded","true"),card.querySelector(cardButton.dataset.target).classList.add(CLASSES_EXPANDED)}};_exports.init=selectorId=>{const sidebarMenu=document.querySelector(selectorId+reportSelectors.regions.sidebarMenu);sidebarMenu.querySelector(reportSelectors.actions.sidebarSearch).addEventListener("keyup",(event=>{const pendingPromise=new _pending.default("core_reportbuilder/sidebar:keyup");(0,_utils.debounce)(sidebarCardFilter,250)(event,sidebarMenu),setTimeout((()=>{pendingPromise.resolve()}),250)}))}})); + */function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_pending=(obj=_pending)&&obj.__esModule?obj:{default:obj},reportSelectors=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(reportSelectors);const CLASSES_EXPANDED="show",CLASSES_COLLAPSED="collapsed",CLASSES_HIDE="d-none",sidebarCardFilter=(event,sidebarMenu)=>{const pendingPromise=new _pending.default("core_reportbuilder/sidebar:cardFilter"),sidebarCards=sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarCard),sidebarItems=sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarItem),searchTerm=event.target.value.toLowerCase();sidebarItems.forEach((item=>{const itemContent=item.textContent.toLowerCase();item.classList.toggle(CLASSES_HIDE,!itemContent.includes(searchTerm))})),sidebarCards.forEach((card=>{const visibleItems=card.querySelectorAll("".concat(reportSelectors.regions.sidebarItem,":not(.").concat(CLASSES_HIDE,")"));card.classList.toggle(CLASSES_HIDE,!visibleItems.length),expandCard(card)})),pendingPromise.resolve()},expandCard=card=>{let cardButton=card.querySelector('[data-toggle="collapse"]');if(cardButton.classList.contains(CLASSES_COLLAPSED)){cardButton.classList.remove(CLASSES_COLLAPSED),cardButton.setAttribute("aria-expanded","true"),card.querySelector(cardButton.dataset.target).classList.add(CLASSES_EXPANDED)}};_exports.init=selectorId=>{const sidebarMenu=document.querySelector(selectorId+reportSelectors.regions.sidebarMenu);sidebarMenu.querySelector(reportSelectors.actions.sidebarSearch).addEventListener("keyup",(event=>{const pendingPromise=new _pending.default("core_reportbuilder/sidebar:keyup");(0,_utils.debounce)(sidebarCardFilter,250)(event,sidebarMenu),setTimeout((()=>{pendingPromise.resolve()}),250)}))}})); //# sourceMappingURL=sidebar.min.js.map \ No newline at end of file diff --git a/reportbuilder/amd/build/sidebar.min.js.map b/reportbuilder/amd/build/sidebar.min.js.map index cbf7b28bfee..93665b4b4df 100644 --- a/reportbuilder/amd/build/sidebar.min.js.map +++ b/reportbuilder/amd/build/sidebar.min.js.map @@ -1 +1 @@ -{"version":3,"file":"sidebar.min.js","sources":["../src/sidebar.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 .\n\n/**\n * Report builder sidebar component\n *\n * @module core_reportbuilder/sidebar\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Pending from 'core/pending';\nimport {debounce} from 'core/utils';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\n\nconst DEBOUNCE_TIMER = 250;\n\nconst CLASSES = {\n EXPANDED: 'show',\n COLLAPSED: 'collapsed',\n SHOW: 'd-flex',\n HIDE: 'd-none',\n};\n\n/**\n * Initialise module\n *\n * @param {Event} event\n * @param {Element} sidebarMenu\n */\nconst sidebarCardFilter = (event, sidebarMenu) => {\n const pendingPromise = new Pending('core_reportbuilder/sidebar:cardFilter');\n\n const sidebarCards = sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarCard);\n const sidebarItems = sidebarMenu.querySelectorAll('.list-group-item');\n const searchTerm = event.target.value.toLowerCase();\n\n // Toggle items according to match against search term.\n sidebarItems.forEach(item => {\n let itemName = item.dataset.name.toLowerCase();\n if (itemName.includes(searchTerm)) {\n item.classList.replace(CLASSES.HIDE, CLASSES.SHOW);\n } else {\n item.classList.replace(CLASSES.SHOW, CLASSES.HIDE);\n }\n });\n\n // Toggle cards according to whether they have any visible items.\n sidebarCards.forEach(card => {\n if (card.querySelectorAll(`.${CLASSES.SHOW}`).length > 0) {\n card.classList.remove(CLASSES.HIDE);\n expandCard(card);\n } else {\n card.classList.add(CLASSES.HIDE);\n }\n });\n\n pendingPromise.resolve();\n};\n\n/**\n * Show a collapsed card.\n * This function simulates the behaviour of JQuery show method on a collapsible element.\n *\n * @param {Element} card\n */\nconst expandCard = (card) => {\n let cardButton = card.querySelector('[data-toggle=\"collapse\"]');\n if (cardButton.classList.contains(CLASSES.COLLAPSED)) {\n cardButton.classList.remove(CLASSES.COLLAPSED);\n cardButton.setAttribute('aria-expanded', \"true\");\n let cardContent = card.querySelector(cardButton.dataset.target);\n cardContent.classList.add(CLASSES.EXPANDED);\n }\n};\n\n/**\n * Initialise module\n *\n * @param {string} selectorId\n */\nexport const init = (selectorId) => {\n const sidebarMenu = document.querySelector(selectorId + reportSelectors.regions.sidebarMenu);\n const sidebarSearch = sidebarMenu.querySelector(reportSelectors.actions.sidebarSearch);\n\n // Debounce the event listener to allow the user to finish typing.\n sidebarSearch.addEventListener('keyup', event => {\n const pendingPromise = new Pending('core_reportbuilder/sidebar:keyup');\n\n debounce(sidebarCardFilter, DEBOUNCE_TIMER)(event, sidebarMenu);\n setTimeout(() => {\n pendingPromise.resolve();\n }, DEBOUNCE_TIMER);\n });\n};\n"],"names":["CLASSES","sidebarCardFilter","event","sidebarMenu","pendingPromise","Pending","sidebarCards","querySelectorAll","reportSelectors","regions","sidebarCard","sidebarItems","searchTerm","target","value","toLowerCase","forEach","item","dataset","name","includes","classList","replace","card","length","remove","expandCard","add","resolve","cardButton","querySelector","contains","setAttribute","selectorId","document","actions","sidebarSearch","addEventListener","setTimeout"],"mappings":";;;;;;;mlCA6BMA,iBACQ,OADRA,kBAES,YAFTA,aAGI,SAHJA,aAII,SASJC,kBAAoB,CAACC,MAAOC,qBACxBC,eAAiB,IAAIC,iBAAQ,yCAE7BC,aAAeH,YAAYI,iBAAiBC,gBAAgBC,QAAQC,aACpEC,aAAeR,YAAYI,iBAAiB,oBAC5CK,WAAaV,MAAMW,OAAOC,MAAMC,cAGtCJ,aAAaK,SAAQC,OACFA,KAAKC,QAAQC,KAAKJ,cACpBK,SAASR,YAClBK,KAAKI,UAAUC,QAAQtB,aAAcA,cAErCiB,KAAKI,UAAUC,QAAQtB,aAAcA,iBAK7CM,aAAaU,SAAQO,OACbA,KAAKhB,4BAAqBP,eAAgBwB,OAAS,GACnDD,KAAKF,UAAUI,OAAOzB,cACtB0B,WAAWH,OAEXA,KAAKF,UAAUM,IAAI3B,iBAI3BI,eAAewB,WASbF,WAAcH,WACZM,WAAaN,KAAKO,cAAc,+BAChCD,WAAWR,UAAUU,SAAS/B,mBAAoB,CAClD6B,WAAWR,UAAUI,OAAOzB,mBAC5B6B,WAAWG,aAAa,gBAAiB,QACvBT,KAAKO,cAAcD,WAAWX,QAAQL,QAC5CQ,UAAUM,IAAI3B,kCASbiC,mBACX9B,YAAc+B,SAASJ,cAAcG,WAAazB,gBAAgBC,QAAQN,aAC1DA,YAAY2B,cAActB,gBAAgB2B,QAAQC,eAG1DC,iBAAiB,SAASnC,cAC9BE,eAAiB,IAAIC,iBAAQ,wDAE1BJ,kBA1EM,KA0E6BC,MAAOC,aACnDmC,YAAW,KACPlC,eAAewB,YA5EJ"} \ No newline at end of file +{"version":3,"file":"sidebar.min.js","sources":["../src/sidebar.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 .\n\n/**\n * Report builder sidebar component\n *\n * @module core_reportbuilder/sidebar\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Pending from 'core/pending';\nimport {debounce} from 'core/utils';\nimport * as reportSelectors from 'core_reportbuilder/local/selectors';\n\nconst DEBOUNCE_TIMER = 250;\n\nconst CLASSES = {\n EXPANDED: 'show',\n COLLAPSED: 'collapsed',\n HIDE: 'd-none',\n};\n\n/**\n * Initialise module\n *\n * @param {Event} event\n * @param {Element} sidebarMenu\n */\nconst sidebarCardFilter = (event, sidebarMenu) => {\n const pendingPromise = new Pending('core_reportbuilder/sidebar:cardFilter');\n\n const sidebarCards = sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarCard);\n const sidebarItems = sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarItem);\n const searchTerm = event.target.value.toLowerCase();\n\n // Toggle items according to match against search term.\n sidebarItems.forEach(item => {\n const itemContent = item.textContent.toLowerCase();\n item.classList.toggle(CLASSES.HIDE, !itemContent.includes(searchTerm));\n });\n\n // Toggle cards according to whether they have any visible items.\n sidebarCards.forEach(card => {\n const visibleItems = card.querySelectorAll(`${reportSelectors.regions.sidebarItem}:not(.${CLASSES.HIDE})`);\n card.classList.toggle(CLASSES.HIDE, !visibleItems.length);\n\n expandCard(card);\n });\n\n pendingPromise.resolve();\n};\n\n/**\n * Show a collapsed card.\n * This function simulates the behaviour of JQuery show method on a collapsible element.\n *\n * @param {Element} card\n */\nconst expandCard = (card) => {\n let cardButton = card.querySelector('[data-toggle=\"collapse\"]');\n if (cardButton.classList.contains(CLASSES.COLLAPSED)) {\n cardButton.classList.remove(CLASSES.COLLAPSED);\n cardButton.setAttribute('aria-expanded', \"true\");\n let cardContent = card.querySelector(cardButton.dataset.target);\n cardContent.classList.add(CLASSES.EXPANDED);\n }\n};\n\n/**\n * Initialise module\n *\n * @param {string} selectorId\n */\nexport const init = (selectorId) => {\n const sidebarMenu = document.querySelector(selectorId + reportSelectors.regions.sidebarMenu);\n const sidebarSearch = sidebarMenu.querySelector(reportSelectors.actions.sidebarSearch);\n\n // Debounce the event listener to allow the user to finish typing.\n sidebarSearch.addEventListener('keyup', event => {\n const pendingPromise = new Pending('core_reportbuilder/sidebar:keyup');\n\n debounce(sidebarCardFilter, DEBOUNCE_TIMER)(event, sidebarMenu);\n setTimeout(() => {\n pendingPromise.resolve();\n }, DEBOUNCE_TIMER);\n });\n};\n"],"names":["CLASSES","sidebarCardFilter","event","sidebarMenu","pendingPromise","Pending","sidebarCards","querySelectorAll","reportSelectors","regions","sidebarCard","sidebarItems","sidebarItem","searchTerm","target","value","toLowerCase","forEach","item","itemContent","textContent","classList","toggle","includes","card","visibleItems","length","expandCard","resolve","cardButton","querySelector","contains","remove","setAttribute","dataset","add","selectorId","document","actions","sidebarSearch","addEventListener","setTimeout"],"mappings":";;;;;;;mlCA6BMA,iBACQ,OADRA,kBAES,YAFTA,aAGI,SASJC,kBAAoB,CAACC,MAAOC,qBACxBC,eAAiB,IAAIC,iBAAQ,yCAE7BC,aAAeH,YAAYI,iBAAiBC,gBAAgBC,QAAQC,aACpEC,aAAeR,YAAYI,iBAAiBC,gBAAgBC,QAAQG,aACpEC,WAAaX,MAAMY,OAAOC,MAAMC,cAGtCL,aAAaM,SAAQC,aACXC,YAAcD,KAAKE,YAAYJ,cACrCE,KAAKG,UAAUC,OAAOtB,cAAemB,YAAYI,SAASV,gBAI9DP,aAAaW,SAAQO,aACXC,aAAeD,KAAKjB,2BAAoBC,gBAAgBC,QAAQG,6BAAoBZ,mBAC1FwB,KAAKH,UAAUC,OAAOtB,cAAeyB,aAAaC,QAElDC,WAAWH,SAGfpB,eAAewB,WASbD,WAAcH,WACZK,WAAaL,KAAKM,cAAc,+BAChCD,WAAWR,UAAUU,SAAS/B,mBAAoB,CAClD6B,WAAWR,UAAUW,OAAOhC,mBAC5B6B,WAAWI,aAAa,gBAAiB,QACvBT,KAAKM,cAAcD,WAAWK,QAAQpB,QAC5CO,UAAUc,IAAInC,kCASboC,mBACXjC,YAAckC,SAASP,cAAcM,WAAa5B,gBAAgBC,QAAQN,aAC1DA,YAAY2B,cAActB,gBAAgB8B,QAAQC,eAG1DC,iBAAiB,SAAStC,cAC9BE,eAAiB,IAAIC,iBAAQ,wDAE1BJ,kBAnEM,KAmE6BC,MAAOC,aACnDsC,YAAW,KACPrC,eAAewB,YArEJ"} \ No newline at end of file diff --git a/reportbuilder/amd/src/local/selectors.js b/reportbuilder/amd/src/local/selectors.js index 0c7d01c0377..a6a7f06ed3b 100644 --- a/reportbuilder/amd/src/local/selectors.js +++ b/reportbuilder/amd/src/local/selectors.js @@ -38,6 +38,7 @@ const SELECTORS = { filtersForm: '[data-region="filters-form"]', sidebarMenu: '[data-region="sidebar-menu"]', sidebarCard: '[data-region="sidebar-card"]', + sidebarItem: '[data-region="sidebar-item"]', settingsConditions: '[data-region="settings-conditions"]', activeConditions: '[data-region="active-conditions"]', activeCondition: '[data-region="active-condition"]', diff --git a/reportbuilder/amd/src/sidebar.js b/reportbuilder/amd/src/sidebar.js index 39c6f26c4db..26f8c367072 100644 --- a/reportbuilder/amd/src/sidebar.js +++ b/reportbuilder/amd/src/sidebar.js @@ -30,7 +30,6 @@ const DEBOUNCE_TIMER = 250; const CLASSES = { EXPANDED: 'show', COLLAPSED: 'collapsed', - SHOW: 'd-flex', HIDE: 'd-none', }; @@ -44,27 +43,21 @@ const sidebarCardFilter = (event, sidebarMenu) => { const pendingPromise = new Pending('core_reportbuilder/sidebar:cardFilter'); const sidebarCards = sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarCard); - const sidebarItems = sidebarMenu.querySelectorAll('.list-group-item'); + const sidebarItems = sidebarMenu.querySelectorAll(reportSelectors.regions.sidebarItem); const searchTerm = event.target.value.toLowerCase(); // Toggle items according to match against search term. sidebarItems.forEach(item => { - let itemName = item.dataset.name.toLowerCase(); - if (itemName.includes(searchTerm)) { - item.classList.replace(CLASSES.HIDE, CLASSES.SHOW); - } else { - item.classList.replace(CLASSES.SHOW, CLASSES.HIDE); - } + const itemContent = item.textContent.toLowerCase(); + item.classList.toggle(CLASSES.HIDE, !itemContent.includes(searchTerm)); }); // Toggle cards according to whether they have any visible items. sidebarCards.forEach(card => { - if (card.querySelectorAll(`.${CLASSES.SHOW}`).length > 0) { - card.classList.remove(CLASSES.HIDE); - expandCard(card); - } else { - card.classList.add(CLASSES.HIDE); - } + const visibleItems = card.querySelectorAll(`${reportSelectors.regions.sidebarItem}:not(.${CLASSES.HIDE})`); + card.classList.toggle(CLASSES.HIDE, !visibleItems.length); + + expandCard(card); }); pendingPromise.resolve(); diff --git a/reportbuilder/templates/local/sidebar-menu/card_item.mustache b/reportbuilder/templates/local/sidebar-menu/card_item.mustache index bd8b2da7c9e..470245f2cd7 100644 --- a/reportbuilder/templates/local/sidebar-menu/card_item.mustache +++ b/reportbuilder/templates/local/sidebar-menu/card_item.mustache @@ -29,21 +29,25 @@ - {{{name}}} - + data-name="{{name}}" + > + + {{{name}}} {{#pix}} t/add, core {{/pix}} {{/disabled}} {{#disabled}}
+ class="list-group-item list-group-item-action pr-2 bg-transparent text-muted" + data-region="sidebar-item" + > + {{{name}}} - {{#pix}} i/info, core {{/pix}}
diff --git a/reportbuilder/tests/behat/audience.feature b/reportbuilder/tests/behat/audience.feature index 3a38a54a505..c37e9c6e52b 100644 --- a/reportbuilder/tests/behat/audience.feature +++ b/reportbuilder/tests/behat/audience.feature @@ -91,6 +91,17 @@ Feature: Configure access to reports based on intended audience # This audience type should be disabled because there are no cohorts available. And "Add audience 'Member of cohort'" "link" should not exist + Scenario: Search for and add audience to report + Given I am on the "My report" "reportbuilder > Editor" page logged in as "admin" + And I click on the "Audience" dynamic tab + When I set the field "Search" in the "[data-region=sidebar-menu]" "css_element" to "All users" + Then I should see "All users" in the "[data-region=sidebar-menu]" "css_element" + And I should not see "Member of cohort" in the "[data-region=sidebar-menu]" "css_element" + And I click on "Add audience 'All users'" "link" + And I should see "Added audience 'All users'" + And I press "Save changes" + And I should see "Audience saved" + Scenario: Rename report audience Given I am on the "My report" "reportbuilder > Editor" page logged in as "admin" And I click on the "Audience" dynamic tab diff --git a/reportbuilder/tests/behat/columneditor.feature b/reportbuilder/tests/behat/columneditor.feature index 1ff76a1734f..72671d738b0 100644 --- a/reportbuilder/tests/behat/columneditor.feature +++ b/reportbuilder/tests/behat/columneditor.feature @@ -13,6 +13,19 @@ Feature: Manage custom report columns Then I should see "Added column 'Full name'" And I should see "Full name" in the "reportbuilder-table" "table" + Scenario: Search for and add column to report + Given the following "core_reportbuilder > Report" exists: + | name | My report | + | source | core_user\reportbuilder\datasource\users | + | default | 0 | + And I am on the "My report" "reportbuilder > Editor" page logged in as "admin" + When I set the field "Search" in the "[data-region=sidebar-menu]" "css_element" to "Surname" + Then I should see "Surname" in the "[data-region=sidebar-menu]" "css_element" + And I should not see "Email address" in the "[data-region=sidebar-menu]" "css_element" + And I click on "Add column 'Surname'" "link" + And I should see "Added column 'Surname'" + And I should see "Surname" in the "reportbuilder-table" "table" + Scenario: Rename column in report Given the following "core_reportbuilder > Report" exists: | name | My report |