Skip to content
Snippets Groups Projects
Commit 86dde79c authored by robinwilliam.hundt's avatar robinwilliam.hundt
Browse files

More work on the student-page and Layout

parent f77e88b2
No related branches found
No related tags found
1 merge request!23Resolve "Logout of tutors after inactivity"
...@@ -16,8 +16,12 @@ ...@@ -16,8 +16,12 @@
</v-list> </v-list>
</v-toolbar> </v-toolbar>
<v-list dense> <v-list dense>
<v-list-tile v-for="(item, i) in navItems" :key="i" :to="item.route"> <v-list-tile exact v-for="(item, i) in navItems" :key="i" :to="item.route">
{{ item.name }} <v-list-tile-content>
<v-list-tile-title>
{{ item.name }}
</v-list-tile-title>
</v-list-tile-content>
</v-list-tile> </v-list-tile>
</v-list> </v-list>
</v-navigation-drawer> </v-navigation-drawer>
......
<template> <template>
<base-layout <base-layout
:navItems="navItems" :navItems="studentPageNavItems"
> >
<slot></slot> <router-view></router-view>
</base-layout> </base-layout>
</template> </template>
...@@ -13,13 +13,30 @@ ...@@ -13,13 +13,30 @@
name: 'student-layout', name: 'student-layout',
data () { data () {
return { return {
navItems: [ generalNavItems: [
{ {
name: 'Login', name: 'Overview',
route: '/' route: '/student/'
},
{
name: 'Statistics',
route: '/student/'
} }
] ]
} }
},
computed: {
submissionNavItems: function () {
return this.$store.state.studentPage.submissions.map((sub, index) => {
return {
name: sub.type,
route: `/student/submission/${index}`
}
})
},
studentPageNavItems: function () {
return this.generalNavItems.concat(this.submissionNavItems)
}
} }
} }
</script> </script>
<template> <template>
<student-layout>
<v-container fluid> <v-container fluid>
<v-layout justify center> <v-layout justify center>
<v-flex md3> <v-flex md3>
...@@ -7,17 +6,16 @@ ...@@ -7,17 +6,16 @@
<exam-information v-if="doneLoading" :exam="exam"></exam-information> <exam-information v-if="doneLoading" :exam="exam"></exam-information>
</v-flex> </v-flex>
<v-flex md7 offset-md1 v-if="doneLoading"> <v-flex md7 offset-md1 v-if="doneLoading">
<h2>Submissions of {{ this.studentData.name }}</h2> <h2>Submissions of {{ studentName }}</h2>
<submission-list :submissions="submissions"></submission-list> <submission-list :submissions="submissions"></submission-list>
</v-flex> </v-flex>
</v-layout> </v-layout>
</v-container> </v-container>
</student-layout>
</template> </template>
<script> <script>
import ax from '@/store/api' import {mapState} from 'vuex'
import StudentLayout from './StudentLayout.vue' import StudentLayout from './StudentLayout.vue'
import SubmissionList from './SubmissionList.vue' import SubmissionList from './SubmissionList.vue'
import ExamInformation from './ExamInformation.vue' import ExamInformation from './ExamInformation.vue'
...@@ -30,24 +28,18 @@ ...@@ -30,24 +28,18 @@
name: 'student-page', name: 'student-page',
data () { data () {
return { return {
studentData: {},
doneLoading: false doneLoading: false
} }
}, },
created: function () { created: function () {
this.doneLoading = false this.$store.dispatch('getStudentData').then(() => { this.doneLoading = true })
ax.get('api/student-page/').then(response => {
this.studentData = response.data
this.doneLoading = true
})
}, },
computed: { computed: {
submissions () { ...mapState({
return this.studentData.submissions studentName: state => state.studentPage.studentName,
}, exam: state => state.studentPage.exam,
exam () { submissions: state => state.studentPage.submissions
return this.studentData.exam })
}
} }
} }
</script> </script>
......
<template> <template>
<p>Test</p> <v-layout>
<annotated-submission class="ma-3"></annotated-submission>
</v-layout>
</template> </template>
<script> <script>
import AnnotatedSubmission from '../submission_notes/AnnotatedSubmission'
export default { export default {
components: {
AnnotatedSubmission
},
name: 'submission-detail' name: 'submission-detail'
} }
</script> </script>
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<td>{{ props.item.type }}</td> <td>{{ props.item.type }}</td>
<td class="text-xs-right">{{ props.item.score }}</td> <td class="text-xs-right">{{ props.item.score }}</td>
<td class="text-xs-right">{{ props.item.full_score }}</td> <td class="text-xs-right">{{ props.item.full_score }}</td>
<td class="text-xs-right"><v-btn :to="`submission/${props.index}`" color="red">View</v-btn></td>
</template> </template>
</v-data-table> </v-data-table>
<v-alert color="info" value="true"> <v-alert color="info" value="true">
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
<table> <table>
<tr v-for="(code, index) in submission" :key="index"> <tr v-for="(code, index) in submission" :key="index">
<td class="line-number-cell"> <td class="line-number-cell">
<v-tooltip left close-delay="20" color="transparent" content-class="comment-icon"> <!--<v-tooltip left close-delay="20" color="transparent" content-class="comment-icon">-->
<v-btn block class="line-number-btn" slot="activator" @click="toggleEditorOnLine(index)">{{ index }}</v-btn> <v-btn block class="line-number-btn" slot="activator" @click="toggleEditorOnLine(index)">{{ index }}</v-btn>
<v-icon small color="indigo accent-3" class="comment-icon">fa-comment</v-icon> <!--<v-icon small color="indigo accent-3" class="comment-icon">comment</v-icon>-->
</v-tooltip> <!--</v-tooltip>-->
</td> </td>
<td> <td>
<pre class="prettyprint"><code class="lang-c"> {{ code }}</code></pre> <pre class="prettyprint"><code class="lang-c"> {{ code }}</code></pre>
...@@ -67,7 +67,6 @@ ...@@ -67,7 +67,6 @@
table { table {
table-layout: auto; table-layout: auto;
border-collapse: collapse; border-collapse: collapse;
border-width: 0px;
} }
td { td {
...@@ -76,17 +75,18 @@ ...@@ -76,17 +75,18 @@
} }
.line-number-cell { .line-number-cell {
padding-left: 50px; /*padding-left: 50px;*/
vertical-align: top; vertical-align: top;
} }
pre.prettyprint { pre.prettyprint {
padding: 0px; padding: 0;
border: 0px; border: 0;
} }
code { code {
width: 100%; width: 100%;
box-shadow: None;
} }
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
} }
.comment-icon { .comment-icon {
border: 0px; border: 0;
} }
</style> </style>
...@@ -2,6 +2,7 @@ import Vue from 'vue' ...@@ -2,6 +2,7 @@ import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import Login from '@/components/Login' import Login from '@/components/Login'
import StudentPage from '@/components/student/StudentPage' import StudentPage from '@/components/student/StudentPage'
import StudentLayout from '@/components/student/StudentLayout'
import SubmissionDetail from '@/components/student/SubmissionDetail' import SubmissionDetail from '@/components/student/SubmissionDetail'
import ReviewerPage from '@/components/reviewer/ReviewerPage' import ReviewerPage from '@/components/reviewer/ReviewerPage'
import StudentListOverview from '@/components/reviewer/StudentListOverview' import StudentListOverview from '@/components/reviewer/StudentListOverview'
...@@ -19,11 +20,14 @@ export default new Router({ ...@@ -19,11 +20,14 @@ export default new Router({
}, },
{ {
path: '/student/', path: '/student/',
name: 'student-page', component: StudentLayout,
component: StudentPage,
children: [ children: [
{ {
path: 'submission:id/', path: '',
component: StudentPage
},
{
path: 'submission/:id',
component: SubmissionDetail component: SubmissionDetail
} }
] ]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment