Add scheduled field to the UI

This commit is contained in:
Zsombor Welker 2022-04-08 17:16:03 +02:00
parent 1d79a90ffb
commit 1136d94e77
2 changed files with 23 additions and 2 deletions

View file

@ -24,6 +24,10 @@
hide-selected
label="Project"
/>
<v-text-field
v-model="formData.scheduled"
label="Scheduled"
/>
<v-text-field
v-model="formData.due"
:label="recur ? 'Due*' : 'Due'"
@ -127,6 +131,7 @@ export default defineComponent({
const formData = ref({
description: '',
project: '',
scheduled: '',
due: '',
until: '',
wait: '',
@ -140,6 +145,7 @@ export default defineComponent({
formData.value = {
description: '',
project: '',
scheduled: '',
due: '',
until: '',
wait: '',
@ -168,6 +174,7 @@ export default defineComponent({
await context.root.$store.dispatch('updateTasks', [{
...formData.value,
project: formData.value.project || undefined,
scheduled: formData.value.scheduled || undefined,
due: formData.value.due || undefined,
until: formData.value.until || undefined,
wait: formData.value.wait || undefined,

View file

@ -121,6 +121,9 @@
<template v-if="status === 'waiting'" v-slot:item.wait="{ item }">
{{ displayDate(item.wait) }}
</template>
<template v-slot:item.scheduled="{ item }">
{{ displayDate(item.scheduled) }}
</template>
<template v-slot:item.due="{ item }">
{{ displayDate(item.due) }}
</template>
@ -226,6 +229,14 @@ function expiredDate(str?: string) {
return date.isBefore(moment());
}
function futureDate(str?: string) {
if (!str)
return false;
const date = moment(str);
return date.isAfter(moment());
}
function linkify(text: string) {
const regex = urlRegex();
@ -271,6 +282,7 @@ export default defineComponent({
{ text: 'Project', value: 'project' },
{ text: 'Description', value: 'description' },
{ text: 'Priority', value: 'priority' },
{ text: 'Scheduled', value: 'scheduled' },
...(status.value === 'recurring'
? [{ text: 'Recur', value: 'recur' }]
: []),
@ -286,8 +298,10 @@ export default defineComponent({
const tempTasks: { [key: string]: ComputedRef<Task[]> } = {};
for (const status of allStatus) {
tempTasks[status] = computed((): Task[] => props.tasks?.filter(task => {
if (status === "waiting") {
return task.status === "pending" && task.wait && !expiredDate(task.wait);
if (status === "waiting" || status === "pending") {
const waiting = (task.wait && !expiredDate(task.wait))
|| (task.scheduled && futureDate(task.scheduled));
return task.status === "pending" && (status === "pending" ? !waiting : waiting);
}
else if (status === "pending") {
return task.status === "pending" && !(task.wait && !expiredDate(task.wait));