From f4425494f52b46b2820f801505f1b9a1c0ca4093 Mon Sep 17 00:00:00 2001 From: Klemek Date: Fri, 10 Jul 2026 11:02:21 +0200 Subject: [PATCH] feat: clone and delete task --- README.md | 6 +++-- resources/ts/components/TaskItem.vue | 34 +++++++++++++++++++++------- resources/ts/components/TaskList.vue | 25 ++++++++++++++++---- 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 24a97b2..a4c5cf2 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,14 @@ - [x] auto refresh task completion - [x] validate cron string -- [ ] clone task -- [ ] delete task +- [x] clone task +- [x] delete task - [ ] list option: sort - [ ] list option: show last completion - [ ] list option: show next refresh +- [ ] list option: hide completed - [ ] list per URL +- [ ] Empty list message - [ ] home screen - [ ] change lang - [ ] toasts diff --git a/resources/ts/components/TaskItem.vue b/resources/ts/components/TaskItem.vue index 37e5f4f..74b3acc 100644 --- a/resources/ts/components/TaskItem.vue +++ b/resources/ts/components/TaskItem.vue @@ -6,12 +6,18 @@ import { updateTask } from "@/api/tasks"; import { CronExpressionParser } from 'cron-parser' import CronInput from "@/components/CronInput.vue"; -const editMode = ref(false); +const emit = defineEmits<{ + (e: 'clone', task: Task): void + (e: 'delete', task: Task): void +}>(); const task = defineModel({ required: true }); + +const editMode = ref(false); const editName = ref(''); const editCron = ref(null); const refreshKey = ref(0); + const checked = computed(() => { if (task.value.check_date === null) { return false; @@ -28,7 +34,11 @@ const checked = computed(() => { } }); -function save() { +function onClose() { + editMode.value = false; +} + +function onSave() { void updateTask(task.value.id, { name: editName.value, reset_cron: editCron.value }) .then((newTask) => { task.value = newTask; @@ -38,7 +48,7 @@ function save() { editMode.value = false; } -function check() { +function onCheck() { if (!checked.value) { void updateTask(task.value.id, { check_date: (new Date()).toISOString(), previous_check_date: task.value.check_date?.toISOString() }) .then((newTask) => { @@ -52,6 +62,14 @@ function check() { } } +function onClone() { + emit('clone', task.value); +} + +function onDelete() { + emit('delete', task.value); +} + onBeforeMount(() => { editName.value = task.value.name; editCron.value = task.value.reset_cron; @@ -72,7 +90,7 @@ watch(task, () => {