diff --git a/route/index.js b/route/index.js index d33fee6..e0eaa30 100644 --- a/route/index.js +++ b/route/index.js @@ -1,5 +1,7 @@ 'use strict'; +var presentTask = require('../view/presenter/task'); + module.exports = route; // Route definition @@ -10,7 +12,7 @@ function route (app) { return next(err); } res.render('index', { - tasks: tasks, + tasks: tasks.map(presentTask), deleted: (typeof req.query.deleted !== 'undefined') }); }); diff --git a/route/task/delete.js b/route/task/delete.js index c183213..28b7713 100644 --- a/route/task/delete.js +++ b/route/task/delete.js @@ -1,6 +1,7 @@ 'use strict'; var _ = require('underscore'); +var presentTask = require('../../view/presenter/task'); module.exports = route; @@ -13,7 +14,7 @@ function route (app) { return next(); } res.render('task/delete', { - task: task + task: presentTask(task) }); }); }); diff --git a/route/task/index.js b/route/task/index.js index 6ea113b..54a27c7 100644 --- a/route/task/index.js +++ b/route/task/index.js @@ -1,6 +1,8 @@ 'use strict'; var _ = require('underscore'); +var presentTask = require('../../view/presenter/task'); +var presentResult = require('../../view/presenter/result'); module.exports = route; @@ -24,9 +26,9 @@ function route (app) { }); }); res.render('task', { - task: task, - results: results, - lastResult: results[0] || null, + task: presentTask(task), + results: results.map(presentResult), + lastResult: presentResult(results[0]) || null, added: (typeof req.query.added !== 'undefined') }); }); diff --git a/view/presenter/result.js b/view/presenter/result.js new file mode 100644 index 0000000..844cd91 --- /dev/null +++ b/view/presenter/result.js @@ -0,0 +1,16 @@ +'use strict'; + +module.exports = presentResult; + +function presentResult (result) { + + // Add additional info + result.href = '/' + result.task + '/' + result.id; + result.hrefCsv = '/' + result.task + '/' + result.id + '.csv'; + result.hrefJson = '/' + result.task + '/' + result.id + '.json'; + + // Parse date + result.date = new Date(result.date); + + return result; +} diff --git a/view/presenter/task.js b/view/presenter/task.js new file mode 100644 index 0000000..8b6342a --- /dev/null +++ b/view/presenter/task.js @@ -0,0 +1,19 @@ +'use strict'; + +var presentResult = require('./result'); + +module.exports = presentTask; + +function presentTask (task) { + + // Add additional info + task.href = '/' + task.id; + task.hrefJson = '/' + task.id + '.json'; + + // Present the last result if present + if (task.last_result) { + task.last_result = presentResult(task.last_result); + } + + return task; +}