From 0cf06961a13b235cffe980612fc8d95a11a27993 Mon Sep 17 00:00:00 2001 From: Rowan Manning Date: Wed, 25 Sep 2013 11:55:39 +0100 Subject: [PATCH 1/5] Add presenters for tasks and results --- route/index.js | 4 +++- route/task/delete.js | 3 ++- route/task/index.js | 8 +++++--- view/presenter/result.js | 16 ++++++++++++++++ view/presenter/task.js | 19 +++++++++++++++++++ 5 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 view/presenter/result.js create mode 100644 view/presenter/task.js 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; +} From 8d4002860e6f32643d9d2a436efdb6051a7fbcc8 Mon Sep 17 00:00:00 2001 From: Rowan Manning Date: Wed, 25 Sep 2013 11:57:34 +0100 Subject: [PATCH 2/5] Remove unused partials --- view/partial/full-results.html | 13 ------------- view/partial/results.html | 11 ----------- 2 files changed, 24 deletions(-) delete mode 100644 view/partial/full-results.html delete mode 100644 view/partial/results.html 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 @@ - - From d3cedfc8891843ad03784a9f1a470ee3912037f3 Mon Sep 17 00:00:00 2001 From: Rowan Manning Date: Wed, 25 Sep 2013 12:03:23 +0100 Subject: [PATCH 3/5] Start using the presenters in the views --- view/partial/tasks.html | 4 ++-- view/presenter/task.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/view/partial/tasks.html b/view/partial/tasks.html index 7363e93..868022e 100644 --- a/view/partial/tasks.html +++ b/view/partial/tasks.html @@ -8,7 +8,7 @@ {{#tasks}}
  • - +

    {{simplify-url url}}

    ({{standard}})

    {{#if last_result}} @@ -24,7 +24,7 @@

    No results

    {{/if}}
    - Delete + Delete
  • {{/tasks}} diff --git a/view/presenter/task.js b/view/presenter/task.js index 8b6342a..3f0ecc3 100644 --- a/view/presenter/task.js +++ b/view/presenter/task.js @@ -8,6 +8,7 @@ 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 From 490aac82450de7aae5a360b590e8c36c2c8d8070 Mon Sep 17 00:00:00 2001 From: Rowan Manning Date: Wed, 25 Sep 2013 12:06:14 +0100 Subject: [PATCH 4/5] Replace hrefs --- view/task/delete.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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}})
    From 0282de7f73cc8292df77169affeae93ae169d435 Mon Sep 17 00:00:00 2001 From: Rowan Manning Date: Wed, 25 Sep 2013 13:32:44 +0100 Subject: [PATCH 5/5] Split results into errors, warnings, notices --- route/task/index.js | 8 -------- view/partial/tasks.html | 8 ++++---- view/presenter/result.js | 17 +++++++++++++++++ view/presenter/task.js | 3 ++- view/task/index.html | 18 +++++++++--------- 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/route/task/index.js b/route/task/index.js index 54a27c7..ef8ceea 100644 --- a/route/task/index.js +++ b/route/task/index.js @@ -1,6 +1,5 @@ 'use strict'; -var _ = require('underscore'); var presentTask = require('../../view/presenter/task'); var presentResult = require('../../view/presenter/result'); @@ -18,13 +17,6 @@ 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: presentTask(task), results: results.map(presentResult), diff --git a/view/partial/tasks.html b/view/partial/tasks.html index 868022e..36410c6 100644 --- a/view/partial/tasks.html +++ b/view/partial/tasks.html @@ -11,15 +11,15 @@

    {{simplify-url url}}

    ({{standard}})

    - {{#if last_result}} + {{#if lastResult}}
      - {{#last_result}} + {{#lastResult}}
    • {{count.error}}
    • {{count.warning}}
    • {{count.notice}}
    • - {{/last_result}} + {{/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}} diff --git a/view/presenter/result.js b/view/presenter/result.js index 844cd91..fe08868 100644 --- a/view/presenter/result.js +++ b/view/presenter/result.js @@ -1,5 +1,7 @@ 'use strict'; +var _ = require('underscore'); + module.exports = presentResult; function presentResult (result) { @@ -12,5 +14,20 @@ function presentResult (result) { // 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 index 3f0ecc3..4dd4b3a 100644 --- a/view/presenter/task.js +++ b/view/presenter/task.js @@ -13,7 +13,8 @@ function presentTask (task) { // Present the last result if present if (task.last_result) { - task.last_result = presentResult(task.last_result); + task.lastResult = presentResult(task.last_result); + delete task.last_result; } return task; diff --git a/view/task/index.html b/view/task/index.html index 9754266..750c90f 100644 --- a/view/task/index.html +++ b/view/task/index.html @@ -106,48 +106,48 @@ {{#if results}}
    - - Errors ( 13 ) + Errors ( {{lastResult.count.error}} )
    + - Warnings ( 142 ) + Warnings ( {{lastResult.count.warning}} )
      - {{#lastResult.messages}} + {{#lastResult.warnings}}
    • {{type}} : {{code}} {{count}}

      {{message}}

    • - {{/lastResult.messages}} + {{/lastResult.warnings}}
    Back to top
    + - Notifications ( 166 ) + Notifications ( {{lastResult.count.notice}} )
      - {{#lastResult.messages}} + {{#lastResult.notices}}
    • {{type}} : {{code}} {{count}}

      {{message}}

    • - {{/lastResult.messages}} + {{/lastResult.notices}}
    Back to top