mirror of
https://github.com/plankanban/planka.git
synced 2025-07-18 20:59:44 +02:00
feat: Filter cards by keyword with advanced capabilities (#713)
Closes #706
This commit is contained in:
parent
0830db210c
commit
25a7a3bd3b
19 changed files with 267 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
|||
import { attr, fk } from 'redux-orm';
|
||||
|
||||
import BaseModel from './BaseModel';
|
||||
import User from './User';
|
||||
import ActionTypes from '../constants/ActionTypes';
|
||||
|
||||
export default class extends BaseModel {
|
||||
|
@ -89,6 +90,37 @@ export default class extends BaseModel {
|
|||
getFilteredOrderedCardsModelArray() {
|
||||
let cardModels = this.getOrderedCardsQuerySet().toModelArray();
|
||||
|
||||
const { filterText } = this.board;
|
||||
|
||||
if (filterText !== '') {
|
||||
let re = null;
|
||||
const posSpace = filterText.indexOf(' ');
|
||||
|
||||
if (filterText.startsWith('/')) {
|
||||
re = new RegExp(filterText.substring(1), 'i');
|
||||
}
|
||||
let doRegularSearch = true;
|
||||
if (re) {
|
||||
cardModels = cardModels.filter((cardModel) => re.test(cardModel.name));
|
||||
doRegularSearch = false;
|
||||
} else if (filterText.startsWith('!') && posSpace > 0) {
|
||||
const creatorUserId = User.findUsersFromText(
|
||||
filterText.substring(1, posSpace),
|
||||
this.board.memberships.toModelArray().map((membership) => membership.user),
|
||||
);
|
||||
if (creatorUserId != null) {
|
||||
doRegularSearch = false;
|
||||
cardModels = cardModels.filter((cardModel) => cardModel.creatorUser.id === creatorUserId);
|
||||
}
|
||||
}
|
||||
if (doRegularSearch) {
|
||||
const lowerCasedFilter = filterText.toLocaleLowerCase();
|
||||
cardModels = cardModels.filter(
|
||||
(cardModel) => cardModel.name.toLocaleLowerCase().indexOf(lowerCasedFilter) >= 0,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const filterUserIds = this.board.filterUsers.toRefArray().map((user) => user.id);
|
||||
const filterLabelIds = this.board.filterLabels.toRefArray().map((label) => label.id);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue