mirror of
https://github.com/plankanban/planka.git
synced 2025-07-18 20:59:44 +02:00
Initial commit
This commit is contained in:
commit
36fe34e8e1
583 changed files with 91539 additions and 0 deletions
95
client/src/models/List.js
Executable file
95
client/src/models/List.js
Executable file
|
@ -0,0 +1,95 @@
|
|||
import { Model, attr, fk } from 'redux-orm';
|
||||
|
||||
import ActionTypes from '../constants/ActionTypes';
|
||||
|
||||
export default class extends Model {
|
||||
static modelName = 'List';
|
||||
|
||||
static fields = {
|
||||
id: attr(),
|
||||
position: attr(),
|
||||
name: attr(),
|
||||
boardId: fk({
|
||||
to: 'Board',
|
||||
as: 'board',
|
||||
relatedName: 'lists',
|
||||
}),
|
||||
};
|
||||
|
||||
static reducer({ type, payload }, List) {
|
||||
switch (type) {
|
||||
case ActionTypes.BOARD_CREATE_SUCCEEDED:
|
||||
case ActionTypes.BOARD_CREATE_RECEIVED:
|
||||
case ActionTypes.BOARD_FETCH_SUCCEEDED:
|
||||
payload.lists.forEach((list) => {
|
||||
List.upsert(list);
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.LIST_CREATE:
|
||||
case ActionTypes.LIST_CREATE_RECEIVED:
|
||||
List.upsert(payload.list);
|
||||
|
||||
break;
|
||||
case ActionTypes.LIST_UPDATE:
|
||||
List.withId(payload.id).update(payload.data);
|
||||
|
||||
break;
|
||||
case ActionTypes.LIST_DELETE:
|
||||
List.withId(payload.id).deleteWithRelated();
|
||||
|
||||
break;
|
||||
case ActionTypes.LIST_CREATE_SUCCEEDED:
|
||||
List.withId(payload.localId).delete();
|
||||
List.upsert(payload.list);
|
||||
|
||||
break;
|
||||
case ActionTypes.LIST_UPDATE_RECEIVED:
|
||||
List.withId(payload.list.id).update(payload.list);
|
||||
|
||||
break;
|
||||
case ActionTypes.LIST_DELETE_RECEIVED:
|
||||
List.withId(payload.list.id).deleteWithRelated();
|
||||
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
getOrderedCardsQuerySet() {
|
||||
return this.cards.orderBy('position');
|
||||
}
|
||||
|
||||
getOrderedFilteredCardsModelArray() {
|
||||
let cardModels = this.getOrderedCardsQuerySet().toModelArray();
|
||||
|
||||
const filterUserIds = this.board.filterUsers.toRefArray().map((user) => user.id);
|
||||
const filterLabelIds = this.board.filterLabels.toRefArray().map((label) => label.id);
|
||||
|
||||
if (filterUserIds.length > 0) {
|
||||
cardModels = cardModels.filter((cardModel) => {
|
||||
const users = cardModel.users.toRefArray();
|
||||
|
||||
return users.some((user) => filterUserIds.includes(user.id));
|
||||
});
|
||||
}
|
||||
|
||||
if (filterLabelIds.length > 0) {
|
||||
cardModels = cardModels.filter((cardModel) => {
|
||||
const labels = cardModel.labels.toRefArray();
|
||||
|
||||
return labels.some((label) => filterLabelIds.includes(label.id));
|
||||
});
|
||||
}
|
||||
|
||||
return cardModels;
|
||||
}
|
||||
|
||||
deleteWithRelated() {
|
||||
this.cards.toModelArray().forEach((cardModel) => {
|
||||
cardModel.deleteWithRelated();
|
||||
});
|
||||
|
||||
this.delete();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue