diff --git a/src/components/tasks/partials/repeatAfter.vue b/src/components/tasks/partials/repeatAfter.vue index e416e2a6c..24064a3ae 100644 --- a/src/components/tasks/partials/repeatAfter.vue +++ b/src/components/tasks/partials/repeatAfter.vue @@ -70,6 +70,7 @@ import {error} from '@/message' import {TASK_REPEAT_MODES} from '@/types/IRepeatMode' import type {IRepeatAfter} from '@/types/IRepeatAfter' import type {ITask} from '@/modelTypes/ITask' +import TaskModel from '@/models/task' const props = defineProps({ modelValue: { @@ -87,7 +88,7 @@ const {t} = useI18n({useScope: 'global'}) const emit = defineEmits(['update:modelValue']) -const task = ref() +const task = ref(new TaskModel()) const repeatAfter = reactive({ amount: 0, type: '', @@ -95,7 +96,7 @@ const repeatAfter = reactive({ watch( () => props.modelValue, - (value) => { + (value: ITask) => { task.value = value if (typeof value.repeatAfter !== 'undefined') { Object.assign(repeatAfter, value.repeatAfter) @@ -105,11 +106,14 @@ watch( ) function updateData() { - if (!task.value || task.value.repeatMode !== TASK_REPEAT_MODES.REPEAT_MODE_DEFAULT && repeatAfter.amount === 0) { + if (!task.value || + (task.value.repeatMode === TASK_REPEAT_MODES.REPEAT_MODE_DEFAULT && repeatAfter.amount === 0) || + (task.value.repeatMode === TASK_REPEAT_MODES.REPEAT_MODE_FROM_CURRENT_DATE && repeatAfter.amount === 0) + ) { return } - if (repeatAfter.amount < 0) { + if (task.value.repeatMode === TASK_REPEAT_MODES.REPEAT_MODE_DEFAULT && repeatAfter.amount < 0) { error({message: t('task.repeat.invalidAmount')}) return } diff --git a/src/views/tasks/TaskDetailView.vue b/src/views/tasks/TaskDetailView.vue index 7bb41375e..53e285783 100644 --- a/src/views/tasks/TaskDetailView.vue +++ b/src/views/tasks/TaskDetailView.vue @@ -174,7 +174,7 @@ {{ $t('task.attributes.repeat') }} @@ -501,6 +501,7 @@ import {useTitle} from '@/composables/useTitle' import {success} from '@/message' import type {Action as MessageAction} from '@/message' import {useProjectStore} from '@/stores/projects' +import {TASK_REPEAT_MODES} from '@/types/IRepeatMode' const props = defineProps({ taskId: { @@ -640,7 +641,7 @@ function setActiveFields() { activeFields.priority = task.priority !== PRIORITIES.UNSET activeFields.relatedTasks = Object.keys(task.relatedTasks).length > 0 activeFields.reminders = task.reminders.length > 0 - activeFields.repeatAfter = task.repeatAfter.amount > 0 + activeFields.repeatAfter = task.repeatAfter?.amount > 0 || task.repeatMode !== TASK_REPEAT_MODES.REPEAT_MODE_DEFAULT activeFields.startDate = task.startDate !== null } @@ -779,6 +780,12 @@ async function setPercentDone(percentDone: number) { task: newTask, }) } + +async function removeRepeatAfter() { + task.repeatAfter.amount = 0 + task.repeatMode = TASK_REPEAT_MODES.REPEAT_MODE_DEFAULT + await saveTask() +}