Skip to content

Commit 6a0e2d2

Browse files
committedJun 23, 2016
fin
1 parent 6a7005e commit 6a0e2d2

File tree

5 files changed

+48
-13
lines changed

5 files changed

+48
-13
lines changed
 

‎package.json

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"body-parser": "^1.15.2",
3333
"compression": "^1.6.2",
3434
"express": "^4.14.0",
35+
"moment": "^2.13.0",
3536
"mongoose": "^4.5.1",
3637
"pug": "^2.0.0-beta3",
3738
"request": "^2.72.0",

‎src/controllers/tasks.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,30 @@ router.post('/', (req, res) => {
2929
});
3030

3131
router.post('/:id/complete', (req, res) => {
32-
res.redirect('/tasks');
32+
Task.findById(req.params.id, (err, task) => {
33+
task.update({ isComplete: !task.isComplete }, () => {
34+
res.redirect('/tasks');
35+
});
36+
});
3337
});
3438

3539
router.post('/:id/delete', (req, res) => {
36-
res.redirect('/tasks');
40+
Task.findByIdAndRemove(req.params.id, () => {
41+
res.redirect('/tasks');
42+
});
3743
});
3844

3945
router.get('/:id/edit', (req, res) => {
40-
res.render('tasks/new');
46+
const priorities = Priority.find();
47+
const categories = Category.find();
48+
Task.findById(req.params.id, (err, task) => {
49+
const viewTask = new ViewTask(task, priorities);
50+
res.render('tasks/new', { task: viewTask, priorities, categories });
51+
});
4152
});
4253

4354
router.post('/:id', (req, res) => {
44-
res.redirect('/tasks');
55+
Task.findByIdAndUpdate(req.params.id, req.body, () => {
56+
res.redirect('/tasks');
57+
});
4558
});

‎src/models/view-task.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
/* eslint-disable no-underscore-dangle */
2+
import moment from 'moment';
3+
14
function ViewTask(task, priorities) {
5+
this.id = task._id;
26
this.name = task.name;
3-
this.due = task.due.toLocaleDateString();
7+
this.due = moment(task.due).format('YYYY-MM-DD');
48
this.priority = priorities.find(p => p.value === task.priority);
59
this.category = task.category;
610
this.isComplete = task.isComplete;
7-
this.createdAt = task.createdAt.toLocaleDateString();
11+
this.createdAt = moment(task.createdAt).format('YYYY-MM-DD');
812
}
913

1014
module.exports = ViewTask;

‎views/tasks/index.pug

+14
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ block content
55
table.table.table-striped
66
thead
77
tr
8+
th
9+
th
10+
th
811
th Name
912
th Due
1013
th Priority
@@ -14,6 +17,17 @@ block content
1417
tbody
1518
each task in viewTasks
1619
tr(style='background-color:' + task.priority.color)
20+
td
21+
a.btn.btn-success.btn-xs(href='/tasks/' + task.id + '/edit')
22+
i.fa.fa-cog.fa-fw
23+
td
24+
form(action='/tasks/' + task.id + '/complete', method='post')
25+
button.btn.btn-primary.btn-xs(type='submit')
26+
i.fa.fa-flash.fa-fw
27+
td
28+
form(action='/tasks/' + task.id + '/delete', method='post')
29+
button.btn.btn-danger.btn-xs(type='submit')
30+
i.fa.fa-trash.fa-fw
1731
td= task.name
1832
td= task.due
1933
td= task.priority.name

‎views/tasks/new.pug

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
extends ../shared/template
22
block content
3-
h1 New
3+
if task
4+
h1 Edit
5+
else
6+
h1 New
47

58
.row
69
.col-xs-6
7-
form(action='/tasks', method='post')
10+
form(action= task ? '/tasks/' + task.id : '/tasks', method='post')
811
.form-group
912
label Name
10-
input.form-control(type='text', name='name')
13+
input.form-control(type='text', name='name', value=task && task.name)
1114
.form-group
1215
label Due
13-
input.form-control(type='date', name='due')
16+
input.form-control(type='date', name='due', value=task && task.due)
1417
.form-group
1518
label Priority
1619
select.form-control(name='priority')
1720
each priority in priorities
18-
option(value=priority.value)= priority.name
21+
option(value=priority.value, selected=task && (priority.value === task.priority.value))= priority.name
1922
.form-group
2023
label Category
2124
select.form-control(name='category')
2225
each category in categories
23-
option= category.name
26+
option(selected=task && (category.name === task.category))= category.name
2427
.form-group
25-
button.btn.btn-primary(type='submit') Add
28+
button.btn.btn-primary(type='submit')= task ? 'Update' : 'Create'
2629
.col-xs-6

0 commit comments

Comments
 (0)
Please sign in to comment.