- Consolidated duplicate UndoManagers to single instance - Fixed connection promise to only resolve on 'connected' status - Fixed WebSocketProvider import (WebsocketProvider) - Added proper doc.destroy() cleanup - Renamed isPresenceInitialized property to avoid conflict Co-Authored-By: Paperclip <noreply@paperclip.ing>
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
var table = require('markdown-table');
|
|
|
|
// Crude, but should be enough internally
|
|
function toFixedWidth(value, maxChars) {
|
|
var result = value.toFixed(2).substr(0, maxChars);
|
|
if (result[result.length - 1] == '.') {
|
|
result = result.substr(0, result.length - 2) + ' ';
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {DataSetComparisonResult[]} results
|
|
* @param {Object} [options]
|
|
*/
|
|
function createTable(results, options) {
|
|
options || (options = {});
|
|
var columnAlign = ['l', 'l'];
|
|
var header = ['Suite', 'Browser'];
|
|
var libNames = [];
|
|
var rows = [];
|
|
var errorCell = 'X';
|
|
var emptyCell = '?';
|
|
var hideColumns = options.hideColumns || [];
|
|
var compareTo = options.compareTo;
|
|
results.forEach(function(comparisonResult) {
|
|
var resultMap = comparisonResult.resultMap;
|
|
var libName;
|
|
var libResults;
|
|
var result;
|
|
var compareRHZ = resultMap[compareTo] && resultMap[compareTo].rhz || 1;
|
|
for (libName in resultMap) {
|
|
// dictates order
|
|
if (libNames.indexOf(libName) === -1 && hideColumns.indexOf(libName) === -1) {
|
|
libNames.push(libName);
|
|
columnAlign.push('r');
|
|
rows.forEach(function(row) {
|
|
// new column added, push empty element
|
|
row.push(emptyCell);
|
|
})
|
|
}
|
|
}
|
|
libResults = libNames.map(function(libName) {
|
|
result = resultMap[libName];
|
|
if (result) {
|
|
if (result.success) {
|
|
return (result.fastest ? '*' : '')
|
|
+ (100 * result.rhz / compareRHZ).toFixed(2) + '% '
|
|
+ '(\xb1' + toFixedWidth(100 * (result.rhz / compareRHZ) * result.rme, 4) + '%)';
|
|
} else {
|
|
return errorCell;
|
|
}
|
|
} else {
|
|
return emptyCell;
|
|
}
|
|
});
|
|
|
|
rows.push([comparisonResult.suite, comparisonResult.browser].concat(libResults));
|
|
});
|
|
|
|
// slap header before it
|
|
rows.unshift(header.concat(libNames));
|
|
|
|
return table(rows, { align: columnAlign });
|
|
}
|
|
|
|
module.exports = function(data, options) {
|
|
return createTable(data, options);
|
|
};
|