grade/report/singleview/amd/src/group.js

  1. // This file is part of Moodle - http://moodle.org/
  2. //
  3. // Moodle is free software: you can redistribute it and/or modify
  4. // it under the terms of the GNU General Public License as published by
  5. // the Free Software Foundation, either version 3 of the License, or
  6. // (at your option) any later version.
  7. //
  8. // Moodle is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. //
  13. // You should have received a copy of the GNU General Public License
  14. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
  15. /**
  16. * Allow the user to search for groups within the singleview report.
  17. *
  18. * @module gradereport_singleview/group
  19. * @copyright 2023 Mathew May <mathew.solutions>
  20. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  21. * @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.
  22. * @todo Final deprecation in Moodle 6.0. See MDL-82116.
  23. */
  24. import GroupSearch from 'core_group/comboboxsearch/group';
  25. import Url from 'core/url';
  26. export default class Group extends GroupSearch {
  27. courseID;
  28. item = null;
  29. /**
  30. * Construct the class.
  31. *
  32. * @param {string} item The page type we are currently on.
  33. */
  34. constructor(item) {
  35. window.console.warn(
  36. 'The gradereport_singleview/group module has been deprecated since Moodle 4.5.' +
  37. ' Please use core_course/actionbar/group instead.',
  38. );
  39. super();
  40. this.item = item;
  41. // Define our standard lookups.
  42. this.selectors = {...this.selectors,
  43. courseid: '[data-region="courseid"]',
  44. };
  45. const component = document.querySelector(this.componentSelector());
  46. this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;
  47. }
  48. /**
  49. * Allow the class to be invoked via PHP.
  50. *
  51. * @param {string} item The page type we are currently on.
  52. * @returns {Group}
  53. */
  54. static init(item) {
  55. return new Group(item);
  56. }
  57. /**
  58. * Build up the link that is dedicated to a particular result.
  59. *
  60. * @param {Number} groupID The ID of the group selected.
  61. * @returns {string|*}
  62. */
  63. selectOneLink(groupID) {
  64. return Url.relativeUrl('/grade/report/singleview/index.php', {
  65. id: this.courseID,
  66. groupsearchvalue: this.getSearchTerm(),
  67. group: groupID,
  68. item: this.item
  69. }, false);
  70. }
  71. }