Split results into errors, warnings, notices

This commit is contained in:
Rowan Manning
2013-09-25 13:32:44 +01:00
parent 490aac8245
commit 0282de7f73
5 changed files with 32 additions and 22 deletions

View File

@@ -1,6 +1,5 @@
'use strict'; 'use strict';
var _ = require('underscore');
var presentTask = require('../../view/presenter/task'); var presentTask = require('../../view/presenter/task');
var presentResult = require('../../view/presenter/result'); var presentResult = require('../../view/presenter/result');
@@ -18,13 +17,6 @@ function route (app) {
if (err) { if (err) {
return next(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', { res.render('task', {
task: presentTask(task), task: presentTask(task),
results: results.map(presentResult), results: results.map(presentResult),

View File

@@ -11,15 +11,15 @@
<a class="well task-card-link crunch-bottom" title="Details for URL {{simplify-url url}}" href="{{href}}"> <a class="well task-card-link crunch-bottom" title="Details for URL {{simplify-url url}}" href="{{href}}">
<p class="h3">{{simplify-url url}}</p> <p class="h3">{{simplify-url url}}</p>
<p class="h5">({{standard}})</p> <p class="h5">({{standard}})</p>
{{#if last_result}} {{#if lastResult}}
<ul class="clearfix list-unstyled floated-list task-stats"> <ul class="clearfix list-unstyled floated-list task-stats">
{{#last_result}} {{#lastResult}}
<li class="danger" title="Number of errors ({{count.error}})">{{count.error}}</li> <li class="danger" title="Number of errors ({{count.error}})">{{count.error}}</li>
<li class="warning" title="Number of warnings ({{count.warning}})">{{count.warning}}</li> <li class="warning" title="Number of warnings ({{count.warning}})">{{count.warning}}</li>
<li class="info last" title="Number of notifications ({{count.notice}})">{{count.notice}}</li> <li class="info last" title="Number of notifications ({{count.notice}})">{{count.notice}}</li>
{{/last_result}} {{/lastResult}}
</ul> </ul>
Last run {{date-format last_result.date format="DD MMM YYYY"}} Last run {{date-format lastResult.date format="DD MMM YYYY"}}
{{else}} {{else}}
<p class="no-results">No results</p> <p class="no-results">No results</p>
{{/if}} {{/if}}

View File

@@ -1,5 +1,7 @@
'use strict'; 'use strict';
var _ = require('underscore');
module.exports = presentResult; module.exports = presentResult;
function presentResult (result) { function presentResult (result) {
@@ -12,5 +14,20 @@ function presentResult (result) {
// Parse date // Parse date
result.date = new Date(result.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; return result;
} }

View File

@@ -13,7 +13,8 @@ function presentTask (task) {
// Present the last result if present // Present the last result if present
if (task.last_result) { if (task.last_result) {
task.last_result = presentResult(task.last_result); task.lastResult = presentResult(task.last_result);
delete task.last_result;
} }
return task; return task;

View File

@@ -106,48 +106,48 @@
{{#if results}} {{#if results}}
<div class="heading label-danger showing first" id="errors"> <div class="heading label-danger showing first" id="errors">
<span data-role="expander" class="pull-right expander"> - </span> <span data-role="expander" class="pull-right expander"> - </span>
Errors ( 13 ) Errors ( {{lastResult.count.error}} )
</div> </div>
<div class="task-danger tasks-list collapse clearfix in"> <div class="task-danger tasks-list collapse clearfix in">
<ul class="list-unstyled"> <ul class="list-unstyled">
{{#lastResult.messages}} {{#lastResult.errors}}
<li> <li>
<p class="crunch rule-name">{{type}} : {{code}} <span class="badge">{{count}}</span></p> <p class="crunch rule-name">{{type}} : {{code}} <span class="badge">{{count}}</span></p>
<p>{{message}}</p> <p>{{message}}</p>
</li> </li>
{{/lastResult.messages}} {{/lastResult.errors}}
</ul> </ul>
<a class="pull-right" href="#top" data-role="top">Back to top</a> <a class="pull-right" href="#top" data-role="top">Back to top</a>
</div> </div>
<div class="heading label-warning" id="warnings"> <div class="heading label-warning" id="warnings">
<span data-role="expander" class="pull-right expander"> + </span> <span data-role="expander" class="pull-right expander"> + </span>
Warnings ( 142 ) Warnings ( {{lastResult.count.warning}} )
</div> </div>
<div class="task-warning tasks-list collapse clearfix"> <div class="task-warning tasks-list collapse clearfix">
<ul class="list-unstyled"> <ul class="list-unstyled">
{{#lastResult.messages}} {{#lastResult.warnings}}
<li> <li>
<p class="crunch rule-name">{{type}} : {{code}} <span class="badge">{{count}}</span></p> <p class="crunch rule-name">{{type}} : {{code}} <span class="badge">{{count}}</span></p>
<p>{{message}}</p> <p>{{message}}</p>
</li> </li>
{{/lastResult.messages}} {{/lastResult.warnings}}
</ul> </ul>
<a class="pull-right" href="#top" data-role="top">Back to top</a> <a class="pull-right" href="#top" data-role="top">Back to top</a>
</div> </div>
<div class="heading label-info" id="notifications"> <div class="heading label-info" id="notifications">
<span data-role="expander" class="pull-right expander"> + </span> <span data-role="expander" class="pull-right expander"> + </span>
Notifications ( 166 ) Notifications ( {{lastResult.count.notice}} )
</div> </div>
<div class="task-info tasks-list collapse clearfix"> <div class="task-info tasks-list collapse clearfix">
<ul class="list-unstyled"> <ul class="list-unstyled">
{{#lastResult.messages}} {{#lastResult.notices}}
<li> <li>
<p class="crunch rule-name">{{type}} : {{code}} <span class="badge">{{count}}</span></p> <p class="crunch rule-name">{{type}} : {{code}} <span class="badge">{{count}}</span></p>
<p>{{message}}</p> <p>{{message}}</p>
</li> </li>
{{/lastResult.messages}} {{/lastResult.notices}}
</ul> </ul>
<a class="pull-right" href="#top" data-role="top">Back to top</a> <a class="pull-right" href="#top" data-role="top">Back to top</a>
</div> </div>