LSP restructure (v3)
This commit is contained in:
parent
8e6da507bc
commit
ed9c917bf2
18 changed files with 4898 additions and 4842 deletions
86
lsp/plugins/cattablesort.js
Normal file
86
lsp/plugins/cattablesort.js
Normal file
|
@ -0,0 +1,86 @@
|
|||
// by Carina van der Meer for DDVtech,
|
||||
// based off the "Stupid jQuery table plugin" by JoeQuery (http://joequery.github.io/Stupid-Table-Plugin/)
|
||||
|
||||
(function($){
|
||||
$.fn.stupidtable = function(){
|
||||
var $table = $(this);
|
||||
$table.on('click', 'thead th', function() {
|
||||
$(this).stupidsort();
|
||||
});
|
||||
}
|
||||
$.fn.stupidsort = function(){
|
||||
var $th = $(this);
|
||||
var $table = $th.closest('table');
|
||||
var $tbody = $table.children('tbody');
|
||||
var $trs = $tbody.children('tr');
|
||||
var datatype = $th.attr('data-sort-type');
|
||||
if (!datatype) { return; } //no data type set? => don't sort by this column
|
||||
var sortasc = true;
|
||||
if ($th.hasClass('sorting-asc')) { sortasc = false; }
|
||||
|
||||
//find the index of the column that needs sorting
|
||||
var col_index = 0;
|
||||
$th.prevAll().each(function(){
|
||||
var colspan = $(this).attr('colspan');
|
||||
col_index += (colspan ? Number(colspan) : 1);
|
||||
});
|
||||
|
||||
//a function to return the values that need sorting
|
||||
function getsortval(tr) {
|
||||
var $tds = $(tr).children('td,th');
|
||||
|
||||
//find the correct td
|
||||
var i = 0;
|
||||
var $td;
|
||||
$tds.each(function(){
|
||||
if (i == col_index) {
|
||||
$td = $(this);
|
||||
return false; //break
|
||||
}
|
||||
var colspan = $(this).attr('colspan');
|
||||
i += (colspan ? Number(colspan) : 1);
|
||||
});
|
||||
|
||||
//get the value
|
||||
var val;
|
||||
if (typeof $td.data('sort-value') != 'undefined') {
|
||||
val = $td.data('sort-value');
|
||||
}
|
||||
else if (typeof $td.attr('data-sort-value') != 'undefined') {
|
||||
val = $td.attr('data-sort-value');
|
||||
}
|
||||
else {
|
||||
val = $td.text();
|
||||
}
|
||||
//cast to the datatype
|
||||
switch (datatype) {
|
||||
case 'string':
|
||||
case 'string-ins':
|
||||
//always sort strings case insensitive
|
||||
val = String(val).toLowerCase();
|
||||
break;
|
||||
case 'int':
|
||||
val = parseInt(Number(val));
|
||||
break;
|
||||
case 'float':
|
||||
val = Number(val);
|
||||
break;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
//do the actual sort
|
||||
$trs.sort(function(a,b){
|
||||
var factor = (sortasc ? 1 : -1);
|
||||
a = getsortval(a);
|
||||
b = getsortval(b);
|
||||
if (a > b) { return factor * 1; }
|
||||
if (a < b) { return factor * -1; }
|
||||
return 0;
|
||||
})
|
||||
$tbody.append($trs);
|
||||
|
||||
$table.find('thead th').removeClass('sorting-asc').removeClass('sorting-desc')
|
||||
$th.addClass((sortasc ? 'sorting-asc' : 'sorting-desc'));
|
||||
}
|
||||
})(jQuery);
|
Loading…
Add table
Add a link
Reference in a new issue