Skip to content

Commit e40a01b

Browse files
committed
Feat: nice sidebar tasks
1 parent eb61a99 commit e40a01b

File tree

11 files changed

+95
-39
lines changed

11 files changed

+95
-39
lines changed

db/getAllTasksById.sql

+5-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
SELECT tasks.task_id, content, parent_project_id, completed FROM tasks JOIN task_users on tasks.task_id = task_users.task_id WHERE user_id = $1 Order By tasks.task_id
1+
SELECT t.task_id, content, parent_project_id, completed, p.title
2+
FROM tasks t
3+
JOIN task_users tu on t.task_id = tu.task_id
4+
JOIN projects p on p.id = t.parent_project_id
5+
WHERE user_id = $1 Order By p.id

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,6 @@
4242
},
4343
"devDependencies": {
4444
"redux-devtools-extension": "^2.13.2"
45-
}
45+
},
46+
"proxy": "http://localhost:3001"
4647
}

server/controllers/projects_controller.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ module.exports = {
3636
},
3737
completedTask: (req, res, next) => {
3838
const dbInstance = req.app.get('db');
39-
console.log(req.params.taskID);
39+
console.log(req.params.taskID, "Here is your param");
4040
dbInstance
4141
.completedTask([req.params.taskID])
4242
.then(response => res.status(200).send(response))
@@ -47,7 +47,7 @@ module.exports = {
4747
},
4848
undoCompletedTask: (req, res, next) => {
4949
const dbInstance = req.app.get('db');
50-
console.log(req.params.taskID);
50+
console.log(req.params.taskID, "here is your other param");
5151
dbInstance
5252
.undoCompletedTask([req.params.taskID])
5353
.then(response => res.status(200).send(response))

server/controllers/tasks_controller.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ module.exports = {
133133
console.log(req.user.id, req.body.userID, "CHECK RIGHT HERE YOURS IS FIRST")
134134
dbInstance.assignToTask([req.body.taskID, req.body.userID, req.body.projectID])
135135
.then(response => {
136-
res.status(200).send(response)
136+
res.status(200).srsend(response)
137137
})
138138
.catch(console.log)
139139
},

server/index.js

+4-16
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,10 @@ app.use(passport.session());
6464
///////////////////////////////////////////////////////////////////////////
6565
//PERSISTENCE
6666
passport.serializeUser(function(user, done) {
67-
console.log(`SERIALIZE USER: ${user.id} | ${user.username}`);
6867
done(null, user.id);
6968
});
7069

7170
passport.deserializeUser(function(id, done) {
72-
console.log(`DESERIALIZE USER: ${id}`);
7371
// db.users
7472
// .findOne({ where: { id: id } })
7573
// .then(user => {
@@ -95,11 +93,9 @@ passport.use(
9593
const hashData = hashPassword.saltHashString(password);
9694
db.createLocalUser([username, hashData.stringHash, hashData.salt])
9795
.then((user) => {
98-
console.log(`Created new user: ${user[0].id} | ${user[0].username}`)
9996
return done(null, user[0]);
10097
})
10198
.catch(err => {
102-
console.log('Error creating and authenticating local user: ', err);
10399
if (err) {
104100
return done(err);
105101
}})
@@ -110,7 +106,6 @@ passport.use(
110106
user[0].password_hash !=
111107
hashPassword.hash(password, user[0].salt).stringHash // salt and hashing password to compare
112108
) {
113-
console.log('Wrong Password!')
114109
return done(null, false, {message: 'Incorrect Password'});
115110
}
116111
if (user[0] && user[0].password_hash == hashPassword.hash(password, user[0].salt).stringHash) {
@@ -121,7 +116,6 @@ passport.use(
121116
}
122117
})
123118
.catch(err => {
124-
console.log('Error authenticating local user: ', err);
125119
if (err) {
126120
return done(err);
127121
}
@@ -146,13 +140,10 @@ passport.use(
146140
db
147141
.createGoogleUser([googleID, profile.name.givenName])
148142
.then(user => {
149-
console.log(
150-
`Created Google user: ${user[0].id} ${user[0].username}`
151-
);
152143
return done(null, user[0]);
153144
})
154145
.catch(err => {
155-
console.log('Failed to create Google user: ', err);
146+
156147
return done(err);
157148
});
158149
} else {
@@ -184,13 +175,11 @@ passport.use(
184175
db
185176
.createFacebookUser([facebookID, displayName])
186177
.then(user => {
187-
console.log(
188-
`Created Facebook user: ${user[0].id} ${user[0].username}`
189-
);
178+
190179
return done(null, user[0]);
191180
})
192181
.catch(err => {
193-
console.log('Failed to create Facebook user: ', err);
182+
194183
return done(err);
195184
});
196185
} else {
@@ -239,7 +228,7 @@ app.post(
239228
// failureRedirect: '/',
240229
failureFlash: true
241230
}), (req, res) => {
242-
console.log('LOGIN: ', req.user)
231+
243232
if (req.user) res.send(req.user)
244233
});
245234
// app.post('/login', usersController.login, (req, res) => console.log(req.user));
@@ -249,7 +238,6 @@ app.post('/register', passport.authenticate('local', {
249238
// failureRedirect: '/',
250239
failureFlash: true
251240
}), (req, res) => {
252-
console.log(req)
253241
if (req.user) res.send(req.user)
254242
// if (req.user) console.log('poop');
255243
});

src/components/Sidebar/Menu/TaskMenu/TaskMenu.css

+8-3
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99

1010
.task-list-header {
1111
font-family: 'Open sans condensed';
12-
font-size: 20px;
12+
font-size: 30px;
1313
font-weight: bold;
14+
margin-bottom: 0;
1415
}
1516

1617
.sidebar-list {
@@ -19,8 +20,12 @@
1920

2021
.sidebar-task {
2122
cursor: pointer;
23+
font-family: 'Open sans condensed';
24+
font-size: 20px;
25+
font-weight: 300;
26+
margin-bottom: 0;
2227
}
2328

24-
.sidebar-task .complete{
29+
.complete{
2530
text-decoration: line-through;
26-
}
31+
}

src/components/Sidebar/Menu/TaskMenu/TaskMenu.js

+29-8
Original file line numberDiff line numberDiff line change
@@ -23,36 +23,57 @@ class TaskMenu extends Component{
2323
this.props.getAllTasks();
2424
}
2525

26+
''
27+
2628

2729
completedTask(taskID){
30+
console.log(taskID);
2831
this.props.completedTask(taskID).then(response => {
2932
this.props.getAllTasks();
33+
if (this.props.match.params.id){
3034
this.props.getTasks(this.props.match.params.id)
35+
}
3136
})
3237
}
3338
undoCompletedTask(taskID){
3439
this.props.undoCompletedTask(taskID).then(response => {
3540
this.props.getAllTasks();
36-
this.props.getTasks(this.props.match.params.id)
41+
if (this.props.match.params.id){
42+
this.props.getTasks(this.props.match.params.id)
43+
}
3744
})
3845
}
3946
render(){
40-
const taskList = this.props.assignedTasks.map((task, index) => {
41-
console.log(task);
47+
48+
const taskList = this.props.assignedTasks.map((task, index, arr) => {
49+
4250
return (
43-
<li key={index} className="sidebar-task" >
44-
<div className={ 'sidebar-task '.concat(task.completed ? 'complete' : null)} onClick={task.completed === true ? () => this.undoCompletedTask(task.task_id) : () =>this.completedTask(task.task_id)}>
45-
{task.content}
46-
</div>
47-
</li>
51+
<div key={index}>
52+
<div className=" task-section" >
53+
<div>
54+
<p className="task-list-header" >{task.title}</p>
55+
{ task.tasks.map((currTask, ind) => {
56+
{console.log(currTask);}
57+
return <div key={ind} className={ 'sidebar-task '.concat(currTask.completed ? 'complete' : null)}
58+
onClick={currTask.completed === true ? () => this.undoCompletedTask(currTask.id) :
59+
() =>this.completedTask(currTask.id)} >
60+
<li>{currTask.content}</li>
61+
</div>
62+
})}
63+
</div>
64+
</div>
65+
</div>
4866
)
4967
})
68+
69+
5070
return (
5171
<div className="task-menu">
5272
<div className="container">
5373
<div className="header-container task-list-header" >
5474
To-do
5575
</div>
76+
<hr />
5677
<ul className="sidebar-list">
5778
{ taskList }
5879
</ul>

src/ducks/reducers/dashboardReducer.js

+39-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const initialState = {
55
assignedTasks: [],
66
loading: false,
77
newProjectTitle: '',
8-
teamProjects: []
8+
teamProjects: [],
9+
changed: 0
910
};
1011

1112
// Action Types
@@ -37,10 +38,45 @@ export default function reducer(state = initialState, action) {
3738
case GET_USER_ASSIGNED_TASKS + '_PENDING':
3839
return Object.assign({}, state, { loading: true });
3940
case GET_USER_ASSIGNED_TASKS + '_FULFILLED':
40-
console.log(action.payload, "Here are your returned tasks");
41+
42+
let sortedTasksArray = []
43+
let sortedAssignedTasks = { title: "", tasks: [] }
44+
let tasksObject = {id: 0, content: "", completed: false}
45+
console.log(action.payload, "Here is your payload");
46+
47+
function sortArray(){
48+
for (let item = 0; item < action.payload.length; item++){
49+
if (sortedTasksArray.length === 0){
50+
51+
sortedAssignedTasks.title = action.payload[item].title
52+
tasksObject.id=action.payload[item].task_id
53+
tasksObject.content=action.payload[item].content
54+
tasksObject.completed=action.payload[item].completed
55+
sortedAssignedTasks.tasks.push(tasksObject)
56+
sortedTasksArray.push(sortedAssignedTasks)
57+
58+
} else if(sortedTasksArray.findIndex(currItem => currItem.title === action.payload[item].title) >= 0){
59+
tasksObject.id=action.payload[item].task_id
60+
tasksObject.content=action.payload[item].content
61+
tasksObject.completed=action.payload[item].completed
62+
sortedTasksArray[sortedTasksArray.findIndex(currItem => currItem.title === action.payload[item].title)].tasks.push(tasksObject)
63+
} else{
64+
sortedAssignedTasks.title = action.payload[item].title
65+
tasksObject.id=action.payload[item].task_id
66+
tasksObject.content=action.payload[item].content
67+
tasksObject.completed=action.payload[item].completed
68+
sortedAssignedTasks.tasks.push(tasksObject)
69+
sortedTasksArray.push(sortedAssignedTasks)
70+
}
71+
sortedAssignedTasks = { title: "", tasks: []}
72+
tasksObject = {id: "", content: "", completed: false}
73+
}
74+
return sortedTasksArray
75+
}
76+
sortArray()
4177
return Object.assign({}, state, {
4278
loading: false,
43-
assignedTasks: action.payload
79+
assignedTasks: sortedTasksArray
4480
});
4581
//Adds project title to database from create new project
4682
case UPDATE_NEWPROJECTTITLE:

src/ducks/reducers/projectViewReducer.js

+1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export function getCards2(projectID){
108108
}
109109
}
110110
export function getTasks(projectID){
111+
console.log(projectID,": Project id");
111112
return {
112113
type: GET_TASKS,
113114
payload: axios.get(`/api/getAllTasks/${projectID}`).then(response => {

src/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { BrowserRouter } from 'react-router-dom';
66
import { Provider } from 'react-redux';
77
import createStoreWithMiddleware from './store';
88
// import registerServiceWorker from './registerServiceWorker';
9-
import startConnection from './utils/sockets/connections';
9+
// import startConnection from './utils/sockets/connections';
1010

11-
startConnection(createStoreWithMiddleware);
11+
// startConnection(createStoreWithMiddleware);
1212

1313
ReactDOM.render(
1414
<Provider store={createStoreWithMiddleware}>

src/store.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import promiseMiddleware from 'redux-promise-middleware';
44
import { composeWithDevTools } from 'redux-devtools-extension';
55
import {Provider} from 'react-redux';
66
import store from './store';
7-
import {socketMiddleware} from './utils/sockets/connections'; // Custom middleware for socket commands
7+
// import {socketMiddleware} from './utils/sockets/connections'; // Custom middleware for socket commands
88

99
// redux Middleware for handling socket traffic
1010
// const createStoreWithMiddleware = applyMiddleware(socketMiddleware)(createStore);
@@ -15,6 +15,6 @@ import {socketMiddleware} from './utils/sockets/connections'; // Custom middlewa
1515

1616
const createStoreWithMiddleware = createStore(
1717
reducers,
18-
composeWithDevTools(applyMiddleware(socketMiddleware, promiseMiddleware()))
18+
composeWithDevTools(applyMiddleware(promiseMiddleware()))
1919
);
2020
export default createStoreWithMiddleware;

0 commit comments

Comments
 (0)