CourseBook.js 3.82 KiB
import {CHANGES, SAVED, UPDATING} from "../../alsijil/UpdateStatuses.js";
export default {
methods: {
processDataChange(event) {
this.status = CHANGES;
// alert("Probably save the data");
console.log(event);
setTimeout(() => {
this.status = UPDATING;
}, 500)
setTimeout(() => {
this.status = SAVED;
}, 1000)
},
updateManually(event) {
alert("Data sync triggered manually");
this.status = UPDATING;
setTimeout(() => {
this.status = SAVED;
}, 500)
}
},
props: ["lessonId"],
name: "course-book",
data: () => {
return {
ping: "ping",
status: SAVED,
// lessonId: 352
}
},
template: `
<ApolloQuery
:query="gql => gql\`
query CourseBook($lessonId: ID!) {
excuseTypes {
name
shortName
}
lesson: lessonsById(id: $lessonId) {
groups {
name
shortName
members {
id
fullName
}
}
subject {
name
}
}
lessonDocumentations: lessonDocumentationsByLessonId(id: $lessonId) {
id
topic
homework
groupNote
period
date
personalNotes {
id
person {
id
fullName
}
late
absent
excused
excuseType {
name
shortName
}
remarks
extraMarks {
name
shortName
}
}
}
extraMarks {
name
shortName
}
}
\`"
:variables="{ lessonId }"
>
<template v-slot="{ result: { loading, error, data } }">
<!-- Error -->
<message-box v-if="error" type="error">An error occurred</message-box>
<!-- Result -->
<div v-else-if="data" class="result apollo">
<update-indicator @manual-update="updateManually()" ref="indicator" :status="status"></update-indicator>
<v-subheader>{{ data.lesson.subject.name }}</v-subheader>
<v-row v-if="data.lessonDocumentations.length > 0">
<v-col v-for="item in data.lessonDocumentations" cols="12" v-bind:key="item.id">
<lesson-documentation
v-bind:key="item.id"
:id="item.id"
:groups="data.lesson.groups"
:excuse-types="data.excuseTypes"
:extra-marks="data.extraMarks"
:period="item.period"
:personal-notes="item.personalNotes"
@change-personal-notes="processDataChange"
:date="item.date"
@change-date="processDataChange"
:topic="item.topic"
@change-topic="processDataChange"
:homework="item.homework"
@change-homework="processDataChange"
:group-note="item.groupNote"
@change-group-note="processDataChange"
></lesson-documentation>
</v-col>
</v-row>
<message-box v-else type="info">No coursebook for you :(</message-box>
</div>
<!-- No result or Loading -->
<div v-else>
<v-progress-circular
indeterminate
color="primary"
class="ma-auto"
></v-progress-circular>
</div>
</template>
</ApolloQuery>`
}