アットウィキロゴ

More Script!


テーブルソート


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

使い方


  • スクリプトを記述しているページsort sampleを、includeします。
#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です。)


ソースコード

  1. #javascript(){{
  2.  
  3. $(document).ready(function(){
  4. var defaultTr = function(tr){
  5. // @wikiのtrのクラスatwiki_tr_から行indexを取得
  6. return $(tr).attr("class").match("atwiki_tr_([0-9]+)")[1];
  7. }
  8. var getTd = function(tr,i){
  9. // trからTDテキスト取得
  10. var t = $(tr).find("td").eq(i).text();
  11. // "-"ならば、0
  12. if( t === "-" ){
  13. return 0;
  14. }
  15. // ソフラン(x-x)ならば、最大BPM
  16. if( t.indexOf("-") > -1 ){
  17. var bpms = t.split("-");
  18. return bpms[bpms.length-1];
  19. }
  20. return t;
  21. }
  22. var sortfn = function(span){
  23. var text = span.text();
  24. var order = 1; // 昇順
  25. if(text.indexOf("▼") > -1){
  26. order = 2; // 降順
  27. }else if(text.indexOf("▲") > -1){
  28. order = 0; // デフォルト
  29. }
  30. // ソート比較とするtdのIndex
  31. var index = span.attr("class").substring(9);
  32. var table = span.closest("table");
  33. table.find("tbody").html(
  34. table.find("tbody tr").sort(function(a, b) {
  35. var a_text = getTd(a,index);
  36. var b_text = getTd(b,index);
  37. var ret = (order == 1) ? a_text - b_text : b_text - a_text;
  38. // 比較が一致している場合もデフォルト
  39. if((order == 0) || (ret == 0)){
  40. return defaultTr(a) - defaultTr(b);
  41. }else{
  42. return ret;
  43. }
  44. })
  45. );
  46. table.find('span[class^="sortable-"]').each(function(){
  47. $(this).text($(this).text().replace(/▼|▲/g,""));
  48. });
  49. if(order == 1){
  50. span.text(span.text() + "▼");
  51. }else if(order == 2){
  52. span.text(span.text() + "▲");
  53. }
  54. };
  55. $('#wikibody table th span[class^="sortable-"]').click(
  56. function(){sortfn($(this))}
  57. );
  58. $('#wikibody table th span[class^="sortable-"]').css("cursor","pointer");
  59. });
  60.  
  61. }}
  62.  
最終更新:2013年06月13日 00:42