Skip to content

Commit 84e4550

Browse files
author
Robert-André Mauchin
committed
Add table sorting
1 parent e47a992 commit 84e4550

File tree

3 files changed

+102
-1
lines changed

3 files changed

+102
-1
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
var tables = document.querySelectorAll('table.sortable');
2+
3+
function loadsort()
4+
{
5+
for (var i = 0; i < tables.length; i++)
6+
{
7+
var headers = tables[i].querySelectorAll('th');
8+
9+
for (var x = 0; x < headers.length; x++)
10+
{
11+
var header = headers[x];
12+
var sortlink = document.createElement('a');
13+
var datatype = header.dataset.type;
14+
15+
sortlink.innerHTML = header.innerHTML + ' ▾';
16+
sortlink.dataset.column = x;
17+
sortlink.dataset.name = header.innerHTML;
18+
sortlink.dataset.direction = 'asc';
19+
sortlink.addEventListener('click', function (e) {
20+
sort(this);
21+
});
22+
23+
headers[x].innerHTML = '';
24+
headers[x].appendChild(sortlink);
25+
}
26+
}
27+
}
28+
29+
30+
function sort(el)
31+
{
32+
var direction = el.dataset.direction;
33+
var column = el.dataset.column;
34+
35+
var table = getTableFromChild(el);
36+
var rows = table.rows;
37+
38+
for (var x = 0; x < rows.length; x++)
39+
{
40+
var changes = false;
41+
42+
for (var i = 1; i < rows.length-1; i++)
43+
{
44+
var row = rows[i];
45+
var otherrow = rows[i + 1];
46+
var parent = row.parentNode;
47+
48+
var value = rows[i].cells[column].innerHTML;
49+
var next = rows[i + 1].cells[column].innerHTML;
50+
51+
if (!isNaN(parseFloat(value))) {
52+
value = parseFloat(value);
53+
next = parseFloat(next);
54+
}
55+
56+
if (value > next && direction == 'asc') {
57+
changes = true;
58+
parent.insertBefore(otherrow, row);
59+
}
60+
61+
else if (value < next && direction == 'desc')
62+
{
63+
changes = true;
64+
parent.insertBefore(otherrow, row);
65+
}
66+
}
67+
68+
if (changes == false)
69+
break;
70+
}
71+
72+
el.dataset.direction = direction == 'asc' ? 'desc' : 'asc';
73+
el.innerHTML = el.dataset.name + (direction == 'asc' ? ' ▾' : ' ▴');
74+
}
75+
76+
function getTableFromChild(child)
77+
{
78+
var element = child;
79+
var type = '';
80+
81+
while (type.toLowerCase() != 'table')
82+
{
83+
element = element.parentNode;
84+
85+
if (element != null)
86+
{
87+
type = element.nodeName;
88+
}
89+
90+
else
91+
{
92+
break;
93+
}
94+
}
95+
96+
return element;
97+
}
98+
99+
loadsort();

image-comparison-web/js/splitimage2.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ var canvases = {
3030
leftDest: getElId('canvasLeft'),
3131
rightDest: getElId('canvasRight')
3232
}
33+
3334
function prepCanvas(width, height, which) {
3435
var c;
3536

image-comparison-web/speed_results.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script></head>
1919
<body>
2020
<h2>Lossless compression ratio and Weissman score:</h2>
21-
<table>
21+
<table class="sortable">
2222
<thead>
2323
<tr>
2424
<th>format</th>
@@ -171,5 +171,6 @@ <h2>Lossless compression ratio and Weissman score:</h2>
171171
<h2>Lossy compression and speed</h2>
172172
<p><img class="graph" alt="Encoding time in function of bits per pixel" src="subset1.encoding_time.(aom_20210715,jxl_20210715,heif_1.12.0,mozjpeg,webp_1.2.0,webp2_20210715).svg"></p>
173173

174+
<script type="text/javascript" src="js/sort-table.js"></script>
174175
</body>
175176
</html>

0 commit comments

Comments
 (0)