Canvas ver1.11で発生した不具合(TableSorter.js)

昨日アイドル一覧ページにjQueryプラグイン「TableSorter.js」を利用したソート可能な表を実装した。

初めはうまくいったのだが、少し手直しをしたところ動かない不具合に遭遇したので書き残しておく。

TableSorter.jsとは何ぞ

jQueryのプラグインで<table>を使った表をソート可能にしてくれる。
例えばCGPだと名前であるとか身長だとかのデータでソートができる。iDB@Sの時も使ってもらえて喜んで貰えていたのでCanvasでも実装した。

何をしたか

「永遠の17歳は31歳より老けてるのか(永遠の17歳が原因でどうしても一番下に出る)」という声を受けて「馬鹿野郎永遠の17歳を整数型にキャストしたら17になるに決まってるだろ」という闘争心でメタデータを用いたソートができるオプションを組み込んだ。

ついでに体重も同じようにしたのだがこれが不具合の原因となった。

やり方は以下のサイトを参考にした
https://allabout.co.jp/gm/gc/434260/4/

HTML側



<td class="{sortValue: 17}">永遠の17歳</td>


こう書くと見かけ上は永遠の17歳だがTableSorter.js側では17として処理してくれる。年齢でソートしたときほかの17歳のアイドルのデータと同じ位置にソーティングしてくれるわけだ。

PHP側

当然これを使うには整数のみにしたデータが必要になるので数字だけを抜き出すコードを追加する。

$age_m = preg_replace('/[^0-9]/','',$data['age_s']);

正規表現を用いて数字以外である場合は空文字列で置き換える。あとはこれをタグ出力時にくっつけるだけ。

何が起きたか

ソートが動かなくなった。

な~~~~~~にがいけなかったんでしょうね…

原因・対処

アイドル一覧リストは属性別にみることができるので全属性確かめてみたところ、CuteとCoolの場合は動くことが分かった。Passionが絡むと発生する。

思い当たる節はただ一つ、しゅがはの体重「ダイエットちゅう」。これ数字1文字も含んでませんねぇ!!

ということは{sortValue: }のようにデータが空になるのがまずい、じゃぁ数字を含まないなら0にしてしまえばいい。

$weight_m = preg_replace('/[^0-9]/','',$data['weight_s']);
if(empty($weight_m))$weight_m = 0;

処理した後に空文字列と化していたら0を代入するように書き換えた。

動いた。やったぜ。しゅがはさんダイエット成功するといいね。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です