テーブルソート
LEVELのNOV、ADV、EXHをクリックする度に、昇順、降順、元通りの順番にソートできます。
| MUSIC |
Artist |
BPM |
LEVEL |
CHAIN |
| NOV |
ADV |
EXH |
NOV |
ADV |
EXH |
| ALBIDA Powerless Mix |
無力P |
156 |
05 |
09 |
14 |
0636 |
0854 |
1027 |
| Broken 8cmix |
iroha(sasaki) |
150 |
05 |
10 |
14 |
0638 |
0889 |
1071 |
| ヒマワリ MUZIK SERVANT Remix |
MUZIK SERVANT |
175 |
04 |
08 |
10 |
0564 |
0770 |
0914 |
| 凛として咲く花の如く スプーキィテルミィンミックス |
マチゲリータ |
163 |
01 |
06 |
09 |
0500 |
0853 |
1198 |
| MAX300 takamatt MIN Remix |
takamatt |
136 |
04 |
07 |
10 |
0559 |
0674 |
0865 |
| PULSE LASER |
ヒゲドライバー |
165 |
02 |
07 |
12 |
0501 |
0764 |
0985 |
| good high school |
baker |
150 |
02 |
05 |
08 |
0580 |
0730 |
0920 |
| smooooch・∀・ KN mix |
KN |
177 |
03 |
08 |
13 |
0726 |
1108 |
1458 |
| Love♡sicK |
8#Prince(八王子P) |
132 |
03 |
07 |
11 |
0558 |
0670 |
0917 |
| It's over |
ゆよゆっぺ feat.めらみぽっぷ |
144 |
01 |
07 |
10 |
0511 |
0890 |
0948 |
| ガッテンだ!! Novoiski Remix |
ノボイスキ |
170 |
03 |
08 |
11 |
0532 |
0707 |
0949 |
使い方
#include(sort sample)
- ソート出来るようにしたい列のテキストを、&spanclassで囲みます。
|~|~|~|BGCOLOR(#aaf):&spanclass(sortable-3){NOV}|BGCOLOR(#ffa):&spanclass(sortable-4){ADV}|BGCOLOR(#faa):&spanclass(sortable-5){EXH}|BGCOLOR(#aaf):NOV|BGCOLOR(#ffa):ADV|BGCOLOR(#faa):EXH|h
- &spanclassで指定するクラス名は、「sortable-x」です。xの部分にソートで比較するデータの列番号を入れます。
例えばNOVのLvでソートしたいなら、sortable-3といった具合です。(※0から数えて3です。)
ソースコード
#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");
});
}}
最終更新:2013年06月13日 00:42