Merge branch 'alblue-master'

This commit is contained in:
n1474335 2021-02-09 14:46:19 +00:00
commit 6206224f1e

View file

@ -31,6 +31,11 @@ class FrequencyDistribution extends Operation {
"name": "Show 0%s", "name": "Show 0%s",
"type": "boolean", "type": "boolean",
"value": true "value": true
},
{
"name": "Show ASCII",
"type": "boolean",
"value": true
} }
]; ];
} }
@ -76,14 +81,14 @@ class FrequencyDistribution extends Operation {
* @returns {html} * @returns {html}
*/ */
present(freq, args) { present(freq, args) {
const showZeroes = args[0]; const [showZeroes, showAscii] = args;
// Print // Print
let output = `<canvas id='chart-area'></canvas><br> let output = `<canvas id='chart-area'></canvas><br>
Total data length: ${freq.dataLength} Total data length: ${freq.dataLength}
Number of bytes represented: ${freq.bytesRepresented} Number of bytes represented: ${freq.bytesRepresented}
Number of bytes not represented: ${256 - freq.bytesRepresented} Number of bytes not represented: ${256 - freq.bytesRepresented}
Byte Percentage
<script> <script>
var canvas = document.getElementById("chart-area"), var canvas = document.getElementById("chart-area"),
parentRect = canvas.parentNode.getBoundingClientRect(), parentRect = canvas.parentNode.getBoundingClientRect(),
@ -93,16 +98,32 @@ Byte Percentage
canvas.height = parentRect.height * 0.9; canvas.height = parentRect.height * 0.9;
CanvasComponents.drawBarChart(canvas, scores, "Byte", "Frequency %", 16, 6); CanvasComponents.drawBarChart(canvas, scores, "Byte", "Frequency %", 16, 6);
</script>`; </script>
<table class="table table-hover table-sm">
<tr><th>Byte</th>${showAscii ? "<th>ASCII</th>" : ""}<th>Percentage</th><th></th></tr>`;
for (let i = 0; i < 256; i++) { for (let i = 0; i < 256; i++) {
if (freq.distribution[i] || showZeroes) { if (freq.distribution[i] || showZeroes) {
output += " " + Utils.hex(i, 2) + " (" + let c = "";
(freq.percentages[i].toFixed(2).replace(".00", "") + "%)").padEnd(8, " ") + if (showAscii) {
Array(Math.ceil(freq.percentages[i])+1).join("|") + "\n"; if (i <= 32) {
c = String.fromCharCode(0x2400 + i);
} else if (i === 127) {
c = String.fromCharCode(0x2421);
} else {
c = String.fromCharCode(i);
}
}
const bite = `<td>${Utils.hex(i, 2)}</td>`,
ascii = showAscii ? `<td>${c}</td>` : "",
percentage = `<td>${(freq.percentages[i].toFixed(2).replace(".00", "") + "%").padEnd(8, " ")}</td>`,
bars = `<td>${Array(Math.ceil(freq.percentages[i])+1).join("|")}</td>`;
output += `<tr>${bite}${ascii}${percentage}${bars}</tr>`;
} }
} }
output += "</table>";
return output; return output;
} }