MDL-66360 mod_forum: add missing notifyuser to doc block
[moodle.git] / grade / grading / form / rubric / amd / src / grades / grader / gradingpanel.js
blob8ddaf792c8462a4fc8d5df13057a1903160d6b22
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.
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/>.
16 /**
17  * Grading panel for gradingform_rubric.
18  *
19  * @module     gradingform_rubric/grades/grader/gradingpanel
20  * @package    gradingform_rubric
21  * @copyright  2019 Mathew May <mathew.solutions>
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 import {call as fetchMany} from 'core/ajax';
26 import {normaliseResult} from 'core_grades/grades/grader/gradingpanel/normalise';
27 import {compareData} from 'core_grades/grades/grader/gradingpanel/comparison';
29 // Note: We use jQuery.serializer here until we can rewrite Ajax to use XHR.send()
30 import jQuery from 'jquery';
32 /**
33  * For a given component, contextid, itemname & gradeduserid we can fetch the currently assigned grade.
34  *
35  * @param {String} component
36  * @param {Number} contextid
37  * @param {String} itemname
38  * @param {Number} gradeduserid
39  *
40  * @returns {Promise}
41  */
42 export const fetchCurrentGrade = (component, contextid, itemname, gradeduserid) => {
43     return fetchMany([{
44         methodname: `gradingform_rubric_grader_gradingpanel_fetch`,
45         args: {
46             component,
47             contextid,
48             itemname,
49             gradeduserid,
50         },
51     }])[0];
54 /**
55  * For a given component, contextid, itemname & gradeduserid we can store the currently assigned grade in a given form.
56  *
57  * @param {String} component
58  * @param {Number} contextid
59  * @param {String} itemname
60  * @param {Number} gradeduserid
61  * @param {HTMLElement} rootNode
62  * @param {Boolean} notifyuser
63  *
64  * @returns {Promise}
65  */
66 export const storeCurrentGrade = async(component, contextid, itemname, gradeduserid, rootNode, notifyuser = false) => {
67     const form = rootNode.querySelector('form');
69     if (compareData(form) === true) {
70         return normaliseResult(await fetchMany([{
71             methodname: `gradingform_rubric_grader_gradingpanel_store`,
72             args: {
73                 component,
74                 contextid,
75                 itemname,
76                 gradeduserid,
77                 formdata: jQuery(form).serialize(),
78                 notifyuser,
79             },
80         }])[0]);
81     } else {
82         return '';
83     }