diff --git a/frontend/pages/index.vue b/frontend/pages/index.vue index 614e2b5..0b84c6a 100644 --- a/frontend/pages/index.vue +++ b/frontend/pages/index.vue @@ -93,7 +93,7 @@ export default defineComponent({ const allModes = ['Tasks', 'Projects']; const project = ref(''); - const projects: ComputedRef = computed(() => store.getters.projects); + const projects: ComputedRef = computed(() => store.getters.activeProjects); watch(projects, () => { if (projects.value.includes(project.value)) return; diff --git a/frontend/store/index.ts b/frontend/store/index.ts index 710d4fd..9c5377e 100644 --- a/frontend/store/index.ts +++ b/frontend/store/index.ts @@ -19,8 +19,17 @@ export const state = () => ({ export type RootState = ReturnType; +const projectsFromTasks = (tasks: Task[]) => Array.from(new Set( + tasks + .map(task => task.project) + .filter((project): project is string => project !== undefined) +)); + export const getters: GetterTree = { - projects: state => state.tasks.map(task => task.project).filter(p => p !== undefined), + projects: state => projectsFromTasks(state.tasks), + activeProjects: state => projectsFromTasks( + state.tasks.filter(task => task.status !== 'completed' && task.status !== 'deleted') + ), tags: state => state.tasks.reduce((tags: string[], task) => { return task.tags ? tags.concat(task.tags) : tags; }, [])