BLOG

【Javascript】TableSorterのmetadataを使用したカナソート

(2016年10月26日)
カテゴリ: プログラム
 

少し前にTableSorterを使用したカナソートで困ったので忘れないように投稿します。

実行環境
・TableSorter:2.0
・jquery:3.1.1

変更前は「名前、ふりがな、住所・・・」のようなテーブル構成で「ふりがな」でソートをしていたので問題なかったのです。

ところが項目が増えて「ふりがな」の項目を無くすことになったのですが、ソート自体は「ふりがな」で行うことになりました。

そこでmetadataを利用してソートすれば良いかなと考えていたのですが、実装してみると上手く動かない…

いろいろと調べているとTableSorterはaddParserという機能があることがわかりました。

そこでTableSorterのソースを見てみると……ありました!!

ts.addParser({
  id: "metadata",
  is: function (s) {
    return false;
  }, format: function (s, table, cell) {
    var c = table.config,
    p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
    return $(cell).metadata()[p];
  }, type: "numeric"
});

このソースを利用して、下記のように変更しParserを追加して後はmetadataを使用していた所をmetadataTextに変更して解決しました。

$.tablesorter.addParser({
  id: "metadataText",
  is: function (s) {
    return false;
  },format: function (s, table, cell) {
    var c = table.config,
    p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
    return $(cell).metadata()[p];
  }, type: "text"
});

■変更点

・idをmetadataTextに変更

・typeをtextに変更

いろいろと参考にさせていただいた皆さんありがとうございました。