diff --git a/resources/ts/components/TaskItem.vue b/resources/ts/components/TaskItem.vue index cf4bdfa..7e10939 100644 --- a/resources/ts/components/TaskItem.vue +++ b/resources/ts/components/TaskItem.vue @@ -13,7 +13,7 @@ import { updateTask } from "@/api/tasks"; const CronInput = defineAsyncComponent( () => import("@/components/CronInput.vue"), ); -import { taskCompleted, taskNextReset } from "@/lib/tasks"; +import { isTemporary, taskCompleted, taskNextReset } from "@/lib/tasks"; import { relativeTime } from "@/lib/dates"; import { useAlertStore } from "@/stores/alerts"; import { useI18n } from "vue-i18n"; @@ -38,9 +38,11 @@ const i18n = useI18n(); const { alertSuccess, alertError } = useAlertStore(); async function onOpen() { - editMode.value = true; - await nextTick(); - editNameInput.value?.focus(); + if (!isTemporary(task.value)) { + editMode.value = true; + await nextTick(); + editNameInput.value?.focus(); + } } function onClose() { @@ -51,10 +53,14 @@ function onClose() { function onSave() { if (editName.value.trim()) { - updateTask(task.value.id, { + const data = { name: editName.value.trim(), reset_cron: editCron.value, - }) + }; + task.value.name = editName.value.trim(); + task.value.reset_cron = editCron.value; + editMode.value = false; + updateTask(task.value.id, data) .then((newTask) => { task.value = newTask; emit("updated", newTask); @@ -63,46 +69,55 @@ function onSave() { .catch(() => { alertError(i18n.t("alerts.task_update_error")); }); - task.value.name = editName.value; - task.value.reset_cron = editCron.value; - editMode.value = false; } } function onCheck() { - if (!checked.value) { - updateTask(task.value.id, { - check_date: new Date().toISOString(), - previous_check_date: task.value.check_date?.toISOString(), - }) - .then((newTask) => { - task.value = newTask; - emit("updated", newTask); - }) - .catch(() => { - alertError(i18n.t("alerts.task_update_error")); - }); - } else { - updateTask(task.value.id, { - check_date: null, - previous_check_date: task.value.check_date?.toISOString(), - }) - .then((newTask) => { - task.value = newTask; - emit("updated", newTask); - }) - .catch(() => { - alertError(i18n.t("alerts.task_update_error")); - }); + if (!isTemporary(task.value)) { + if (!checked.value) { + const data = { + check_date: new Date().toISOString(), + previous_check_date: task.value.check_date?.toISOString(), + }; + task.value.previous_check_date = task.value.check_date; + task.value.check_date = new Date(); + updateTask(task.value.id, data) + .then((data) => { + task.value = data; + emit("updated", data); + }) + .catch(() => { + alertError(i18n.t("alerts.task_update_error")); + }); + } else { + const data = { + check_date: null, + previous_check_date: task.value.check_date?.toISOString(), + }; + task.value.previous_check_date = task.value.check_date; + task.value.check_date = null; + updateTask(task.value.id, data) + .then((data) => { + task.value = data; + emit("updated", data); + }) + .catch(() => { + alertError(i18n.t("alerts.task_update_error")); + }); + } } } function onClone() { - emit("clone", task.value); + if (!isTemporary(task.value)) { + emit("clone", task.value); + } } function onDelete() { - emit("delete", task.value); + if (!isTemporary(task.value)) { + emit("delete", task.value); + } } onBeforeMount(() => { @@ -112,6 +127,7 @@ onBeforeMount(() => { refreshKey.value++; }, 60000); }); + watch(task, () => { if (!editMode.value && task.value.name !== editName.value) { editName.value = task.value.name; @@ -131,7 +147,7 @@ watch(task, () => { type="checkbox" class="checkbox" :checked="checked" - @click.prevent="onCheck" + @click="onCheck" />