Files
pa11y-dashboard/view/presenter/result.js
Rowan Manning b24076abf1 Tooling update (#184)
* Use a common Makefile/build process

* Use ESLint with the pa11y lint config
2017-03-21 13:41:46 +00:00

52 lines
1.7 KiB
JavaScript

// This file is part of Pa11y Dashboard.
//
// Pa11y Dashboard is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Pa11y Dashboard is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
'use strict';
const _ = require('underscore');
const presentIgnoreRules = require('./ignore');
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);
// Enhance the ignored rules
result.ignore = presentIgnoreRules(result.ignore);
// Split out message types
if (result.results) {
const groupedByType = _.groupBy(result.results, 'type');
['error', 'warning', 'notice'].forEach(type => {
const pluralType = `${type}s`;
const results = groupedByType[type] || [];
const groupedByCode = _.groupBy(results, 'code');
result[pluralType] = _.keys(groupedByCode).map(group => {
const firstMessage = groupedByCode[group][0];
firstMessage.count = groupedByCode[group].length;
return firstMessage;
});
});
}
return result;
}