【ノーツ標準】WEBブラウザでノーツユーザを選択するとき、ポップアップ画面を開き、ユーザを選択し、ボタンを何度もクリック操作してやっと選択を確定する。これが便利な時もありますが、一人を入力するだけのためには、いかにも重い。いつもこれでは、辛い。
【Ajax版】これに対し、ポップアップ画面を開かず、クリック操作/選択操作を最少にして、利用ユーザの負荷を小さくするのが 軽いNamePickerの目的です。
Jake Howlett Domino Name Picker Revisited[ROUGH CUT
名前の一部を入力すると、自動的に候補リストがサーバから取得され、ブラウザの画面にセットされます(下図では左の入力欄)。
ユーザの入力から選択の確定までの流れは、次のとおりです。
Domino Name Picker Revisited[ROUGH CUT ] の動作
1.test と入力すると、2.そのフィールドイベント(keydown)をJavaScriptでキャッチし、
3.そのときの文字列からリクエストURLを作成、GET /names.nsf/($VIMPeople)?readviewentries&count=10&startkey=test
4,このURLをprotptype.jsライブラリのAjax.Requestオブジェクトに渡して、リクエストを実行。
5.ドミノサーバがURLコマント:http://サーバ名/names.nsf/($VIMPeople)?readviewentries&count=10&startkey=testをNotesコマンドに変換して、
6.ビュー検索を7. names.nsfの($VIMPeople)ビューに対して実行、
6.結果をドミノのHTMLエンジンがvIewEntries(XML)フォーーマットに整形して、8.返信。
9.返信されたレスポンスは、そのままブラウザに表示されず、
10.コールバック関数が処理して選択リストを作成し、11.ユーザがリストを見て、12.その中のひとつをクリックで選択すると、13.クリックイベントの発生した行をJavaScriptで取得し、14.その行のvalueをフィールドにセット、15.入力が完了、
(入力スピードによっては、t, te, tesの入力時点でもそれをキーに2から9あるいは11まで実行されます(クライアントキャッシュが利用され、HTTPリクエストがDominoサーバに送られないこともあります))。
返信されるレスポンスviewentriesは、次の形式です。
<?xml version="1.0" encoding="UTF-8"?>
<viewentries timestamp="20091215T065132,66Z" toplevelentries="150">
<viewentry position="84" unid="ED214F6812EDE6A3492571E9003A4A26" noteid="2252" siblings="150">
<entrydata columnnumber="0" name="$1">
<text>Test Aqua01/NOTESDEV1</text></entrydata>
<entrydata columnnumber="1" name="$0">
<text>Test</text></entrydata>
<entrydata columnnumber="2" name="$2">
<text></text></entrydata>
<entrydata columnnumber="3" name="$3">
<text>Aqua01</text></entrydata>
<entrydata columnnumber="4" name="$4">
<text>CN=Test Aqua01/O=NOTESDEV1 @ Dom85</text></entrydata>
<entrydata columnnumber="5" name="Comment">
<text></text></entrydata>
</viewentry>
以下、データの数だけ、viewentry要素の繰り返し
</viewentries>
ドミノURLコマンド?getviewentriesを使用していること、パラメータに&startkey を使用していること、レスポンスのビューデータの第一列を候補に表示していることが特徴です。
このNSFでは、一般的なJavaScriptライブラリ(prototytpe.js(V1.4.0)、script.acculo.us(2005年のもの)を利用しつつ、固有のフォーム、HTML、JavaScriptでタイプアヘッド(オートスジェスト)を実現しています。気になる動作もありますが、最初?にトライしたところに敬意を表します。
これが安定して動き、サーバ・ネットワークの負荷が制御され、ライセンスをクリアでき、開発が定型化できれば、名前入力フィールドに限らず、便利です。
Jake Howlett氏に対し、「もうやってるよ」とコメントしたのが、Jeff Crossett 氏のAJAX Phone Directory Portletです。