mirror of
https://github.com/pa11y/pa11y-dashboard.git
synced 2025-09-25 06:41:21 +00:00
Add JSON download for results
This commit is contained in:
@@ -7,18 +7,45 @@ module.exports = route;
|
|||||||
// Route definition
|
// Route definition
|
||||||
function route (app) {
|
function route (app) {
|
||||||
|
|
||||||
app.express.get('/:id/:rid.csv', function (req, res, next) {
|
function getTaskAndResult (req, res, next) {
|
||||||
app.webservice.task(req.params.id).get({}, function (err, task) {
|
app.webservice.task(req.params.id).get({}, function (err, task) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next();
|
return next('route');
|
||||||
}
|
}
|
||||||
app.webservice
|
app.webservice
|
||||||
.task(req.params.id)
|
.task(req.params.id)
|
||||||
.result(req.params.rid)
|
.result(req.params.rid)
|
||||||
.get({full: true}, function (err, result) {
|
.get({full: true}, function (err, result) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next();
|
return next('route');
|
||||||
}
|
}
|
||||||
|
res.locals.task = task;
|
||||||
|
res.locals.result = result;
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDownloadFileName (task, result, extension) {
|
||||||
|
return [
|
||||||
|
'pa11y',
|
||||||
|
'--',
|
||||||
|
task.url
|
||||||
|
.replace(/^https?:\/\//i, '')
|
||||||
|
.replace(/\/$/, '')
|
||||||
|
.replace(/[^a-z0-9\.\-\_]+/gi, '-'),
|
||||||
|
'--',
|
||||||
|
task.standard.toLowerCase(),
|
||||||
|
'--',
|
||||||
|
moment(result.date).format('YYYY-MM-DD'),
|
||||||
|
'.',
|
||||||
|
extension
|
||||||
|
].join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
app.express.get('/:id/:rid.csv', getTaskAndResult, function (req, res) {
|
||||||
|
var task = res.locals.task;
|
||||||
|
var result = res.locals.result;
|
||||||
var rows = ['"code", "message", "type"'];
|
var rows = ['"code", "message", "type"'];
|
||||||
result.results.forEach(function (msg) {
|
result.results.forEach(function (msg) {
|
||||||
rows.push([
|
rows.push([
|
||||||
@@ -27,16 +54,18 @@ function route (app) {
|
|||||||
JSON.stringify(msg.type)
|
JSON.stringify(msg.type)
|
||||||
].join(', '));
|
].join(', '));
|
||||||
});
|
});
|
||||||
res.attachment([
|
res.attachment(getDownloadFileName(task, result, 'csv'));
|
||||||
'pa11y--',
|
|
||||||
task.url.replace(/^https?:\/\//i, '').replace(/\/$/, '').replace(/[^a-z0-9\.\-\_]+/gi, '-') + '--',
|
|
||||||
task.standard.toLowerCase() + '--',
|
|
||||||
moment(result.date).format('YYYY-MM-DD'),
|
|
||||||
'.csv'
|
|
||||||
].join(''));
|
|
||||||
res.send(rows.join('\n'));
|
res.send(rows.join('\n'));
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
app.express.get('/:id/:rid.json', getTaskAndResult, function (req, res) {
|
||||||
|
var task = res.locals.task;
|
||||||
|
var result = res.locals.result;
|
||||||
|
res.attachment(getDownloadFileName(task, result, 'json'));
|
||||||
|
delete task.id;
|
||||||
|
delete result.id;
|
||||||
|
result.task = task;
|
||||||
|
res.send(result);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -91,7 +91,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ##################### End ######################## -->
|
<!-- ##################### End ######################## -->
|
||||||
<div class="col-md-12 col-sm-6 col-xs-12">
|
<div class="col-md-12 col-sm-6 col-xs-12">
|
||||||
<a href="/{{task.id}}.json" target="_blank" class="btn-full-width btn btn-default">Download JSON <span class="glyphicon glyphicon-download"></span></a>
|
<a href="{{mainResult.hrefJson}}" class="btn-full-width btn btn-default">Download JSON <span class="glyphicon glyphicon-download"></span></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user