You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
5.5 KiB
203 lines
5.5 KiB
<html>
|
|
<header><title>Aeon ring sizes</title>
|
|
<!-- Styles -->
|
|
<style>
|
|
#chartdiv {
|
|
width : 100%;
|
|
height : 500px;
|
|
}
|
|
</style>
|
|
|
|
<!-- Resources -->
|
|
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
|
|
<script src="https://www.amcharts.com/lib/3/serial.js"></script>
|
|
<script src="https://www.amcharts.com/lib/3/plugins/export/export.min.js"></script>
|
|
<link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
|
|
<script src="https://www.amcharts.com/lib/3/themes/light.js"></script>
|
|
<script src="aeon-data-0.js"></script>
|
|
<script src="aeon-data-1.js"></script>
|
|
<script src="aeon-data-2.js"></script>
|
|
<script src="aeon-data-3.js"></script>
|
|
<script src="aeon-data-4.js"></script>
|
|
<script src="aeon-data-5.js"></script>
|
|
<script src="aeon-data-6.js"></script>
|
|
<script src="aeon-data-7.js"></script>
|
|
<script src="aeon-data-8.js"></script>
|
|
<script src="aeon-data-9.js"></script>
|
|
|
|
<!-- Chart code -->
|
|
<script>
|
|
var chartData = chartData_0;
|
|
chartData.shift();
|
|
chartData = chartData.concat(chartData_1);
|
|
chartData = chartData.concat(chartData_2);
|
|
chartData = chartData.concat(chartData_3);
|
|
chartData = chartData.concat(chartData_4);
|
|
chartData = chartData.concat(chartData_5);
|
|
chartData = chartData.concat(chartData_6);
|
|
chartData = chartData.concat(chartData_7);
|
|
chartData = chartData.concat(chartData_8);
|
|
chartData = chartData.concat(chartData_9);
|
|
|
|
var chartData_rs = [];
|
|
var last_date = null;
|
|
var histogram = [];
|
|
histogram.length = 30;
|
|
histogram.fill(0);
|
|
|
|
for (var i = 0; i < chartData.length; ++i) {
|
|
var block_date = new Date(1000 * chartData[i][0]);
|
|
block_date.setHours(0);
|
|
block_date.setMinutes(0);
|
|
block_date.setSeconds(0);
|
|
if (last_date === null) {
|
|
last_date = block_date;
|
|
}
|
|
if (last_date < block_date || i == chartData.length - 1) {
|
|
chartData_rs.push({
|
|
"date": last_date,
|
|
"histogram": histogram.slice(),
|
|
});
|
|
last_date = block_date;
|
|
histogram.fill(0);
|
|
} else {
|
|
for (var j = 0; j < chartData[i][4].length; ++j) {
|
|
var ring_size = chartData[i][4][j][3];
|
|
if (ring_size >= histogram.length) {
|
|
var offset = histogram.length;
|
|
histogram.length = ring_size + 1;
|
|
for (var k = offset; k < histogram.length; ++k)
|
|
histogram[k] = 0;
|
|
}
|
|
histogram[ring_size] += 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
var chart = AmCharts.makeChart("chartdiv", {
|
|
"type": "serial",
|
|
"theme": "light",
|
|
"marginRight": 80,
|
|
"autoMarginOffset": 20,
|
|
"marginTop": 7,
|
|
"dataProvider": chartData_rs,
|
|
"valueAxes": [{
|
|
"stackType": "100%",
|
|
"axisAlpha": 0.2,
|
|
"dashLength": 1,
|
|
"position": "left",
|
|
"title": "percent",
|
|
}],
|
|
"legend": {
|
|
"align": "center",
|
|
"equalWidths": false,
|
|
"valueAlign": "left",
|
|
"valueText": "[[percents]]%",
|
|
"valueWidth": 100
|
|
},
|
|
"mouseWheelZoomEnabled": true,
|
|
"graphs": [],
|
|
"chartScrollbar": {
|
|
"autoGridCount": true,
|
|
"graph": "g",
|
|
"scrollbarHeight": 40
|
|
},
|
|
"chartCursor": {
|
|
"pan": false
|
|
},
|
|
"categoryField": "date",
|
|
"categoryAxis": {
|
|
"parseDates": true,
|
|
"axisColor": "#DADADA",
|
|
"dashLength": 1,
|
|
"minorGridEnabled": true
|
|
},
|
|
"export": {
|
|
"enabled": true
|
|
}
|
|
});
|
|
|
|
var average_days = 7;
|
|
var levels = [1,2,3,4,5,6,7,8,9,10,15,20,50,100];
|
|
for (var i = 0; i < chartData_rs.length; ++i) {
|
|
var count_per_level = new Uint32Array(levels.length + 1);
|
|
for (var j = 0; j < average_days; ++j) {
|
|
if (i < j)
|
|
continue;
|
|
for (var k = 1; k < histogram.length; ++k) {
|
|
var l = 0;
|
|
while (l < levels.length && k > levels[l])
|
|
++l;
|
|
count_per_level[l] += chartData_rs[i - j].histogram[k];
|
|
}
|
|
}
|
|
for (var l = 0; l <= levels.length; ++l) {
|
|
chartData_rs[i]["level" + l] = count_per_level[l];
|
|
}
|
|
}
|
|
|
|
var color_table = [
|
|
"#d77575",
|
|
"#d7be75",
|
|
"#a6d775",
|
|
"#75d78d",
|
|
"#75d7d7",
|
|
"#758dd7",
|
|
"#a675d7",
|
|
"#d775be",
|
|
];
|
|
|
|
function get_label(l) {
|
|
if (l == 0)
|
|
return levels[0] == 1 ? "1" : ("1~" + levels[0])
|
|
else if (l == levels.length)
|
|
return ">" + levels[l - 1];
|
|
else if (levels[l - 1] + 1 < levels[l])
|
|
return (levels[l - 1] + 1) + "~" + levels[l];
|
|
else
|
|
return levels[l];
|
|
}
|
|
|
|
chart.graphs = [];
|
|
for (var l = 0; l <= levels.length; ++l) {
|
|
chart.graphs.push({
|
|
"id": "g"+l,
|
|
"lineColor": color_table[l % color_table.length],
|
|
"showBalloon" : false,
|
|
"bullet": "round",
|
|
"bulletBorderAlpha": 1,
|
|
"bulletColor": "#FFFFFF",
|
|
"fillAlphas": 0.5,
|
|
"hideBulletsCount": 50,
|
|
"valueField": "level" + l,
|
|
"title": get_label(l) + ": ",
|
|
"useLineColorForBulletBorder": true,
|
|
"balloon":{
|
|
"cornerRadius": 10,
|
|
}
|
|
});
|
|
}
|
|
|
|
chart.addListener("rendered", zoomChart);
|
|
zoomChart();
|
|
|
|
// this method is called when chart is first inited as we listen for "rendered" event
|
|
function zoomChart() {
|
|
// different zoom methods can be used - zoomToIndexes, zoomToDates, zoomToCategoryValues
|
|
chart.zoomToIndexes(0, chartData.length - 1);
|
|
}
|
|
|
|
function togglePan() {
|
|
chart.chartCursor.pan = document.getElementById("pan").checked;
|
|
}
|
|
|
|
</script>
|
|
</header>
|
|
<body>
|
|
<h1>Aeon ring sizes</h1>
|
|
<div id="chartdiv"></div>
|
|
<p><input type="checkbox" id="pan" onclick="togglePan()">Enable panning</p>
|
|
<p><a href="./">Back to top</a></p>
|
|
</body>
|
|
</html>
|