Merge branch 'MDL-74353' of https://github.com/paulholden/moodle
This commit is contained in:
+1
-1
@@ -6,6 +6,6 @@ define("core_reportbuilder/local/selectors",["exports"],(function(_exports){Obje
|
||||
* @copyright 2021 Paul Holden <paulh@moodle.com>
|
||||
* @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
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -5,6 +5,6 @@ define("core_reportbuilder/sidebar",["exports","core/pending","core/utils","core
|
||||
* @module core_reportbuilder/sidebar
|
||||
* @copyright 2021 Paul Holden <paulh@moodle.com>
|
||||
* @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
|
||||
File diff suppressed because one or more lines are too long
@@ -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"]',
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -29,21 +29,25 @@
|
||||
<a href="#"
|
||||
title="{{title}}"
|
||||
role="button"
|
||||
class="list-group-item list-group-item-action d-flex align-items-start justify-content-between pr-2 bg-transparent"
|
||||
class="list-group-item list-group-item-action pr-2 bg-transparent"
|
||||
data-region="sidebar-item"
|
||||
data-action="{{action}}"
|
||||
data-unique-identifier="{{identifier}}"
|
||||
data-name="{{name}}">
|
||||
{{{name}}}
|
||||
<span class="my-auto ml-1">
|
||||
data-name="{{name}}"
|
||||
>
|
||||
<span class="d-flex align-items-center justify-content-between">
|
||||
{{{name}}}
|
||||
{{#pix}} t/add, core {{/pix}}
|
||||
</span>
|
||||
</a>
|
||||
{{/disabled}}
|
||||
{{#disabled}}
|
||||
<div title="{{title}}"
|
||||
class="list-group-item list-group-item-action d-flex align-items-start justify-content-between pr-2 bg-transparent text-muted" >
|
||||
class="list-group-item list-group-item-action pr-2 bg-transparent text-muted"
|
||||
data-region="sidebar-item"
|
||||
>
|
||||
<span class="d-flex align-items-center justify-content-between">
|
||||
{{{name}}}
|
||||
<span class="ml-auto ml-1 ">
|
||||
{{#pix}} i/info, core {{/pix}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
Reference in New Issue
Block a user