Home | History | Annotate | Download | only in static
      1 // Copyright 2018 syzkaller project authors. All rights reserved.
      2 // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
      3 
      4 function sortTable(item, colName, conv) {
      5 	table = item.parentNode.parentNode.parentNode;
      6 	rows = table.getElementsByTagName("tr");
      7 	col = findColumnByName(rows[0].getElementsByTagName("th"), colName);
      8 	values = new Array;
      9 	for (i = 1; i < rows.length; i++)
     10 		values[i] = conv(rows[i].getElementsByTagName("td")[col].textContent);
     11 	desc = isSorted(values);
     12 	do {
     13 		changed = false;
     14 		for (i = 1; i < values.length - 1; i++) {
     15 			v0 = values[i];
     16 			v1 = values[i + 1];
     17 			if (desc && v0 >= v1 || !desc && v0 <= v1)
     18 				continue;
     19 			changed = true;
     20 			values[i] = v1;
     21 			values[i + 1] = v0;
     22 			rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
     23 		}
     24 	} while (changed);
     25 	return false;
     26 }
     27 
     28 function findColumnByName(headers, colName) {
     29 	for (i = 0; i < headers.length; i++) {
     30 		if (headers[i].textContent == colName)
     31 			return i;
     32 	}
     33 	return 0;
     34 }
     35 
     36 function isSorted(values) {
     37 	for (i = 1; i < rows.length - 1; i++) {
     38 		if (values[i] > values[i + 1])
     39 			return false;
     40 	}
     41 	return true;
     42 }
     43 
     44 function textSort(v) { return v.toLowerCase(); }
     45 function numSort(v) { return -parseInt(v); }
     46 function reproSort(v) { return v == "C" ? 0 : v == "syz" ? 1 : 2; }
     47 function patchedSort(v) { return v == "" ? -1 : parseInt(v); }
     48 
     49 function timeSort(v) {
     50 	if (v == "now")
     51 		return 0;
     52 	m = v.indexOf('m');
     53 	h = v.indexOf('h');
     54 	d = v.indexOf('d');
     55 	if (m > 0 && h < 0)
     56 		return parseInt(v);
     57 	if (h > 0 && m > 0)
     58 		return parseInt(v) * 60 + parseInt(v.substring(h + 1));
     59 	if (d > 0 && h > 0)
     60 		return parseInt(v) * 60 * 24 + parseInt(v.substring(d + 1)) * 60;
     61 	if (d > 0)
     62 		return parseInt(v) * 60 * 24;
     63 	return 1000000000;
     64 }
     65