Add assignment result link for teacher view

This commit is contained in:
Ramon Wenger 2018-10-25 15:24:48 +02:00
parent e23dc4a9f0
commit 6591958546
2 changed files with 72 additions and 50 deletions

View File

@ -5,61 +5,67 @@
{{assignment.assignment}}
</p>
<final-submission :submission="assignment.submission" v-if="final"></final-submission>
<template v-if="isStudent">
<final-submission :submission="assignment.submission" v-if="final"></final-submission>
<div class="assignment__submission" v-if="!final">
<div class="assignment__toggle-input-container">
<button
class="assignment__toggle-input"
@click="inputType = 'text'"
:class="{'assignment__toggle-input--active': inputType === 'text'}"
>Text
erfassen
</button>
<button
class="assignment__toggle-input"
@click="inputType = 'file'"
:class="{'assignment__toggle-input--active': inputType === 'file'}"
>Dokument hochladen
</button>
</div>
<div class="assignment__inputs">
<submission-form
@input="saveInput"
:submission="submission"
:saved="!unsaved"
v-if="inputType === 'text'"
></submission-form>
<div
class="assignment__file-upload"
v-if="inputType === 'file'">
<div v-if="assignment.submission.document">
<document-block
:value="{url: assignment.submission.document}"
show-trash-icon
v-on:trash="changeDocumentUrl('')"
></document-block>
</div>
<document-form
v-if="!assignment.submission.document"
:value="{url: ''}"
v-on:link-change-url="changeDocumentUrl"
></document-form>
<div class="assignment__submission" v-if="!final">
<div class="assignment__toggle-input-container">
<button
class="assignment__toggle-input"
@click="inputType = 'text'"
:class="{'assignment__toggle-input--active': inputType === 'text'}"
>Text
erfassen
</button>
<button
class="assignment__toggle-input"
@click="inputType = 'file'"
:class="{'assignment__toggle-input--active': inputType === 'file'}"
>Dokument hochladen
</button>
</div>
</div>
<button
class="assignment__submit button button--primary button--white-bg"
@click="turnIn"
>Ergebnis mit Lehrperson teilen
</button>
</div>
<div class="assignment__inputs">
<submission-form
@input="saveInput"
:submission="submission"
:saved="!unsaved"
v-if="inputType === 'text'"
></submission-form>
<div
class="assignment__file-upload"
v-if="inputType === 'file'">
<div v-if="assignment.submission.document">
<document-block
:value="{url: assignment.submission.document}"
show-trash-icon
v-on:trash="changeDocumentUrl('')"
></document-block>
</div>
<document-form
v-if="!assignment.submission.document"
:value="{url: ''}"
v-on:link-change-url="changeDocumentUrl"
></document-form>
</div>
</div>
<button
class="assignment__submit button button--primary button--white-bg"
@click="turnIn"
>Ergebnis mit Lehrperson teilen
</button>
</div>
</template>
<template v-if="!isStudent">
<router-link class="button" :to="{name: 'submissions', params: { id: assignment.id }}">Zu den Ergebnissen</router-link>
</template>
</div>
</template>
<script>
import ASSIGNMENT_QUERY from '@/graphql/gql/assignmentQuery.gql';
import ME_QUERY from '@/graphql/gql/meQuery.gql';
import UPDATE_ASSIGNMENT_MUTATION from '@/graphql/gql/mutations/updateAssignmentMutation.gql';
import UPDATE_ASSIGNMENT_MUTATION_WITH_SUCCESS from '@/graphql/gql/mutations/updateAssignmentMutationWithSuccess.gql';
import debounce from 'lodash/debounce';
@ -86,6 +92,9 @@
},
submission() {
return this.assignment.submission ? this.assignment.submission : {}
},
isStudent() {
return !this.me.permissions.includes('users.can_manage_school_class_content');
}
},
@ -167,11 +176,14 @@
id: this.value.id
}
},
result ({ data }) {
result({data}) {
this.assignment = cloneDeep(data.assignment);
this.assignment.submission = Object.assign(this.initialSubmission(), this.assignment.submission);
}
},
me: {
query: ME_QUERY
}
},
data() {
@ -179,6 +191,9 @@
assignment: {
submission: this.initialSubmission(),
},
me: {
permissions: []
},
inputType: 'text',
unsaved: false
}

View File

@ -27,7 +27,7 @@
<div class="module-navigation__anchors">
<router-link
:to="submissionsLink(assignment)"
v-for="assignment in module.assignments"
v-for="assignment in assignments"
:key="assignment.id"
class="module-navigation__anchor"
exact-active-class="module-navigation__anchor--active"
@ -62,12 +62,19 @@
},
showResults() {
return this.me.permissions.includes('users.can_manage_school_class_content');
},
assignments() {
return [...this.module.assignments].sort((a, b) => {
return a.title.toLowerCase() > b.title.toLowerCase() ? 1 : -1;
})
}
},
data() {
return {
module: {},
module: {
assignments: []
},
me: {
permissions: []
}