From 86dde79cb16b1187efe04151ba734258cc55a64c Mon Sep 17 00:00:00 2001 From: "robinwilliam.hundt" <robinwilliam.hundt@stud.uni-goettingen.de> Date: Sun, 10 Dec 2017 14:27:23 +0100 Subject: [PATCH] More work on the student-page and Layout --- frontend/src/components/base/BaseLayout.vue | 8 ++++-- .../src/components/student/StudentLayout.vue | 27 +++++++++++++++---- .../src/components/student/StudentPage.vue | 24 ++++++----------- .../components/student/SubmissionDetail.vue | 9 ++++++- .../src/components/student/SubmissionList.vue | 1 + .../submission_notes/AnnotatedSubmission.vue | 16 +++++------ frontend/src/router/index.js | 10 ++++--- 7 files changed, 60 insertions(+), 35 deletions(-) diff --git a/frontend/src/components/base/BaseLayout.vue b/frontend/src/components/base/BaseLayout.vue index 26d45fe7..1b6b8109 100644 --- a/frontend/src/components/base/BaseLayout.vue +++ b/frontend/src/components/base/BaseLayout.vue @@ -16,8 +16,12 @@ </v-list> </v-toolbar> <v-list dense> - <v-list-tile v-for="(item, i) in navItems" :key="i" :to="item.route"> - {{ item.name }} + <v-list-tile exact v-for="(item, i) in navItems" :key="i" :to="item.route"> + <v-list-tile-content> + <v-list-tile-title> + {{ item.name }} + </v-list-tile-title> + </v-list-tile-content> </v-list-tile> </v-list> </v-navigation-drawer> diff --git a/frontend/src/components/student/StudentLayout.vue b/frontend/src/components/student/StudentLayout.vue index 105f55c3..b55f8563 100644 --- a/frontend/src/components/student/StudentLayout.vue +++ b/frontend/src/components/student/StudentLayout.vue @@ -1,8 +1,8 @@ <template> <base-layout - :navItems="navItems" + :navItems="studentPageNavItems" > - <slot></slot> + <router-view></router-view> </base-layout> </template> @@ -13,13 +13,30 @@ name: 'student-layout', data () { return { - navItems: [ + generalNavItems: [ { - name: 'Login', - route: '/' + name: 'Overview', + 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> diff --git a/frontend/src/components/student/StudentPage.vue b/frontend/src/components/student/StudentPage.vue index 686550e2..eb1d85ad 100644 --- a/frontend/src/components/student/StudentPage.vue +++ b/frontend/src/components/student/StudentPage.vue @@ -1,5 +1,4 @@ <template> - <student-layout> <v-container fluid> <v-layout justify center> <v-flex md3> @@ -7,17 +6,16 @@ <exam-information v-if="doneLoading" :exam="exam"></exam-information> </v-flex> <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> </v-flex> </v-layout> </v-container> - </student-layout> </template> <script> - import ax from '@/store/api' + import {mapState} from 'vuex' import StudentLayout from './StudentLayout.vue' import SubmissionList from './SubmissionList.vue' import ExamInformation from './ExamInformation.vue' @@ -30,24 +28,18 @@ name: 'student-page', data () { return { - studentData: {}, doneLoading: false } }, created: function () { - this.doneLoading = false - ax.get('api/student-page/').then(response => { - this.studentData = response.data - this.doneLoading = true - }) + this.$store.dispatch('getStudentData').then(() => { this.doneLoading = true }) }, computed: { - submissions () { - return this.studentData.submissions - }, - exam () { - return this.studentData.exam - } + ...mapState({ + studentName: state => state.studentPage.studentName, + exam: state => state.studentPage.exam, + submissions: state => state.studentPage.submissions + }) } } </script> diff --git a/frontend/src/components/student/SubmissionDetail.vue b/frontend/src/components/student/SubmissionDetail.vue index 56f6dc74..156a9737 100644 --- a/frontend/src/components/student/SubmissionDetail.vue +++ b/frontend/src/components/student/SubmissionDetail.vue @@ -1,10 +1,17 @@ <template> - <p>Test</p> + <v-layout> + + <annotated-submission class="ma-3"></annotated-submission> + </v-layout> </template> <script> + import AnnotatedSubmission from '../submission_notes/AnnotatedSubmission' export default { + components: { + AnnotatedSubmission + }, name: 'submission-detail' } </script> diff --git a/frontend/src/components/student/SubmissionList.vue b/frontend/src/components/student/SubmissionList.vue index 6d0238b1..4db72e63 100644 --- a/frontend/src/components/student/SubmissionList.vue +++ b/frontend/src/components/student/SubmissionList.vue @@ -9,6 +9,7 @@ <td>{{ props.item.type }}</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"><v-btn :to="`submission/${props.index}`" color="red">View</v-btn></td> </template> </v-data-table> <v-alert color="info" value="true"> diff --git a/frontend/src/components/submission_notes/AnnotatedSubmission.vue b/frontend/src/components/submission_notes/AnnotatedSubmission.vue index 6b7d35d8..973078da 100644 --- a/frontend/src/components/submission_notes/AnnotatedSubmission.vue +++ b/frontend/src/components/submission_notes/AnnotatedSubmission.vue @@ -2,10 +2,10 @@ <table> <tr v-for="(code, index) in submission" :key="index"> <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-icon small color="indigo accent-3" class="comment-icon">fa-comment</v-icon> - </v-tooltip> + <!--<v-icon small color="indigo accent-3" class="comment-icon">comment</v-icon>--> + <!--</v-tooltip>--> </td> <td> <pre class="prettyprint"><code class="lang-c"> {{ code }}</code></pre> @@ -67,7 +67,6 @@ table { table-layout: auto; border-collapse: collapse; - border-width: 0px; } td { @@ -76,17 +75,18 @@ } .line-number-cell { - padding-left: 50px; + /*padding-left: 50px;*/ vertical-align: top; } pre.prettyprint { - padding: 0px; - border: 0px; + padding: 0; + border: 0; } code { width: 100%; + box-shadow: None; } @@ -97,7 +97,7 @@ } .comment-icon { - border: 0px; + border: 0; } </style> diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index 74fe92f3..32587176 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -2,6 +2,7 @@ import Vue from 'vue' import Router from 'vue-router' import Login from '@/components/Login' import StudentPage from '@/components/student/StudentPage' +import StudentLayout from '@/components/student/StudentLayout' import SubmissionDetail from '@/components/student/SubmissionDetail' import ReviewerPage from '@/components/reviewer/ReviewerPage' import StudentListOverview from '@/components/reviewer/StudentListOverview' @@ -19,11 +20,14 @@ export default new Router({ }, { path: '/student/', - name: 'student-page', - component: StudentPage, + component: StudentLayout, children: [ { - path: 'submission:id/', + path: '', + component: StudentPage + }, + { + path: 'submission/:id', component: SubmissionDetail } ] -- GitLab