1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 12:49:43 +02:00

fix: Fix filtering by task assignees

This commit is contained in:
Maksim Eltyshev 2025-06-17 16:00:37 +02:00
parent c8cb1f4a20
commit 6988864808
3 changed files with 20 additions and 8 deletions

View file

@ -361,7 +361,20 @@ export default class extends BaseModel {
if (filterUserIds.length > 0) {
cardModels = cardModels.filter((cardModel) => {
const users = cardModel.users.toRefArray();
return users.some((user) => filterUserIds.includes(user.id));
if (users.some((user) => filterUserIds.includes(user.id))) {
return true;
}
return cardModel
.getTaskListsQuerySet()
.toModelArray()
.some((taskListModel) =>
taskListModel
.getTasksQuerySet()
.toRefArray()
.some((task) => task.assigneeUserId && filterUserIds.includes(task.assigneeUserId)),
);
});
}

View file

@ -292,7 +292,7 @@ export default class extends BaseModel {
taskListModel
.getTasksQuerySet()
.toRefArray()
.some((task) => filterUserIds.includes(task.assigneeUserId)),
.some((task) => task.assigneeUserId && filterUserIds.includes(task.assigneeUserId)),
);
});
}

View file

@ -28,13 +28,13 @@ const getIdsByEndlessListId = async (
let query = 'SELECT DISTINCT card.id FROM card';
if (filterUserIds) {
query += ' JOIN card_membership ON card.id = card_membership.card_id';
query += ' JOIN task_list ON card.id = task_list.card_id';
query += ' JOIN task ON task_list.id = task.task_list_id';
query += ' LEFT JOIN card_membership ON card.id = card_membership.card_id';
query += ' LEFT JOIN task_list ON card.id = task_list.card_id';
query += ' LEFT JOIN task ON task_list.id = task.task_list_id';
}
if (filterLabelIds) {
query += ' JOIN card_label ON card.id = card_label.card_id';
query += ' LEFT JOIN card_label ON card.id = card_label.card_id';
}
queryValues.push(listId);
@ -85,8 +85,7 @@ const getIdsByEndlessListId = async (
return `$${queryValues.length}`;
});
query += ` AND card_membership.user_id IN (${inValues.join(', ')})`;
query += ` AND task.assignee_user_id IN (${inValues.join(', ')})`;
query += ` AND (card_membership.user_id IN (${inValues.join(', ')}) OR task.assignee_user_id IN (${inValues.join(', ')}))`;
}
if (filterLabelIds) {