aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/components/courseware/CoursewareCourseDashboard.vue
blob: 5f3b7ebed44739a417ddbb27af8cf0733be3d9d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<template>
    <div class="cw-dashboard-wrapper">
        <div v-if="defaultView" class="cw-dashboard cw-dashboard-default-view">
            <courseware-collapsible-box :title="$gettext('Überblick')" :open="true" class="cw-dashboard-box cw-dashboard-box-full">
                <div class="cw-dashboard-overview">
                    <courseware-oblong :name="textChapterFinished" icon="accept" size="small">
                        <template v-slot:oblongValue> {{ chapterCounter.finished }} </template>
                    </courseware-oblong>
                    <courseware-oblong :name="textChapterStarted" icon="play" size="small">
                        <template v-slot:oblongValue> {{ chapterCounter.started }} </template>
                    </courseware-oblong>
                    <courseware-oblong :name="textChapterAhead" icon="timetable" size="small">
                        <template v-slot:oblongValue> {{ chapterCounter.ahead }} </template>
                    </courseware-oblong>
                </div>
            </courseware-collapsible-box>
            <courseware-collapsible-box :title="$gettext('Fortschritt')" :open="true" class="cw-dashboard-box cw-dashboard-box-half">
                <courseware-dashboard-progress />
            </courseware-collapsible-box>
            <courseware-collapsible-box :title="$gettext('Aktivitäten')" :open="true" class="cw-dashboard-box cw-dashboard-box-half cw-content-loading">
                <courseware-dashboard-activities />
            </courseware-collapsible-box>
            <courseware-collapsible-box :title="$gettext('Aufgaben')" :open="true" class="cw-dashboard-box cw-dashboard-box-full">
                <courseware-dashboard-tasks v-if="!userIsTeacher && teacherStatusLoaded"/>
                <courseware-dashboard-students v-if="userIsTeacher && teacherStatusLoaded" />
            </courseware-collapsible-box>
        </div>
        <div v-if="taskView" class="cw-dashboard cw-dashboard-task-view">
            <courseware-dashboard-tasks v-if="!userIsTeacher && teacherStatusLoaded"/>
            <courseware-dashboard-students v-if="userIsTeacher && teacherStatusLoaded" />
        </div>
        <div v-if="activityView" class="cw-dashboard cw-dashboard-activity-view">
            <courseware-collapsible-box :title="$gettext('Aktivitäten')" :open="true" class="cw-dashboard-box cw-dashboard-box-full cw-content-loading">
                <courseware-dashboard-activities />
            </courseware-collapsible-box>
        </div>
        <courseware-companion-overlay />
    </div>
</template>

<script>
import CoursewareCollapsibleBox from './CoursewareCollapsibleBox.vue';
import CoursewareDashboardProgress from './CoursewareDashboardProgress.vue';
import CoursewareDashboardActivities from './CoursewareDashboardActivities.vue';
import CoursewareDashboardTasks from './CoursewareDashboardTasks.vue'
import CoursewareDashboardStudents from './CoursewareDashboardStudents.vue'
import CoursewareOblong from './CoursewareOblong.vue';
import CoursewareCompanionOverlay from './CoursewareCompanionOverlay.vue';
import { mapGetters } from 'vuex';

export default {
    name: 'courseware-course-dashboard',
    components: {
        CoursewareCollapsibleBox,
        CoursewareOblong,
        CoursewareDashboardProgress,
        CoursewareDashboardActivities,
        CoursewareDashboardTasks,
        CoursewareDashboardStudents,
        CoursewareCompanionOverlay
    },
    data() {
        return {
            textChapterAhead: this.$gettext('bevorstehende Seiten'),
            textChapterStarted: this.$gettext('angefangene Seiten'),
            textChapterFinished: this.$gettext('abgeschlossene Seiten'),
        };
    },
    computed: {
        ...mapGetters({
            dashboardViewMode: 'dashboardViewMode',
            getCourseById: 'courses/byId',
            getStructuralElementById: 'courseware-structural-elements/byId',
            getUserById: 'users/byId',
            teacherStatusLoaded: 'teacherStatusLoaded',
            userId: 'userId',
            userIsTeacher: 'userIsTeacher',
        }),
        chapterCounter() {
            return STUDIP.courseware_chapter_counter;
        },
        defaultView() {
            return this.dashboardViewMode === 'default';
        },
        taskView() {
            return this.dashboardViewMode === 'task';
        },
        activityView() {
            return this.dashboardViewMode === 'activity';
        },
    }
};
</script>