From cc15134c7bef8ceb43df72681463b2ed45f37b8b Mon Sep 17 00:00:00 2001 From: Michael Hawkins Date: Tue, 8 Oct 2019 12:46:26 +0800 Subject: [PATCH] MDL-66076 forumreport_summary: Groups filter made accessible --- .../report/summary/amd/build/filters.min.js | Bin 1728 -> 2413 bytes .../summary/amd/build/filters.min.js.map | Bin 6659 -> 9528 bytes mod/forum/report/summary/amd/src/filters.js | 63 ++++++++++++++---- .../summary/lang/en/forumreport_summary.php | 1 + .../report/summary/templates/filters.mustache | 14 ++-- 5 files changed, 61 insertions(+), 17 deletions(-) diff --git a/mod/forum/report/summary/amd/build/filters.min.js b/mod/forum/report/summary/amd/build/filters.min.js index 123433ea14b310886d293049d9f30aa539b596c1..af21835c4bb83c74bdc708168ad6fda7d028df38 100644 GIT binary patch delta 776 zcmZ`%J#W-N5S8zatB8<5M5I9CHd3^U?A3)d$2l%Ypg^LdjDj@wj(t{qUT3|&aJrn* zQh~@;ln6Q+enG@vK>P?QD*gcLi$UhAvE+I0?aX^KpVq!z|9I~7XQ1wgz+5jWmk~`TQa{^#O8bVeC#GcT;-8YWp1Gb9l9YG7(?NVQC^Cp} zin$(>P--owq-iVyA)~5Bc!K&-wj%A#9}7z2G}EZOM9Hcsy|A(}+tJ1UDQw4$Gaq?W zkN6}lHCH&5Gi*&Oc!~Of)+)8nSpZZD9zHK17bu837&2e9^wuvWq0T*7=`79BD^xlK zHMhRow4ZG(^KOfR{J26je~KAKS}ID?yr?u`JhqNYYF;`6bF0tmxOxdCo90VzbXLg1 zj;t)p?tmQOT*#B0xP&)pz-l`saodYZV@kJof*=4MO+f8Sfv2ZU!9H>MzjN;oLQ`l6 zY-?+{3x`~TvWsYikYS$a30nX!6wd6T9$sDqWqx^*>S#jYFVVs9kS!u8k(4X<9%LCA t*Eg|o;D-v~$X}t2sVGBGWGw8B{R1swhGbkP^!r8pimK5pm*z!(^aI|*4!QsU delta 187 zcmaDWbbxomB*w``Ocs-uF!oNKz$meJ784_Libmq(L{{O+8<>^h?3c`%lWUn|C+o8` zPJYSa$*ftOI{6@nHBU(sC~e3jH#wDEk4dw7@+%fqX`sr) SloT{&)+ri_hMJR2IV}Jcewopn_B~C)BvbECKhK-vq`l+;f`@BgVHw|f;rY)&pZEx&NoZZdt z+DS@_D{(*-7uqLr;Kq$3QZD@iK&pgP1UDo&Z~^`WBo55XTPKc_s6K4o&YO?l%>3Tl z$>(D)roLJ|k}sQv$I9hrj(y0nMI_Ss?2owUir6W?l3TTc1uG~`SmnUOuCTqOt`8}{U@>$px;nxomCd^2D{ z;8|dWuiy`!OHRJx!{2<#@VHaJjTLhNu2XKdCKFAojeyo~~S6g61#%T{(I0Z^G1ZZJ>}VVVx#add1-+mFph-prhEilgoTD;Kabj2_AF2bf zz(u_KA&z_ab5g6Qs%VhuS-P#d}BHt0cLASz|BuBkqt z+Mrt5_~aQPjDe6Ry#uW<7qUuIopm~Q46SN-8lgl~>~-h`Fj@M4pWs6hIvlO*7=U=s zGwMCYa`+C&Ova!aSl*KR^w(23J9rF(?86M!ZYN>lIC2Dv}P=wOJF@Z=t^hRUALs zQ`?Us)dMI(5M+nBx?bl9HDeb^aEro?X$6c2AR!O*H|?!4Y5YDm6( z2)KcsaN%Z=qsTCxS;GCMBTc7?Gr+>9K)nX~`MN%JviU1QY}qjYePE#UU!h($6M~gc zOcuA1X$we52*%m6hIy}OC@5v7RUT8f9v%I*?E*K-WwW3JjzS-PWr;rRernNH;8!&~ zDTjeT8CMc!6+ZGwW&G;a!?)jzh=00{iI>rnF*1ekZfLFKHo?luub{|r0}JMeD{p6o z+tGUhz2dJvW{Bm^Q(MnZJQF zQ3+>`WSAEs=-*>2KIwe|IgN`~(PJ7%%g|NykgXE!(XG@nnh$pAc?mRD9Rd z(MH`8FM4wIR&`_M_-i7K_@(=__`0Y6bj2l}xt{6!$W!Q$>7DakBX26e*FU4t!-|n7 z?p}+YsX<7`PAuZoS#Z|v#h9ur#!~XM3`#v8g-aEijOs__Q`rY=Nl8disy@Ohu E2Z;va9RL6T delta 924 zcmah{Jxo(k6wZS_N@-}2-&9)K1_5iXBtnfko_F7CDV0`2D#Q41nnr-ggama%yC$ zENh|~t2*v9e{3@#2P^@Q9)SU z1;VDNaDz?JL>$dIL^XQuCY>{+A<2>eQwjX6_A7A=sl9ll4k%MN&@$Ats$sw#4gI5! z-{3QJeT~Ed&*F=g3yO|=EyHJ!TW65{UbA6-Mbn8r{vUSQL9Tg)*2Q(9IaQBkMeYY6 z#0)-f?Z&rmfBTlkrbV*U9XSqi9-Xk)-lc2h<04wyRHdZ-1hh* z)e|1-3KIhI*Fa3en&+bL+UeGJ&$2G*H;?IK+EtCs0*ESnY;t0d4)}y;ctI?t*duI#aDqV9)Wyl7V@@*Ujw(Bqv0pD`QR7D vJ$kPY79ai$1aYtHGX98kVleVRiQ<00-&b^s&W2Sw0a8ZL8+e92LxX<+iD?EN diff --git a/mod/forum/report/summary/amd/src/filters.js b/mod/forum/report/summary/amd/src/filters.js index cac7f920763..3aa22142650 100644 --- a/mod/forum/report/summary/amd/src/filters.js +++ b/mod/forum/report/summary/amd/src/filters.js @@ -37,14 +37,20 @@ export const init = (root) => { // Generic filter handlers. - // Event handler to clear filters. - $(root).on("click", ".filter-clear", function(event) { + // Called to clear filters. + var clearAll = (event) => { // Clear checkboxes. let selected = event.target.parentNode.parentNode.parentElement.querySelectorAll('input[type="checkbox"]:checked'); selected.forEach(function(checkbox) { checkbox.checked = false; }); + }; + + // Event handler for clearing filter by clicking option. + $(root).on("click", ".filter-clear", function(event) { + event.preventDefault(); + clearAll(event); }); // Called to override click event to trigger a proper generate request with filtering. @@ -87,10 +93,20 @@ export const init = (root) => { }); }; + // Submit report via filter + var submitWithFilter = (containerelement) => { + // Close the container (eg popover). + $(containerelement).addClass('hidden'); + + // Submit the filter values and re-generate report. + generateWithFilters(false); + }; + // Groups filter specific handlers. - // Event to handle select all groups. - $('#filter-groups-popover .select-all').on('click', function() { + // Event handler for clicking select all groups. + $('#filter-groups-popover .select-all').on('click', function(event) { + event.preventDefault(); selectAll('filter-groups-popover'); }); @@ -102,16 +118,39 @@ export const init = (root) => { new Popper(referenceElement, popperContent, {placement: 'bottom'}); - // Show popover. - $('#filter-groups-popover').removeClass('hidden'); + // Show popover and switch focus. + var groupsbutton = document.getElementById('filter-groups-button'), + groupspopover = document.getElementById('filter-groups-popover'); + groupspopover.classList.remove('hidden'); + groupsbutton.setAttribute('aria-expanded', true); + groupsbutton.classList.add('btn-outline-primary'); + groupsbutton.classList.remove('btn-primary'); + groupspopover.querySelector('input').focus(); }); - // Event handler to save groups filter. - $(root).on("click", "#filter-groups-popover .filter-save", function() { - // Close the popover. - $('#filter-groups-popover').addClass('hidden'); + // Event handler to click save groups filter. + $(root).on("click", "#filter-groups-popover .filter-save", function(event) { + event.preventDefault(); + submitWithFilter('#filter-groups-popover'); + }); - // Submit the filter values and re-generate report. - generateWithFilters(false); + // Event handler to support pressing enter/space on groups filter popover actions. + $('#filter-groups-popover').on("keydown", ".filter-actions", function(event) { + if ((event.charCode === 13 || event.keyCode === 13 || event.charCode === 32 || event.keyCode === 32) + && event.target.classList.length > 0) { + event.preventDefault(); + + switch(event.target.classList[0]) { + case 'select-all': + selectAll('filter-groups-popover'); + break; + case 'filter-clear': + clearAll(event); + break; + case 'filter-save': + submitWithFilter('#filter-groups-popover'); + break; + } + } }); }; diff --git a/mod/forum/report/summary/lang/en/forumreport_summary.php b/mod/forum/report/summary/lang/en/forumreport_summary.php index 97cebba2376..d3bb447dc47 100644 --- a/mod/forum/report/summary/lang/en/forumreport_summary.php +++ b/mod/forum/report/summary/lang/en/forumreport_summary.php @@ -25,6 +25,7 @@ $string['attachmentcount'] = 'Number of attachments'; $string['viewcount'] = 'Number of views'; $string['earliestpost'] = 'Earliest post'; +$string['filter:groupsbuttonlabel'] = 'Open the groups filter'; $string['filter:groupsname'] = 'Groups'; $string['filter:groupscountall'] = 'Groups (all)'; $string['filter:groupscountnumber'] = 'Groups ({$a})'; diff --git a/mod/forum/report/summary/templates/filters.mustache b/mod/forum/report/summary/templates/filters.mustache index 426b19dc187..ec243aea056 100644 --- a/mod/forum/report/summary/templates/filters.mustache +++ b/mod/forum/report/summary/templates/filters.mustache @@ -44,7 +44,8 @@
{{#hasgroups}} - @@ -61,10 +62,13 @@ {{/filtergroups}}
- {{# str}} selectall {{/ str}} -
- {{# str}} clear {{/ str}} - {{# str}} save {{/ str}} +
+ +
+ + +
-- 2.43.0