52307f5778a3a67592ef1e782592424c913b05fc
[moodle.git] / grade / grading / form / rubric / amd / src / grades / grader / gradingpanel.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/>.
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';
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];
52 };
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  *
63  * @returns {Promise}
64  */
65 export const storeCurrentGrade = async(component, contextid, itemname, gradeduserid, rootNode) => {
66     const form = rootNode.querySelector('form');
68     return normaliseResult(await fetchMany([{
69         methodname: `gradingform_rubric_grader_gradingpanel_store`,
70         args: {
71             component,
72             contextid,
73             itemname,
74             gradeduserid,
75             formdata: jQuery(form).serialize(),
76         },
77     }])[0]);
78 };