mirror of
https://github.com/simon987/od-database.git
synced 2025-04-20 10:56:47 +00:00
256 lines
7.7 KiB
JavaScript
256 lines
7.7 KiB
JavaScript
function drawSizeHistogram(rData) {
|
|
|
|
let labels = [];
|
|
let dataSet = [];
|
|
|
|
for (let i in rData["sizes_histogram"]) {
|
|
|
|
let slice = rData["sizes_histogram"][i];
|
|
dataSet.push(slice[1]);
|
|
labels.push("[" + humanFileSize(slice[0]) + ", " + humanFileSize(slice[0] + 10000000) + "]")
|
|
}
|
|
|
|
console.log(dataSet);
|
|
|
|
let ctx = document.getElementById('sizeHistogram').getContext('2d');
|
|
new Chart(ctx, {
|
|
type: 'line',
|
|
data: {
|
|
datasets: [{
|
|
data: dataSet,
|
|
borderWidth: 1,
|
|
strokeColor: "#FFFFFF",
|
|
backgroundColor: "#FFFFFF"
|
|
}],
|
|
labels: labels,
|
|
title: "test"
|
|
|
|
},
|
|
options: {
|
|
title: {
|
|
display: true,
|
|
text: "Size histogram",
|
|
fontColor: "#c6c6c6",
|
|
fontSize: 16,
|
|
fontFamily: "Lato,'Helvetica Neue',Arial,Helvetica,sans-serif"
|
|
},
|
|
legend: {
|
|
display: false
|
|
},
|
|
scales: {
|
|
yAxes: [
|
|
{
|
|
id: "count",
|
|
type: "logarithmic",
|
|
ticks: {
|
|
// Include a dollar sign in the ticks
|
|
callback: function(value, index, values) {
|
|
|
|
let log10 = Math.log10(value);
|
|
|
|
if (Number.isInteger(log10)) {
|
|
return value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function drawDateHistogram(rData) {
|
|
|
|
let labels = [];
|
|
let dataSet = [];
|
|
|
|
console.log(rData["dates_histogram"]);
|
|
|
|
for (let i in rData["dates_histogram"]) {
|
|
|
|
let slice = rData["dates_histogram"][i];
|
|
dataSet.push(slice[1]);
|
|
labels.push(slice[0])
|
|
}
|
|
|
|
let ctx = document.getElementById('dateHistogram').getContext('2d');
|
|
new Chart(ctx, {
|
|
type: 'line',
|
|
data: {
|
|
datasets: [{
|
|
data: dataSet,
|
|
borderWidth: 1,
|
|
strokeColor: "#FFFFFF",
|
|
backgroundColor: "#FFFFFF"
|
|
}],
|
|
labels: labels,
|
|
|
|
},
|
|
options: {
|
|
title: {
|
|
display: true,
|
|
text: "Dates histogram",
|
|
fontColor: "#c6c6c6",
|
|
fontSize: 16,
|
|
fontFamily: "Lato,'Helvetica Neue',Arial,Helvetica,sans-serif"
|
|
},
|
|
legend: {
|
|
display: false
|
|
},
|
|
scales: {
|
|
yAxes: [
|
|
{
|
|
id: "count",
|
|
type: "logarithmic",
|
|
ticks: {
|
|
// Include a dollar sign in the ticks
|
|
callback: function(value, index, values) {
|
|
|
|
let log10 = Math.log10(value);
|
|
|
|
if (Number.isInteger(log10)) {
|
|
return value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function drawChart(rData) {
|
|
|
|
var dataSetSize = [];
|
|
var dataSetCount = [];
|
|
var labels = [];
|
|
var colors = [];
|
|
|
|
var otherSize = 0;
|
|
var otherCount = 0;
|
|
|
|
for (var ext in rData["ext_stats"]) {
|
|
//Ignore file sizes below 0.5%
|
|
if (!isRelevant(rData, ext)) {
|
|
|
|
otherSize += rData["ext_stats"][ext][0];
|
|
otherCount += rData["ext_stats"][ext][1];
|
|
|
|
} else {
|
|
dataSetSize.push(rData["ext_stats"][ext][0]);
|
|
dataSetCount.push(rData["ext_stats"][ext][1]);
|
|
labels.push(rData["ext_stats"][ext][2] + " x" + rData["ext_stats"][ext][1] + " (" + humanFileSize(rData["ext_stats"][ext][0]) + ")");
|
|
colors.push(getRandomColor())
|
|
}
|
|
}
|
|
|
|
if (otherCount !== 0) {
|
|
colors.push(getRandomColor());
|
|
labels.push("other x" + otherCount + " (" + humanFileSize(otherSize) + ")");
|
|
dataSetSize.push(otherSize);
|
|
dataSetCount.push(otherCount);
|
|
}
|
|
|
|
var ctx = document.getElementById('typesChart').getContext('2d');
|
|
|
|
var fileTypePieChart = new Chart(ctx, {
|
|
type: 'pie',
|
|
data: {
|
|
datasets: [{
|
|
data: rData["total_size"] < 100000 ? dataSetCount : dataSetSize,
|
|
backgroundColor: colors,
|
|
borderWidth: 1
|
|
}],
|
|
labels: labels
|
|
|
|
},
|
|
options: {
|
|
title: {
|
|
display: true,
|
|
text: "File types for " + rData["base_url"] + " - " + humanFileSize(rData["total_size"]),
|
|
fontColor: "#c6c6c6",
|
|
fontSize: 16,
|
|
fontFamily: "Lato,'Helvetica Neue',Arial,Helvetica,sans-serif"
|
|
},
|
|
legend: {
|
|
labels: {
|
|
fontColor: "#bbbbbb",
|
|
fontFamily: "Lato,'Helvetica Neue',Arial,Helvetica,sans-serif",
|
|
boxWidth: 20,
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function fillWebsiteTable(rData) {
|
|
|
|
document.getElementById("baseUrl").innerHTML = rData["base_url"];
|
|
document.getElementById("fileCount").innerHTML = rData["total_count"];
|
|
document.getElementById("totalSize").innerHTML = humanFileSize(rData["total_size"]);
|
|
document.getElementById("reportTime").innerHTML = rData["report_time"] + " UTC";
|
|
|
|
}
|
|
|
|
function fillDatabaseTable(rData) {
|
|
document.getElementById("esIndexSize").innerHTML = humanFileSize(rData["es_index_size"]);
|
|
document.getElementById("esSearchCount").innerHTML = rData["es_search_count"];
|
|
document.getElementById("esSearchTime").innerHTML = rData["es_search_time"] + "ms";
|
|
document.getElementById("esSearchTimeAvg").innerHTML = rData["es_search_time_avg"].toFixed(2) + "ms";
|
|
document.getElementById("totalCount").innerHTML = rData["total_count"];
|
|
document.getElementById("totalCountNonzero").innerText = rData["total_count_nonzero"];
|
|
document.getElementById("totalSize").innerHTML = humanFileSize(rData["total_size"]);
|
|
document.getElementById("sizeAvg").innerHTML = humanFileSize(rData["size_avg"]);
|
|
document.getElementById("sizeStdDeviation").innerHTML = humanFileSize(rData["size_std_deviation"]);
|
|
document.getElementById("sizeStdDeviationBounds").innerHTML = "[" + humanFileSize(rData["size_std_deviation_bounds"]["lower"]) +
|
|
", " + humanFileSize(rData["size_std_deviation_bounds"]["upper"]) + "]";
|
|
document.getElementById("sizeVariance").innerHTML = humanFileSize(rData["size_variance"]);
|
|
}
|
|
|
|
function isRelevant(rData, ext) {
|
|
|
|
// if (ext[2] === "") {
|
|
// return false;
|
|
// }
|
|
|
|
if (rData["total_size"] < 100000) {
|
|
return rData["ext_stats"][ext][1] > 0.03 * rData["total_count"]
|
|
} else {
|
|
return rData["ext_stats"][ext][0] > 0.005 * rData["total_size"]
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* https://stackoverflow.com/questions/1484506
|
|
*/
|
|
function getRandomColor() {
|
|
var letters = '0123456789ABCDEF';
|
|
var color = '#';
|
|
for (var i = 0; i < 6; i++) {
|
|
color += letters[Math.floor(Math.random() * 16)];
|
|
}
|
|
return color;
|
|
}
|
|
|
|
/**
|
|
* https://stackoverflow.com/questions/10420352
|
|
*/
|
|
function humanFileSize(bytes) {
|
|
|
|
var thresh = 1000;
|
|
if (Math.abs(bytes) < thresh) {
|
|
return bytes + ' B';
|
|
}
|
|
var units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
var u = -1;
|
|
do {
|
|
bytes /= thresh;
|
|
++u;
|
|
} while (Math.abs(bytes) >= thresh && u < units.length - 1);
|
|
|
|
return bytes.toFixed(1) + ' ' + units[u];
|
|
} |