diff --git a/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.vue b/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.vue index aa60c928048fe914f82166cef3d6a6a22983db3d..0f86a96fa7e59dc5249a85994f2bb898034223a1 100644 --- a/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.vue +++ b/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.vue @@ -1,117 +1,132 @@ <template> <ApolloMutation - :mutation="require('./LessonDocumentation.graphql')" - :variables=lessonDocumentationEdit - @done="onDone" + :mutation="require('./LessonDocumentation.graphql')" + :variables=lessonDocumentationEdit + @done="onDone" > <template v-slot="{ mutate, loading, error }"> <v-card elevation="2" :loading="loading"> <v-form v-model="valid"> - <v-row class="ma-0"> - <v-col cols="12" md="4" lg="3" xl="2"> - <v-hover v-slot="{ hover }"> - <div> - <v-menu + <v-card-title> + <v-hover v-slot="{ hover }"> + <div> + <v-menu v-model="showPicker" :close-on-content-click="false" transition="scale-transition" offset-y min-width="auto" - > - <template v-slot:activator="{ on, attrs }"> - <v-card-title> - <span v-text="new Date(lessonDocumentationEdit.date).toLocaleDateString($root.languageCode)" class="ma-1"></span> - <v-btn right v-bind="attrs" v-on="on" icon v-if="hover && dateAndPeriodEditable"> - <v-icon>mdi-pencil-outline</v-icon> - </v-btn> - </v-card-title> - </template> - <v-date-picker + > + <template v-slot:activator="{ on, attrs }"> + <v-card-title> + <span + v-text="new Date(lessonDocumentationEdit.date).toLocaleDateString($root.languageCode)" + class="ma-1"></span> + <v-btn right v-bind="attrs" v-on="on" icon + v-if="hover && dateAndPeriodEditable"> + <v-icon>mdi-pencil-outline</v-icon> + </v-btn> + </v-card-title> + </template> + <v-date-picker scrollable no-title @input="showPicker = false; $emit('change-date', $event)" v-model="lessonDocumentationEdit.date" - ></v-date-picker> - </v-menu> - </div> - </v-hover> - <v-hover v-slot="{ hover }"> - <div> - <v-menu offset-y> - <template v-slot:activator="{ on, attrs }"> - <v-card-title> - <span v-text="period" class="ma-1"></span> - <v-btn + ></v-date-picker> + </v-menu> + </div> + </v-hover> + <v-hover v-slot="{ hover }"> + <div> + <v-menu offset-y> + <template v-slot:activator="{ on, attrs }"> + <v-card-title> + <span v-text="$root.django.gettext('Period') + ' ' + lessonDocumentationEdit.period" class="ma-1"></span> + <v-btn right v-bind="attrs" v-on="on" icon v-if="hover && dateAndPeriodEditable" - > - <v-icon>mdi-pencil-outline</v-icon> - </v-btn> - </v-card-title> - </template> - <v-list> + > + <v-icon>mdi-pencil-outline</v-icon> + </v-btn> + </v-card-title> + </template> + <v-list> <!-- Fixme: load valid lessons --> - <v-list-item + <v-list-item v-for="(item, index) in [1, 2, 3, 4, 5, 6, 7, 8, 9]" :key="index" - > - <v-list-item-title>{{ item }}</v-list-item-title> - </v-list-item> - </v-list> - </v-menu> - </div> - </v-hover> - </v-col> - <v-col cols="12" md="4" lg="6" xl="7"> - <message-box type="error" v-if="error">Error updating data</message-box> - <v-textarea - name="input-7-1" - :label="$root.django.gettext('Topic')" - rows="1" - auto-grow - required + > + <v-list-item-title>{{ item }}</v-list-item-title> + </v-list-item> + </v-list> + </v-menu> + </div> + </v-hover> + </v-card-title> + <v-card-text> + <v-row> + <v-col cols="12" md="8" lg="8"> + <message-box type="error" v-if="error">Error updating data</message-box> + <v-textarea + name="input-7-1" + :label="$root.django.gettext('Topic')" + rows="1" + auto-grow + required - v-model="lessonDocumentationEdit.topic" - @change="mutate()" - ></v-textarea> - <v-textarea - name="input-7-1" - :label="$root.django.gettext('Homework')" - rows="1" - auto-grow + v-model="lessonDocumentationEdit.topic" + ></v-textarea> + <v-textarea + name="input-7-1" + :label="$root.django.gettext('Homework')" + rows="1" + auto-grow - v-model="lessonDocumentationEdit.homework" - @change="mutate()" - ></v-textarea> - <v-textarea - name="input-7-1" - :label="$root.django.gettext('Group note')" - rows="1" - auto-grow + v-model="lessonDocumentationEdit.homework" + ></v-textarea> + <v-textarea + name="input-7-1" + :label="$root.django.gettext('Group note')" + rows="1" + auto-grow - v-model="lessonDocumentationEdit.groupNote" - @change="mutate()" - ></v-textarea> - <v-btn right color="primary"> - Save - </v-btn> - </v-col> - <v-col cols="12" md="4" lg="3"> - Personal notes - <personal-notes - :lesson-documentation-id="lessonDocumentationEdit.id" - :groups="groups" - :excuse-types="excuseTypes" - :extra-marks="extraMarks" + v-model="lessonDocumentationEdit.groupNote" + ></v-textarea> + </v-col> + <v-col cols="12" md="4" lg="4"> + Personal notes + <personal-notes + :lesson-documentation-id="lessonDocumentationEdit.id" + :groups="groups" + :excuse-types="excuseTypes" + :extra-marks="extraMarks" - v-model="lessonDocumentationEdit.personalNotes" - @change="$emit('change-personal-notes', $event)" - ></personal-notes> - </v-col> - </v-row> + v-model="lessonDocumentationEdit.personalNotes" + @change="$emit('change-personal-notes', $event)" + ></personal-notes> + </v-col> + </v-row> + </v-card-text> + <v-card-actions> + <v-spacer></v-spacer> + <v-btn + color="error" + outlined + @click="$emit('cancel-lesson-documentation-dialog', $event)" + > + {{ $root.django.gettext('Cancel') }} + </v-btn> + <v-btn + color="success" + @click="mutate()" + > + {{ $root.django.gettext('Save') }} + </v-btn> + </v-card-actions> </v-form> </v-card> </template> @@ -119,18 +134,21 @@ </template> <script> - import PersonalNotes from "./PersonalNotes.vue"; - export default { - components: { PersonalNotes }, - props: [ "lessonDocumentationEdit", "groups", "excuseTypes", "extraMarks" ], - name: "lesson-documentation", - data () { - return { - //lessonDocumentationEdit: {}, - } - }, - //created() { - //this.lessonDocumentationEdit = this.lessonDocumentation - //} - } +import PersonalNotes from "./PersonalNotes.vue"; + +export default { + components: {PersonalNotes}, + props: ["lessonDocumentationEdit", "groups", "excuseTypes", "extraMarks"], + name: "lesson-documentation", + data() { + return { + dateAndPeriodEditable: false, + showPicker: false, + //lessonDocumentationEdit: {}, + } + }, + //created() { + //this.lessonDocumentationEdit = this.lessonDocumentation + //} +} </script> diff --git a/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentations.vue b/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentations.vue index 7173b30d4deee6af86d817e6120d1061e4187670..c89c3491e900c28f2f967edc24b2176afbbe84b5 100644 --- a/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentations.vue +++ b/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentations.vue @@ -32,6 +32,7 @@ :groups="groups" :excuse-types="excuseTypes" :extra-marks="extraMarks" + @cancel-lesson-documentation-dialog="cancelDialog" /> </v-dialog> <v-data-table @@ -87,6 +88,19 @@ }, }, methods: { + cancelDialog() { + this.dialog = false; + this.lessonDocumentationEdit = {}; + }, + recordDocumentation(item) { + if (this.documentLessonTopicsByWeek === "True") { + if (this.recordedWeeks.includes(item.week)) { + return false + } + this.recordedWeeks.push(item.week) + } + return true + }, async loadLessonDocumentation(item) { const result = await this.$apollo.mutate({ mutation: require("./LessonDocumentation.graphql"), @@ -104,6 +118,7 @@ year: item.year, week: item.week, date: lessonDocumentation.date, + period: item.period, lessonPeriodId: item.lessonPeriod ? item.lessonPeriod.id : null, eventId: item.event ? item.event.id : null, extraLessonId: item.extraLesson ? item.extraLesson.id : null,