LoginSignup
5
8

More than 5 years have passed since last update.

JQueryUIのtablesorterについてのメモ

Posted at

tablesorterのソート順について

tablesorterのソート順について、実際に動作させてみた感じをメモ。
細かな用語等モロモロについては以下参照。
https://mottie.github.io/tablesorter/docs/

デフォルト動作

デフォルト設定
     $("table").tablesorter({
        headers:{
            0: { sorter: true },
            1: { sorter: true },
            2: { sorter: false }
        },
    }).tablesorterPager(pagerOptions);//option設定は割愛
1. ソート対象カラムの1つ目のデータが数字のみの場合、数値文字(digit)として扱う。数字以外を含む場合文字(text)として扱う。
   (おそらく初期化時(画面描画時)に一度だけ判定)
2. 対象カラムをクリック
   ・文字扱いの場合、naturalSortでソートする。
   ・数値扱いの場合、numericSortでソートする。

パーサを指定

デフォルト設定
     $("table").tablesorter({
        headers:{
            0: { sorter: "digit" },
            1: { sorter: "text" },
            2: { sorter: false }
        },
    }).tablesorterPager(pagerOptions);//option設定は割愛
1. 上記のように"digit"や"text"を指定。
   →1つ目のデータがどんな値でも指定した文字として扱う。
2. 対象カラムをクリック
   ・headersに指定した文字種でソートを行う。

文字ソートを任意のソートにする

デフォルト設定
     $("table").tablesorter({
        headers:{
            0: { sorter: true },
            1: { sorter: true },
            2: { sorter: true }
        },
        textSorter:{
            0: function(a, b, direction, columnIndex, table){return a.localeCompare(b);},
            1: $.tablesorter.sortText,
            3: $.tablesorter.sortNatural,
        },
    }).tablesorterPager(pagerOptions);//option設定は割愛
1. 上記のようにtextSorterプロパティに任意のfunctionや規定のfunctionを指定する。
2. 対象カラムをクリック
   ・判定の結果文字(text)扱いの場合、上記で設定したfunctionを用いてソートする。
   ・判定の結果数値(digit)扱いの場合、numericSortでソートする。
   (パーサを指定の場合、パーサが"text"の場合は必ずtextSorterの設定に従ってソートする)

数値ソートを任意のソートにする

デフォルト設定
     $("table").tablesorter({
        headers:{
            0: { sorter: true },
            1: { sorter: true },
            2: { sorter: false }
        },
        numberSorter:{
            0: function(a, b, direction, maxColumnValue){return a - b;},
            1: function(a, b, direction, maxColumnValue){return a - b;},
        },
    }).tablesorterPager(pagerOptions);//option設定は割愛
1. 上記のようにnumberSorterプロパティに任意のfunctionや規定のfunctionを指定する。
2. 対象カラムをクリック
   ・判定の結果文字(text)扱いの場合、naturalSortでソートする。
   ・判定の結果数値(digit)扱いの場合、上記で設定したfunctionを用いてソートする。
   (パーサを指定の場合、パーサが"digit"の場合は必ずnumberSorterの設定に従ってソートする)

その他設定について

以下のような設定をすると便利と思った。

便利な設定
     $("table").tablesorter({
        widgets: ['zebra', 'saveSort'],
        widgetOptions : {storage_useSessionStorage : true},
        headers:{
            0: { sorter: true },
            1: { sorter: true },
            2: { sorter: false }
        },
        emptyTo : 'emptyMin',
    }).tablesorterPager(pagerOptions);//option設定は割愛

widgetsの"zebra"はテーブルの行を奇数行、偶数行で自動で色を分けてくれる。
widgetsの"saveSort"はソートした列とソート順をページ毎に記憶してくれる機能。
widgetOptionsの"storage_useSessionStorage"はwidgetsの"saveSort"と併用する。ソート順の記憶をセッションストレージに保存するようにする。
指定がない場合はローカルストレージに保存。(ローカルストレージはローカルの物理ファイルに保存するらしい)
emptyToプロパティはデータなし(空文字)のセルの扱いを指定する。emptyMinはデータなしセルを最小として扱う。(昇順ソートでデータなしセルが最初にくる)

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8