dashmarkにインクリメンタルサーチを実装した
Safari用のブックマークツール、dashmarkを更新した。
「SQLってのはですね、検索をするためにあるのですよ」と言われたのもあり、予定を繰り上げてブックマークのインクリメンタル/デクリメンタルサーチを実装した。
インクリメンタルサーチはものすごく気持ちよく動作するようになったので、これも要望されていた、閲覧/検索専用のブックマークレットも追加した。奇特な既存ユーザーの皆さん、dashmarkのページにあるブックマークレットを新たに追加してください。
もう一つの追加機能はFaviconの読み込み。FaviconのURLを正しく探すことができるようになったらDatabaseへ追加する予定だけど今のところは暫定実装。
ノート
Client-side database storageへのSQL実行は非同期に行われるし、ユーザインターフェイスで使っているCSSアニメーションも効果が終わったタイミングでのコールバックはない。そのため、何も考えずにDOMの操作を行うと存在しないObjectへのアクセスがやたらと発生してしまう。
ブックマークのelementにはGUIDでユニークなIDを振ってあるので*1、DOM操作を行うたびに確認することで乱立するスレッドを処理している。あまり賢いやり方ではないので、検索自体をクラス化してみようとは思っている。
インクリメンタル/デクリメンタルサーチは今同じ関数で動いているけれど、気持ちよさを考えると処理を分ける方が良さそう。
ブックマーク追加ツールが機能しない場合がある
を用いているページの一部でブックマーク追加ツールが動作しないことがある。
バカよけので作られているダミーのframeset上に展開されてしまうらしい。困ったなぁ。
*1:なんちゃって関数なので後で本物のGUIDに変更しなければならんのですが……