// 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 . 'use strict'; var _ = require('underscore'); var 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) { 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; }