Skip to content

Commit b863935

Browse files
committed
WIP: form a basic instructor dashboard page and fix course switching from menubar.
1 parent b7fd7df commit b863935

File tree

5 files changed

+40
-6
lines changed

5 files changed

+40
-6
lines changed

src/common/views.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ export const student_views: Array<ViewInfo> = [
4949
];
5050

5151
export const instructor_views: Array<ViewInfo> = [
52+
{
53+
name: 'Dashboard',
54+
component_name: 'Dashboard',
55+
icon: 'speed',
56+
route: 'dashboard',
57+
sidebars: []
58+
},
5259
{
5360
name: 'Calendar',
5461
component_name: 'Calendar',

src/layouts/MenuBar.vue

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,17 @@
6464
<script setup lang="ts">
6565
import { computed, defineEmits, ref } from 'vue';
6666
import { useRouter } from 'vue-router';
67-
import { endSession } from 'src/common/api-requests/session';
6867
import { useI18n } from 'vue-i18n';
68+
6969
import { setI18nLanguage } from 'boot/i18n';
70+
import { logger } from 'src/boot/logger';
71+
72+
import { endSession } from 'src/common/api-requests/session';
7073
import { useSessionStore } from 'src/stores/session';
71-
import type { CourseSettingInfo } from 'src/common/models/settings';
7274
import { useSettingsStore } from 'src/stores/settings';
73-
import { logger } from 'src/boot/logger';
75+
76+
import type { CourseSettingInfo } from 'src/common/models/settings';
77+
import { UserRole } from 'src/common/models/parsers';
7478
7579
defineEmits(['toggle-menu', 'toggle-sidebar']);
7680
const session = useSessionStore();
@@ -87,8 +91,12 @@ const user_courses = computed(() =>
8791
const changeCourse = (course_id: number, course_name: string) => {
8892
const new_course = session.user_courses.find(course => course.course_name === course_name);
8993
94+
// This sets the path to the instructor or student dashboard.
95+
const role = new_course?.role === UserRole.instructor ?
96+
'instructor' : new_course?.role === UserRole.student ? 'student' : 'UNKNOWN';
97+
9098
if (new_course != undefined) {
91-
router.push(`/courses/${new_course.course_id}`).then(() => {
99+
router.push(`/courses/${new_course.course_id}/${role}`).then(() => {
92100
session.setCourse({
93101
course_name: new_course.course_name,
94102
course_id: new_course.course_id

src/layouts/MenuSidebar.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ export default defineComponent({
2727
? admin_views
2828
: /^\/courses\/\d+\/instructor/.exec(route.path)
2929
? instructor_views
30-
: student_views
30+
: /^\/courses\/\d+\/student/.exec(route.path)
31+
? student_views
32+
: []
3133
),
3234
changeView: (view: ViewInfo) => {
3335
void router.push({ name: view.component_name, params: route.params });

src/pages/instructor/Dashboard.vue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<template>
2+
<div class="q-pa-md">
3+
<div class="text-h6">Instructor Dashboard</div>
4+
<p>This is the instructor landing page/dashboard. To get started select a tool
5+
from the list on the left.
6+
</p>
7+
</div>
8+
</template>

src/router/routes.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const routes: RouteRecordRaw[] = [
3737
)
3838
},
3939
{
40-
path: 'courses/:course_id',
40+
path: 'courses/:course_id/student',
4141
component: () =>
4242
import(
4343
/* webpackChunkName: "Student" */
@@ -115,6 +115,15 @@ const routes: RouteRecordRaw[] = [
115115
name: 'instructor',
116116
meta: { requiresAuth: true },
117117
children: [
118+
{
119+
path: '',
120+
name: 'InstructorDashboard',
121+
component: () =>
122+
import(
123+
/* webpackChunkName: "Dashboard" */
124+
'pages/instructor/Dashboard.vue'
125+
)
126+
},
118127
{
119128
path: 'settings',
120129
name: 'Settings',

0 commit comments

Comments
 (0)