Handle form updates
This commit is contained in:
parent
a2af5759bb
commit
662071d066
|
|
@ -7,7 +7,7 @@
|
||||||
:saved="saved"
|
:saved="saved"
|
||||||
:final="final"
|
:final="final"
|
||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
:reopen="$emit('reopen')"
|
:reopen="reopenSubmission"
|
||||||
></submission-form>
|
></submission-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
<final-submission
|
<final-submission
|
||||||
v-if="final"
|
v-if="final"
|
||||||
:user-input="userInput"
|
:user-input="userInput"
|
||||||
|
:shared-msg="sharedMsg"
|
||||||
@reopen="$emit('reopen')"></final-submission>
|
@reopen="$emit('reopen')"></final-submission>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -36,7 +37,7 @@
|
||||||
FinalSubmission
|
FinalSubmission
|
||||||
},
|
},
|
||||||
|
|
||||||
props: ['userInput', 'saved', 'placeholder', 'action', 'reopen', 'document'],
|
props: ['userInput', 'saved', 'placeholder', 'action', 'reopen', 'document', 'sharedMsg'],
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
final() {
|
final() {
|
||||||
|
|
@ -45,6 +46,9 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
reopenSubmission() {
|
||||||
|
this.$emit('reopen');
|
||||||
|
},
|
||||||
saveInput(input) {
|
saveInput(input) {
|
||||||
this.$emit('saveInput', input);
|
this.$emit('saveInput', input);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
></document-block>
|
></document-block>
|
||||||
<div class="final-submission__explanation">
|
<div class="final-submission__explanation">
|
||||||
<info-icon class="final-submission__explanation-icon"></info-icon>
|
<info-icon class="final-submission__explanation-icon"></info-icon>
|
||||||
<span class="final-submission__explanation-text">Das Ergebnis wurde mit der Lehrperson geteilt</span>
|
<span class="final-submission__explanation-text">{{sharedMsg}}</span>
|
||||||
<a class="final-submission__reopen" @click="$emit('reopen')">Bearbeiten</a>
|
<a class="final-submission__reopen" @click="$emit('reopen')">Bearbeiten</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
import {newLineToParagraph} from '@/helpers/text';
|
import {newLineToParagraph} from '@/helpers/text';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: ['userInput'],
|
props: ['userInput', 'sharedMsg'],
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
InfoIcon,
|
InfoIcon,
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ mutation UpdateSubmissionFeedback($input: UpdateSubmissionFeedbackInput!) {
|
||||||
updatedSubmissionFeedback {
|
updatedSubmissionFeedback {
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
|
final
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="feedback-submission">
|
<div class="feedback-submission">
|
||||||
<feedback-form
|
<feedback-form
|
||||||
|
v-if="studentSubmission"
|
||||||
@turnIn="turnIn"
|
@turnIn="turnIn"
|
||||||
@saveInput="saveInput"
|
@saveInput="saveInput"
|
||||||
@reopen="reopen"
|
@reopen="reopen"
|
||||||
:user-input="studentSubmission.submissionfeedback"
|
:user-input="studentSubmission.submissionfeedback"
|
||||||
:placholder="'Feedback erfassen'"
|
:placholder="'Feedback erfassen'"
|
||||||
:action="'Feedback teilen'"
|
:action="'Feedback teilen'"
|
||||||
|
:shared-msg="'Dieses Feedback wurde geteilt.'"
|
||||||
:saved="!unsaved"
|
:saved="!unsaved"
|
||||||
>
|
>
|
||||||
<div v-if="!final" class="feedback-submission__emojis emojis">
|
<div v-if="!final" class="feedback-submission__emojis emojis">
|
||||||
|
|
@ -30,7 +32,7 @@
|
||||||
<span @click="addEmoji('🤩')">🤩</span>
|
<span @click="addEmoji('🤩')">🤩</span>
|
||||||
<span @click="addEmoji('😎')">😎</span>
|
<span @click="addEmoji('😎')">😎</span>
|
||||||
<span @click="addEmoji('🤔')">🤔</span>
|
<span @click="addEmoji('🤔')">🤔</span>
|
||||||
<span@click="addEmoji('👍🏻')">👍🏻</span>
|
<span @click="addEmoji('👍🏻')">👍🏻</span>
|
||||||
<span @click="addEmoji('👎🏻')">👎🏻</span>
|
<span @click="addEmoji('👎🏻')">👎🏻</span>
|
||||||
</div>
|
</div>
|
||||||
</feedback-form>
|
</feedback-form>
|
||||||
|
|
@ -84,8 +86,6 @@
|
||||||
this.updateFeedbackText(feedbackText);
|
this.updateFeedbackText(feedbackText);
|
||||||
},
|
},
|
||||||
_save: debounce(function () {
|
_save: debounce(function () {
|
||||||
const that = this;
|
|
||||||
|
|
||||||
this.saving++;
|
this.saving++;
|
||||||
this.$apollo.mutate({
|
this.$apollo.mutate({
|
||||||
mutation: UPDATE_FEEDBACK_MUTATION,
|
mutation: UPDATE_FEEDBACK_MUTATION,
|
||||||
|
|
@ -97,23 +97,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
update(store, {data: {updateSubmissionFeedback: {successful, updatedSubmissionFeedback}}}) {
|
update: this.updateCache
|
||||||
try {
|
|
||||||
if (successful) {
|
|
||||||
const query = STUDENT_SUBMISSIONS_QUERY;
|
|
||||||
const variables = {
|
|
||||||
id: that.studentSubmission.id
|
|
||||||
};
|
|
||||||
const data = store.readQuery({query, variables});
|
|
||||||
|
|
||||||
data.studentSubmission = Object.assign({}, that.studentSubmission);
|
|
||||||
store.writeQuery({query, variables, data});
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
// Query did not exist in the cache, and apollo throws a generic Error. Do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.saving--;
|
this.saving--;
|
||||||
if (this.saving === 0) {
|
if (this.saving === 0) {
|
||||||
|
|
@ -141,7 +125,8 @@
|
||||||
final: true
|
final: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
update: this.updateCache
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
reopen() {
|
reopen() {
|
||||||
|
|
@ -159,9 +144,27 @@
|
||||||
final: false
|
final: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
update: this.updateCache
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
updateCache(store, {data: {updateSubmissionFeedback: {successful, updatedSubmissionFeedback}}}) {
|
||||||
|
try {
|
||||||
|
if (successful) {
|
||||||
|
const query = STUDENT_SUBMISSIONS_QUERY;
|
||||||
|
const variables = {
|
||||||
|
id: this.studentSubmission.id
|
||||||
|
};
|
||||||
|
const data = store.readQuery({query, variables});
|
||||||
|
|
||||||
|
data.studentSubmission.submissionfeedback = Object.assign({}, updatedSubmissionFeedback);
|
||||||
|
store.writeQuery({query, variables, data});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
// Query did not exist in the cache, and apollo throws a generic Error. Do nothing
|
||||||
|
}
|
||||||
|
},
|
||||||
updateFeedbackText(text) {
|
updateFeedbackText(text) {
|
||||||
this.studentSubmission = Object.assign({}, this.studentSubmission, {
|
this.studentSubmission = Object.assign({}, this.studentSubmission, {
|
||||||
submissionfeedback: Object.assign({}, this.studentSubmission.submissionfeedback, {text: text})
|
submissionfeedback: Object.assign({}, this.studentSubmission.submissionfeedback, {text: text})
|
||||||
|
|
@ -206,6 +209,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.emojis {
|
.emojis {
|
||||||
font-size: toRem(24px);
|
font-size: toRem(32px);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,11 @@ class UpdateSubmissionFeedback(relay.ClientIDMutation):
|
||||||
(submission_feedback, created) = SubmissionFeedback.objects.get_or_create(teacher=user,
|
(submission_feedback, created) = SubmissionFeedback.objects.get_or_create(teacher=user,
|
||||||
student_submission_id=student_submission_id)
|
student_submission_id=student_submission_id)
|
||||||
|
|
||||||
submission_feedback.final = submission_feedback_data.get('final') or submission_feedback.final
|
final = submission_feedback.final
|
||||||
|
if 'final' in submission_feedback_data:
|
||||||
|
final = submission_feedback_data.get('final')
|
||||||
|
|
||||||
|
submission_feedback.final = final
|
||||||
submission_feedback.text = submission_feedback_data.get('text')
|
submission_feedback.text = submission_feedback_data.get('text')
|
||||||
submission_feedback.save()
|
submission_feedback.save()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue