スクリプト? > Table Sort

「スクリプト/Table Sort」の編集履歴(バックアップ)一覧に戻る

スクリプト/Table Sort - (2013/06/10 (月) 14:49:13) のソース

#javascript(){{
 
$(document).ready(function(){
var defaultTr = function(tr){
// @wikiのtrのクラスatwiki_tr_から行indexを取得
return $(tr).attr("class").match("atwiki_tr_([0-9]+)")[1];
}
var getTd = function(tr,i){
// trからTDテキスト取得
var t = $(tr).find("td").eq(i).text();
// "-"ならば、0
if( t === "-" ){
return 0;
}
// ソフラン(x-x)ならば、最大BPM
if( t.indexOf("-") > -1 ){
var bpms = t.split("-");
return bpms[bpms.length-1];
}
return t;
}
var sortfn = function(span){
var text = span.text();
var order = 1; // 昇順
if(text.indexOf("▼") > -1){
order = 2; // 降順
}else if(text.indexOf("▲") > -1){
order = 0; // デフォルト
}
// ソート比較とするtdのIndex
var index = span.attr("class").substring(9);
var table = span.closest("table");
table.find("tbody").html(
table.find("tbody tr").sort(function(a, b) {
var a_text = getTd(a,index);
var b_text = getTd(b,index);
var ret = (order == 1) ? a_text - b_text : b_text - a_text;
// 比較が一致している場合もデフォルト
if((order == 0) || (ret == 0)){
return defaultTr(a) - defaultTr(b);
}else{
return ret;
}
})
);
table.find('span[class^="sortable-"]').each(function(){
$(this).text($(this).text().replace(/▼|▲/g,""));
});
if(order == 1){
span.text(span.text() + "▼");
}else if(order == 2){
span.text(span.text() + "▲");
}
};
$('#wikibody table th span[class^="sortable-"]').click(
function(){sortfn($(this))}
);
$('#wikibody table th span[class^="sortable-"]').css("cursor","pointer");
});
 
}}