diff --git a/frontend/pages/projects/[id]/index.vue b/frontend/pages/projects/[id]/index.vue
index 6667f9e..f6c6abb 100644
--- a/frontend/pages/projects/[id]/index.vue
+++ b/frontend/pages/projects/[id]/index.vue
@@ -10,13 +10,42 @@
-
+
+
+
+
@@ -175,6 +204,9 @@ const users = ref
([])
const isLoading = ref(true)
const selectedGroupId = ref(null)
+const selectedTagId = ref(null)
+const selectedAssigneeId = ref(null)
+const selectedStatusId = ref(null)
const dragOverStatusId = ref(null)
const dragCounter = ref(0)
const taskDrawerOpen = ref(false)
@@ -184,11 +216,32 @@ const groupFilterOptions = computed(() =>
groups.value.filter(g => !g.archived).map(g => ({ label: g.title, value: g.id }))
)
+const tagFilterOptions = computed(() =>
+ tags.value.map(t => ({ label: t.label, value: t.id }))
+)
+
+const userFilterOptions = computed(() =>
+ users.value.map(u => ({ label: u.username, value: u.id }))
+)
+
+const statusFilterOptions = computed(() =>
+ statuses.value.map(s => ({ label: s.label, value: s.id }))
+)
+
const filteredTasks = computed(() => {
let result = tasks.value.filter(t => !t.archived)
if (selectedGroupId.value) {
result = result.filter(t => t.group?.id === selectedGroupId.value)
}
+ if (selectedTagId.value) {
+ result = result.filter(t => t.tags?.some(tag => tag.id === selectedTagId.value))
+ }
+ if (selectedAssigneeId.value) {
+ result = result.filter(t => t.assignee?.id === selectedAssigneeId.value)
+ }
+ if (selectedStatusId.value) {
+ result = result.filter(t => t.status?.id === selectedStatusId.value)
+ }
return result
})