<template> <div> <v-row align="center" justify="center" v-if="jobInvitesLoading"> <v-progress-circular indeterminate color="grey" /> </v-row> <v-expansion-panels> <v-expansion-panel v-for="jobInvite in jobInvitesToMe" :key="jobInvite.id" @click.once="seenJobIvnite(jobInvite)" > <v-expansion-panel-header> <div> {{ jobInvite.on_date.getDate() }}.{{ jobInvite.on_date.getMonth() + 1 }}.{{ jobInvite.on_date.getFullYear() }} von {{ jobInvite.from_user.firstname }} {{ jobInvite.from_user.lastname }} </div> <v-row class="text-right" style="margin-right: 5px" v-show="userInWorker(jobInvite)" > <v-col> <v-icon color="green"> {{ check }} </v-icon> <v-progress-circular indeterminate v-if="jobInvitesLoading"></v-progress-circular> </v-col> </v-row> </v-expansion-panel-header> <v-expansion-panel-content :eager="true"> <v-row class="text-right"> <v-col> <v-btn icon @click="updatingJobInvite(jobInvite)"> <v-icon> {{ jobInvite.watched ? seen : notSeen }} </v-icon> </v-btn> </v-col> </v-row> <Day :day="jobInvite.day" :long="true" :loading="jobInvite.day.loading" @addingJob="addingJob(jobInvite, $event)" @deletingJob="deletingJob(jobInvite, $event)" /> </v-expansion-panel-content> </v-expansion-panel> </v-expansion-panels> </div> </template> <script> import { mapActions, mapGetters } from 'vuex' import { mdiEyeOff, mdiEyeCheck, mdiCheck } from '@mdi/js' import Day from '@/components/user/Jobs/Day' export default { name: 'JobInvites', components: { Day }, data() { return { notSeen: mdiEyeOff, seen: mdiEyeCheck, check: mdiCheck, showNotSeen: false, showSeen: false, update: 0 } }, methods: { ...mapActions({ getJobInvites: 'jobInvites/getJobInvites', addJob: 'jobInvites/addJob', updateJobInviteToMe: 'jobInvites/updateJobInviteToMe', deleteJob: 'jobInvites/deleteJob', }), forceRender() { setTimeout(() => { this.update += 0 }, 500) }, updatingJobInvite(jobInvite) { jobInvite.watched = !jobInvite.watched this.updateJobInviteToMe(jobInvite) }, seenJobIvnite(jobInvite) { if (!jobInvite.watched) { jobInvite.watched = true this.updateJobInviteToMe(jobInvite) } }, addingJob(jobInvite, event) { this.seenJobIvnite(jobInvite) this.addJob(event) this.forceRender() }, deletingJob(jobInvite, event) { this.seenJobIvnite(jobInvite) this.deleteJob(event) this.forceRender() }, userInWorker(jobinvite) { var jobkinddate = jobinvite.day.jobkinddate.find(item => { return item.worker.find(workeritem => { return workeritem.id === this.activeUser.id }) }) return !!jobkinddate } }, computed: { ...mapGetters({ jobInvitesFromMe: 'jobInvites/jobInvitesFromMe', jobInvitesToMe: 'jobInvites/jobInvitesToMe', jobInvitesLoading: 'jobInvites/jobInvitesLoading', activeUser: 'user/user' }) }, created() { setTimeout(() => { this.getJobInvites(new Date()) }, 200) } } </script> <style scoped></style>