@@ -10,7 +13,7 @@ const CommentsList = ({ comments, removeComent }) => (
@@ -23,7 +26,14 @@ const CommentsList = ({ comments, removeComent }) => (
CommentsList.propTypes = {
comments: PropTypes.array,
- removeComent: PropTypes.func,
+ deleteComment: PropTypes.func,
};
-export default CommentsList;
+import { deleteComment } from '../state';
+
+export default connect(
+ state => ({
+ comments: state.rest.comments.items,
+ }),
+ { deleteComment }
+)(CommentsList);
diff --git a/frontend/src/containers/TaskDetails/TaskInfo.jsx b/frontend/src/containers/TaskDetails/TaskInfo.jsx
deleted file mode 100644
index 0258a9f..0000000
--- a/frontend/src/containers/TaskDetails/TaskInfo.jsx
+++ /dev/null
@@ -1,17 +0,0 @@
-
-import { connect } from 'react-redux';
-import { removeTask } from 'reduxApp/modules/tasks';
-
-import TaskInfoComponent from 'components/TaskInfo/';
-
-
-const TaskInfo = connect(
- state => ({
- task: state.tasks.task,
- }),
- { removeTask }
-)(TaskInfoComponent);
-
-
-export default TaskInfo;
-
diff --git a/frontend/src/containers/TaskDetails/TaskInfo/index.jsx b/frontend/src/containers/TaskDetails/TaskInfo/index.jsx
new file mode 100644
index 0000000..77ffcaa
--- /dev/null
+++ b/frontend/src/containers/TaskDetails/TaskInfo/index.jsx
@@ -0,0 +1,33 @@
+
+import { connect } from 'react-redux';
+
+import React, { PropTypes } from 'react';
+import { Button } from 'react-bootstrap';
+
+const TaskInfo = ({ task: { title, description }, deleteTask }) => (
+
+
+
{title}
+
+ {description}
+
+
+
+
+);
+
+TaskInfo.propTypes = {
+ task: PropTypes.object,
+ deleteTask: PropTypes.func,
+};
+
+import { deleteTask } from '../state';
+
+export default connect(
+ state => ({
+ task: state.rest.tasks.item,
+ }),
+ { deleteTask }
+)(TaskInfo);
+
+
diff --git a/frontend/src/containers/TaskDetails/index.jsx b/frontend/src/containers/TaskDetails/index.jsx
index 31cb176..aa90264 100644
--- a/frontend/src/containers/TaskDetails/index.jsx
+++ b/frontend/src/containers/TaskDetails/index.jsx
@@ -1,8 +1,8 @@
import React from 'react';
-import TaskInfo from './TaskInfo';
-import AddComentForm from './AddComentForm';
-import CommentsList from './CommentsList';
+import TaskInfo from './TaskInfo/';
+import AddComentForm from './AddComentForm/';
+import CommentsList from './CommentsList/';
const TaskDetails = () => (
@@ -12,8 +12,7 @@ const TaskDetails = () => (
);
-import loading from 'containers/Application/loading';
-import { loadTask } from 'reduxApp/modules/tasks';
-import { loadComments } from 'reduxApp/modules/comments';
+import loading from 'HOC/loading';
+import { showPage } from './state';
-export default loading([loadTask, loadComments])(TaskDetails);
+export default loading([showPage])(TaskDetails);
diff --git a/frontend/src/containers/TaskDetails/state.jsx b/frontend/src/containers/TaskDetails/state.jsx
new file mode 100644
index 0000000..65fcbf1
--- /dev/null
+++ b/frontend/src/containers/TaskDetails/state.jsx
@@ -0,0 +1,35 @@
+
+import { push } from 'redux-router';
+
+
+import { getActions } from 'reduxApp/modules/rest';
+const comments = getActions('/api/tasks/:id/comments', 'comments');
+const tasks = getActions('/api/tasks', 'tasks');
+
+// PUBLICK
+export const deleteTask = () => (dispatch, getState) => {
+ const { router: { params: { id, projectId } } } = getState();
+ return dispatch(tasks.remove({ id }))
+ .then(() => dispatch(push(`/projects/${projectId}/tasks`)));
+};
+
+export const addComment = (text) => (dispatch, getState) => {
+ const {
+ auth: { user: { name } },
+ } = getState();
+
+ return dispatch(comments.create({ text, userName: name }))
+ .then(() => dispatch(comments.loadAll()));
+};
+
+export const deleteComment = (comment) => (dispatch, getState) =>
+ dispatch(comments.remove(comment))
+ .then(() => dispatch(comments.loadAll()));
+
+export const showPage = ({ id }) => (dispatch) => {
+ comments.setUrl(`/api/tasks/${id}/comments`);
+ return Promise.all([
+ dispatch(comments.loadAll()),
+ dispatch(tasks.loadOne(id)),
+ ]);
+};
diff --git a/frontend/src/containers/TasksList/TaskFilter.jsx b/frontend/src/containers/TasksList/TaskFilter.jsx
deleted file mode 100644
index 9b48fe7..0000000
--- a/frontend/src/containers/TasksList/TaskFilter.jsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { connect } from 'react-redux';
-
-import * as action from 'reduxApp/modules/taskFilter';
-// import { loadTasks } from 'reduxApp/modules/tasks';
-
-import TaskFilter from 'components/TaskFilter/';
-
-export default connect(
- state => ({
- statuses: state.tasks.statuses,
- users: state.users.users,
- userId: state.taskFilter.userId,
- status: state.taskFilter.status,
- }),
- {
- changeFilter: action.changeFilter,
- findTask: action.findTask,
- },
-)(TaskFilter);
-
diff --git a/frontend/src/containers/TasksList/TaskFilter/StatusSelect.jsx b/frontend/src/containers/TasksList/TaskFilter/StatusSelect.jsx
new file mode 100644
index 0000000..e4d94aa
--- /dev/null
+++ b/frontend/src/containers/TasksList/TaskFilter/StatusSelect.jsx
@@ -0,0 +1,30 @@
+
+import React from 'react';
+import Select from 'react-select';
+import { connect } from 'react-redux';
+
+const StatusSelect = ({ statuses, status, changeStatus }) => (
+