diff --git a/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue b/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue index 96a10002758721b2220ace2460c02607b6bb2214..dd0d8e725b4cbc80448113818a177584e948fda7 100644 --- a/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue +++ b/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue @@ -1,5 +1,5 @@ <script> -import { createGrades } from "./grades.graphql"; +import { createGrades, updateGrades } from "./grades.graphql"; import mutateMixin from "aleksis.core/mixins/mutateMixin.js"; export default { @@ -58,6 +58,31 @@ export default { // TODO if (this.value) { // → Preexisting grade, edit mutation + this.mutate( + updateGrades, + { + input: [ + { + id: this.value.id, + person: this.personId, + effort: this.effort.id, + grade: newValue, + }, + ], + }, + (storedEfforts, incomingGrades) => { + const effort = storedEfforts.find( + (effort) => effort.id === this.effort.id, + ); + + incomingGrades.forEach((newGrade) => { + const index = effort.grades.findIndex(g => g.id === newGrade.id); + effort.grades[index].grade = newGrade.grade; + }); + + return storedEfforts; + }, + ); } else { // Create and return a grade object this.mutate(