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
73
client/src/selectors/path.js
Executable file
73
client/src/selectors/path.js
Executable file
|
@ -0,0 +1,73 @@
|
|||
import { createSelector as createReselectSelector } from 'reselect';
|
||||
import { createSelector as createReduxOrmSelector } from 'redux-orm';
|
||||
|
||||
import orm from '../orm';
|
||||
import { dbSelector } from './common';
|
||||
import matchPaths from '../utils/match-paths';
|
||||
import Paths from '../constants/Paths';
|
||||
|
||||
export const pathnameSelector = ({
|
||||
router: {
|
||||
location: { pathname },
|
||||
},
|
||||
}) => pathname;
|
||||
|
||||
// eslint-disable-next-line max-len
|
||||
export const pathsMatchSelector = createReselectSelector(pathnameSelector, (pathname) => matchPaths(pathname, Object.values(Paths)));
|
||||
|
||||
export const pathSelector = createReduxOrmSelector(
|
||||
orm,
|
||||
dbSelector,
|
||||
pathsMatchSelector,
|
||||
({ Project, Board, Card }, pathsMatch) => {
|
||||
if (pathsMatch) {
|
||||
switch (pathsMatch.path) {
|
||||
case Paths.PROJECTS: {
|
||||
const projectModel = Project.withId(pathsMatch.params.id);
|
||||
|
||||
return {
|
||||
projectId: projectModel && projectModel.id,
|
||||
};
|
||||
}
|
||||
case Paths.BOARDS: {
|
||||
const boardModel = Board.withId(pathsMatch.params.id);
|
||||
const projectModel = boardModel && boardModel.project;
|
||||
|
||||
if (!projectModel) {
|
||||
return {
|
||||
boardId: null,
|
||||
projectId: null,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
boardId: boardModel.id,
|
||||
projectId: projectModel.id,
|
||||
};
|
||||
}
|
||||
case Paths.CARDS: {
|
||||
const cardModel = Card.withId(pathsMatch.params.id);
|
||||
const boardModel = cardModel && cardModel.board;
|
||||
const projectModel = boardModel && boardModel.project;
|
||||
|
||||
if (!projectModel) {
|
||||
return {
|
||||
cardId: null,
|
||||
boardId: null,
|
||||
projectId: null,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
cardId: cardModel.id,
|
||||
boardId: boardModel.id,
|
||||
projectId: projectModel.id,
|
||||
};
|
||||
}
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
},
|
||||
);
|
Loading…
Add table
Add a link
Reference in a new issue