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..ef8ceea 100644 --- a/route/task/index.js +++ b/route/task/index.js @@ -1,6 +1,7 @@ 'use strict'; -var _ = require('underscore'); +var presentTask = require('../../view/presenter/task'); +var presentResult = require('../../view/presenter/result'); module.exports = route; @@ -16,17 +17,10 @@ function route (app) { if (err) { return next(err); } - results.forEach(function (result) { - var grouped = _.groupBy(result.results, 'code'); - result.messages = _.keys(grouped).map(function (group) { - grouped[group][0].count = grouped[group].length; - return grouped[group][0]; - }); - }); 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/partial/full-results.html b/view/partial/full-results.html deleted file mode 100644 index 20495e8..0000000 --- a/view/partial/full-results.html +++ /dev/null @@ -1,13 +0,0 @@ - - diff --git a/view/partial/results.html b/view/partial/results.html deleted file mode 100644 index 6c45823..0000000 --- a/view/partial/results.html +++ /dev/null @@ -1,11 +0,0 @@ - - diff --git a/view/partial/tasks.html b/view/partial/tasks.html index 7363e93..36410c6 100644 --- a/view/partial/tasks.html +++ b/view/partial/tasks.html @@ -8,23 +8,23 @@ {{#tasks}}
  • - +

    {{simplify-url url}}

    ({{standard}})

    - {{#if last_result}} + {{#if lastResult}} - Last run {{date-format last_result.date format="DD MMM YYYY"}} + Last run {{date-format lastResult.date format="DD MMM YYYY"}} {{else}}

    No results

    {{/if}}
    - Delete + Delete
  • {{/tasks}} diff --git a/view/presenter/result.js b/view/presenter/result.js new file mode 100644 index 0000000..fe08868 --- /dev/null +++ b/view/presenter/result.js @@ -0,0 +1,33 @@ +'use strict'; + +var _ = require('underscore'); + +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); + + // Split out message types + if (result.results) { + var groupedByType = _.groupBy(result.results, 'type'); + ['error', 'warning', 'notice'].forEach(function (type) { + var pluralType = type + 's'; + var results = groupedByType[type] || []; + var groupedByCode = _.groupBy(results, 'code'); + result[pluralType] = _.keys(groupedByCode).map(function (group) { + var firstMessage = groupedByCode[group][0]; + firstMessage.count = groupedByCode[group].length; + return firstMessage; + }); + }); + } + + return result; +} diff --git a/view/presenter/task.js b/view/presenter/task.js new file mode 100644 index 0000000..4dd4b3a --- /dev/null +++ b/view/presenter/task.js @@ -0,0 +1,21 @@ +'use strict'; + +var presentResult = require('./result'); + +module.exports = presentTask; + +function presentTask (task) { + + // Add additional info + task.href = '/' + task.id; + task.hrefDelete = '/' + task.id + '/delete'; + task.hrefJson = '/' + task.id + '.json'; + + // Present the last result if present + if (task.last_result) { + task.lastResult = presentResult(task.last_result); + delete task.last_result; + } + + return task; +} diff --git a/view/task/delete.html b/view/task/delete.html index 821abf7..6d0c148 100644 --- a/view/task/delete.html +++ b/view/task/delete.html @@ -3,7 +3,7 @@ Delete {{task.url}} ({{task.standard}}) {{/content}} -
    +
    Delete URL ({{simplify-url task.url}})
    diff --git a/view/task/index.html b/view/task/index.html index 059d7d3..23c40e5 100644 --- a/view/task/index.html +++ b/view/task/index.html @@ -106,48 +106,48 @@ {{#if results}}
    - - Errors ( 13 ) + Errors ( {{lastResult.count.error}} )
    Back to top
    + - Warnings ( 142 ) + Warnings ( {{lastResult.count.warning}} )
    Back to top
    + - Notifications ( 166 ) + Notifications ( {{lastResult.count.notice}} )
    Back to top