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}} {{assignment.assignment}}
</p> </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__submission" v-if="!final">
<div class="assignment__toggle-input-container"> <div class="assignment__toggle-input-container">
<button <button
class="assignment__toggle-input" class="assignment__toggle-input"
@click="inputType = 'text'" @click="inputType = 'text'"
:class="{'assignment__toggle-input--active': inputType === 'text'}" :class="{'assignment__toggle-input--active': inputType === 'text'}"
>Text >Text
erfassen erfassen
</button> </button>
<button <button
class="assignment__toggle-input" class="assignment__toggle-input"
@click="inputType = 'file'" @click="inputType = 'file'"
:class="{'assignment__toggle-input--active': inputType === 'file'}" :class="{'assignment__toggle-input--active': inputType === 'file'}"
>Dokument hochladen >Dokument hochladen
</button> </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>
</div>
<button <div class="assignment__inputs">
class="assignment__submit button button--primary button--white-bg" <submission-form
@click="turnIn" @input="saveInput"
>Ergebnis mit Lehrperson teilen :submission="submission"
</button> :saved="!unsaved"
</div> 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> </div>
</template> </template>
<script> <script>
import ASSIGNMENT_QUERY from '@/graphql/gql/assignmentQuery.gql'; 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 from '@/graphql/gql/mutations/updateAssignmentMutation.gql';
import UPDATE_ASSIGNMENT_MUTATION_WITH_SUCCESS from '@/graphql/gql/mutations/updateAssignmentMutationWithSuccess.gql'; import UPDATE_ASSIGNMENT_MUTATION_WITH_SUCCESS from '@/graphql/gql/mutations/updateAssignmentMutationWithSuccess.gql';
import debounce from 'lodash/debounce'; import debounce from 'lodash/debounce';
@ -86,6 +92,9 @@
}, },
submission() { submission() {
return this.assignment.submission ? this.assignment.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 id: this.value.id
} }
}, },
result ({ data }) { result({data}) {
this.assignment = cloneDeep(data.assignment); this.assignment = cloneDeep(data.assignment);
this.assignment.submission = Object.assign(this.initialSubmission(), this.assignment.submission); this.assignment.submission = Object.assign(this.initialSubmission(), this.assignment.submission);
} }
}, },
me: {
query: ME_QUERY
}
}, },
data() { data() {
@ -179,6 +191,9 @@
assignment: { assignment: {
submission: this.initialSubmission(), submission: this.initialSubmission(),
}, },
me: {
permissions: []
},
inputType: 'text', inputType: 'text',
unsaved: false unsaved: false
} }

View File

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