[Complete task modal] Added complete task modal

This commit is contained in:
Matej Glasnák committed 2022-12-13 00:07:20 +01:00
1 parent 1d1f1a1d14
commit a3beddf1e9
5 files changed
+123 -45

No files matched your search

@@ -13,11 +13,12 @@
:unscheduledTime="calData.unscheduled_times"
:overlaps-per-time-step="false"
:showTimeInCells="false"
:time-cell-height="100"
:time-cell-height="70"
:min-cell-width="300"
@ready="onReady()"
@view-change="weekChanged"
@event-drop="eventMoved"
@event-focus="eventFocused"
>
<template v-slot:weekday-heading="{ heading }">
<div class="w-100 h-100 d-flex flex-column">
@@ -48,9 +49,9 @@
<template v-slot:event="{ event }">
<div class="event-content-wrapper w-100 h-100 d-flex flex-column justify-space-between">
<div>
<small v-if="event.project_code && (event.end.getTime() - event.start.getTime() >= 7200000) && !event.is_blocker" class="project-code">{{ event.project_code }}</small>
<small v-if="(event.project_code && (event.end.getTime() - event.start.getTime() >= 7200000) && !event.is_blocker)" class="project-code">{{ event.project_code }}</small>
<h3>{{ event.title }}</h3>
<div v-if="event.end.getTime() - event.start.getTime() >= 7200000" class="d-flex align-center event-details">
<div v-if="(event.end.getTime() - event.start.getTime() >= 7200000) || focusedEventId == event.task_id" class="d-flex align-center event-details">
<div class="event-initials d-flex justify-center align-center">
<small>{{ getUserInitials(event) }}</small>
</div>
@@ -58,19 +59,30 @@
</div>
</div>
<div class="event-footer d-flex" v-if="event.end.getTime() - event.start.getTime() >= 3600000">
<v-btn rounded class="event-footer-button me-2" @click="completeTask(event.id)"><img :src="require('./_img/checkmark.svg')" alt=""></v-btn>
<v-btn rounded class="event-footer-button me-2" @click="editTask(event.id)"><img :src="require('./_img/pencil.svg')" alt=""></v-btn>
<v-btn rounded class="event-footer-button me-2" @click="deleteTask(event.id)"><img :src="require('./_img/bin.svg')" alt=""></v-btn>
<div class="event-footer d-flex" v-if="(event.end.getTime() - event.start.getTime() >= 3600000) || focusedEventId == event.task_id">
<v-btn rounded class="event-footer-button me-2" @click="this.showCompleteModal = {task: event}"><img :src="require('./_img/checkmark.svg')" alt=""></v-btn>
<v-btn rounded class="event-footer-button me-2" @click="editTask(event.id)" :style="{opacity: 0.3}"><img :src="require('./_img/pencil.svg')" alt=""></v-btn>
<v-btn rounded class="event-footer-button me-2" @click="this.showDeleteModal = {task: event}"><img :src="require('./_img/bin.svg')" alt=""></v-btn>
</div>
</div>
</template>
</Vue-cal>
<Z-complete-task-modal v-if="showCompleteModal" :visible="showCompleteModal ? true : false" :task="showCompleteModal.task" @close="showCompleteModal = null" />
<Z-delete-task-modal v-if="showDeleteModal" :visible="showDeleteModal ? true : false" :task="showDeleteModal.task" @close="showDeleteModal = null" />
</div>
</template>
<script>
import ZCompleteTaskModal from '@/plugins/tm@modal/task/z-complete-task-modal.vue'
import ZDeleteTaskModal from '@/plugins/tm@modal/task/z-delete-task-modal.vue'
export default {
components: {
ZCompleteTaskModal,
ZDeleteTaskModal
},
props: {
calData: {
type: Object,
@@ -99,6 +111,9 @@ export default {
create: false
}
},
focusedEventId: null,
showCompleteModal: null,
showDeleteModal: null
}
},
@@ -158,16 +173,12 @@ export default {
}
},
completeTask(id) {
console.log('complete', id)
},
editTask(id) {
console.log('edit', id)
},
deleteTask(id) {
console.log('delete', id)
eventFocused(event) {
this.focusedEventId = event.task_id
}
}
}
@@ -313,6 +324,7 @@ export default {
// &:hover,
&:focus
z-index: 100 !important
min-height: 200px !important
&.event-blocker
background: #B00020 !important
@@ -0,0 +1,65 @@
<template>
<v-dialog v-model="show" max-width="650">
<v-card>
<div class="d-flex justify-space-between align-center">
<h1>Ste si istý, že chcete ukončiť <b>{{ task.title }}</b>?</h1>
<v-icon
@click.stop="show = false"
icon="mdi-close"
size="large"
></v-icon>
</div>
<v-card-actions class="mt-10 d-flex justify-start align-center">
<v-btn class="z-btn" variant="flat" @click="complete()">ÁNO</v-btn>
<v-btn class="ml-7 cancel-btn" @click.stop="show = false">ZRUŠIŤ</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
emits: ['close'],
props: {
visible: {
type: Boolean,
required: true
},
task: {
type: Object,
required: true
}
},
methods: {
async complete() {
try {
const task = {
...this.task,
is_finished: true
}
await this.$axios.post(`v1/tasks/${task.id}`, task)
this.show = false
} catch (error) {
this.$toast.error(error)
}
}
},
computed: {
show: {
get() {
return this.visible
},
set(value) {
if (!value) this.$emit('close')
}
},
}
}
</script>
@@ -39,7 +39,6 @@ export default {
try {
await this.$axios.delete(`v1/tasks/${this.task.id}`)
this.show = false
this.$emit('confirmDelete', this.task.id)
} catch (error) {
this.$toast.error(error)
}