From 9769ba08b3b6c1bb47888bf19842b093606d9901 Mon Sep 17 00:00:00 2001 From: Mathew May Date: Tue, 5 Nov 2019 10:45:07 +0800 Subject: [PATCH] MDL-66958 gradingform_rubric: Only save on form change --- .../build/grades/grader/gradingpanel.min.js | Bin 1458 -> 1597 bytes .../grades/grader/gradingpanel.min.js.map | Bin 3588 -> 3826 bytes .../amd/src/grades/grader/gradingpanel.js | 25 +++++++++++------- .../grader/gradingpanel/external/fetch.php | 6 ++--- .../rubric/lang/en/gradingform_rubric.php | 1 + .../grades/grader/gradingpanel.mustache | 2 +- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/grade/grading/form/rubric/amd/build/grades/grader/gradingpanel.min.js b/grade/grading/form/rubric/amd/build/grades/grader/gradingpanel.min.js index b3a2eeae77091bf54558cc54e4b2e0f400acd250..b4c76ecad8547b742e42215b87d4e0a35080a81e 100644 GIT binary patch delta 344 zcmX|*K}y3w6oyIKB4`B>aUoXHC^`c}sECUu1iEmgE=2c*Y35BbO*5&}i72I@cmeBd zJ%wBG0v^C4cnoo*=CSKgaXkMoOz<)kdeREbF`=l9z#f%!}6fN45MtAHb3 z$wZ4%dfc2lGbc44&Y7i~?(Pytf-nN6=eGWD=6-Et@!u1|(;KQh8mFdT+gsx#B^eQ9 zxQKJ}T)RBY<6&@Jfx5eb5hS`)$mgXhd>jdm+Nj-$;}~@a3l=lsgldXWjxnCnK*Ft# zyU{=a&1dGjw&NU|R=wZjBq^n~P_Qs1LPH^G0bxc`MH#Sa0?HCWew&yThPD9$2AozS vZSCf*zGYRP^=Q8vD$tdZ9u4R~Rb!3(Mc@h5sNJvX_by}|TGl+s0CKs`=^ zFX8Skjy{B|uVBR1_4|Il|E>MHe1ErIT-H?G^v*%mCbhaWKEeg0ARj(UA^BMBugD-? z$S(1%mXD5x{C!LYF@HNJ{L$(h5u~ND z4b(DHpe>CJjw#9@t5A}xCsZ{i2i24$T8#WY$WW5PrWg1HZ+RPHz=vKe4*110BIEYb F-VYheWcmOA diff --git a/grade/grading/form/rubric/amd/build/grades/grader/gradingpanel.min.js.map b/grade/grading/form/rubric/amd/build/grades/grader/gradingpanel.min.js.map index 8611812e7c400d641a205765439a46cd0880a3f1..427dec3fad0791b01b0b35dbdb0e022410a1f4bd 100644 GIT binary patch delta 287 zcmZpX`6RnRl#wMf)X`$IB;#yG%_=9IQYS~pNEaPvN5?22;ZX?|@yu~@)yZ^n^vZV9 zNq2Je^qhQz>4K1#myVg6V``3*j;muDP{zo4^GxOv7U9g?g8ZTqh3e$|+=9fSRF}k( z#K{-g^|>JY%;NmK&72%7S=2Mr6f}_3Xr$#Aza(u=L&vSC~*lgqedCiihkPhJYdGkHxNL8@wXAlkv~Sj}jISWRn) eNUcI@PH`&C0FZo9YDsBPo`SkMOvU7TylMcsnN@fI delta 85 zcmV-b0IL7;9fTaP6#)b?Q9(Ad83CIC5OhLAENMbPNOM9gXF@?oL6hAA&;>|AEOAG( rzXNmxvx5kw1d~$@Gn0M_G?Ts!5tG9TbCX&QF_Sh64gx7Vlgth#d?gy+ diff --git a/grade/grading/form/rubric/amd/src/grades/grader/gradingpanel.js b/grade/grading/form/rubric/amd/src/grades/grader/gradingpanel.js index 52307f5778a..2b34c1ef3d5 100644 --- a/grade/grading/form/rubric/amd/src/grades/grader/gradingpanel.js +++ b/grade/grading/form/rubric/amd/src/grades/grader/gradingpanel.js @@ -24,6 +24,7 @@ import {call as fetchMany} from 'core/ajax'; import {normaliseResult} from 'core_grades/grades/grader/gradingpanel/normalise'; +import {compareData} from 'core_grades/grades/grader/gradingpanel/comparison'; // Note: We use jQuery.serializer here until we can rewrite Ajax to use XHR.send() @@ -65,14 +66,18 @@ export const fetchCurrentGrade = (component, contextid, itemname, gradeduserid) export const storeCurrentGrade = async(component, contextid, itemname, gradeduserid, rootNode) => { const form = rootNode.querySelector('form'); - return normaliseResult(await fetchMany([{ - methodname: `gradingform_rubric_grader_gradingpanel_store`, - args: { - component, - contextid, - itemname, - gradeduserid, - formdata: jQuery(form).serialize(), - }, - }])[0]); + if (compareData(form) === true) { + return normaliseResult(await fetchMany([{ + methodname: `gradingform_rubric_grader_gradingpanel_store`, + args: { + component, + contextid, + itemname, + gradeduserid, + formdata: jQuery(form).serialize(), + }, + }])[0]); + } else { + return ''; + } }; diff --git a/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php b/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php index c60f421d826..6cf05b73f89 100644 --- a/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php +++ b/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php @@ -159,7 +159,7 @@ class fetch extends external_api { $criterion = []; if ($definition->rubric_criteria) { // Iterate over the defined criterion in the rubric and map out what we need to render each item. - $criterion = array_map(function($criterion) use ($definitionid, $fillings, $context) { + $criterion = array_map(function($criterion) use ($definitionid, $fillings, $context, $hasgrade) { // The general structure we'll be returning, we still need to get the remark (if any) and the levels associated. $result = [ 'id' => $criterion['id'], @@ -213,8 +213,8 @@ class fetch extends external_api { 'id' => null, 'criterionid' => $criterion['id'], 'score' => '-', - 'definition' => 'Not set', - 'checked' => null, + 'definition' => get_string('notset', 'gradingform_rubric'), + 'checked' => !$hasgrade, ]; // Consult the grade filling to see if a level has been selected and if it is the current level. if (array_key_exists('levelid', $filling) && $filling['levelid'] == 0) { diff --git a/grade/grading/form/rubric/lang/en/gradingform_rubric.php b/grade/grading/form/rubric/lang/en/gradingform_rubric.php index 6e2d29973ff..85f3c6bc8e2 100644 --- a/grade/grading/form/rubric/lang/en/gradingform_rubric.php +++ b/grade/grading/form/rubric/lang/en/gradingform_rubric.php @@ -57,6 +57,7 @@ $string['lockzeropoints'] = 'Calculate grade based on the rubric having a minimu $string['lockzeropoints_help'] = 'This setting only applies if the sum of the minimum number of points for each criterion is greater than 0. If ticked, the minimum achievable grade for the rubric will be greater than 0. If unticked, the minimum possible score for the rubric will be mapped to the minimum grade available for the activity (which is 0 unless a scale is used).'; $string['name'] = 'Name'; $string['needregrademessage'] = 'The rubric definition was changed after this student had been graded. The student can not see this rubric until you check the rubric and update the grade.'; +$string['notset'] = 'Not set'; $string['pluginname'] = 'Rubric'; $string['pointsvalue'] = '{$a} points'; $string['previewrubric'] = 'Preview rubric'; diff --git a/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache b/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache index a3d31cbda0d..5164b5954fd 100644 --- a/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache +++ b/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache @@ -124,4 +124,4 @@ require(['core/auto_rows'], function(AutoRows) { AutoRows.init(document.getElementById('gradingform_rubric-{{uniqid}}')); }); -{{/js}} \ No newline at end of file +{{/js}} -- 2.43.0