Skip to content
Snippets Groups Projects
CourseBook.vue 2.23 KiB
Newer Older
<template>
  <ApolloQuery
    :query="require('./CourseBook.graphql')"
    :variables="{ lessonId: $route.params.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-col cols="12">
              <lesson-documentations
                :lessonDocumentations="data.lessonDocumentations"
                :plannedLessonperiodsDatetimes="data.lesson.plannedLessonperiodsDatetimes"
                :groups="data.lesson.groups"
                :excuseTypes="data.excuseTypes"
                :extraMarks="data.extraMarks"
              />
            </v-col>
          </v-row>
        </div>
        <!-- No result or Loading -->
        <div v-else>
          <v-progress-circular
            indeterminate
            color="primary"
            class="ma-auto"
          ></v-progress-circular>
        </div>
    </template>
  </ApolloQuery>
</template>

<script>
import {CHANGES, SAVED, UPDATING} from "../../UpdateStatuses.js";
import UpdateIndicator from "./UpdateIndicator.vue";
import LessonDocumentations from "./LessonDocumentations.vue";
        LessonDocumentations
    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)
        }
    },
    name: "course-book",
    data: () => {
        return {
            ping: "ping",
            status: SAVED,
        }
    }
Julian's avatar
Julian committed
}