From 95487d75694f86463d5952a9a5b2d3f95851d8fe Mon Sep 17 00:00:00 2001 From: kolaente Date: Fri, 9 Jun 2023 13:19:47 +0200 Subject: [PATCH] feat(reminders): add proper time picker for relative dates --- src/components/input/datepickerInline.vue | 1 - .../tasks/partials/reminder-detail.vue | 56 ++--- .../tasks/partials/reminder-period.vue | 232 ++++++------------ src/components/tasks/partials/reminders.vue | 19 +- src/helpers/time/period.ts | 46 +++- src/models/task.ts | 21 +- src/types/IRepeatAfter.ts | 2 + 7 files changed, 156 insertions(+), 221 deletions(-) diff --git a/src/components/input/datepickerInline.vue b/src/components/input/datepickerInline.vue index 20bc8a1b4..e4c684bef 100644 --- a/src/components/input/datepickerInline.vue +++ b/src/components/input/datepickerInline.vue @@ -151,7 +151,6 @@ function setDateValue(dateString: string | Date | null) { function updateData() { changed.value = true - console.log('emit', date.value) emit('update:modelValue', date.value) } diff --git a/src/components/tasks/partials/reminder-detail.vue b/src/components/tasks/partials/reminder-detail.vue index f65a28aa6..ab8ba1006 100644 --- a/src/components/tasks/partials/reminder-detail.vue +++ b/src/components/tasks/partials/reminder-detail.vue @@ -3,29 +3,30 @@ {{ reminderText }} -
+
{{ formatReminder(p) }} - + Custom + + Date +
-
@@ -34,16 +35,17 @@ import {computed, ref, watch, type PropType} from 'vue' import {toRef} from '@vueuse/core' import {SECONDS_A_DAY} from '@/constants/date' -import {secondsToPeriod} from '@/helpers/time/period' +import {REMINDER_PERIOD_RELATIVE_TO_TYPES} from '@/types/IReminderPeriodRelativeTo' +import {secondsToPeriod} from '@/helpers/time/period' import type {ITaskReminder} from '@/modelTypes/ITaskReminder' import {formatDateShort} from '@/helpers/time/formatDate' -import Datepicker from '@/components/input/datepicker.vue' -import ReminderPeriod from '@/components/tasks/partials/reminder-period.vue' -import TaskReminderModel from '@/models/taskReminder' import BaseButton from '@/components/base/BaseButton.vue' -import {REMINDER_PERIOD_RELATIVE_TO_TYPES} from '@/types/IReminderPeriodRelativeTo' +import DatepickerInline from '@/components/input/datepickerInline.vue' +import ReminderPeriod from '@/components/tasks/partials/reminder-period.vue' + +import TaskReminderModel from '@/models/taskReminder' const props = defineProps({ modelValue: { @@ -65,20 +67,9 @@ const presets: TaskReminderModel[] = [ {relativePeriod: SECONDS_A_DAY * 7, relativeTo: REMINDER_PERIOD_RELATIVE_TO_TYPES.DUEDATE}, {relativePeriod: SECONDS_A_DAY * 30, relativeTo: REMINDER_PERIOD_RELATIVE_TO_TYPES.DUEDATE}, ] -const reminderDate = computed({ - get() { - return reminder.value?.reminder - }, - set(newReminderDate) { - if (!reminderDate.value) { - return - } - reminder.value.reminder = new Date(reminderDate.value) - }, -}) +const reminderDate = ref(null) -const showAbsoluteReminder = computed(() => !reminder.value || !reminder.value?.relativeTo) -const showRelativeReminder = computed(() => !reminder.value || reminder.value?.relativeTo) +const showFormSwitch = ref(null) const reminderText = computed(() => { @@ -103,10 +94,9 @@ watch( ) function setReminderDate() { - if (!reminderDate.value) { - return - } - reminder.value.reminder = new Date(reminderDate.value) + reminder.value.reminder = reminderDate.value === null + ? null + : new Date(reminderDate.value) emit('update:modelValue', reminder.value) } @@ -123,12 +113,12 @@ function formatReminder(reminder: TaskReminderModel) { periodHuman = period.days + ' day' } - return periodHuman + ' ' + (reminder.relativePeriod > 0 ? 'before' : 'after') + ' ' + reminder.relativeTo + return periodHuman + ' ' + (reminder.relativePeriod <= 0 ? 'before' : 'after') + ' ' + reminder.relativeTo } \ No newline at end of file diff --git a/src/components/tasks/partials/reminders.vue b/src/components/tasks/partials/reminders.vue index f785d2166..a6ff11504 100644 --- a/src/components/tasks/partials/reminders.vue +++ b/src/components/tasks/partials/reminders.vue @@ -7,11 +7,14 @@ class="reminder-input" >
- +
- - + +
@@ -31,7 +34,7 @@