list recent tasks
This commit is contained in:
@@ -7,7 +7,7 @@ const taskStore = useTaskStore()
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ul class="task-list">
|
<ul class="task-list">
|
||||||
<li v-for="task in taskStore.tasks" :key="task.id">
|
<li v-for="task in taskStore.recentTasks" :key="task.id">
|
||||||
{{ task.title }} | {{ task.totalEstimation }} minutes |
|
{{ task.title }} | {{ task.totalEstimation }} minutes |
|
||||||
{{ formatDate(task.date) }}
|
{{ formatDate(task.date) }}
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import type { Taskable } from '../interfaces/taskable'
|
import type { Taskable } from '../interfaces/taskable'
|
||||||
|
import { Task } from '../models/task'
|
||||||
|
|
||||||
interface StoredTaskable extends Omit<Taskable, 'date'> {
|
interface StoredTaskable extends Omit<Taskable, 'date'> {
|
||||||
date: string
|
date: string
|
||||||
@@ -10,6 +11,7 @@ export interface TaskStoreState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const useTaskStore = defineStore('task-store', {
|
export const useTaskStore = defineStore('task-store', {
|
||||||
|
persist: true,
|
||||||
state: (): TaskStoreState => ({
|
state: (): TaskStoreState => ({
|
||||||
tasks: []
|
tasks: []
|
||||||
}),
|
}),
|
||||||
@@ -17,7 +19,6 @@ export const useTaskStore = defineStore('task-store', {
|
|||||||
saveTask(task: Taskable) {
|
saveTask(task: Taskable) {
|
||||||
this.tasks.push({
|
this.tasks.push({
|
||||||
...task,
|
...task,
|
||||||
totalEstimation: task.totalEstimation,
|
|
||||||
date: task.date.toISOString()
|
date: task.date.toISOString()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -25,5 +26,13 @@ export const useTaskStore = defineStore('task-store', {
|
|||||||
this.tasks = []
|
this.tasks = []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
persist: true
|
getters: {
|
||||||
|
recentTasks(state) {
|
||||||
|
return state.tasks
|
||||||
|
.map((task) =>
|
||||||
|
Task.fromTaskable({ ...task, date: new Date(task.date) })
|
||||||
|
)
|
||||||
|
.sort((a, b) => (a.date > b.date ? -1 : 1))
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
14
src/views/task/TaskView.vue
Normal file
14
src/views/task/TaskView.vue
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
defineProps<{
|
||||||
|
id: string
|
||||||
|
}>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="task-view"></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.task-view {
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user