JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/botify/1.0.0-beta4/botify-sdk.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="root">
<table id="analyses-table" class="table">
<thead>
<tr>
<td>Id</td>
<td>Date</td>
<td>Status</td>
<td>Nb URLs</td>
</tr>
</thead>
</table>
<div id="analysis-data" class="row hide">
<div class="col-md-6">
<div>
<label>Compliant URLs:</label>
<span id="compliant-urls"></span>
</div>
<div>
<label>Percentage Compliant URLs:</label>
<span id="percentage-compliant-urls"></span>
</div>
<div>
<label>Average Load Time:</label>
<span id="average-load-time"></span>
</div>
</div>
<div id="http-code-distribution" class="col-md-6"></div>
<div class="col-md-12">
<label id="sample-urls-label"></label>
<table id="sample-urls-table" class="table table-condensed">
<thead>
<tr>
<td>URL</td>
<td>Depth</td>
</tr>
</thead>
</table>
</div>
</div>
</div>
CSS
#analyses-table tr.clickable:not(.active) {
cursor: pointer;
}
JavaScript
// Token with only reading right on a demo project
var token = '5200a30fb41f179e6dadab3b4e2d40f83a0a8ccd';
var username = 'adam_warlock';
var projectSlug = 'demo-project';
var $analysesTable = $('#analyses-table');
var $analysisData = $('#analysis-data');
var $compliantURLs = $('#compliant-urls');
var $percentageCompliantURLs = $('#percentage-compliant-urls');
var $averageLoadTime = $('#average-load-time');
var $httpCodeDistribution = $('#http-code-distribution');
var $sampleURLsLabel = $('#sample-urls-label');
var $sampleURLsTable = $('#sample-urls-table');
BotifySDK.authToken(token);
// Fetch last 5 analyses and populate table
function displayAnalyses() {
BotifySDK.AnalysisController.getAnalyses({
username: username,
projectSlug: projectSlug,
size: 5,
}, function(err, response) {
response.results.forEach(function (analysis) {
var slug = analysis.slug;
var date = new Date(analysis.date_launched).toDateString();
var status = analysis.status === 'success' ? 'finished' : analysis.status;
var nbUrls = analysis.status === 'success' ? analysis.urls_done : '-';
$analysesTable.append(
$('<tr>')
.addClass('slug-' + slug)
.addClass(analysis.status === 'success' ? 'clickable' : '')
.on('click', function(e) {
analysis.status === 'success' && displayAnalysisData(slug);
})
.append($('<td>').text(slug))
.append($('<td>').text(date))
.append($('<td>').text(status))
.append($('<td>').text(nbUrls))
);
});
response.results.every(function (analysis) {
if (analysis.status === 'success') {
displayAnalysisData(analysis.slug);
return false;
}
return true;
});
});
}
// Fetch analysis data and display metrics and chart.
function displayAnalysisData(analysisSlug) {
$analysisData.addClass('hide');
$analysesTable.find('tr').removeClass('active');
$analysesTable.find('tr.slug-' +...