deleting tasks from the calendar now works
This commit is contained in:
@@ -14,14 +14,24 @@ const emits = defineEmits<{
|
|||||||
(e: 'edit-task', task: Task): void
|
(e: 'edit-task', task: Task): void
|
||||||
(e: 'edit-event', event: Event): void
|
(e: 'edit-event', event: Event): void
|
||||||
(e: 'delete-event', id: number): void
|
(e: 'delete-event', id: number): void
|
||||||
|
(e: 'delete-task', id: number): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
function deleteItem(event: Event) {
|
||||||
|
if (event.task !== undefined) {
|
||||||
|
emits('delete-task', event.task.id ?? -1)
|
||||||
|
} else {
|
||||||
|
emits('delete-event', event.id ?? -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<UCard class="flex grow" :ui="{ body: 'w-full h-full' }">
|
<UCard class="flex grow" :ui="{ body: 'w-full h-full' }">
|
||||||
<Calendar @create="(event) => emits('createEvent', event)" @edit-task="(task) => emits('edit-task', task)" @edit="(event) => emits('edit-event', event)" @delete="(event) => emits('delete-event', event.id ?? -1)" v-model:events="events" v-model:date="date" ,
|
<Calendar @create="(event) => emits('createEvent', event)" @edit-task="(task) => emits('edit-task', task)"
|
||||||
v-model:dragged-task="draggedTask" v-model:tasks="tasks">
|
@edit="(event) => emits('edit-event', event)" @delete="deleteItem" v-model:events="events"
|
||||||
|
v-model:date="date" , v-model:dragged-task="draggedTask" v-model:tasks="tasks">
|
||||||
</Calendar>
|
</Calendar>
|
||||||
</UCard>
|
</UCard>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -12,11 +12,13 @@ const date = defineModel<DateTime>('date', { required: true })
|
|||||||
const draggedTask = defineModel<DraggedTask | undefined>('draggedTask', { required: true })
|
const draggedTask = defineModel<DraggedTask | undefined>('draggedTask', { required: true })
|
||||||
const draggedEvent = ref<DraggedEvent | undefined>()
|
const draggedEvent = ref<DraggedEvent | undefined>()
|
||||||
const createInput = ref<Partial<SimpleEvent>>({})
|
const createInput = ref<Partial<SimpleEvent>>({})
|
||||||
const createModalOpened = ref(false)
|
|
||||||
const editInput = ref<Partial<SimpleEvent>>({})
|
const editInput = ref<Partial<SimpleEvent>>({})
|
||||||
const editContext = ref<{ event: Event }>()
|
const editContext = ref<{ event: Event }>()
|
||||||
|
const createModalOpened = ref(false)
|
||||||
const editModalOpened = ref(false)
|
const editModalOpened = ref(false)
|
||||||
const deleteModalOpened = ref(false)
|
const deleteModalOpened = ref(false)
|
||||||
|
const editTaskModalOpened = ref(false)
|
||||||
|
const taskFormModalInput = ref<Partial<Task>>({})
|
||||||
const deleteContext = ref<{ event: Event }>()
|
const deleteContext = ref<{ event: Event }>()
|
||||||
|
|
||||||
type Day = {
|
type Day = {
|
||||||
@@ -86,6 +88,22 @@ const days = computed<Day[]>(() => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const deleteTitle = computed(() => {
|
||||||
|
if (deleteContext.value === undefined || deleteContext.value.event.task === undefined) {
|
||||||
|
return 'Delete Event'
|
||||||
|
} else {
|
||||||
|
return 'Delete Task'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const deleteDescription = computed(() => {
|
||||||
|
if (deleteContext.value === undefined || deleteContext.value.event.task === undefined) {
|
||||||
|
return 'Are you sure you want to delete this event?'
|
||||||
|
} else {
|
||||||
|
return 'Are you sure you want to delete this task?'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const emits = defineEmits<{
|
const emits = defineEmits<{
|
||||||
(e: 'create', event: Event): void
|
(e: 'create', event: Event): void
|
||||||
(e: 'edit', event: Event): void
|
(e: 'edit', event: Event): void
|
||||||
@@ -123,10 +141,15 @@ function create(simple: SimpleEvent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function openEditModal(event: Event) {
|
function openEditModal(event: Event) {
|
||||||
|
if (event.task !== undefined) {
|
||||||
|
taskFormModalInput.value = event.task
|
||||||
|
editTaskModalOpened.value = true
|
||||||
|
} else {
|
||||||
editInput.value = event.toSimple()
|
editInput.value = event.toSimple()
|
||||||
editContext.value = { event: event }
|
editContext.value = { event: event }
|
||||||
editModalOpened.value = true
|
editModalOpened.value = true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function edit(simple: SimpleEvent) {
|
function edit(simple: SimpleEvent) {
|
||||||
editContext.value?.event.updateWithSimple(simple)
|
editContext.value?.event.updateWithSimple(simple)
|
||||||
@@ -134,11 +157,25 @@ function edit(simple: SimpleEvent) {
|
|||||||
emits('edit', editContext.value.event)
|
emits('edit', editContext.value.event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function editTask(task: Task) {
|
||||||
|
editTaskModalOpened.value = false
|
||||||
|
emits('edit-task', task)
|
||||||
|
}
|
||||||
|
|
||||||
function openDeleteModal(event: Event) {
|
function openDeleteModal(event: Event) {
|
||||||
deleteContext.value = { event: event }
|
deleteContext.value = { event: event }
|
||||||
deleteModalOpened.value = true
|
deleteModalOpened.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteItem() {
|
||||||
|
if (deleteContext.value === undefined) return
|
||||||
|
if (deleteContext.value.event.task !== undefined) {
|
||||||
|
deleteTask()
|
||||||
|
} else {
|
||||||
|
deleteEvent()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function deleteEvent() {
|
function deleteEvent() {
|
||||||
if (deleteContext.value === undefined) return
|
if (deleteContext.value === undefined) return
|
||||||
emits('delete', deleteContext.value?.event)
|
emits('delete', deleteContext.value?.event)
|
||||||
@@ -158,6 +195,14 @@ function deleteEvent() {
|
|||||||
deleteModalOpened.value = false
|
deleteModalOpened.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteTask() {
|
||||||
|
if (deleteContext.value === undefined || deleteContext.value.event.task === undefined) return
|
||||||
|
emits('delete', deleteContext.value.event)
|
||||||
|
tasks.value = tasks.value.filter(t => t.id !== (deleteContext.value?.event.task?.id ?? -1))
|
||||||
|
deleteContext.value = undefined
|
||||||
|
deleteModalOpened.value = false
|
||||||
|
}
|
||||||
|
|
||||||
function moveEvent(event: Event) {
|
function moveEvent(event: Event) {
|
||||||
if (event.task !== undefined) {
|
if (event.task !== undefined) {
|
||||||
emits('edit-task', event.task)
|
emits('edit-task', event.task)
|
||||||
@@ -173,10 +218,12 @@ function moveEvent(event: Event) {
|
|||||||
<EventFormModal action="edit" @submnitted="event => edit(event)" :input="editInput"
|
<EventFormModal action="edit" @submnitted="event => edit(event)" :input="editInput"
|
||||||
v-model:open="editModalOpened" />
|
v-model:open="editModalOpened" />
|
||||||
|
|
||||||
<UModal v-model:open="deleteModalOpened" title="Delete Event"
|
<UiTaskFormModal v-model:open="editTaskModalOpened" :input="taskFormModalInput" action="edit"
|
||||||
description="Are you sure you want to delete this event?">
|
@submnitted="editTask" />
|
||||||
|
|
||||||
|
<UModal v-model:open="deleteModalOpened" :title="deleteTitle" :description="deleteDescription">
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<UButton variant="solid" @click="deleteEvent">
|
<UButton variant="solid" @click="deleteItem">
|
||||||
Delete
|
Delete
|
||||||
</UButton>
|
</UButton>
|
||||||
<UButton variant="solid" @click="deleteModalOpened = false">
|
<UButton variant="solid" @click="deleteModalOpened = false">
|
||||||
@@ -190,7 +237,8 @@ function moveEvent(event: Event) {
|
|||||||
|
|
||||||
<CalendarCollumn v-for="day in days" :seperators="seperators" :day="day.date" :events="day.events"
|
<CalendarCollumn v-for="day in days" :seperators="seperators" :day="day.date" :events="day.events"
|
||||||
:date="date" v-model:draggedEvent="draggedEvent" @quick-create="openCreateModal" @edit="openEditModal"
|
:date="date" v-model:draggedEvent="draggedEvent" @quick-create="openCreateModal" @edit="openEditModal"
|
||||||
@delete="openDeleteModal" @moved="moveEvent" @edit-task="(task) => emits('edit-task', task)" v-model:dragged-task="draggedTask" />
|
@delete="openDeleteModal" @moved="moveEvent" @edit-task="(task) => emits('edit-task', task)"
|
||||||
|
v-model:dragged-task="draggedTask" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ function scheduleTask(task: Task) {
|
|||||||
<Sidebar v-if="tasks !== null" v-model:tasks="tasks" v-model:date="date" @create-task="postTask"
|
<Sidebar v-if="tasks !== null" v-model:tasks="tasks" v-model:date="date" @create-task="postTask"
|
||||||
@delete-task="deleteTask" @schedule-task="scheduleTask" @edit-task="putTask"/>
|
@delete-task="deleteTask" @schedule-task="scheduleTask" @edit-task="putTask"/>
|
||||||
<MainContent v-if="events !== null" v-model:events="events" v-model:date="date"
|
<MainContent v-if="events !== null" v-model:events="events" v-model:date="date"
|
||||||
v-model:dragged-task="draggedTask" v-model:tasks="tasks" @create-event="postEvent" @edit-task="putTask" @edit-event="putEvent" @delete-event="deleteEvent"/>
|
v-model:dragged-task="draggedTask" v-model:tasks="tasks" @create-event="postEvent" @edit-task="putTask" @edit-event="putEvent" @delete-event="deleteEvent" @delete-task="deleteTask"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user